Chương trình này là của bác Pctcom cho em anh ạ. Nhưng do vội vàng viết bài nên em quên viết tên của anh ấy vào mong anh thông cảm cho em.
Thông báo
Collapse
No announcement yet.
DS1307 bị đứng
Collapse
X
-
Anh pctom xem qua phần cứng cho em có sai chỗ nào nữa không anh, sao em làm mà nó không chạy được anh ạ. Mặc dù em đã làm như anh bày rồi nà vẫn không được. Với lại trên này ít người làm bằng led đơn quá đi, có làm thì cũng chỉ là thương mại, em đã gửi mail hỏi vài người thì họ không muốn nói ra kinh nghiệm anh ạ. Em đã đọc hết bài viết của anh từ trang 1 đến trang 20 rồi mà vẫn chưa làm được, sau này thấy anh bận quá nên em cũng không muốn hỏi nữa. Tiện đây mong anh xem qua cái mạch của em cái anh nhé. Cảm ơn anh nhiều
Comment
-
Nguyên văn bởi dat 302 Xem bài viếtCác bạn có thể xem qua cái mach của mình được không. Mình làm đồ án đồng hồ số dùng led đơn hiển thị gio: phut: giay mình làm phần cứng xong rồi, chương trình mình cũng đã viêt. Đây là sơ đồ mạch của minh đây các bạn xem giúp mình có vấn đề chi không nhé.
Vấn đề là khi mình làm mạch xong rồi nạp chương trình nó chỉ hiện thị mỗi 6 số 8 không à. Khi mình tháo con vi điều khiển ra nó cũng hiển thị 6 số 8 bạn ạ, các bạn có thể góp ý cho mình phần cứng bị lỗi chỗ nào không nhé. Nếu như thế này thì không có sự tham gia của vi điều khiển thì làm sao mà điều khiển được đồng hồ. Còn đây là code của nó mà mình đã sưu tấm được của anh pctcom
Code:$MOD51 ;===================================== XUNG_NHAY DATA 38H ; XUNG 100ms BIEN_NHAY DATA 39H ;0 = SANG TAT CA DEN , 1 = NHAY led TUONG UNG KHI set GIAY DATA 40H PHUT DATA 41H GIO DATA 42H DONVI_GIAY DATA 47H CHUC_GIAY DATA 48H DONVI_PHUT DATA 49H CHUC_PHUT DATA 4AH DONVI_GIO DATA 4BH CHUC_GIO DATA 4CH PHAN_TRAM_GIAY DATA 4DH FLAG_SET DATA 4EH ;0 = KHONG SET , 1 = SET PHUT , 2 = SET GIO LED_GIAY BIT P2.0 LED_C_GIAY BIT P2.1 LED_PHUT BIT P2.2 LED_C_PHUT BIT P2.3 LED_GIO BIT P2.4 LED_C_GIO BIT P2.5 ;--------I2C------- SCL BIT P3.0 SDA BIT P3.1 SW_1 BIT P3.2 SW_2 BIT P3.3 SW_3 BIT P3.4 LED_DATA EQU P0 BYTE_W EQU 11010000B BYTE_R EQU 11010001B ADD_LOW EQU 62H DATA_DS EQU 63H ;===================================== ;===================================== ORG 00H LJMP MAIN ;=========================== ;=========================== ORG 0BH LJMP NGAT_TIME ;=========================== ;=========================== ORG 030H MAIN: ;reset tat ca cac bien MOV GIAY,#0 MOV PHUT,#0 MOV GIO,#0 MOV BIEN_NHAY,#0 MOV XUNG_NHAY,#0 MOV FLAG_SET,#0 MOV R0,#0 MOV IE,#10001010B MOV TMOD,#11H MOV TL0,#LOW(-9216) MOV TH0,#HIGH(-9216) SETB TR0 MOV A,#0FFH MOV LED_DATA,A MOV DPTR,#BANGSO CLR SCL CLR SDA NOP SETB SCL SETB SDA NOP MOV ADD_LOW,#00H MOV DATA_DS,#00H LCALL WRITE_BYTE ;========================================== LOOP_HIEN_THI: ; chuong trinh chinh chay tai day ;========================================== MOV A,FLAG_SET CJNE A,#0,L_HT CALL INIT_PORT L_HT: LCALL HIEN_THI LCALL SCAN_KEY SJMP LOOP_HIEN_THI ;========================================== INIT_PORT: ;==================================================READS SECONDS READ_SEC: MOV ADD_LOW,#00h LCALL READ_BYTE MOV GIAY,DATA_DS LCALL I2C_STOP ;==================================================READS MINUTES MOV ADD_LOW,#01h LCALL READ_BYTE MOV PHUT,DATA_DS LCALL I2C_STOP ;==================================================READS HOURS MOV ADD_LOW,#02h LCALL READ_BYTE MOV GIO,DATA_DS LCALL I2C_STOP RET ;================================================================================== ;=====stop I2C communication I2C_Stop: CLR SDA SETB SCL NOP SETB SDA RET ;================================================================================== ;***************************************************** ;* WRITE DATA_DS TO DS1307 1 BYTE * ;* INPUT : ADD_LOW * ;* : DATA_DS * ;***************************************************** WRITE_BYTE: CLR SDA ;start bit CLR SCL MOV A,#BYTE_W ;send control byte LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,WRITE_BYTE ;loop until busy CLR SCL MOV A,ADD_LOW ;send address low LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,WRITE_BYTE ;loop until busy CLR SCL MOV A,DATA_DS ;send DATA LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,WRITE_BYTE ;loop until busy CLR SDA CLR SCL SETB SCL ;stop bit SETB SDA RET ;****************************************************** ;* READ DATA FROM DS1307 1 BYTE * ;* INPUT : ADD_HIGH * ;* : ADD_LOW * ;* OUTPUT : DATA_DS * ;****************************************************** READ_BYTE: CLR SDA ;start bit CLR SCL MOV A,#BYTE_W ;send control byte LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,READ_BYTE ;loop until busy CLR SCL MOV A,ADD_LOW ;send address low LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,READ_BYTE ;loop until busy CLR SCL SETB SCL SETB SDA CLR SDA ;start bit CLR SCL MOV A,#BYTE_R ;send control byte LCALL LOOP_BYTE SETB SDA SETB SCL JB SDA,READ_BYTE ;loop until busy CLR SCL LCALL LOOP_READ SETB SDA SETB SCL CLR SCL SETB SCL ;stop bit SETB SDA RET ;**************************************************** ;* WRITE * ;* INPUT: ACC * ;**************************************************** LOOP_BYTE: PUSH 02H MOV R2,#08H LOOP_SEND: RLC A MOV SDA,C SETB SCL CLR SCL DJNZ R2,LOOP_SEND POP 02H RET ;***************************************************** ;* READ * ;* OUTPUT: ACC * ;***************************************************** LOOP_READ: PUSH 02H MOV R2,#08H LOOP_READ1: SETB SCL MOV C,SDA CLR SCL RLC A DJNZ R2,LOOP_READ1 MOV DATA_DS,A POP 02H RET ;========================================== TACHSO: ; tach rieng hang chuc va hang don vi bang cach chia cho 10 ;========================================== MOV A,GIAY ;Lan luot chia cac Bien: Giay, Phut, Gio cho 10 MOV B,#10H ;de tach phan Don Vi va Hang Chuc ra, de cat rieng vao cac Bien tuong ung. DIV AB ;PHAN NGUYEN trong A, PHAN DU trong B MOV CHUC_GIAY,A ;Luu lai HANG CHUC Giay MOV DONVI_GIAY,B ;luu lai DON VI Giay ;========== MOV A,PHUT MOV B,#10H DIV AB MOV CHUC_PHUT,A MOV DONVI_PHUT,B ;========== MOV A,GIO MOV B,#10H DIV AB MOV CHUC_GIO,A MOV DONVI_GIO,B RET ;======================================== HIEN_THI: ; HIEN THI LED 7 DOAN ;======================================== MOV A,FLAG_SET CJNE A,#0,CHOP_NHAY LCALL HIENTHI AJMP THOAT_HIENTHI ;======================================== CHOP_NHAY: ; KIEM TRA BIEN NHAY VA FLAG_SET DE TAO HIEU UNG NHAY LED DANG SETING ;================================= MOV A,BIEN_NHAY CJNE A,#0,CHOP_NHAY1 LCALL HIENTHI AJMP THOAT_HIENTHI CHOP_NHAY1: LCALL NHAY JMP CHOP_NHAY THOAT_HIENTHI: RET ;================================= HIENTHI: ;================================= LCALL HIENTHI_S LCALL HIENTHI_P LCALL HIENTHI_G RET ;================================= NHAY: ;================================= MOV A,FLAG_SET CJNE A,#1,KT1 LCALL HIENTHI_S LCALL HIENTHI_G KT1: MOV A,FLAG_SET CJNE A,#2,THOAT_N LCALL HIENTHI_S LCALL HIENTHI_P THOAT_N: RET ;================================= HIENTHI_S: ;================================= ;hien thi hang don vi cua Giay MOV A,DONVI_GIAY MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_GIAY LCALL DL SETB LED_GIAY ;========== MOV A,CHUC_GIAY ;hien thi hang chuc cua Giay MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_C_GIAY LCALL DL SETB LED_C_GIAY RET ;================================= HIENTHI_P: ;================================= MOV A,DONVI_PHUT ;hien thi hang don vi cua Phut MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_PHUT LCALL DL SETB LED_PHUT ;============ MOV A,CHUC_PHUT ;hien thi hang chuc cua Phut MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_C_PHUT LCALL DL SETB LED_C_PHUT RET ;================================= HIENTHI_G: ;================================= MOV A,DONVI_GIO ;hien thi hang don vi cua gio MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_GIO LCALL DL SETB LED_GIO ;============ MOV A,CHUC_GIO ;hien thi hang chuc cua Gio MOVC A,@A+DPTR MOV LED_DATA,A CLR LED_C_GIO LCALL DL SETB LED_C_GIO RET ;================================= NGAT_TIME: ;================================= INC XUNG_NHAY INC PHAN_TRAM_GIAY ;DAT TIMER CHAY 1/100 GIAY MOV TL0,#LOW(-9216) MOV TH0,#HIGH(-9216) SETB TR0 ;=============== PUSH ACC PUSH PSW ;Thanh ghi trang thái chuong trình ;========== MOV A,XUNG_NHAY ;TAO XUNG NHAP NHAY = 1/4 GIAY CJNE A,#25,TIME1 MOV XUNG_NHAY,#0 INC BIEN_NHAY MOV A,BIEN_NHAY CJNE A,#3,TIME1 MOV BIEN_NHAY,#0 ;========== TIME1: MOV A,PHAN_TRAM_GIAY ;Kiem tra bien PHAN_TRAM_GIAY - Thoat khoi ngat Time0 neu khong = CJNE A,#100,THOAT_NGAT_TIME MOV PHAN_TRAM_GIAY,#0 ;Neu = 100 thì set bien nay = 0 ;=============== THOAT_NGAT_TIME: LCALL TACHSO POP PSW POP ACC RETI ;================================== SCAN_KEY: ;KIEM TRA PHIM NHAN ;================================== SW1: ;SET TIME JB SW_1,SW2 INC FLAG_SET MOV A,FLAG_SET CJNE A,#3,L_SW1 ;========== MOV ADD_LOW,#01H MOV DATA_DS,PHUT LCALL WRITE_BYTE ;========== MOV FLAG_SET,#0 L_SW1: LCALL DL1 LCALL DL1 LCALL DL1 LCALL DL1 LJMP NOKEY ;=============== SW2: ;SET_MIN JB SW_2,SW3 MOV A,FLAG_SET CJNE A,#0,SW20 LJMP NOKEY SW20: MOV A,FLAG_SET CJNE A,#1,TANG_GIO ; JB SW_2,SW3 ;=============== TANG_PHUT: INC PHUT ;Roi tang Bien phut them 1 MOV A,PHUT CJNE A,#60,L_SW2 ; MOV PHUT,#0 ;Neu = 60 thì set bien nay = 0 L_SW2: LCALL DL1 LCALL DL1 LJMP SW2 ;=============== TANG_GIO: ;SET HOUR JB SW_2,SW3 MOV A,FLAG_SET CJNE A,#2,SW3 JB SW_2,SW3 INC GIO ;Roi tang Bien Gio them 1 MOV A,GIO CJNE A,#24,L_TANG_GIO ;Bien gio = 60? - Thoat khoi ngat Time0 neu khong = MOV GIO,#0 L_TANG_GIO: LCALL DL1 LCALL DL1 LJMP TANG_GIO ;============================== SW3: ;DANG NHAN SW3? JB SW_3,NOKEY ;KHONG NHAN SW2? KIEM TRA SW3 MOV A,FLAG_SET CJNE A,#0,SW30 LJMP NOKEY SW30: MOV A,FLAG_SET ;DANG NHAN SW2. KIEM TRA CHE DO CHINH GIO HAY CHINH PHUT. CJNE A,#1,GIAM_GIO ; JB SW_3,NOKEY ;=============== GIAM_PHUT: DEC PHUT ;Roi tang Bien phut them 1 MOV A,PHUT CJNE A,#-1,L_SW3 ;Bien Phut = -1? - Thoat khoi ngat Time0 neu khong = MOV PHUT,#59 ;Neu = -1 thì set bien nay = 60 L_SW3: LCALL DL1 LCALL DL1 LJMP SW3 ;=============== GIAM_GIO: ;=============== JB SW_3,NOKEY MOV A,FLAG_SET CJNE A,#2,NOKEY LCALL HIENTHI JB SW_3,NOKEY DEC GIO ;Roi Giam Bien Gio them 1 MOV A,GIO CJNE A,#-1,L_GIAM_GIO ;Bien gio = -1? - Thoat khoi ngat Time0 neu khong = MOV GIO,#23 L_GIAM_GIO: LCALL DL1 LCALL DL1 LJMP GIAM_GIO ;=============== NOKEY: RET ;================================= DL: ;================================= MOV R7,#200 DJNZ R7,$ RET ;================== DL1: ;================== PUSH 00H PUSH 01H MOV R1,#20O DEL: LCALL HIEN_THI LCALL HIEN_THI LCALL HIEN_THI MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET ;=================== DELAY_1MS: ;=================== MOV R7,#200 DL_1MS_1: MOV R6,#200 DJNZ R6,$ DJNZ R7,DL_1MS_1 RET ;==================== DELAY: ;==================== NOP NOP NOP NOP NOP NOP NOP NOP RET ;================================= BANGSO: ;================================= DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H RET END
Mong các bác có thể bớt chút thời gian xem qua bai của mình cái nhé. Thank các bác nhiều và chúc các bác luôn hạnh phúc
Comment
-
Bạn xem lại sơ đồ cho mình cái chứ chỗ scl mình đã nối vào chân p3.0 có trở kéo lên 5 v và chỗ sda mình nối vào chân p3.1 có trở kéo lên nguồn rồi mà bạn. trở này nên dùng 10k hay là 4.7 k đây. Theo datasheet của cái này thì phải có trở là 10k không biết mình mắc 4.7k có sai gì không. Nói chung mình cũng chẳng biết sai chỗ nào đây nữa.
Comment
-
Nguyên văn bởi dat 302 Xem bài viếtBạn xem lại sơ đồ cho mình cái chứ chỗ scl mình đã nối vào chân p3.0 có trở kéo lên 5 v và chỗ sda mình nối vào chân p3.1 có trở kéo lên nguồn rồi mà bạn. trở này nên dùng 10k hay là 4.7 k đây. Theo datasheet của cái này thì phải có trở là 10k không biết mình mắc 4.7k có sai gì không. Nói chung mình cũng chẳng biết sai chỗ nào đây nữa.
Trong khi code trên phần xuất ra tác động ở mức thấp. bạn cần sửa lại code cho phù hợp.
- bảng tra mã led 7seg "BANGSO:" phải sửa lại từ bảng mã tác động mức thấp, thành bảng mã tác động mức cao.
- phần cấp nguồn quét led cũng tương tự:
MOV A,DONVI_GIO ;hien thi hang don vi cua gio
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_GIO ;thay cho CLR LED_GIO
LCALL DL
SETB LED_GIO ;thay cho SETB LED_GIO
-Last edited by pctcom; 04-06-2011, 01:35.PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Em cảm ơn anh pctcom rất nhiều.
-Bảng số em cần phải sửa lại là: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh
-
HIENTHI_S:
;=================================
;hien thi hang don vi cua Giay
MOV A,DONVI_GIAY
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_GIAY
LCALL DL
SETB LED_GIAY
;==========
MOV A,CHUC_GIAY ;hien thi hang chuc cua Giay
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_C_GIAY
LCALL DL
SETB LED_C_GIAY
RET
;=================================
HIENTHI_P:
;=================================
MOV A,DONVI_PHUT ;hien thi hang don vi cua Phut
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_PHUT
LCALL DL
SETB LED_PHUT
;============
MOV A,CHUC_PHUT ;hien thi hang chuc cua Phut
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_C_PHUT
LCALL DL
SETB LED_C_PHUT
RET
;=================================
HIENTHI_G:
;=================================
MOV A,DONVI_GIO ;hien thi hang don vi cua gio
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_GIO
LCALL DL
SETB LED_GIO
;============
MOV A,CHUC_GIO ;hien thi hang chuc cua Gio
MOVC A,@A+DPTR
MOV LED_DATA,A
SETB LED_C_GIO
LCALL DL
SETB LED_C_GIO
RET
- Anh pctcom ơi em sửa như vậy xong rồi còn có phải sử thêm cái chi nữa không anh. Mạch của em làm như vậy có bị sai chỗ nào nữa không anh. Anh ơi cho em hỏi thêm một điều nữa là:
Em đo áp trên: - chân c của con pnp để xuất qua led 7 đoạn chỉ được có 7 v thôi mặc dù nguồn vào là 12v
- chân c của con pnp để xuất qua led đơn ( làm cho dấu 2 chấm nhấp nháy ở giữa GIO:PHUT:GIAY) em đo áp chưa được 2v ở đó em thấy vô lý cực kì đó.
Mong anh PCTCOM với kinh nghiệm làm mạch và sự nhiệt tình có thể chỉ cho em được những chỗ em thắc mắc đó. Cảm ơn anh rất rất nhiều
Comment
-
Nguyên văn bởi dat 302 Xem bài viếtEm cảm ơn anh pctcom rất nhiều.
-Bảng số em cần phải sửa lại là: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh
- Anh pctcom ơi em sửa như vậy xong rồi còn có phải sử thêm cái chi nữa không anh. Mạch của em làm như vậy có bị sai chỗ nào nữa không anh. Anh ơi cho em hỏi thêm một điều nữa là:
Em đo áp trên: - chân c của con pnp để xuất qua led 7 đoạn chỉ được có 7 v thôi mặc dù nguồn vào là 12v
- chân c của con pnp để xuất qua led đơn ( làm cho dấu 2 chấm nhấp nháy ở giữa GIO:PHUT:GIAY) em đo áp chưa được 2v ở đó em thấy vô lý cực kì đó.
Mong anh PCTCOM với kinh nghiệm làm mạch và sự nhiệt tình có thể chỉ cho em được những chỗ em thắc mắc đó. Cảm ơn anh rất rất nhiều
2/ mạch 2 chấm của bạn thiếu R hạn dòng, có thể làm chết led hoặc Transistor.
Ngoài ra bạn kiểm tra kỹ xem có mắc lộn chân EBC của Transistor không?PCT COMPUTER
(Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)
Comment
-
Anh Pctcom à em cảm ơn anh rất nhiều anh ạ. Em đã sửa hêt cả những thứ anh nói rồi mà cái đồng hồ đó vẫn chưa chạy. Em cứ mong là mắc lộn con tran nhưng thục tế khi em kiểm tra lại thì nó không sai anh ạ. Em cũng bó tay với em nó rồi.
Comment
-
Bạn làm con DS12C887 đi, con này hơi đắt, 60k, xài con này tốt lắm.
Mình đã làm mấy cái tặng người thân, cũng hơn 1 năm rồi mà chưa thấy trục trặc gì cả.
Nếu cần mình sẽ cho sơ đồ nguyên lý, code. co gi liên hệ cho minh qua mail này nha
long.nguyenvansc@gmail.com.
Chúc thành công!Không biết ngày mai sẽ ra sao?
Mà có ra sao cũng chẳng sao.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment