CJNE A,#16,WW RET NHÓM 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com... + K t qu :ế ảKETQUA: LCALL CLR_LCD MOV DATA_LCD,#8FH LCALL LENH LCALL WAIT_LCD LCALL DIEUCHINHSOTHU
Trang 1C1 30p C2 30p
81
%
RV1 10k
VCC
C3 10uF
R1 10k
Reset
2
5 6
8 9 4
A B C D
GROUP VI - TD06 - HCMUTRANS
CALCULATOR
XTAL2 18 XTAL1 19
ALE 30 EA 31 PSEN 29
RST 9
P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17P3.6/WRP3.5/T1 1615 P2.7/A15 28
P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24 P2.4/A12 25 P2.5/A13 26P2.6/A14 27U1
AT89C51
DIGITAL TECHNOLOGY DIGITAL TECHNOLOGY
UNIVERSITY OF TRANSPORT IN HOCHIMINH CITY
TD06-NHÓM VI-Đ TÀI 12 Ề
CALCULATOR
Trang 2BÁO CÁO BÀI T P L N VI X LÝ Ậ Ớ Ử
N i dung: ộ
A PH N M M: Ầ Ề
B PH N C NG: Ầ Ứ
C K T LU N: Ế Ậ
Nh n xét c a th y giáo: ậ ủ ầ
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Ch ký: ữ
NHÓM 6
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 3A.PH N M M: Ầ Ề
2 GIAO TI P 8951 VÀ LCD: Ế
a T ng quan LCD ổ
năng n i tr i c a nó đã đổ ộ ủ ượ ử ục s d ng r t nhi u trong vi đi u khi n Kh năng hi n thấ ề ề ể ả ệ ị
c a LCD là r t đa d ng, tr c quan (ch , s và nhi u lo i ký t đ h a khác), d dàngủ ấ ạ ự ữ ố ề ạ ự ồ ọ ễ
Đ thu n l i cho vi c vi t chể ậ ợ ệ ế ương trình, chúng tôi đ nh nghĩa các chân và nhómị
Các ch ươ ng trình con khi giao ti p v i LCD: ế ớ
Trang 4- Đ thi t l p các l nh hay g i d li u ký t cho LCD, ta ph i t o ra m tể ế ậ ệ ở ữ ệ ự ả ạ ộ xung c nh xu ng trên chân E, do đó ta đ a chân E lên m c cao, t o m tạ ố ư ứ ạ ộ
đ tr kho ng 200ms (đ t o đ r ng xung) và sau đó đ a E xu ng th p,ỗ ễ ả ể ạ ộ ộ ư ố ấ
ta có th coi nó là m t chể ộ ương trình con đ ra l nh cho LCD đ c d li u,ể ệ ọ ữ ệ
LENH:
SETB E LCALL DELAY2 CLR E RET
- Đ c d li u hay tr ng thái t LCD: t o m t xung c nh lên, chọ ữ ệ ạ ừ ạ ộ ạ ương trình
nh sau:ư
LENH2: CLR E
LCALL DELAY2 SETB E RET
DELAY2: MOV TMOD,#10H
MOV R7,#4 LL: MOV TH1,#HIGH(-50000)
MOV TL1,#LOW(-50000) SETB TR1
JNB TF1,$
CLR TR1 CLR TF1 DJNZ R7,LL MOV R7,#00H RET
Trong khi vi t chế ương trình ta ph i ki m tra xem LCD có còn b n th c hi n l nhả ể ậ ự ệ ệ
Khi th c hi n các ho t đ ng bên trong chíp, m ch n i bên trong c n m t kho ngự ệ ạ ộ ạ ộ ầ ộ ả
th i gian đ hoàn t t Khi đang th c thi các ho t đ ng bên trong chip nh th , LCD b quaờ ể ấ ự ạ ộ ư ế ỏ
l i m c 0 D a trên nguyên t c đó ta vi t đo n chạ ứ ự ắ ế ạ ương trình con ki m tra tr ng thái b nể ạ ậ
WAIT_LCD:
CLR E CLR RS SETB RW MOV DATA_LCD,#0FFH SETB E
MOV A,DATA_LCD
JB ACC.7,WAIT_LCD CLR RW
CLR RS RET
Trang 5MOV DATA_LCD,#38H ;Ch n bus 8bit, font ký t 5x8, 2 hàng ọ ự LCALL LENH ;G i l nh th c thi xu t ra LCD ọ ệ ự ấ LCALL WAIT_LCD ;Ki m tra tr ng thái b n c a LCD ể ạ ậ ủ CLR RS ;Ch n ch đ g i l nh ọ ế ộ ở ệ
MOV DATA_LCD,#0FH ;LCD on, b t cursor ậ LCALL LENH
LCALL WAIT_LCD RET
CLR_LCD:
MOV DATA_LCD,#01H LCALL LENH
LCALL WAIT_LCD RET
CÁCH 1:
WRITE_TEXT:
SETB E ;E=1 b t đ ul nh LCD ắ ầ ệ SETB RS ;RS=1 đ ch n thanh ch đ xu t ể ọ ế ộ ấ
;các d li u ký t đ hi n th lên LCD ữ ệ ự ể ể ị MOV DATA_LCD,#’T’ ;goi d li u ký t ch T lên LCD ữ ệ ự ữ CLR E ;E=0 t o c nh xu ng ạ ạ ố
LCALL WAIT_LCD ; Ki m tra xem LCD còn b n hay không ể ậ RET
CACH2:
WRITE_TEXT:
SETB RS MOV DATA_LCD,#’T’
LCALL LENH LCALL WAIT_LCD RET
Trong ch ươ ng trình có m t s đo n ch ộ ố ạ ươ ng trình xu t ch , VD: ấ ữ
WRITE_TEXT1:
MOV A,R6 MOV DPTR,#TEN1 MOVC A,@A+DPTR SETB RS
MOV DATA_LCD,A LCALL LENH LCALL WAIT_LCD MOV A,R6 INC A MOV R6,A CJNE A,#18,WRITE_TEXT1 RET
TEN1: DB ‘!DH GTVT TPHCM! ‘
Trang 7Xác đ nh mã các phím nh n b ng ph n m m:ị ấ ằ ầ ề
- Khi nh n phím thì hàng và c t tấ ộ ương ng s đứ ẻ ược n i v i nhauố ớ
- Đ xác đ nh để ị ược phím nh n ta quét bàn phím: ta th c hi n quét t ngấ ự ệ ừ hàng, đ u tiên cho hàng 1 m c logic 0, các hàng và c t khác m c logicầ ở ứ ộ ở ứ
1, ta đoc giá tr hàng và c t thông qua Port 1.ị ộ
P1.7 P1.7
P1.7
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6
H1 H2 H3 H4 C1 C2 C3 C4
3 2 1
5 6 7
8 9 A B
C D E F
Trang 8CALCULATOR
Trang 10SCAN_KEY:
MOV R1,#0FEH MOV R6,#4 SCAN:
MOV P1,R1 MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,GET_CODE XCH A,R1
RL A XCH A,R1
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 11DJNZ R6,SCAN CLR F0 LJMP EXIT GET_CODE:
PUSH ACC MOV A,#4 CLR C SUBB A,R6 MOV R5,A POP ACC SWAP A MOV R4,#4 LOOP2:
RRC A JNC SET_FLAG XCH A,R5 ADD A,#4 XCH A,R5 DJNZ R4,LOOP2 SET_FLAG:
SETB F0 MOV A,R5 EXIT: MOV R1,#00H
MOV R6,#00H RET
M ch th c t đạ ự ế ược k t n i v i Port1 nh sau:ế ố ớ ư
2
5 6
8 9 4
P1.0 P1.1 P1.2 P1.3
Trang 12A B C D
XTAL2 18 XTAL1 19
ALE 30 EA 31 PSEN 29
RST 9
P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28
P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27
Trang 13Kh i t oở ạ LCD
2
START
Trang 14(R4)=
0BBH
(R4) = 0B7H
(R4) = 07BH
Trang 15Đo n mã chạ ươORGng trình chính:0000H
JMP MAIN ORG 0030H
START: MOV DATA_LCD,#0FFH MAIN: LCALL KHOITAO
LCALL WAIT_LCD MOV R0,#30H MOV R3,#5 MOV 30H,#0FFH
Trang 16MOV 31H,#0FFH MOV 32H,#0FFH MOV 33H,#0FFH KK: LCALL SCAN_KEY ;Quet ban phim
MOV R4,P1 CJNE R4,#0F7H,NEXT ;Tiep tuc scan key khi tin hieu vao tu ban phim ko co JMP KK
NEXT: CJNE R4,#077H,XOATUNGKYTU
LCALL TATMO ;stop tat mo ct XOATUNGKYTU:
CJNE R4,#0BBH,NEXT3 MOV 29H,#0
MOV 39H,#0 LCALL CLR_LCD LJMP NHAPSO NEXT3:
CJNE R4,#0B7H,NEXTCONG ;Xoa man hinh MOV 29H,#0
MOV 39H,#0 LCALL CLR_LCD JMP NHAPSO
NEXTCONG:
CJNE R4,#07BH,NEXTTRU ;Nh n phím + ấ LCALL DIEUCHINHSOTHU1 ;Luu so vua nhap vao dung vi tri de tinh toan sau LCALL WAIT_LCD
LCALL CLR_LCD CLR A MOV 60H,#0FFH LJMP NHAPSO ;quay lai nhap lai so moi
NEXTTRU:
CJNE R4,#07DH,NEXTBANG ;Nh n phím - ấ LCALL DIEUCHINHSOTHU1 ;Luu so vua nhap vao dung vi tri de tinh toan sau LCALL WAIT_LCD
LCALL CLR_LCD CLR A MOV 60H,#00H LJMP NHAPSO ;quay lai nhap lai so moi NEXTBANG: ;Nh n phím = ấ
CJNE R4,#07EH,XUATSO LCALL KETQUA
LJMP KK
XUATSO:
LCALL WRITE1 ;Xu t s ra màn hình LCD ấ ố MOV DATA_LCD,#07H ;Dich hien thi sang trai de xuat so ke tiep LCALL LENH
LCALL WAIT_LCD DJNZ R3,KK ;S ch s có quá 4 không, quá thì báo ngay! ố ữ ố LCALL CLR_LCD
MOV DATA_LCD,#06H LCALL LENH
LCALL WAIT_LCD MOV R6,#0 LCALL WRITE_TEXT3 ;Xu t báo nh p quá 4 ch s ấ ậ ữ ố
NHÓM 6
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 175 CÁC ĐO N CH Ạ ƯƠ NG TRÌNH CON:
+ Xu t ch :ấ ữ
WRITE_TEXT2:
MOV R6,#0 WW: MOV A,R6 MOV DPTR,#TEN2 MOVC A,@A+DPTR SETB RS
MOV DATA_LCD,A LCALL LENH LCALL WAIT_LCD MOV A,R6 INC A
Trang 18CJNE A,#16,WW RET
NHÓM 6
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 19(69H) = 22H
TATMO:
MOV R3,69H CJNE R3,#22H,TAT MOV 69H,#00H MOV 39H,#0 LCALL CLR_LCD JMP NHAPSO TAT: LCALL CLR_LCD
MOV DATA_LCD,#06H LCALL LENH
LCALL WAIT_LCD MOV R6,#0 LCALL WRITE_TEXT4 LCALL CLR_LCD MOV DATA_LCD,#08H LCALL LENH
LCALL WAIT_LCD MOV 69H,#22H TAT1: MOV R4,P1
CJNE R4,#077H,TAT1 LJMP TATMO RET
Trang 20+Đi u ch nh và l u s th nh t:ề ỉ ư ố ứ ấ
DIEUCHINHSOTHU1:
MOV A,33H CJNE A,#0FFH,B1 MOV A,32H CJNE A,#0FFH,B2 MOV A,31H CJNE A,#0FFH,B3 MOV A,30H CJNE A,#0FFH,B4 B4: MOV 43H,30H
MOV 42H,#00H MOV 41H,#00H MOV 40H,#00H LJMP EXIT1 B3: MOV 43H,31H
MOV 42H,30H MOV 41H,#00H MOV 40H,#00H LJMP EXIT1 B2: MOV 43H,32H
MOV 42H,31H MOV 41H,30H MOV 40H,#00H LJMP EXIT1 B1: MOV 43H,33H
MOV 42H,32H MOV 41H,31H
MOV 40H,30H MOV 39H,29H EXIT1: RET
NHÓM 6
(30H) = 0FFH
R
(43H) = (33H)
(33H) = 0FFH
(32H) = 0FFH
(31H)= 0FFH
(42H) = (32H) (41H) = (31H) (40H) = (30H) (39H) = (29H)
R
(43H) = (32H) (42H) = (31H) (41H) = (30H) (40H) = 0
R
(43H) = (31H) (42H) = (30H) (41H) = 0 (40H) = 0
R
(43H) = (30H) (42H) = 0 (41H) = 0 (40H) = 0
RET
RE
ĐI U CH NH S TH Ề Ỉ Ố Ứ
1
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 21+ K t qu :ế ả
KETQUA: LCALL CLR_LCD
MOV DATA_LCD,#8FH LCALL LENH
LCALL WAIT_LCD LCALL DIEUCHINHSOTHU2 MOV A,60H
CJNE A,#00H,TINH LCALL TINHTRU JMP TIEPTUC TINH: LCALL TINHCONG TIEPTUC: LCALL BANG
MOV R0,#30H MOV R3,#5 RET
Trang 22+ Đi u ch nh s th 2:ề ỉ ố ứ
DIEUCHINHSOTHU2:
MOV A,33H CJNE A,#0FFH,EXIT2 MOV A,32H
CJNE A,#0FFH,BB2 MOV A,31H CJNE A,#0FFH,BB3 MOV 33H,30H MOV 32H,#00H MOV 31H,#00H MOV 30H,#00H LJMP EXIT2
BB3: MOV 33H,31H
MOV 32H,30H MOV 31H,#00H MOV 30H,#00H LJMP EXIT2 BB2: MOV 33H,32H
MOV 32H,31H MOV 31H,30H MOV 30H,#00H LJMP EXIT2 EXIT2: RET
NHÓM 6
(30H) = 0FFH
R
(33H) = 0FFH
(32H) = 0FFH
(31H)= 0FFH
R
(33H) = (32H) (32H) = (31H) (31H) = (30H) (30H) = 0
R
(33H) = (31H) (32H) = (30H) (31H) = 0 (30H) = 0
R
(33H) = (30H) (32H) = 0 (31H) = 0 (30H) = 0
Trang 23; the cong lien tuc cac so MOV B,#10
ADD A,32H ADD A,42H DIV AB MOV 32H,B ;Luu vao the nay thi minh co
; the cong lien tuc cac so
MOV B,#10 ADD A,31H ADD A,41H DIV AB MOV 31H,B ;Luu vao the nay thi minh co
; the cong lien tuc cac so
MOV B,#10 ADD A,30H ADD A,40H DIV AB MOV 30H,B MOV 29H,A ;trong TH tinh cong ma co so
; thu 5(tran) xuat hien thi ta phai
; thuc hien cac lenh nay de duy tri so thu 5 tran do MOV A,39H ;So tran thu 5 nay minh da luu
; vao 39h, nen gio lay ra de tinh ADD A,29H
MOV 29H,A ;Luu vao the nay thi minh co
; the cong lien tuc cac so CLR A
RET
Trang 24Báo l i ỗ
TÍNH TRỪ
(33H) (43H) – (33H)
( 39H) = 0
N
OK
Y
( 30H) <=( 4 0H)
N
( 31H) <=( 4 1H)
( 32H) <=( 4 2H)
( 33H) <=( 4 3H)
( 33H) <=( 4 3H)
A[(43H)+10]–
(32H) (32H)+1
NN
NN
Trang 25MOV A,39H CJNE A,#0,OK MOV A,30H CJNE A,40H,BAOLOI1 MOV A,31H
L1: CJNE A,41H,BAOLOI2
MOV A,32H L2: CJNE A,42H,BAOLOI3
MOV A,33H L3: CJNE A,43H,BAOLOI4
JMP OK BAOLOI4: JNC LOI
JMP OK BAOLOI1: JNC LOI
JMP L1 BAOLOI2: JNC LOI
JMP L2 BAOLOI3: JNC LOI
JMP L3
LOI: LCALL WRITE_TEXT7
LCALL DELAY3 LCALL CLR_LCD LJMP NHAPSO
OK:
; -MOV A,43H CJNE A,33H,KBANG1 LJMP LONHON1 KBANG1:
JNC LONHON1 ADD A,#10 CLR C SUBB A,33H MOV B,#10 DIV AB MOV 33H,B MOV A,32H ADD A,#1 MOV 32H,A LJMP TIEP1 LONHON1:
SUBB A,33H MOV 33H,A
TIEP1: MOV A,42H
; -CJNE A,32H,KBANG2 LJMP LONHON2 KBANG2:
JNC LONHON2 ADD A,#10 CLR C SUBB A,32H MOV B,#10 DIV AB MOV 32H,B MOV A,31H ADD A,#1 MOV 31H,A LJMP TIEP2 LONHON2:
SUBB A,32H MOV 32H,A
TIEP2: MOV A,41H
; -CJNE A,31H,KBANG3 LJMP LONHON3 KBANG3: JNC LONHON3
ADD A,#10 CLR C SUBB A,31H MOV B,#10 DIV AB MOV 31H,B MOV A,30H ADD A,#1 MOV 30H,A LJMP TIEP3 LONHON3:
SUBB A,31H MOV 31H,A
TIEP3: MOV A,40H
; -CJNE A,30H,KBANG4 LJMP LONHON4 KBANG4: JNC LONHON4
ADD A,#10 CLR C SUBB A,30H MOV B,#10 DIV AB MOV 30H,B MOV A,39H SUBB A,#1 MOV 29H,A
Trang 26A B C D
XTAL2 18 XTAL1 19
ALE 30 EA 31 PSEN 29
RST 9
P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28
P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27
U1
AT89C51
CALCULAT O R
LJMP TIEP4 LONHON4:
SUBB A,30H
MOV 30H,A TIEP4: RET
+ Xu t k t qu s ra màn LCD:ấ ế ả ố
BANG: MOV R1,#30H
MOV A,29H ADD A,#30H SETB E SETB RS MOV DATA_LCD,A LCALL DELAY CLR E LCALL WAIT_LCD XUAT:
MOV A,@R1 ADD A,#30H SETB E SETB RS MOV DATA_LCD,A LCALL DELAY CLR E LCALL WAIT_LCD INC R1
CJNE R1,#34H,XUAT RET
NHÓM 6
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 27 K t qu ch y mô ph ng: M ch ch y t t và đúng, nh ng ph i ch nh l i chế ả ạ ỏ ạ ạ ố ư ả ỉ ạ ươ ngtrình ki m tra tr ng thái b n c a LCD nh sau m ch m i ho t đ ng:ể ạ ậ ủ ư ạ ớ ạ ộ
;KIEM TRA TRANG THAI BAN LCD WAIT_LCD:
SETB E CLR RS SETB RW MOV A,DATA_LCD
JB ACC.7,WAIT_LCD CLR RW CLR RS RET
ch yạ
WAIT_LCD:
CLR RS SETB RW MOV DATA_LCD,#0FFH SETB E
MOV A,DATA_LCD
JB ACC.7,WAIT_LCD CLR RW CLR RS RET
Trang 29+ Đ t v trí các chân h p lý khi layoutặ ị ợ
- Ph n m m tầ ề ương đ i ph c t p, nh t là đ i v i nh ng ngố ứ ạ ấ ố ớ ữ ười m i h c và ch a có nhi uớ ọ ư ề kinh nghi m nh nhóm tui, c n vi t nhi u, tham kh o nhi u chệ ư ầ ế ề ả ề ương trình thì m i có kinh nghi mớ ệ
t t đ vi t.ố ể ế
Trang 30CALCULAT O R
- Chương trình còn dài dòng, ph c t p, ch a có th i gian nhi u cho vi c t i u Vi tứ ạ ư ờ ề ệ ố ư ế
chương trình xong m i nhìn vào đó v l u đ (không t t l m)ớ ẽ ư ồ ố ắ
- Chương trình ch a đư ược vi t hoàn thi n: thi u ph n xóa t ng ký tế ệ ế ầ ừ ự
- Trong nhóm ch a có s phân công công vi c h p lý, m t s thành viên còn ch a th c sư ự ệ ợ ộ ố ư ự ự