Bác Thang học ktvta khóa bn đấy?trg GT a?ma bac bao sua lai code +mach ở đâu vậy?có thấy gì đâu.Em gửi code ở page trước rồi còn j.thôi, để em gửi lại vậy.file zip new folder kia gồm 1file vẽ mạch proteus,1file abc.hex de nap cho chip,1 file ảnh mạch em vẽ.em đã gửi code rồi.nhưng thôi, cứ gửi lại cho tiện.code này em làm giống bác vdgiap.nhưng tình hình lại ko được như mong đợi.các bác ktra lại cho em xem tn.Em nghĩ nát óc mà chả hiểu sai ở đâu
Thông báo
Collapse
No announcement yet.
Ds1307
Collapse
X
-
Mình gửi kèm file ở trên rồi đấy, bạn xem lại nhé! Code mình viết rất đơn giản để cho bạn dễ hiểu.Nguyên văn bởi khanh248 Xem bài viếtBác Thang học ktvta khóa bn đấy?trg GT a?ma bac bao sua lai code +mach ở đâu vậy?có thấy gì đâu.Em gửi code ở page trước rồi còn j.thôi, để em gửi lại vậy.file zip new folder kia gồm 1file vẽ mạch proteus,1file abc.hex de nap cho chip,1 file ảnh mạch em vẽ.em đã gửi code rồi.nhưng thôi, cứ gửi lại cho tiện.code này em làm giống bác vdgiap.nhưng tình hình lại ko được như mong đợi.các bác ktra lại cho em xem tn.Em nghĩ nát óc mà chả hiểu sai ở đâuNỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
cám ơn bác thắng rất nhiều. em làm được rồi. em chạy thêm được cả ngày nữa. Nhưng có 1 điều khá là lạ. Khi em thử vẽ 1 cái mạch khác, hệt mạch của bác, nạp ctrình của bác vào Atmega thì nó lại chẳng hiện giờ.chỉ hiện 00:00:00.em chụp lại ảnh đây.Mà muốn chạy cả ngày giờ, cũng lại phải dùng mạch của bác mới đc. lạ thậtAttached Files
Comment
-
Bạn k gửi mạch thì mình chịu. Mình xem ảnh thì đoán là chỗ 2 con trở treo, hình như bạn nối VCC cho 2 con trở này sai (Có cái dấu chấm đó).Nguyên văn bởi khanh248 Xem bài viếtKhi em thử vẽ 1 cái mạch khác, hệt mạch của bác, nạp ctrình của bác vào Atmega thì nó lại chẳng hiện giờ.chỉ hiện 00:00:00.em chụp lại ảnh đây.Mà muốn chạy cả ngày giờ, cũng lại phải dùng mạch của bác mới đc. lạ thậtNỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
bác thang oi, cho em hoi lai 1 chut. cái code lcd_putchar(0x30+(t/10)%10) và lcd_putchar(0x30+t%10); và các lệnh tương tự như thế khi hiển thị ngày giờ ý nghĩa là j được ko? e chỉ hiểu sơ sơ là dùng để hiển thị lân lượt ngày, giờ thôi, chứ chưa hiểu tại sao lại là 0x30+(t/10)%10 . bác jải thích lại giùm em nhé
Comment
-
Một lệnh lcd_putchar() chỉ ghi được một ký tự (1 chữ số). Vì h,m hay s có 2 chữ số vì vậy ta phải dùng phép t%10 để lấy hàng đơn vị và (t/10)%10 để lấy hàng chục rồi ghi lần lượt lên LCD. LCD hiển thị giá trị theo mã ASCII, mã này lớn hơn mã DEC 30 đơn vị, vì vậy để hiển thị số 2 trong DEC chẳng hạn thì ta phải băm giá trị 0x30+2 ra LCD. Do đó ta có lệnh: lcd_putchar(0x30 + t%10)... Nếu t=12 chẳng hạn thì lcd_putchar(0x30 + t%10) sẽ cho kết quả trên LCD là 2. và lcd_putchar(0x30+ (t/10)%10) cho kết quả là 1.Nỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
cảm ơn bác.em mới học lập trình hợp ngữ.bác nói thế em hiểu rồi.Còn 1 cái nữa là lệnh rtc_init(3,1,0); là để kích hoạt con ds1307, nhưng tại sao lại là 3,1,0 ạ?Em đang đọc sak về lập trình C cho vi đk, nhưng dài quá,vốn english cũng còn quá tệ, chắc phải còn nhờ bác và mọi ng nhiều.
Còn 1 điều nữa em muốn hỏi,khi mình làm mạch mô phỏng trên proteus,tại sao ko cần nối nguồn mà AVR, ds1307,lcd vẫn chạy đc?phải chăng nó mặc định tự cấp nguồn cho chip? Mà nêu làm mạch thực tế, chắc chắn phải có crystal ạ?mà trong proteus liệu nó có tự tạo xung tại các cổng XTAL1 & 2 ko?
Comment
-
Cái này bác giở help của CV và thư việ DS1307 ra đọc là hiểu ngay thôi, nó viết ngắn gọn mà.cảm ơn bác.em mới học lập trình hợp ngữ.bác nói thế em hiểu rồi.Còn 1 cái nữa là lệnh rtc_init(3,1,0); là để kích hoạt con ds1307, nhưng tại sao lại là 3,1,0 ạ?
Đúng vậy, trên Proteus thì nó mặc định rồi, cắm nguồn cũng được mà không cũng được.Còn 1 điều nữa em muốn hỏi,khi mình làm mạch mô phỏng trên proteus,tại sao ko cần nối nguồn mà AVR, ds1307,lcd vẫn chạy đc?phải chăng nó mặc định tự cấp nguồn cho chip?
AVR mặc định mua về nó sẽ dùng thạch anh nội, các vấn đề liên quan đến ta thì bạn tìm trong box AVR này sẽ rõ.Chúc thành công!Mà nêu làm mạch thực tế, chắc chắn phải có crystal ạ?mà trong proteus liệu nó có tự tạo xung tại các cổng XTAL1 & 2 ko?Nỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
hi tui là Ngọc
Cũng ham mo nhiều cái diễn đàn này lắm, các bát hà tuôi thấy các anh mới tiem hiểu và cũng có nhưng người tiềm hiểu từ rất lâu, nếu cứ tìm tòi từng cái mạnh nhỏ vậy cũng rất tốt, lại hiểu nhiều. Nhưng mà có một ý kiến tui xin được nói với các bát rắng nếu cứ như vậy hoài thì rất mất thời gian âu chi chung ta tập hợp lại để làm một cái mạch kid tổng hợp bán lại cho nhưng ai thích nghiên cứu, và trong đó phải có phần lập trình căng bản và nân cao. tuoi rất tâm đắt vấn để này. vì có rất nhiều điều phải tìm hiểu và nghiên cứu mà cứ như vầy hỏi thì chả đi tới đâu được, bởi cái lĩnh vực này rất là sâu và rộng, vậy nhé nếu ai có quan tâm hay gọi cho tui SDT:01217874939 cám ơn các bạn đã theo giỏi
Comment
-
ặc,tớ nhơ không nhầm thì &h,&m,&s nghĩa là cậu phải đưa biến vào trong đó.ví dụ,khai 3 biết h,m,s thuộc kiểu nguyên,chứa giá trị giờ phút giây.thì lệnh đó phải là rtc_get_time(h,m,s).nếu dùng codevision thì xem thử example của ds1307 ýNguyên văn bởi phong25_2 Xem bài viếtcac a ơi,e viet 1 đoạn ctrinh đơn giản để test con 1307, tuy nhien nó ko chạy dc. mong mọi ng chỉ giúp
#asm
.equ __i2c_port=0x18
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <mega16.h>
#include <ds1307.h>
#include <delay.h>
void main(void) {
unsigned char h,m,s;
DDRA=0xff;
i2c_init();
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(0x7f);
i2c_stop();
rtc_init(0,0,0);
rtc_set_time(0,0,0);
while (1)
{
rtc_get_time(&h,&m,&s);
PORTA=s;
delay_ms(200);
};
}
Comment
-
Viết rtc_get_time(&h,&m,&s) là đúng vì h, m, s là các biến sẽ nhận lại kết quả từ hàm rtc_get_time (chứ không phải truyền kết quả).Nguyên văn bởi koten306 Xem bài viếtặc,tớ nhơ không nhầm thì &h,&m,&s nghĩa là cậu phải đưa biến vào trong đó.ví dụ,khai 3 biết h,m,s thuộc kiểu nguyên,chứa giá trị giờ phút giây.thì lệnh đó phải là rtc_get_time(h,m,s).nếu dùng codevision thì xem thử example của ds1307 ý
Thêm dấu '&' trước tên biến có nghĩa là tham chiếu đến địa chỉ của biến.
Nếu sử dụng hàm rtc_set_time thì là rtc_set_time(h,m,s)More friends more foods
Comment
-
Ngày xưa tớ lập trình Codevisionavr tớ cũng tưởng thế,(vì cũng học qua C++ nên cũng hiểu là phải có tham chiếu &),nhưng nó chỉ đúng trong lập trình C,còn trong codevision,tớ thay lại &h,&m,&s thì nó lại báo lỗi.mà tớ thử dùng cách của mình thì thấy mô phỏng ngon lành mà.hihi,cũng chẳng hiểu tại sao lại như vậy,mong mọi người thì chỉ dạy.Nguyên văn bởi kimhuynguyen Xem bài viếtViết rtc_get_time(&h,&m,&s) là đúng vì h, m, s là các biến sẽ nhận lại kết quả từ hàm rtc_get_time (chứ không phải truyền kết quả).
Thêm dấu '&' trước tên biến có nghĩa là tham chiếu đến địa chỉ của biến.
Nếu sử dụng hàm rtc_set_time thì là rtc_set_time(h,m,s)
Comment
-
à mà kimhuynguyen nhớ nhầm rồi,đây là hàm gọi mà, cần gì phải có &, cái này chỉ dùng khi tạo hàm thôi(học C lâu rồi nên quên mất)Nguyên văn bởi kimhuynguyen Xem bài viếtViết rtc_get_time(&h,&m,&s) là đúng vì h, m, s là các biến sẽ nhận lại kết quả từ hàm rtc_get_time (chứ không phải truyền kết quả).
Thêm dấu '&' trước tên biến có nghĩa là tham chiếu đến địa chỉ của biến.
Nếu sử dụng hàm rtc_set_time thì là rtc_set_time(h,m,s)
Comment
Bài viết mới nhất
Collapse
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
Hôm qua, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
Hôm qua, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
Hôm qua, 11:20 -
-
bởi bqvietThực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
-
Channel: Điện tử công suất
02-02-2026, 21:13 -
-
bởi Nexus 6PCó ai có bản in của mạch in không, cho em xin file để đi in với ạ
-
Channel: Điện tử công suất
02-02-2026, 14:37 -
-
bởi Nexus 6PLink hư rồi ạ, xin lại link của bản thiết kế cũ ạ...
-
Channel: Điện tử công suất
02-02-2026, 10:48 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ.
Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...-
Channel: Tâm tình dân kỹ thuật
29-01-2026, 11:58 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietĐơn giản thì có trải nghiệm này
http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81
Chỉ phần cứng,...-
Channel: Điện tử công suất
27-01-2026, 21:32 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pphức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
-
Channel: Điện tử công suất
26-01-2026, 08:52 -

Comment