Em đang mô phỏng cái mạch đo nhiệt độ sử dụng Sensor nhiệt LM35 và ADC0804 giao tiếp với 8051 hiển thị trên led 7 đoạn. Code em đã viết xong nhưng hoạt động không đúng. Cụ thể là khi em thay đổi nhiệt độ trên LM35 thì hiển thị không chính xác. Em loay hoay đã rất lâu mà không biết lỗi tại đâu.
Mong các anh chị bớt chút thời gian chỉ giúp !
Dưới đây là code và file mô phỏng đính kèm.
P/s: Mô phỏng bằng phần mềm Proteus v 7.10
Mong các anh chị bớt chút thời gian chỉ giúp !
Dưới đây là code và file mô phỏng đính kèm.
Code:
;******************************************************************************* ; CHUONG TRINH : DO NHIET DO HIEN THI TREN LED 7 DOAN ; ****************************** ; MO TA : ; - Phan cung : ; + AT89C51 (thach anh 12MHz) ; + 4 Led 7 Seg (Anot chung) ; + 1 IC chuyen doi tin hieu tuong tu - so ADC0804 ; + 1 Temperature Sensors LM35 ; - Ket noi : ; + Cac thanh A-B-C-D-E-F-G cua Led 7 Seg lan luot noi voi P3.0, ... , P3.7 cua 8051 ; + Anot cua cac Led 1 den 4 (tinh tu trai sang) P1.0 den P1.3 thong qua cac Tranzito dem PNP ; + Cac dau ra DB0 den DB7 cua ADC duoi noi toi P0.0 den P0.7 cua 8051 ; + Cac chan RD, WR, INTR cua ADC duoc noi voi P2.0, P2.1, P2.2 cua 8051 ; - Chu thich : ; + Cac LED 7 doan tich cuc muc 0 ; - Ten file : ADC0804_LM35_LED7Seg.asm ; ; HOAN THANH : ... - Successful ; ; COPYRIGHT : Ck33spkt ;******************************************************************************* ; ;-------------------------------------------- ; C O N S T A N T ; ;-------------------------------------------- DATA_IN equ P0 READ bit P2.0 WRITE bit P2.1 INTR bit P2.2 CS bit P2.3 DATA_OUT equ P3 MACHU_C equ 30h ; cac o nho tu 30h den 33h luu giu ma 7 doan MACHU_DO equ 31h LED_DV equ 32h LED_CH equ 33h ; org 0000h mov P2, #0ffh ; chon P0, P2 lam dau vao mov P0, #0ffh mov P1, #0ffh ; tat LED mov MACHU_C, #0c6h ; dua ma 7 seg cua chu C vao o nho 30h mov MACHU_DO, #9ch ; dua ma 7 seg cua dau DO vao o nho 31h clr INTR ; dat INTR = 0 de dam bao hoat dong binh thuong ;-------------------------------------------- ; MAIN: ; ; - Thuc hien viec doc ADC va hien thi du ; ; lieu ra led 7 doan bang phuong phap quet. ; ; - Trong main co cac chuong trinh con nhu; ; sau: ; ;===========================================; ; M A I N P R O G R A M ; ;===========================================; main: acall doc_adc acall xuly acall hien_thi sjmp main ;-------------------------------------------- ; Ket thuc ham main ; ;-------------------------------------------- ; ;-------------------------------------------- ; doc _adc: ; ; - Thuc hien viec doc ADC de lay du lieu ; ; dua vao thanh ghi Acc de xu ly. ; ; - Ket thuc chuong trinh, thanh ghi Acc ; ; chua ma hex. ;-------------------------------------------- doc_adc: clr WRITE ; dat WR = 0 setb WRITE ; dat WR = 1 de bat dau chuyen doi jb INTR, $ ; cho ket thuc chuyen doi clr READ ; ket thuc chuyen doi: cho phep doc du lieu mov A, DATA_IN ; doc du lieu vao thanh ghi a ret ; ket thuc cong viec doc adc ;-------------------------------------------- ; xuly: ; ; - Thuc hien viec chuyen doi du lieu nhan; ; duoc tu ADC thanh ma BCD roi chuyen thanh ; ; ma 7 Seg. ; ; - Ket thuc chuong trinh o nho 32h va 33h; ; chua ma 7 Seg. ; ;-------------------------------------------- xuly: mov B, #100 ; nap 100 vao thanh ghi B div AB ; chia A cho 10 (bo di so hang tram, chi lay so hang chuc va hang don vi) mov R1, B ; luu so du vao R1 mov B, #10 mov A, R1 ; luu so du vao A div AB ; chia A cho 10 acall bcd_to_7seg ; doi so bcd hang chuc thanh ma 7 doan mov LED_CH, A ; cat ma 7 doan cua led hang chuc mov A, B ; dua phan du vao Acc acall bcd_to_7seg ; doi so bcd hang don vi thanh ma 7 doan mov LED_DV, A ; cat ma 7 doan cua led hang don vi ret ; ket thuc cong viec xu ly du lieu ;-------------------------------------------- ;-------------------------------------------- ; hien_thi: ; - Thuc hien viec lay ma 7 doan tu cac o ; ; nho va xuat ra P3 va quet Led. ; ;-------------------------------------------- hien_thi: mov P1, #11111110b ; khoi tao xung quet, led chu C sang mov DATA_OUT, MACHU_C ; xuat du lieu ma chu C acall delay_5ms ; tre 5ms mov DATA_OUT, #0ffh ; tat LED ; mov A, P1 ; A = P1 RL A ; quay trai thanh ghi A 1 don vi mov P1, A ; P1 = A: quet led do mov DATA_OUT, MACHU_DO ; xuat du lieu ma chu DO acall delay_5ms ; tre 5ms mov DATA_OUT, #0ffh ; tat LED ; mov A, P1 ; A = P1 RL A ; quay trai thanh ghi A 1 don vi mov P1, A ; P1 = A: quet led don vi mov DATA_OUT, LED_DV ; xuat du lieu ma chu don vi acall delay_5ms ; tre 5ms mov DATA_OUT, #0ffh ; tat LED ; mov A, P1 ; A = P1 RL A ; quay trai thanh ghi A 1 don vi mov P1, A ; P1 = A: quet led chuc mov DATA_OUT, LED_CH ; xuat du lieu ma chu hang chuc acall delay_5ms ; tre 5ms mov DATA_OUT, #0ffh ; tat LED ret ; ket thuc cong viec hien thi du lieu ;-------------------------------------------- ; bcd_ to_7seg: ; - Thuc hien viec doi ma bcd thanh ma 7s ; ;-------------------------------------------- bcd_to_7seg: mov dptr, #ma7seg movc A, @A+dptr ret ;-------------------------------------------- ; CHUONG TRINH CON TAO TRE ; ;-------------------------------------------- delay_5ms: push 00 push 01 push 02 mov R0, #5 mov R1, #2 mov R2, #248 djnz R2, $ djnz R1, $-4 djnz R0, $-8 pop 02 pop 01 pop 00 ret ;-------------------------------------------- ma7seg: ; ma 7 doan cho led Anot chung ; 0 1 2 3 4 5 6 7 8 9 ; | | | | | | | | | | db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h ;-------------------------------------------- ; end
Comment