1. ALE EA 30 31
PSEN 29
RST 9
XTAL2 18
XTAL1 19
U1
17 P3.7/RD
16 P3.6/WR
15 P3.5/T1
39 P0.0/AD0 38 P0.1/AD1 37 P0.2/AD2 36 P0.3/AD3 35 P0.4/AD4 34 P0.5/AD5 33 P0.6/AD6 32 P0.7/AD7
P1.0/T2 1 P1.1/T2EX 2 P1.2/ECI 3 P1.3/CEX0 4 P1.4/CEX1 5 P1.5/CEX2 6 P1.6/CEX3 7 P1.7/CEX4 8
10 P3.0/RXD 11 P3.1/TXD 12 P3.2/INT0 13 P3.3/INT1 14 P3.4/T0
28 P2.7/A15
21 P2.0/A8 22 P2.1/A9 23 P2.2/A10 24 P2.3/A11 25 P2.4/A12 26 P2.5/A13 27 P2.6/A14
AT89C51RD2
C1
30p
C2
X1
CRYSTAL
30p
14 D7
13 D6
12 D5
11 D4
10 D3
9 D2
8 D1
7 D0
6 E
5 RW
4 RS
R1
8.3k
VCC
C3
10u
R2
100
1 VSS 2 VDD 3 VEE
LCD1
LM016L
RV1
1k
U2
DS18B20
2 VDCQC 27.0 3
1 GND
UP DOWN
ENTER CLEAR
PHẦN CỨNG:
Đề tài: Đọc nhiệt độ từ DS1820 và hiển thị kết quả lên LCD, nếu nhiệt độ vượt quá một nhiệt độ
cài đặt nào đó thì xuất dữ liệu cảnh báo ra led đơn hoặc LCD tại vị trí khác.
Có thể cài đặt được nhiệt độ ngưỡng từ phím nhấn.
Em nhờ mọi người kiểm tra dùm em xem phần cứng của bọn em có còn thiếu sót gì không mà
khi bọn em viết code thì nó không thấy chạy khi mô phỏng bằng proteus.
Code:
ORG 0
DB0 EQU P1.0
DB1 EQU P1.1
DB2 EQU P1.2
2. DB3 EQU P1.3
DB4 EQU P1.4
DB5 EQU P1.5
DB6 EQU P1.6
DB7 EQU P1.7
E EQU P3.7
RS EQU P3.6
RW EQU P3.5
DATA1 EQU P1
;-------------------
MOV A,#31H
CALL INIT_LCD
;hiển thị số 1 ra lcd
CALL WRITE_TEXT
JMP EXIT
;-----------------------------
WAIT_LCD: ;KIEM TRA TRANG THAI BAN CUA LCD
CLR E ;TAO CANH LEN BAT DAU CHO LENH LCD
CLR RS ;CHON CHE DO GOI LENH
SETB RW ;CHON CHE DO DOC DATA
MOV DATA,#0FFH ;CHON DATA INPUT
SETB E ;TAO CANH LEN
MOV A,DATA ;DOC GIA TRI VE
JB ACC.7,WAIT_LCD ;NEU DB7=1,LCD VAN BAN
CLR RW ;TAT RW CHO CAC LENH LCD KE
3. RET
INIT_LCD: ;KHOI DONG LCD
SETB E ;TAO CANH XUONG BAT DAU LENH LCD
CLR RS ;CHON CHE DO GOI LENH
MOV DATA,#38H ;CHON BUS 8 BITS,FONTS KY TU 5x8,2 HANG
CLR E ;TAO CANH XUONG TREN E
LCALL WAIT_LCD ;CHO DEN KHI LCD HET BAN
SETB E ;TAO CANH XUONG, BAT DAU LENH LCD
CLR RS ;CHON CHE DO GOI LENH
MOV DATA,#0EH ;LCD ON,CURSOR OFF
CLR E ;TAO CANH XUONG
LCALL WAIT_LCD ;CHO DEN KHI LCD HET BAN
SETB E ;TAO CANH XUONG BAT DAU LENH LCD
CLR RS ;CHON CHE DO GOI LENH
MOV P1,#06H ;VI TRI CURSOR TU DONG DICH SANG PHAI KHI
;CO KY TU DUOC GUI
CLR E ;TAO CANH XUONG TREN E
LCALL WAIT_LCD ;CHO DEN KHI LCD HET BAN
RET
CLR_LCD: ;XOA MAN HINH HIEN THI
SETB E
CLR RS
MOV DATA,#01H
CLR E
LCALL WAIT_LCD
4. RET
WRITE_TEXT: ;GHI TEXT RA MAN HINH
SETB E
SETB RS
MOV DATA,A
CLR E
LCALL WAIT_LCD
RET
EXIT: NOP
END
; khi viết code và biên dịch ra mã “.hex” thì bọn em thấy nó báo lỗi ở từ khóa “DATA”.
;cô cho em hỏi liệu thay từ khóa “DATA” thành “P1” liệu có được không.