Professional Documents
Culture Documents
TP.H CH MINH
------
MSSV:
41104041
Mnh Thng
Nguyn c Bnh
41100298
Nguyn Hu Thnh
41003060
Bi 1: Th nghim vi LED n
Chp tt n p1.0 vi chu k l 500ms
Thut ton: to vng lp lin tc chp tt n vi chu k l 500ms
Lu thut ton:
ORG
DELAY 500ms
Source code:
ORG
2000H
LAP:
CPL
CALL
SJMP
DL500:
PUSH
PUSH
PUSH
MOV
L2:
MOV
L1:
MOV
DJNZ
DJNZ
DJNZ
POP
P1.0
DL500
LAP
05
06
07
R5, #10
R6, #100
;gn r6 = 100
R7, #250
R7, $
R6, L1
R5, L2
;gn r7 = 250
07
;gn r5 = 10
;ngn xp bo tn gi tr
; ( theo quy tc ct trc th ly sau)
POP
POP
RET
06
05
END
DPTR#0000H
A#0E0H
@DPTRA
DELAY
INC A
A>9
Source code:
AGAIN:
NEXT:
ORG
MOV
MOV
MOVX
DPTR
LCALL
INC
CJNE
SJMP
DELAY:
LAP1:
MOV
MOV
MOV
MOV
SETB
JNB
CLR
CLR
DJNZ
RET
END
2000H
DPTR,#0000H
A, #0E0H
@DPTR, A
R7,#10
;vng lp delay s dng timer 1
TMOD,#01H
TH0,#HIGH(-50000)
TL0,#LOW(-50000)
TR0
TF0,$
TR0
TF0
R7,LAP1
+Th nht: chng trnh con nhn lnh truyn n thc hin (WRITE). nhn
lnh th ta phi setb p3.4 v clr p3.5. Chng trnh ny gip LCD nhn lnh t my
nh xa mn hnh LCD, hin th kiu no, con tr u.v..v
+Th hai: chng trnh nhn k t xut ra LCD hin th (WRITE_TEXT). nhn
chui k t ta phi setb p3.4 v c p3.5.
-Vit chng trnh con khi ng LCD (tn l LCD) vi ph bin l truyn 3
lnh sau:
+#06H: hin th tng v khng shift
+#0EH: hin th cursor nhng khng hin th blinking
+#38H: giao tip 8 bit, 2 dng vi font 5x8
-Vit chng trnh con ly k t t bng (l chui k t mun hin th) (chng
trnh con BANG).
-Vit chng trnh con delay to tr. c th xut hin tng ch mt
trn LCD.
-Chng trnh chnh:
+Khi ng LCD.
+Xa mn hnh ang hin th trn LCD bng cch truyn lnh #01H.
+To vng lp hin th tng ch mt trn LCD bng cch tra bng.
Lu thut ton:
ORG
DPTR#8000H
CALL LCD ; khi ng LCD
A#01H
CALL WRITE ;xa mn hnh
R5#5
A#0
R4#0
CALL BANG
CALL WRITE_TEXT
R4R4+1
AR4
R5R5-1
R5=0
SJMP $
; lp
ti ch chng
trnh khng kt thc
Source code:
ORG
MAIN:
MOV
CALL
MOV
2000H
DPTR , #8000H
LCD
A,#01H
CALL
WRITE
MOV
R5,#5
MOV
MOV
LAP: CALL
CALL
INC
MOV
DJNZ
SJMP
BANG:
MOV
MOVC
RET
;To vng lp 5 ln ng vi
;ch HELLO c 5 k t
A,#0
;Khi to A bng u t k t th nht
R4,#0
;Khi to bin m tng gi tr A
; (v A d thay i trong qu trnh lm)
BANG
;Gi bng mang k t
WRITE_TEXT
;Hin th ln LCD
R4
;Tng bin m R4 gn vo A
A,R4
R5,LAP
;Gim R5 ri quay li
$
;Lp ti ch khng lm
; tip cu lnh tip theo
DPTR,#TABLE
A,@A+DPTR
;gi bng
;Gn vo A k t th A ca chui k t
MOV
A,#38H
;Khi ng LCD
;truyn lnh cho LCD giao tip 8 bit,
; 2 dng vi font 5x8
LCALL
MOV
WRITE
A,#0EH
LCALL
MOV
WRITE
A,#06H
LCALL
RET
WRITE
LCD:
WRITE_TEXT:
MOV
SETB
DPTR,#8000H
P3.4
SETB
MOVX
P3.5
@DPTR,A
CLR
LCALL
RET
P3.4
WAIT
WRITE:
MOV
SETB
CLR
DPTR,#8000H
P3.4
P3.5
MOVX
@DPTR,A
CLR
LCALL
RET
P3.4
WAIT
WAIT:
PUSH
PUSH
MOV
LAP1:
MOV
DJNZ
DJNZ
POP
POP
RET
07
06
R7,#250
R6,#250
R6,$
R7,LAP1
06
07
TABLE:
DB 'HELLO'
END
Lu gii thut:
ORG
Khi to cc gi tr cho:
1. SCON
2. TMOD
3.
LCD
Yes
No
Nhp k t na
hay khng.
Code:
ORG
2000H
MOV
SCON,#52H
; cng ni tip , ch 1
MOV
TMOD,#20H
; time 1 mode 2
MOV
TH1,#-3
SETB
TR1
MOV
A,#01H
; xa mn hnh LCD
CALL
WRITE
MOV
DPTR,#8000H
Nhy ti ch ch
lnh k tip.
CALL
LCD
CALL
IN
CALL
WRITE_TEXT
CALL
OUT
SJMP
LAP
SJMP
LAP:
; Gi chng trnh con nhp d liu vo.
;================
;============================
;======= Cc chng trnh con.
OUT:
JNB
TI,$
CLR
TI
MOV
SBUF,A
;Pht
JNB
RI,$
CLR
RI
MOV
A,SBUF
RET
IN:
RET
;================================
;=====================================
;=== Di y l phn giao tip vi LCD c ni mc trc.
LCD: MOV
A,#38H
LCALL
WRITE
MOV
A,#0EH
LCALL
WRITE
MOV
A,#06H
LCALL
WRITE
RET
WRITE_TEXT:
MOV
DPTR,#8000H
SETB
P3.4
SETB
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WRITE:
MOV
DPTR,#8000H
SETB
P3.4
CLR
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WAIT:
MOV
R7,#4
LAP1:
MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,LAP1
RET
END
5) iu Khin ADC:
L thuyt c bn:
V c bn, phn cng c trong gio trnh. Phn ny ta s dng thm hin th
LCD c ni th nghim trc. Tuy nhin lu thm v hot ng v thit k
ca ADC0809 c nu trong gio trnh.
Lu :
Lu cc lnh giao tip vi ADC.
Cch hin th s nh phn (hin ang th hin gi tr thp phn ).
Yu cu: Vit chng trnh thc hin c in p knh 0 v hin th ln LCD.
Lu gii tht:
ORG 2000H
Kt hp a ch ADC vi knh
Lnh chuyn i knh
Delay
no
Gi tr c thay
i
Nhy ti ch
2000H
MOV
A,#01H
CALL
WRITE
MOV
DPTR,#8000H
CALL
LCD
MOV
A,#01H
CALL
WRITE
MOV
DPTR,#4000H
LAP:
;xa man hnh LCD
MOVX
@DPTR,A
MOV
R7,#50
DJNZ
R7,$
MOVX
A,@DPTR
MOV
B,#05H
MUL
AB
MOV
R3,A
; bit thp vo R3
MOV
A,B
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
MOV
A,#'.'
CALL
WRITE_TEXT
MOV
B,#10
; c ngoi vi ly gi tr
; chuyn 10 vo B
MOV
A,R3
; Ly bit thp
MUL
AB
MOV
A,B
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
CALL
WAIT
MOV
A,#'V'
CALL
WRITE_TEXT
CALL
WAIT
SJMP
LAP
SJMP
;==============================
;====================================
;===== Cc chng trnh con giao tip vi LCD ni phn trc
LCD: MOV
A,#38H
LCALL
WRITE
MOV
A,#0EH
LCALL
WRITE
MOV
A,#06H
LCALL
WRITE
RET
WRITE_TEXT:
MOV
DPTR,#8000H
SETB
P3.4
SETB
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WRITE:
MOV
DPTR,#8000H
SETB
P3.4
CLR
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WAIT:
PUSH
07
PUSH
06
MOV
R7,#4
LAP1: MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,LAP1
POP
06
POP
07
RET
XUAT:
MOV
DPTR,#0000H
MOV
X @DPTR,A
RET
TABLE:
END
DB 030H,031H,032H,033H,034H,035H,036H,037H,038H,039H
Hnh 2 dng nh th thi gian c. Dng cho chng trnh con READ_TIME
SLOT. Theo s thi gian clear P3.2 khong 15 s. set l 45 s. nhng thc t khi
vit code n khng chy ng tham kho ti liu m mnh t my m dnh th li th
mnh nh th nh trong chng trnh con th li chy n.
cc lnh NOP y gip to thi gian delay hon tt vic nhn bit. S lnh NOP
do ta t nh th. Vic nh th l cng vic kh khn nht y !
Vi c th kit ch c 1 cm bin nhit nn ta ch s dung 1 s lnh RO M v chc
nng sau
lnh ROM:
- SKIP ROM (CCh)
Lnh ny cho php thit b iu khin truy nhp thng n cc lnh b nh ca
DS1820 m khng cn gi chui m 64 bit ROM. Nh vy s tit kim c thi gian
ch i nhng ch mang hiu qu khi trn bus ch c mt cm bin.
Lnh chc nng DS1820
- CONVERT T (44h)
Lnh ny khi ng mt qu trnh o v chuyn i gi tr nhit thnh s (nh
phn). Sau khi chuyn i gi tr kt qu o nhit c lu tr trn thanh ghi nhit
2 byte trong b nh nhp Thi gian chuyn i khng qu 200 ms, trong thi gian
ang chuyn i nu thc hin lnh c th cc gi tr c ra u bng 0.
- READ SCRATCHPAD (BEh)
Lnh ny cho php thit b ch c ni dung b nh nhp. Qu trnh c bt u t bit
c ngha nht ca byte 0 v tip tc cho n byte rh 9 (byte 8 CRC). Thit b ch
c th xut ra mt xung reset lm dng qu trnh c bt k lc no nu nh ch c
mt phn ca d liu trn b nh nhp cn c c.
ORG
2000
Gi lnh CONVERT T
Ra lnh bt u chuyn i
nhit
To xung reset
Xut gi tr ra
LCD
1 lnh ROM
1 lnh chc nng
P3.2
Chuyn 1 bit d liu t C vo P3.2. khi mun truy xut lnh SKIPROM th ta s
chuyn dn tng bit m lnh ca SKIPROM l 44H vo P3.2 thng qua c C
Nhim v ca Read_time_slot:
P3.2
c 1 bit d liu t P3.2 ra C . khi c d liu ra thanh ghi A. ta cng thc hin tng
t c dn tng bit thng qua c C.
SOURCE CODE
ORG 2000H
; gn dng R2 nh l thanh ghi m
DEM
EQU R2
JMP
CHUONG_TRINH_CHINH
WRITE_TIME_SLOT:
CLR
P3.2
NOP
NOP
MOV
P3.2, C
MOV
R5, #30
LCALL
DELAY
SETB
P3.2
NOP
NOP
RET
READ_TIME_SLOT:
CLR
NOP
NOP
P3.2
SETB
P3.2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV
C,P3.2
MOV
R5,#50
LCALL
DELAY
RET
RESET_DS1820:
CLR
P3.2
MOV
R5,#255
LCALL
DELAY
SETB
P3.2
MOV
R5,#255
LCALL
DELAY
RET
; chng trnh gi lnh iu
WRITE_BYTE:
; khin DS1820
MOV
DEM,#8
; gn gi tr m l 8.
;Tc l ta dch 8 bit
WRITE_LAI:
RRC
LCALL
WRITE_TIME_SLOT
DJNZ
DEM, WRITE_LAI
SETB
P3.2
MOV
R5,#50
LCALL
DELAY
RET
;chng trnh gi lnh c
READ_BYTE:
; cha gi tr nhit
LCALL
READ_TIME_SLOT
; c 1 bit lu vo c C
RRC A
MOV
READ_LAI:
DJNZ
DEM,READ_LAI
dch bit t c C vo A
; thc hin ln lt 8 ln ng
;vi 8 bit
MOV
R5,#50
;delay 100s dm bo
;hon tt vic dch bit
LCALL
DELAY
; kt thc chng trnh con gi
RET
; tr nh phn nhit lu A
;chng trnh delay R5*2 micro giy
DELAY:
DJNZ
R5,$
RET
DELAY_LONG:
MOV
R6,#0FFH
DELAY_LAI:
LCALL
DELAY
DJNZ
R6, DELAY_LAI
RET
CHUONG_TRINH_CHINH:
;=======xa mn hnh LCD========
MOV
DPTR,#8000H
CALL
LCD
LAP: MOV
A,#01H
;===========================
CALL
WRITE
SETB
P3.2
AGAIN:
LCALL
RESET_DS1820
MOV
A,#0CCH
LCALL
WRITE_BYTE
; ti DS1820 v y
;ch c 1 cm bin
MOV
A,#44H
; lnh CONVERT T
LCALL
WRITE_BYTE
; bt u chuyn i nhit
; sang nh phn
LCALL
RESET_DS1820
MOV
A,#0CCH
LCALL
WRITE_BYTE
MOV
A,#0BEH
LCALL
WRITE_BYTE
; c dn nh nhp cha
;gi tr nhit
LCALL
READ_BYTE
; c dn
CLR C
RRC A
; dch phi A c c C
; lu bit vo c C
MOV
P1.0,C
MOV
B,#10
DIV
AB
; chia A cho 10 v gi tr
; nhit gm 2 ch s
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
MOV
A,B
;B cha hng n v
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
MOV
A,#'.'
; xut du . ln LCD
CALL
WRITE_TEXT
MOV
C, P1.0
JC
DOLE
SJMP
DOCHAN
DOLE:
MOV
A,#'5'
; nu bit 0 l 1 th nhit
; l xut xx.5 C
CALL
WRITE_TEXT
SJMP
NHAY
DOCHAN:
MOV
A,#'0'
CALL
WRITE_TEXT
SJMP
NHAY
NHAY:
CALL
WAIT
MOV
A,#'C'
; xut ch C ln LCD
CALL
WRITE_TEXT
CALL
WAIT
LCALL
RESET_DS1820
LCALL
DELAY_LONG
; delay
SJMP
LAP
SJMP
MOV
A,#38H
LCALL
WRITE
; coi li bi LCD
MOV
A,#0EH
LCALL
WRITE
MOV
A,#06H
LCALL
WRITE
LCD:
RET
; chng trnh con xut k t ra LCD
WRITE_TEXT:
MOV
DPTR,#8000H
SETB
P3.4
SETB
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WRITE:
MOV
DPTR,#8000H
SETB
P3.4
CLR
P3.5
MOVX
CLR
P3.4
LCALL
WAIT
RET
WAIT:
PUSH
07
PUSH
06
;coi li bi LCD
MOV
R7,#4
MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,LAP1
POP
06
POP
07
LAP1:
RET
TABLE:
DB 030H,031H,032H,033H,034H,035H,036H,037H,038H,039H
END
S dnh th giao tip SDI. Da vo Datasheet MCP4922 th khi mun dch bit vo
chn SDI th ta phi CS mc thp. cho LDAC mc. khi dch bit phi to xung
clock SCK lm tn hiu dch bit. Kt thc dch bit th CS set ln mc 1. LDAC set
xung 0 trong khong 2 chu k my ri set li ln 1
S dch bit t thanh ghi A vo c C ri t c C vo SDI
C
s 16 bit:
8 bit cao lu thanh ghi R4
ORG
Khi ng DAC
MAIN
SETB nCS
CLR nLDAC
Chn gi tr lu vo R4
MOV R1,#8
Cho R1 l gi tr m
Chn gi tr lu vo R2
R1>8
MOV R1,#8
Cho R1 l gi tr m
R1>8
Tt DAC
CLR nCS
SETB nLDAC
CLR nLDAC
Delay hin ln
LCD
CODE:
ORG
2000H
NCS
BIT P1.0
SCK
BIT P1.1
; chng ta d nh d thao tc
SDI
BIT P1.2
NLD
BIT P1.3
NCS
MAIN:
CLR
NLD
MOV
dn
R4,#0F0H
MOV
A,R4
CALL
DICH
CALL
WAIT
MOV
R2,#0FFH
MOV
A,R2
CALL
DICH
CALL
WAIT
CALL
XUAT0
SETB
NCS
NOP
NOP
CLR
NLD
NOP
;lnh
NOP
SETB
NLD
CALL
DELAY2S
SJMP
MAIN
XUAT0:
MOV
A,#01H
WRITE
MOV
DPTR,#8000H
CALL
LCD
MOV
A,#01H
CALL
WRITE
;==============================
MOV
DPTR,#4001H
LAP:
@DPTR,A
CALL
DELAY0
MOVX
A,@DPTR
; c gi tr in p t ADC lu vo A
MOV
B,#05H
;===============================
MUL
AB
MOV
R3,A
MOV
A,B
; cc bn coi li ADC r hn ^^
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
MOV
A,#'.'
CALL
WRITE_TEXT
MOV
B,#10
MOV
A,R3
MUL
AB
MOV
A,B
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CALL
WRITE_TEXT
CALL
WAIT
MOV
A,#'V'
CALL
WRITE_TEXT
CALL
WAIT
SJMP
LAP
RET
;========================================
;=====CHNG TRNH CON DCH BIT VO SDI====
DICH:
R1,#8
RLC
CLR
SCK
SDI,C
;dch t c C vo SDI
MOV
QUAY:
NOP
NOP
MOV
NOP
NOP
SETB
SCK
NOP
NOP
DJNZ
R1,QUAY
RET
DELAY0:
PUSH
07
MOV
R7,#50
DJNZ
R7,$
POP
07
RET
DELAY2S:
DELAY:
MOV
R7,#50
LAP100:
MOV
TMOD,#01H
MOV
TH0,#HIGH(-50000)
MOV
TL0,#LOW(-50000)
SETB
TR0
JNB
TF0,$
CLR
TR0
CLR
TF0
DJNZ
R7,LAP100
RET
LCD:
MOV
A,#38H
LCALL
WRITE
;coi li bi LCD ^^
MOV
A,#0EH
LCALL
WRITE
MOV
A,#06H
LCALL
WRITE
RET
WRITE_TEXT:
;coi li bi LCD
MOV
DPTR,#8000H
SETB
P3.4
SETB
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
RET
WRITE:
MOV
DPTR,#8000H
SETB
P3.4
CLR
P3.5
MOVX
@DPTR,A
CLR
P3.4
LCALL
WAIT
;coi li bi LCD
RET
WAIT:
PUSH
07
PUSH
06
MOV
R7,#4
LAP11:
MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,LAP11
POP
06
POP
07
RET
TABLE:
DB 030H,031H,032H,033H,034H,035H,036H,037H,038H,039H
; bng tra m k t ln LCD t 0-9
END
A #01
R2 #8
R1 #0
COT:
CHN COT COT:
CHN COT HIEN
TH
HIEN TH
HANG :
RL A
PUSH A
LY K T CN HIN TH TRN HNG
V XUT RA HNG
DELAY 1ms
POP A
R2 R2 1
IF R2 = 0
CODE v ch thch :
ORG
2000H
MOV
A,#01H
MAIN:
LAP2:
MOV
; do c 8 ct nn gn r2=8
R2,#8
R1,#0
LOOP:
CALL
COT
CALL
HANG
DJNZ
R2,LOOP
SJMP
MAIN
MOV
DPTR,#0C000H
MOVX
@DPTR,A
; chn ct cn c hin th
COT:
RL
cho ln lp sau
RET
HANG:
PUSH
ACC
DU_LIEU
MOV
DPTR,#0A000H
MOVX
@DPTR,A
LCALL
DELAY
POP
ACC
INC
R1
RET
DU_LIEU:
MOV
A,R1
; ly v tr ca k t trong bng
MOV
DPTR,#CHAR
; ly a ch u bng
MOVC
A,@A+DPTR
; ly k t cn xut ra hng
RET
DELAY:
PUSH
07
;=================================================
PUSH
06
MOV
R7,#2
MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,LAP
POP
06
POP
07
LAP:
RET
;==================================================
CHAR:
END
DB 03H,0EDH,0EEH,0EEH,0EDH,03H,0FFH,0FFH
BI 9 : TH NGHIM VI NG C DC
Th nghim 1 : vit chng trnh cho php ng c chy theo chiu thun trong vng
2s , ngng 2s , quay chiu nghch 2s , ngng 2s v lp li .
Lu thut ton :
ORG
DPTRE000
THUAN :
ACC.01 ; ACC.10
DELAY 2S
NGHI :
ACC.0 0 ; ACC.1 0
DELAY 2S
NGHICH :
ACC.0 0 ; ACC.1 1
DELAY 2S
NGHI :
ACC.0 0 ; ACC.1 0
DELAY 2S
CODE v ch thch :
ORG 2000H
LOOP;
; ly a ch ca ngoi vi ng c dc
MOV
DPTR,#0E000H
CALL
THUAN
MOVX
@DPTR,A
CALL
DELAY2S
; cho ng c quay 2s
MOV
DPTR,#0E000H
CALL
NGHI
MOVX
@DPTR,A
; bt u cho ng c ngh
CALL
DELAY2S
; ng c ngh 2s
MOV
DPTR,#0E000H
CALL
NGHICH
MOVX
@DPTR,A
CALL
DELAY2S
MOV
DPTR,#0E000H
CALL
NGHI
MOVX
@DPTR,A
CALL
DELAY2S
SJMP
LOOP
; ng c quay nghch 2s
; quay li ban u
THUAN:
SETB
ACC.0
;=====================================================
CLR
ACC.1
ci t ch quay thun
RET
;=====================================================
NGHICH:
CLR
ACC.0
;====================================================
SETB
ACC.1
; ci t ch quay nghch
RET
;====================================================
NGHI:
CLR
ACC.0
;========================================================
CLR
ACC.1
; ci t ch ngh
RET
;========================================================
DELAY2S:
MOV
R7,#20
;========================================================
LAP2: MOV
R6,#200
LAP1: MOV
R5,#250
DJNZ
R5,$
DJNZ
R6,LAP1
DJNZ
R7,LAP2
RET
;========================================================
END