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 FotiniChào mọi người.
Cấu trúc khung giàn của tôi sử dụng một động cơ servo tích hợp trên mỗi trục (https://www.oyostepper.es/category-8...integrado.html), với một dây nối đất chung.
Việc kích hoạt từng trục riêng lẻ hoạt động tốt, nhưng...-
Channel: Điện tử dành cho người mới bắt đầu
18-06-2026, 14:03 -
-
Trả lời cho Cấu hình chiến game "quốc dân" cho nền tảng AM5: Lựa chọn tối ưu ngân sách với Ryzen 5 7500Fbởi kumarbrMình đồng ý với hướng build AM5 bằng 7500F, nhưng nếu có thể cố thêm ngân sách thì nên lên RX 7600 ngay từ đầu. 4GB VRAM của RX 6500 XT bắt đầu khá chật với nhiều game mới, còn RX 7600 sẽ dùng thoải mái hơn trong vài năm tới.
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 15:49 -
-
bởi theidiotcatTrong thời buổi vật giá leo thang, việc sắm một bộ máy tính chơi game đáp ứng đủ tiêu chí "ngon, bổ, rẻ" là ưu tiên hàng đầu của nhiều bạn trẻ. Lúc này, combo sử dụng vi xử lý AMD Ryzen 5 7500F kết hợp cùng card màn hình Radeon...
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 10:16 -
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:09 -
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -

Comment