ݺߣ

ݺߣShare a Scribd company logo
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
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
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
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.

More Related Content

Phần cứng

  • 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.