Chào mọi người !
Mình đang làm đề tài lập trình bộ đếm sản phẩm, hiển thị lên LCD. Nhưng chẳng có tại liệu tham khảo nên gặp khó khăn chút ít. Đặc biệt là phần hiển thị LCD,(chẳng có tại liệu gì).Vậy ai đã làm rồi hoặc biết tài liệu gì thì giới thiệu hộ mình cái.thanks!
Mình đang viết thử đoạn code mô phỏng, các bạn xem cùng nhé(nếu rảnh, ngắn thôi)
yêu cầu:
+dùng timer0 tạo xung 1 giây gửi đến chân p3.5 kích hoạt bộ đếm timer 1(chế độ 2)
+lấy dữ liệu từ TL1 chuyển thành mã ascii rồi chuyển đến cổng p1 để hiển thị lên màn LCD
(Mình viết thử 1 đoạn nhỏ-->thế mà đã có lỗi rồi)
Code của mình đây (Chạy vẫn chua đúng)
; Lap trinh bo dem 0..99, du lieu hien thi len chan p0
;================================================= ===
;dung timer 1 lam bo dem
;dung timer 0 lam bo dinh thoi
;su dung ngat tao xung 1giay tren chan p2.5 (duoc noi voi chan p3.5)
;F thach anh = 11.0592Mhz-->T=1.085us
; xung cao=xung thap= 0. 5(giay):1.085us=460830 chukimay
;460830:65536=7
;================================================= ====================
;LCD
;================================================= ====================
;CHAN P2.2 NOI VOI E
; P2.1 NOI R/W
;P2.0 NOI RS
;================================================= ====================
#include <C:\Program Files\Rigel\Reads51\Include\sfr51.inc>;
ORG 00H
LJMP START
ORG 0BH
;XULI NGAT BO DINH THOI
CJNE R0,#01H,KB
MOV R0,#0
CPL P2.5
KB:
INC R0
MOV TH0,#0
MOV TL0,#0
RETI
;XU LI NGAT BO DEM
ORG 1BH
CLR TF1
RETI
;CHUONG TRINH CHINH
;================================================= ====================
ORG 30H
START:
;THIET LAP BO DT
MOV TMOD , #01100001B ;BODEM CHE DO 2,BODT CDO 1
MOV TH0,#0
MOV TL0,#0
MOV R0,#0 ;TAO R0=7-->XUNG 1HZ, TAO BANG 0 KIEM
SETB P2.5 ;TRA CHO NHANH
;THIET LAP BO DEM
MOV TH1,#-60
SETB P3.5 ;THIET LAP DAU VAO
; LENH CHO LCD
; -------------
MOV A,#38H
ACALL COMWRT
MOV A,#0EH
ACALL COMWRT
MOV A,#01H ;clear LCD
ACALL COMWRT
MOV A,#06H ;cursor di.ch pha?i
ACALL COMWRT
MOV A,#80H ;chuyen cursor den line 1, pos. 6
ACALL COMWRT
MOV IE,#10000010B ;CHO PHEP NGAT
SETB TR0
SETB TR1
;NHAN DU LIEU TU TL1 DE HIEN THI LEN LCD
; ---------------------------------------------------------
HERE:
MOV A,TL1
MOV 40H,A ;LUU A VO DIA CHI 40H DE KIEM TRA
SUBB A,#-60
MOV B,#10
DIV AB
ORL A,#30H
ACALL DATAWRT
MOV A,B
ORL A,#30H
ACALL DATAWRT
MOV A,#0CH ;TAT CON TRO
ACALL COMWRT
MOV A,#80H ; VE DAU DONG THU NHAT
ACALL COMWRT
LAP: MOV A,TL1
CJNE A,40H,HERE ;SO SANH NEU BANG TIEP TUC NHAP TL1 VAO A
SJMP LAP
;================================================= ====================
;LCD_VIETLENH VA DU LIEU
;================================================= ====================
COMWRT :
MOV P1,A
CLR P2.0
clr P2.1
SETB P2.2
CLR P2.2
ACALL DELAY ;HAY !
RET
DATAWRT:
MOV P1,A
SETB P2.0
clr P2.1
SETB P2.2
CLR P2.2
ACALL DELAY ;HAY !
RET
DELAY:
MOV R1,#255
TRE: DJNZ R1, TRE
RET
END
*************************
HET
*************************
PS: doan code tren da duoc dua, cac ban down file rar ve thi nap code nay vao nhé. Code này chạy tốt hơn
Chạy mô phỏng các bạn sẽ thấy. Lúc đầu không phải bộ đếm 60, khoảng 2 3 chu kì sau mới trở vè bộ đếm 60
Chẳng biết lõi gì nhỉ.
Lần đầu viết, còn non lắm.Mogn dựoc chỉ giáo!
Mình đang làm đề tài lập trình bộ đếm sản phẩm, hiển thị lên LCD. Nhưng chẳng có tại liệu tham khảo nên gặp khó khăn chút ít. Đặc biệt là phần hiển thị LCD,(chẳng có tại liệu gì).Vậy ai đã làm rồi hoặc biết tài liệu gì thì giới thiệu hộ mình cái.thanks!
Mình đang viết thử đoạn code mô phỏng, các bạn xem cùng nhé(nếu rảnh, ngắn thôi)
yêu cầu:
+dùng timer0 tạo xung 1 giây gửi đến chân p3.5 kích hoạt bộ đếm timer 1(chế độ 2)
+lấy dữ liệu từ TL1 chuyển thành mã ascii rồi chuyển đến cổng p1 để hiển thị lên màn LCD
(Mình viết thử 1 đoạn nhỏ-->thế mà đã có lỗi rồi)
Code của mình đây (Chạy vẫn chua đúng)
; Lap trinh bo dem 0..99, du lieu hien thi len chan p0
;================================================= ===
;dung timer 1 lam bo dem
;dung timer 0 lam bo dinh thoi
;su dung ngat tao xung 1giay tren chan p2.5 (duoc noi voi chan p3.5)
;F thach anh = 11.0592Mhz-->T=1.085us
; xung cao=xung thap= 0. 5(giay):1.085us=460830 chukimay
;460830:65536=7
;================================================= ====================
;LCD
;================================================= ====================
;CHAN P2.2 NOI VOI E
; P2.1 NOI R/W
;P2.0 NOI RS
;================================================= ====================
#include <C:\Program Files\Rigel\Reads51\Include\sfr51.inc>;
ORG 00H
LJMP START
ORG 0BH
;XULI NGAT BO DINH THOI
CJNE R0,#01H,KB
MOV R0,#0
CPL P2.5
KB:
INC R0
MOV TH0,#0
MOV TL0,#0
RETI
;XU LI NGAT BO DEM
ORG 1BH
CLR TF1
RETI
;CHUONG TRINH CHINH
;================================================= ====================
ORG 30H
START:
;THIET LAP BO DT
MOV TMOD , #01100001B ;BODEM CHE DO 2,BODT CDO 1
MOV TH0,#0
MOV TL0,#0
MOV R0,#0 ;TAO R0=7-->XUNG 1HZ, TAO BANG 0 KIEM
SETB P2.5 ;TRA CHO NHANH
;THIET LAP BO DEM
MOV TH1,#-60
SETB P3.5 ;THIET LAP DAU VAO
; LENH CHO LCD
; -------------
MOV A,#38H
ACALL COMWRT
MOV A,#0EH
ACALL COMWRT
MOV A,#01H ;clear LCD
ACALL COMWRT
MOV A,#06H ;cursor di.ch pha?i
ACALL COMWRT
MOV A,#80H ;chuyen cursor den line 1, pos. 6
ACALL COMWRT
MOV IE,#10000010B ;CHO PHEP NGAT
SETB TR0
SETB TR1
;NHAN DU LIEU TU TL1 DE HIEN THI LEN LCD
; ---------------------------------------------------------
HERE:
MOV A,TL1
MOV 40H,A ;LUU A VO DIA CHI 40H DE KIEM TRA
SUBB A,#-60
MOV B,#10
DIV AB
ORL A,#30H
ACALL DATAWRT
MOV A,B
ORL A,#30H
ACALL DATAWRT
MOV A,#0CH ;TAT CON TRO
ACALL COMWRT
MOV A,#80H ; VE DAU DONG THU NHAT
ACALL COMWRT
LAP: MOV A,TL1
CJNE A,40H,HERE ;SO SANH NEU BANG TIEP TUC NHAP TL1 VAO A
SJMP LAP
;================================================= ====================
;LCD_VIETLENH VA DU LIEU
;================================================= ====================
COMWRT :
MOV P1,A
CLR P2.0
clr P2.1
SETB P2.2
CLR P2.2
ACALL DELAY ;HAY !
RET
DATAWRT:
MOV P1,A
SETB P2.0
clr P2.1
SETB P2.2
CLR P2.2
ACALL DELAY ;HAY !
RET
DELAY:
MOV R1,#255
TRE: DJNZ R1, TRE
RET
END
*************************
HET
*************************
PS: doan code tren da duoc dua, cac ban down file rar ve thi nap code nay vao nhé. Code này chạy tốt hơn
Chạy mô phỏng các bạn sẽ thấy. Lúc đầu không phải bộ đếm 60, khoảng 2 3 chu kì sau mới trở vè bộ đếm 60
Chẳng biết lõi gì nhỉ.
Lần đầu viết, còn non lắm.Mogn dựoc chỉ giáo!
Comment