Documente Academic
Documente Profesional
Documente Cultură
PHUÏ LUÏC B
CHÖÔNG TRÌNH ASM VI ÑIEÀU KHIEÅN
AT89S8252
ORG 0
sjmp main
ORG 000bh
ljmp ngatt0
main: mov tmod,#01 ; mode cho time0
lcall Start_LCD
lcall segment_7
jmp main
Start_LCD:
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
clr In_A ;disable output keyboard
clr RS ;RS is low
setb EN ;Eneble is high
setb In_A ;enable output keyboard
nop
mov th0,#0Ch
mov tl0,#03h ;delay time
lcall code_38h
lcall command_byte
lcall ddelay
mov th0,#00H
mov tl0,#4CH
lcall code_38h
lcall command_byte
lcall ddelay ;Initial delay
LCD0:
lcall Clear_display ;Data can dieu khien la 01h
lcall command_byte
lcall firstLCD1
lcall secondLCD1
ret
LCD1:
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall first
lcall sec
ret
set_l1LCD: lcall code_80h ;set DDRAM
lcall command_byte
ret
HTcom: ;hien thi chu dat so lit
lcall Clear_display ;Data can dieu khien la 01h
lcall command_byte
lcall set_l1LCD ;tu dia chi dau tien lien1
lcall D_code
lcall data_byte
lcall A_code
lcall data_byte
lcall T_code
lcall data_byte
lcall khtrang
lcall S_code
lcall data_byte
lcall O_code
lcall data_byte
lcall khtrang
mov a,7ch
cjne a,#14,HTlit
ljmp HTtien
HTlit: lcall chulit
lcall khtrang
jmp HTlitke
HTtien: lcall chutien
HTlitke: mov r7,#4
repoint3: lcall khtrang
djnz r7,repoint3
ret
chutien: lcall T_code
lcall data_byte
lcall I_code
lcall data_byte
lcall E_code
lcall data_byte
lcall N_code
lcall data_byte
lcall sedot
lcall data_byte
ret
chulit: lcall L_code
lcall data_byte
lcall I_code
lcall data_byte
lcall T_code
lcall data_byte
lcall sedot
lcall data_byte
ret
HTtotal: ;hien thi tong so lit
lcall Clear_display ;Data can dieu khien la 01h
lcall command_byte
lcall set_l1LCD ;tu dia chi dau tien lien1
lcall T_code
lcall data_byte
lcall O_code
lcall data_byte
lcall N_code
lcall data_byte
lcall G_code
lcall data_byte
lcall khtrang
lcall S_code
lcall data_byte
lcall O_code
lcall data_byte
lcall khtrang
lcall chulit
mov r7,#4
repoint7: lcall khtrang
djnz r7,repoint7
ret
khtrang: lcall point
lcall data_byte
ret
HTmatkhau: ;hien thi chu vao mat khau:
lcall Clear_display ;Data can dieu khien la 01h
lcall command_byte
lcall set_l1LCD ;tu dia chi dau tien lien1
lcall V_code
lcall data_byte
lcall A_code
lcall data_byte
lcall O_code
lcall data_byte
lcall khtrang ;khoang trang
lcall M_code
lcall data_byte
lcall A_code
lcall data_byte
lcall T_code
lcall data_byte
lcall khtrang
lcall K_code
lcall data_byte
lcall H_code
lcall data_byte
lcall A_code
lcall data_byte
lcall U_code
lcall data_byte
mov a,7ch
cjne a,#25,pass
ljmp mkCA
pass: lcall sedot
lcall data_byte
mov r7,#3
repoint2: lcall khtrang
djnz r7,repoint2
ret
mkCA: lcall khtrang
lcall C_code
lcall data_byte
lcall A_code
lcall data_byte
lcall sedot
lcall data_byte
ret
daucham: lcall dot_code
lcall data_byte
ret
dat_keylit: lcall code_C9h ;set DDRAM
lcall command_byte
lcall lchar5
lcall data_byte
lcall lchar4
lcall data_byte
lcall lchar3
lcall data_byte
do_next: mov a,7ch
cjne a,#9,dot_tien
jmp dlit
dot_tien: mov a,4dh
cjne a,#0fh,dot
lcall point
lcall data_byte
jmp dlit
dot: lcall dot_code
lcall data_byte
dlit: lcall lchar2
lcall data_byte
mov a,7ch
cjne a,#9,notdot
lcall dot_code
lcall data_byte
notdot: lcall lchar1
lcall data_byte
lcall lchar0
lcall data_byte
ret
dongia: lcall Clear_display ;Data can dieu khien la 01h
lcall command_byte
lcall set_l1LCD ;tu dia chi dau tien lien1
lcall N_code
lcall data_byte
lcall H_code
lcall data_byte
lcall A_code
lcall data_byte
lcall P_code
lcall data_byte
lcall khtrang
lcall D_code
lcall data_byte
lcall O_code
lcall data_byte
lcall N_code
lcall data_byte
lcall khtrang
lcall G_code
lcall data_byte
lcall I_code
lcall data_byte
lcall A_code
lcall data_byte
lcall sedot
lcall data_byte
ret
firstLCD1: lcall set_l1LCD ;tu dia chi dau tien lien1
lcall chutien
mov r7,#3
repoint6: lcall khtrang
djnz r7,repoint6
jmp phu
first: lcall code_88h ;set DDRAM dia chi 88h
lcall command_byte
phu: mov a,31h ;31h cat ma 53h
cjne a,#00,trieu1 ;dich dau cham hang trieu
lcall khtrang
lcall tchar5_6
lcall tchar4
lcall data_byte
setb ie.1
lcall tchar3
lcall data_byte
lcall tchar2_1
setb ie.1
lcall tchar0
lcall data_byte
ret
trieu1: lcall tchar5_6
lcall daucham
lcall tchar4
lcall data_byte
setb ie.1
lcall tchar2_1
lcall daucham
setb ie.1
lcall tchar0
lcall data_byte
ret
tchar5_6: lcall tchar6
lcall data_byte
setb ie.1
lcall tchar5
lcall data_byte
ret
tchar2_1: lcall tchar2
lcall data_byte
lcall tchar1
lcall data_byte
ret
secondLCD1:
lcall code_C0h ;set DDRAM
lcall command_byte
lcall khtrang
lcall chulit
mov r7,#4
repoint5: lcall khtrang
djnz r7,repoint5
jmp toan
sec: lcall code_C9h ;set DDRAM dia chi C9h
lcall command_byte
toan: lcall lchar5
lcall data_byte
setb ie.1
lcall lchar4
lcall data_byte
lcall lchar3
lcall data_byte
setb ie.1
lcall lchar2
lcall data_byte
lcall dot_code ;lam dau cham lit
lcall data_byte
setb ie.1
lcall lchar1
lcall data_byte
lcall lchar0
lcall data_byte
ret
ddelay:
clr tf0
setb tr0
jnb tf0,$
clr tr0
ret
command_byte: clr In_A ;disable RS out
clr RS ;RS is low
nop
setb In_A ;enable RS out
nop
jmp wait_enable
data_byte: clr In_A ;disable RS out
setb RS ;RS is high
nop
setb In_A ;enable RS out
nop
wait_enable:
clr In_A
clr EN ;EN is low
setb In_A
nop
clr In_A
setb EN ;EN is high
setb In_A
;wait to check busy flag
lcall hthi
ret
code_80h:
lcall data_04h
mov r2,#5
clr SDI
lcall zero
ret
code_88h:
lcall data_04h
mov r3,#2
lcall loop_04h ;xxxx1000b
lcall eight
ret
code_C9h:
lcall data_03h
mov r3,#1
setb SDI
mov r3,#2
lcall loop_04h
lcall enable
ret
K_code: ;K code is 4Bh
lcall data_04h ;xxxx0100b
mov r3,#2
setb SDI
lcall loop_04h ;xxxx1001b
mov r3,#2
lcall loop_04h ;xxx10010b, loop_04h lam xong SDI = 0
lcall data_01h
lcall data_01h
lcall enable
ret
L_code: ;L code is 4Ch
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
setb SDI
mov r3,#2
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
mov r3,#3
lcall loop_A
lcall enable
ret
M_code: ;M code is 4Dh
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
data_1101:
setb SDI
mov r3,#2
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
setb SDI
mov r3,#3
lcall loop_A
lcall enable
ret
clr SDI
zero: mov r3,#3
lcall loop_A
dec r2
cjne r2,#0,zero
lcall enable
ret
S_code: ;S code is 53h
lcall data_05h ;xxxx0101b / SDI = 1, CK = 1, In_A = 1
clr SDI
lcall three
ret
T_code:lcall data_05h ;xxxx0101b / SDI = 1, CK = 1, In_A = 1
clr SDI
lcall four
ret
V_code:lcall data_05h ;xxxx0101b / SDI = 1, CK = 1, In_A = 1
clr SDI
lcall six
ret
X_code:lcall data_05h ;xxxx0101b / SDI = 1, CK = 1, In_A = 1
lcall eight
ret
U_code:lcall data_05h ;Cho so 5 vao co lenh clear
lcall five ;Cho so 5 vao khong co lenh clear
ret
num_0:lcall data_03h
mov r2,#4
clr SDI
lcall zero
ret
num_1:lcall data_03h ;xxxx0011b / SDI = 1, CK = 1, In_A = 1
clr SDI
mov r3,#0
lcall loop_A
lcall enable
ret
num_2:lcall data_03h
clr SDI
lcall two
ret
num_3:lcall data_03h
clr SDI
lcall three
ret
num_4:lcall data_03h
clr SDI
lcall four
ret
num_5:lcall data_03h
clr SDI
lcall five
ret
num_6: lcall data_03h
lcall six
ret
num_7: lcall data_03h
clr SDI
lcall seven
ret
num_8: lcall data_03h
lcall eight
ret
num_9: lcall data_03h
lcall nine
ret
sedot: lcall data_03h ; Code is 3Ah
setb SDI
mov r3,#3
lcall loop_A
clr SDI
mov r3,#2
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
lcall enable
ret
data_04h: lcall clear_output
mov r3,#0 ;xao r3 ve 0
setb SDI ;SDI is high
loop_04h: nop
clr In_A ;disable CK output
clr CK ;CK is low
setb In_A ;enable output
nop
clr In_A ;disable CK output
setb CK ;CK is high
inc r3
setb In_A ;enable output
clr SDI ;SDI is low
cjne r3,#3,loop_04h
ret
data_05h: lcall clear_output
mov r3,#1 ;xao r3 ve 1
setb SDI ;SDI is high
lcall loop_04h
mov r3,#2
setb SDI
lcall loop_04h
ret
data_03h:lcall clear_output
mov r3,#2
setb SDI
lcall loop_04h
data_01h: mov r3,#2 ; dich 1 so 1 vao
setb SDI
lcall loop_04h
ret
clear_output:mov r3,#00h ;Clear r3
all_clear: clr In_A ;disable CK output
clr SDI ;SDI is low
clr RCLK ;RCLK is low
clr CK ;CK is low
setb In_A ;enable CK output
nop
clr In_A ;disable CK output
setb CK ;CK is high
inc r3
setb In_A ;enable CK output
nop
cjne r3,#8,all_clear
ret
khoitao: mov 40h,#0 ;p0.4 = 0 gat bom
mov 41h,#0
mov 42h,#0 ;O nho cat tien hex
mov 43h,#0
mov 57h,#0 ;2 led cuoi cua lit
mov 56h,#0 ;2 led giua cua lit
mov 55h,#0 ;2 led dau cua lit
ret
segment_7: mov r7,#00h
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10000011b
nop
lcall gma_price ;decode price
lcall khoitao
mov tl0,#00h
mov th0,#00h ;time0 dem 1000uS thi ngat
clr tf0
mov ie,#80h ;cho phep ngat time0
ngatt0:clr tf0
clr tr0
dd: cjne r7,#15,tt ;neu khong co xung thi thoat
jmp ttt
tt: jnb p1.7,nextp1 ;bit nhan pulse tu cam bien
jb p1.7,nextp
nextp1:inc r7
lcall hthi
jnb p1.7,dd
jmp addi
nextp: inc r7
lcall hthi
jb p1.7,dd
addi: mov a,7ch
cjne a,#9,adtien
mov a,56h ;so sanh dat so lit truoc
cjne a,73h,addi1
mov a,55h
cjne a,72h,addi1
mov a,57h
cjne a,74h,addi1
setb p1.4 ;dong co dong
setb p1.3 ;bit valse1 dong
setb p1.2 ;bit valse2 dong
tttt: ljmp ttt
adtien:mov a,51h
cjne a,76h,adtien1
mov a,78h ;cat 52h vao 78h
cjne a,2ah,adtien1 ;so sanh dat so tien
truoc
setb p1.4 ;dong co dong
setb p1.3 ;bit valse1 dong
setb p1.2 ;bit valse2 dong
ljmp ttt
adtien1:jmp ttttt
gm2: ljmp gm22
gm: ljmp gm0
gm1: ljmp gm11
addi1: mov a,7bh
cjne a,#4,Ft4 ;so sanh dat so lit truoc
jmp sss
Ft4: cjne a,#5,Ft3
jmp sss
Ft3: cjne a,#6,Ft2
jmp sss
Ft2: cjne a,#7,Ft1
jmp sss
jmp thoat1
ktra1: mov a,51h
anl a,#0fh
mov 46h,a
movc a,@a+dptr
mov 66h,a
mov a,51h
anl a,#0f0h
swap a
mov 47h,a
movc a,@a+dptr
anl a,#7fh ;co dau cham hang ngan
mov 69h,a
cjne a,#40h,thoat1
mov a,52h
cjne a,#0,thoat1
mov 69h,#0ffh
mov 47h,#0fh ;tat LCD
thoat1:mov a,52h
cjne a,#0,ktra
mov 6ch,#0ffh
mov 6fh,#0ffh
mov 48h,#0fh ;tat ky tu LCD
mov 49h,#0fh ;tat ky tu LCD
jmp thoat
ktra: mov 78h,52h
mov a,52h
anl a,#0fh
mov 48h,a ;LCD
movc a,@a+dptr
mov 6ch,a
mov a,52h
anl a,#0f0h
swap a
mov 49h,a
movc a,@a+dptr
mov 6fh,a
cjne a,#0c0h,thoat
mov 6fh,#0ffh
mov 49h,#0fh ;tat ky tu LCD
thoat: ret
decode_million: mov a,51h
anl a,#0fh
mov 44h,a
movc a,@a+dptr
mov 60h,a
mov a,51h
anl a,#0f0h
swap a
mov a,45h
movc a,@a+dptr
anl a,#7fh ;dot point
mov 63h,a
mov a,52h
anl a,#0fh
mov 46h,a
movc a,@a+dptr
mov 66h,a
mov a,52h
anl a,#0f0h
swap a
mov 47h,a
movc a,@a+dptr
mov 69h,a
mov a,53h
anl a,#0fh
mov 48h,a
movc a,@a+dptr
anl a,#7fh ;dot point
mov 6ch,a
mov a,53h
anl a,#0f0h
swap a
mov 49h,a
movc a,@a+dptr
mov 6fh,a
cjne a,#0c0h,clear_zero
mov 6fh,#0ffh ;tat so vo nghia chuc trieu 7 doan
mov 49h,#0fh ;tat so vo nghia chuc trieu LCD
clear_zero: ret
gma_lit:mov dptr,#1fe0h
mov a,55h
cjne a,#0,gma_lit1
mov a,57h
cjne a,#0,gma_lit1
mov a,56h ;2 led giua cua lit
cjne a,#0,gma_lit1
mov 64h,#0c0h
mov 61h,#0c0h
mov 4ah,#0
mov 4bh,#0
jmp gma_lit2
gma_lit1: mov a,55h
anl a,#0fh
mov 4ah,a
movc a,@a+dptr
mov 61h,a
mov a,55h
anl a,#0f0h
swap a
mov 4bh,a
movc a,@a+dptr
mov 64h,a
gma_lit2: mov a,56h
cjne a,#0,gma_lit3
mov a,57h
cjne a,#0,gma_lit3
mov a,#0c0h
anl a,#7fh ;co dau phay
mov 67h,a
mov 6ah,#0ffh
mov 4ch,#0 ;LCD
mov 4dh,#0fh ;tat ky tu LCD
jmp gma_lit4
gma_lit3: mov a,56h
anl a,#0fh
mov 4ch,a ;LCD
movc a,@a+dptr
anl a,#7fh ;co dau phay
mov 67h,a
mov a,56h
anl a,#0f0h
swap a
mov 4dh,a ;LCD
movc a,@a+dptr
mov 6ah,a
cjne a,#0c0h,gma_lit4
mov a,57h
cjne a,#0,gma_lit4
mov 6ah,#0ffh
mov 4dh,#0fh ;tat ky tu LCD
gma_lit4: mov a,57h
cjne a,#0,gma_lit5
mov 6dh,#0ffh
mov 70h,#0ffh
mov 4eh,#0fh ;tat ky tu LCD
mov 4fh,#0fh ;tat ky tu LCD
jmp exit_gmt
gma_lit5: anl a,#0fh
mov 4eh,a ;LCD
movc a,@a+dptr
mov 6dh,a
mov a,57h
anl a,#0f0h
swap a
mov 4fh,a ;LCD
movc a,@a+dptr
mov 70h,a
cjne a,#0c0h,exit_gmt
mov 70h,#0ffh
mov 4fh,#0fh ;tat LCD
exit_gmt: ret
hthi:
mov 52h,#0
mov 53h,#0
mov 54h,#0
mov r1,#11111110b
mov r0,#60h
mov p2,#10001011b
show1:mov p0,#0ffh
nop
mov p2,#10001111b ;clear column
nop
mov p2,#10000011b ;clear price
nop
mov p0,@r0
nop
mov p2,#10000111b
inc r0
mov p0,@r0
nop
mov p2,#10001011b
nop
mov p0,r1
nop
mov p2,#10001111b
inc r0
mov p0,@r0
nop
mov p2,#10001011b
call waitus
mov p0,#0ffh
nop
mov p2,#10000011b ;clear column
inc r0
mov a,r1
rl a
mov r1,A
cjne r0,#72h,show1
mov p2,#10010111b ;thoa dieu kien xung khi cho co busy
xo
setb EN ;EN is high
ret
data_tien: mov a,40h ; giai ma so hex sang BCD
mov b,#10
div ab
mov 50h,b
mov b,#10
div ab
mov 51h,a
mov a,b
swap a
orl a,50h
mov 50h,a
mov r2,41h
mov r3,42h
mov r4,43h
cjne r2,#0,byte_H
cjne r3,#0,byte_HH
cjne r4,#0,byte_HHH
ret
byte_H:mov a,50h
add a,#56h
da a
mov 50h,a
mov a,51h
addc a,#02
da a
mov 51h,a
mov a,52h
addc a,#0
da a
mov 52h,a
djnz r2,byte_H
cjne r3,#0,byte_HH
cjne r4,#0,byte_HHH
ret
byte_HH: mov a,50h
add a,#36h
da a
mov 50h,a
mov a,51h
addc a,#55h
da a
mov 51h,a
mov a,52h
addc a,#6h
da a
mov 52h,a
mov a,53h
addc a,#0
da a
mov 53h,a
djnz r3,byte_HH
cjne r4,#0,byte_HHH
ret
byte_HHH:mov a,50h
add a,#16h
da a
mov 50h,a
mov a,51h
addc a,#72h
da a
mov 51h,a
mov a,52h
addc a,#77h
da a
mov 52h,a
mov a,53h
addc a,#16h
da a
mov 53h,a
mov a,54h
addc a,#0
da a
mov 54h,a
djnz r4,byte_HHH
ret
tchar0:
mov a,44h
cjne a,#0,tc00
lcall num_0
tc00: cjne a,#1,tc01
lcall num_1
tc01: cjne a,#2,tc02
lcall num_2
tc02: cjne a,#3,tc03
lcall num_3
tc03: cjne a,#4,tc04
lcall num_4
tc04: cjne a,#5,tc05
lcall num_5
tc05: cjne a,#6,tc06
lcall num_6
tc06: cjne a,#7,tc07
lcall num_7
tc07: cjne a,#8,tc08
lcall num_8
tc08: cjne a,#9,tc09
lcall num_9
tc09: cjne a,#0fh,tckt
lcall point
tckt: ret
tchar1: mov a,45h
cjne a,#0,tc10
lcall num_0
tc10: cjne a,#1,tc11
lcall num_1
tc11: cjne a,#2,tc12
lcall num_2
tc12: cjne a,#3,tc13
lcall num_3
tc13: cjne a,#4,tc14
lcall num_4
tc14: cjne a,#5,tc15
lcall num_5
tc15: cjne a,#6,tc16
lcall num_6
tc16: cjne a,#7,tc17
lcall num_7
tc17: cjne a,#8,tc18
lcall num_8
tc18: cjne a,#9,tc19
lcall num_9
tc19: cjne a,#0fh,tc1
lcall point
tc1: ret
tchar2:mov a,46h
cjne a,#0,tc20
lcall num_0
tc20: cjne a,#1,tc21
lcall num_1
tc21: cjne a,#2,tc22
lcall num_2
tc22: cjne a,#3,tc23
lcall num_3
tc23: cjne a,#4,tc24
lcall num_4
tc24: cjne a,#5,tc25
lcall num_5
tc25: cjne a,#6,tc26
lcall num_6
tc26: cjne a,#7,tc27
lcall num_7
tc27: cjne a,#8,tc28
lcall num_8
tc28: cjne a,#9,tc29
lcall num_9
tc29: cjne a,#0fh,tc2
lcall point
tc2: ret
tchar3:mov a,49h
cjne a,#0fh,tc30
mov a,48h
cjne a,#0fh,tc30
mov a,47h
cjne a,#0fh,tc30
lcall point
jmp tc31
tc30: lcall dot_code
tc31: ret
tchar4:mov a,47h
cjne a,#0,tc40
lcall num_0
tc40: cjne a,#1,tc41
lcall num_1
tc41: cjne a,#2,tc42
lcall num_2
tc42: cjne a,#3,tc43
lcall num_3
tc43: cjne a,#4,tc44
lcall num_4
tc44: cjne a,#5,tc45
lcall num_5
tchar6:mov a,49h
cjne a,#0,tc60
lcall num_0
tc60: cjne a,#1,tc61
lcall num_1
tc61: cjne a,#2,tc62
lcall num_2
tc62: cjne a,#3,tc63
lcall num_3
tc63: cjne a,#4,tc64
lcall num_4
tc64: cjne a,#5,tc65
lcall num_5
tc65: cjne a,#6,tc66
lcall num_6
tc66: cjne a,#7,tc67
lcall num_7
tc67: cjne a,#8,tc68
lcall num_8
tc68: cjne a,#9,tc69
lcall num_9
tc69: cjne a,#0fh,tc6
lcall point
tc6: ret
lcall num_9
lc09: cjne a,#0fh,lc0a
lcall point
lc0a: cjne a,#10,lc0
lcall dot_code
lc0: ret
lchar2:mov a,4ch
cjne a,#0,lc20
lcall num_0
lc20: cjne a,#1,lc21
lcall num_1
lc21: cjne a,#2,lc22
lcall num_2
lcall num_4
lc54: cjne a,#5,lc55
lcall num_5
lc55: cjne a,#6,lc56
lcall num_6
lc56: cjne a,#7,lc57
lcall num_7
lc57: cjne a,#8,lc58
lcall num_8
lc58: cjne a,#9,lc59
lcall num_9
lc59: ret
lcall clear_output
lcall data_01h
lcall data_1110
clr SDI
mov r5,#1 ;code row1 when r5 equal to 1
lcall load_parallel
ret
row2: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall hthi
mov p2,#10010000b
lcall clear_output
lcall data_01h
lcall data_1101
clr SDI
mov r5,#6 ;code row1 when r5 equal to 6
lcall load_parallel
ret
row3: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall hthi
mov p2,#10010000b
lcall data_03h
mov r3,#2
lcall data_011
clr SDI
mov r5,#11 ;code row1 when r5 equal to 11
lcall load_parallel
ret
row4: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall hthi
mov p2,#10010000b
lcall clear_output
lcall data_01h
clr SDI
lcall seven
clr SDI
mov r5,#16 ;code row1 when r5 equal to 16
lcall load_parallel
ret
load_parallel:
nop
clr In_A
clr CK ;CK is low
clr RCLK ;RCLK / PL is low enable load
parallel
nop
setb In_A ; PL is low load parallel input 74hc165
nop
nop
clr In_A ;In_A = 0
setb RCLK ;RCLK / PL is high
nop
setb In_A ; PL is high load serial input 74hc165
nop
clr In_A
mov r6,#0 ;code column
loop_key:
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
setb CK ;CK is high
nop
setb In_A ;enable CK is high - 7 rising edge
inc r6
nop
clr In_A ;In_A = 0
nop
mov 4dh,#0fh
mov 4eh,#0fh
mov 4fh,#0fh
mov 4ah,#0fh
mov 4bh,#0fh
ret
datsolit: ;hien thi chu "DAT SO LIT:"
datsotien: ;hien thi chu "DAT SO TIEN:"
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall HTcomtl ;tat led 7 doan
lcall HTcom ;hien thi chu "DAT SO TIEN:"
lcall chuanp ;chuong trinh chua nhan phim
Fti: lcall sweepkeylit
mov a,75h
cjne a,#28,FFti ;28 la ma phim C,
jmp EscLT ;Exit
FFti: mov p3,#01111100b ;Dir is low B--->A,
mov p2,#01000000b ;cho phep 74ls373 hoat dong
nop
jb p0.4,EscLT ;kiem tra start / stop
jmp Fti
EscLT: lcall khoitao
lcall gma_lit ;decode litre
lcall data_tien ;convert hex ---> BCD
lcall gma_tien ;decode money
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall LCD0
lcall gma_price
lcall cong
mov 78h,#00h
ret
cong: mov a,32h
mov b,#100
mul ab
mov 32h,a
mov a,24h
mov b,#10
mul ab
add a,23h
add a,32h
mov 30h,a
ret
HTcomtl: mov 60h,#0ffh ;tat tien khi nhan phim L
mov 61h,#0ffh ;tat lit khi nhan phim L
mov 64h,#0ffh
mov 67h,#0ffh
ret
keytotal: mov p3,#10111100b ;DIR is high, G2B of 138 is low
mov p2,#10010000b
lcall HTtotal
lcall gma_total
lcall dat_keylit
kptotal: lcall sweepkeylit ;Phim total khong kiem tra co bom
mov a,75h
cjne a,#28,kptotal
lcall EscLT
ret
password: ;phim P (thay doi don gia)
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall off_7segment ;tat 7 doan
lcall HTmatkhau ;code mat khau 19 luu vao 7ch
lcall chuanp ;
paw: lcall sweepkeylit
mov a,33h
cjne a,#26,paw ;26 la ma phim e,
mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
mov 7ch,#14
lcall nhapdongia
ret
Keytime:mov p3,#10111100b;DIR is high, G2B of 74LS138 is
low
mov p2,#10010000b;
lcall HTmatkhau
ret
sweepkeylit: ;Chuong trinh con quet phim phu
lcall row1
lcall row2
lcall row3
lcall row4
call row5
ret
swcolumn: mov a,r6
anl a,#0ffh ;kiem tra ma column
add a,r5
mov 77h,a ;cat cac ma
cjne a,#4,col1
mov 7bh,a ;cat ma phim F5 vao 76h
lcall keycommon ;test key F5
col1: cjne a,#5,col2
mov 7bh,a ;cat ma phim F4 vao 76h
lcall keycommon ;test key F4
col2: cjne a,#6,col3
mov 7bh,a ;cat ma phim F3 vao 76h
lcall keycommon ;test key F3
col3: cjne a,#7,col4
mov 7bh,a ;cat ma phim F2 vao 76h
lcall keycommon ;test key F2
col4: cjne a,#8,col5
mov 7bh,a ;cat ma phim F1 vao 76h
lcall keycommon ;test key F1
col5: cjne a,#10,col7
mov 7bh,a
lcall keycommon ;test key number 4
col7: cjne a,#11,col8
mov 7bh,a
lcall keycommon ;test key number 3
col8: cjne a,#12,col9
mov 7bh,a
lcall keycommon ;test key number 2
col9: cjne a,#13,col10
mov 7bh,a
lcall Keycommon ;test key number 1
col10: cjne a,#16,col12
mov 7bh,a
lcall keycommon ;test key number 7
col12: cjne a,#15,col13
mov 7bh,a
lcall keycommon ;test key number 8
mov 4bh,45h
mov 4ch,46h
mov 4dh,47h
mov 4eh,48h
mov 4fh,49h
ret
keycommon:
mov a,7ch
cjne a,#24,nototal
ljmp exit_lkc
nototal: mov p3,#10111100b;DIR is high, G2B of 74LS138 is
low
mov p2,#10010000b
mov r7,#40 ;Bien dem chong doi
mov a,7bh ;76H chua ma F5,F4,F3,F2,F1
cjne a,#4,l4lit
mov a,7ch ;7ch chua ma phim main sweepkey
cjne a,#9,dattF5 ;7ch = 9 vao DAT SO LIT
mov 55h,#00h
mov 56h,#10h ;2 led giua lit = 10
mov 57h,#0ffh
lcall gma_lit
lit10: lcall dat_keylit ;LCD hien thi so lit can dat
djnz r7,lit10
ljmp exit_lkc
dattF5: mov a,7ch
cjne a,#14,bien1
mov 50h,#00h
mov 51h,#00h
mov 52h,#05h
lcall convertL_T
tien50: lcall dat_keylit ;LCD hien thi so lit can dat
djnz r7,tien50
bien1: ljmp exit_lkc
l4lit: mov a,7bh
cjne a,#5,l3lit
mov a,7ch ;ma phim L,$,C,E,P,TIME
cjne a,#9,dattF4
mov 55h,#00h
mov 56h,#0f4h
mov 57h,#0ffh
lcall gma_lit
lit4: lcall dat_keylit ;LCD hien thi so lit can dat
djnz r7,lit4
ljmp lit_dung
dattF4: mov a,7ch
cjne a,#14,bien2
mov 50h,#00h
mov 51h,#00h
mov 52h,#03h
lcall convertL_T
tien30: lcall dat_keylit
djnz r7,tien30
bien2: ljmp exit_lkc
l3lit: mov a,7bh
cjne a,#6,l2lit
mov a,7ch
cjne a,#9,dattF3
mov 55h,#00h
mov 56h,#0f3h
mov 57h,#0ffh
lcall gma_lit
lit3: lcall dat_keylit
djnz r7,lit3
ljmp lit_dung
dattF3: mov a,7ch
cjne a,#14,bien3
mov 50h,#00h
mov 51h,#00h
mov 52h,#02h
lcall convertL_T
tien20: lcall dat_keylit
djnz r7,tien20
bien3: ljmp exit_lkc
l2lit: mov a,7bh
cjne a,#7,l1lit
mov a,7ch
cjne a,#9,dattF2
mov 55h,#00h
mov 56h,#0f2h
mov 57h,#0ffh
lcall gma_lit
mov a,4bh
cjne a,#0fh,lkcl2
mov a,4ah
cjne a,#0fh,lkcl1
mov a,7bh ;7BH CHUA MA PHIM SO
cjne a,#10,ph3
mov a,7ch
cjne a,#9,ntien1
mov 55h,#04h ;ph4
lcall gma_lit
jmp dat_lan1
ntien1: mov a,7ch
cjne a,#14,tiep1
mov 50h,#04h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg4
lcall conertT_G
nhp_dg4: jmp dat_lan1
tiep1: lcall convertL_T
mov 4ah,#10 ;ma nhan so mat khau lan 1
mov 60h,#0ffh
jmp dat_lan1
lkcl5: ljmp lkcl15
lkcl4: ljmp lkcl14
lkcl3: ljmp lkcl13
lkcl2: ljmp lkcl12
lkcl1: ljmp lkcl11
ph3: mov a,7ch
cjne a,#19,p3t
jmp exit_lkc
p3t: mov a,7bh
cjne a,#11,ph2
mov a,7ch
cjne a,#9,ntien2
mov 55h,#03h ;ph3
lcall gma_lit
jmp dat_lan1
ntien2: mov 50h,#03h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg3
lcall conertT_G
nhp_dg3: jmp dat_lan1
ph2: cjne a,#12,ph1
mov a,7ch
cjne a,#9,ntien3
mov 55h,#02h ;ph2
lcall gma_lit
jmp dat_lan1
ntien3: mov 50h,#02h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg2
lcall conertT_G
nhp_dg2: jmp dat_lan1
ph1: cjne a,#13,ph8
mov a,7ch
cjne a,#9,ntien4
mov 55h,#01h ;ph1
lcall gma_lit
jmp dat_lan1
ntien4: mov 50h,#01h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg1
lcall conertT_G
nhp_dg1: jmp dat_lan1
ph8: cjne a,#15,ph7
mov a,7ch
cjne a,#9,ntien5
mov 55h,#08h ;ph8
lcall gma_lit
jmp dat_lan1
ntien5: mov 50h,#08h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg8
lcall conertT_G
nhp_dg8: jmp dat_lan1
cjne a,#16,ph6
mov a,7ch
cjne a,#9,ntien6
mov 55h,#07h ;ph7
lcall gma_lit
jmp dat_lan1
ntien6: mov 50h,#07h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg7
lcall conertT_G
nhp_dg7: jmp dat_lan1
ph6: cjne a,#17,ph5
mov a,7ch
cjne a,#9,ntien7
mov 55h,#06h ;ph6
lcall gma_lit
jmp dat_lan1
ntien7: mov 50h,#06h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg6
lcall conertT_G
nhp_dg6: jmp dat_lan1
ph5: cjne a,#18,ph9
mov a,7ch
cjne a,#9,ntien8
mov 55h,#05h ;ph5
lcall gma_lit
jmp dat_lan1
ntien8: mov 50h,#05h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg5
lcall conertT_G
nhp_dg5: jmp dat_lan1
lcall gma_lit
jmp dat_lan1
ntien9: mov 50h,#09h
lcall convertL_T
mov a,79h
cjne a,#10,nhp_dg9
lcall conertT_G
nhp_dg9:
dat_lan1: lcall dat_keylit
djnz r7,dat_lan1
jmp naplaiFF
ph0: mov a,7bh
cjne a,#22,ph00 ;Ko lam khi nhan phim 0 dau tien
ljmp exit_lkc
ph00: cjne a,#21,ph000 ;Ko lam khi nhan phim 00 dau tien
ljmp exlkc
ph000: cjne a,#20,exlkc ;Ko lam khi nhan phim 000 dau tien
ljmp exlkc
naplaiFF: mov 4bh,#0fh
mov 4ch,#0fh
exlkc: ret
mov 51h,a
ljmp lkcl21
lkcl14: mov r3,#5
mov a,7ch ;LAN NHAN THU 5
cjne a,#9,nu0
mov 57h,4dh
mov a,4ch
swap a
orl a,4bh
mov 56h,a
ljmp lkcl21
nu0: mov 52h,4dh
mov a,4ch
swap a
orl a,4bh
mov 51h,a
ljmp lkcl21
lkcl13: mov r3,#4
mov a,7ch ;LAN NHAN THU 4
cjne a,#9,nen0
mov a,4ch
swap a
orl a,4bh
mov 56h,a
jmp lkcl21
nen0: mov a,4ch
swap a
orl a,4bh
mov 51h,a
mov 52h,#00h
jmp lkcl21
mov a,79h
cjne a,#10,nhpdg4
lcall conertT_G
nhpdg4: jmp datTien
in_MK2: mov 4bh,#10 ;ma mo password la
jmp datTien
num3:mov a,7ch
cjne a,#19,num3t
jmp exit_lkc
num3t: mov a,7bh
cjne a,#11,num2
mov a,7ch
cjne a,#9,goi3
lcall vao3
jmp datkeylit
goi3: lcall vaoT3
mov a,79h
cjne a,#10,nhpdg3
lcall conertT_G
nhpdg3: jmp datTien
num2:mov a,7bh
cjne a,#12,num1
mov a,7ch
cjne a,#9,goi2
lcall vao2
jmp datkeylit
goi2: lcall vaoT2
mov a,79h
cjne a,#10,nhpdg2
lcall conertT_G
nhpdg2: jmp datTien
num1:mov a,7bh
cjne a,#13,num7
mov a,7ch
cjne a,#9,goi1
lcall vao1
jmp datkeylit
goi1: lcall vaoT1
mov a,79h
cjne a,#10,nhpdg1
lcall conertT_G
nhpdg1: jmp datTien
num7:mov a,7bh
cjne a,#16,num8
mov a,7ch
cjne a,#9,goi7
lcall vao7
jmp datkeylit
goi7: lcall vaoT7
mov a,79h
cjne a,#10,nhpdg7
lcall conertT_G
nhpdg7: jmp datTien
num8:mov a,7bh
cjne a,#15,num6
mov a,7ch
cjne a,#9,goi8
lcall vao8
jmp datkeylit
goi8: lcall vaoT8
mov a,79h
cjne a,#10,nhpdg8
lcall conertT_G
nhpdg8: jmp datTien
vaoP: ;nhan password lan 3 so 6
num6:mov a,7bh
cjne a,#17,num5
mov a,7ch
cjne a,#9,goi6
lcall vao6
jmp datkeylit
goi6: mov a,7ch
cjne a,#14,goi6P
lcall vaoT6
mov a,79h
cjne a,#10,nhpdg6
lcall conertT_G
nhpdg6: jmp datTien
goi6P:mov 4ch,#10
mov 6eh,#00000110b ;nhan ma password lan 2
mov 71h,#00001100b
jmp datTien
num5:mov a,7ch
cjne a,#19,num5t
ljmp exit_lkc ;password dung
num5t: mov a,7bh
cjne a,#18,num9
mov a,7ch
cjne a,#9,goi5
lcall vao5
jmp datkeylit
goi5: lcall vaoT5
mov a,79h
cjne a,#10,nhpdg5
lcall conertT_G
nhpdg5: jmp datTien
num9:mov a,7bh
cjne a,#23,num0
mov a,7ch
cjne a,#9,goi9
lcall vao9
jmp datkeylit
goi9: lcall vaoT9
mov a,79h
cjne a,#10,nhpdg9
lcall conertT_G
nhpdg9: jmp datTien
num0:mov a,7bh
cjne a,#22,num00
mov a,7ch
cjne a,#9,goi0
lcall vao0
jmp datkeylit
goi0: lcall vaoT0
mov a,79h
cjne a,#10,nhpdg0
lcall conertT_G
nhpdg0: jmp datTien
datkeylit: lcall dat_keylit
djnz r7,datkeylit
ljmp ktraLCD
datTien: lcall dat_keylit
djnz r7,datTien
jmp exit_lkc
num000: jmp ooo
num00: cjne a,#21,num000
mov a,79h
cjne a,#10,kenum00
jmp exit_lkc
kenum00: cjne r3,#2,sss3
mov a,7ch
cjne a,#9,litre0
mov 56h,4ah
jmp pl002
litre0: mov 51h,4ah
jmp pt002
sss3: cjne r3,#3,sss4
mov a,4bh
swap a
orl a,4ah
mov r2,a
mov a,7ch
cjne a,#9,litre1
mov 56h,r2
jmp pl002
litre1: mov 51h,r2
jmp pt002
sss4: cjne r3,#4,sss5
mov a,7ch
cjne a,#9,litre2
mov 57h,4ch
mov 56h,55h
jmp pl002
litre2: mov 52h,4ch
mov 51h,50h
jmp pt002
sss5: cjne r3,#5,exi
mov a,4dh
swap a
orl a,4ch
mov r2,a
mov a,7ch
cjne a,#9,litre3
mov 57h,r2
mov 56h,55h
jmp pl002
litre3: mov 52h,r2
mov 51h,50h
jmp pt002
pl002: mov 55h,#00h
lcall gma_lit
dis1: lcall dat_keylit
djnz r7,dis1
exi: ljmp exit_lkc
pt002: mov 50h,#00h
lcall convertL_T
jmp dis1
ooo: cjne a,#20,exit_lkc ; nhan phim so 000 khong
mov a,79h
cjne a,#10,kenum000
jmp exit_lkc
kenum000: cjne r3,#2,sst3
mov a,7ch
cjne a,#9,st1
mov a,4ah
swap a
mov 56h,a
jmp pl002
st1: mov a,4ah
swap a
mov 51h,a
jmp pt002
sst3: cjne r3,#3,sst4
mov a,7ch
cjne a,#9,st2
mov a,4ah
swap a
mov 56h,a
mov 57h,4bh
jmp pl002
st2: mov a,4ah
swap a
mov 51h,a
mov 52h,4bh
jmp pt002
sst4: cjne r3,#4,exit_lkc
mov a,7ch
cjne a,#9,st3
mov a,4ch
swap a
orl a,4bh
mov 57h,a
mov a,4ah
swap a
mov 56h,a
jmp pl002
st3: mov a,4ch
swap a
orl a,4bh
mov 52h,a
mov a,4ah
swap a
mov 51h,a
jmp pt002
ktraLCD: mov a,4dh
cjne a,#0fh,exit_lkc
mov a,4ch
cjne a,#00h,exit_lkc
mov 4ch,#0fh
exit_lkc: mov 73h,56h
mov 72h,55h
mov 74h,57h
mov 76h,51h
mov 2ah,78h
ret
lit_dung: mov a,56h
anl a,#0fh
mov 73h,a
mov 72h,55h
mov 74h,57h
ret
vaoT9: mov a,4ah
swap a
orl a,#09h ;ph9_tien
jmp ktvaoT
vaoT8: mov a,4ah
swap a
orl a,#08h ;ph8_tien
jmp ktvaoT
vaoT7: mov a,4ah
swap a
orl a,#07h ;ph7_tien
jmp ktvaoT
vaoT6: mov a,4ah
swap a
orl a,#06h ;ph6_tien
jmp ktvaoT
vaoT5: mov a,4ah
swap a
orl a,#05h ;ph5_tien
jmp ktvaoT
vaoT4: mov a,4ah
swap a
orl a,#04h ;ph4_tien
jmp ktvaoT
vaoT3: mov a,4ah
swap a
orl a,#03h ;ph3_tien
jmp ktvaoT
vaoT2: mov a,4ah
swap a
orl a,#02h ;ph2_tien
jmp ktvaoT
mov 6bh,#0ffh
thoat11:mov a,22h ;money2
cjne a,#0,ktra111
mov 6eh,#0ffh
mov 71h,#0ffh
jmp thoat111
ktra111:mov a,22h
anl a,#0fh
mov 32h,a ;cat don gia hang ngan
movc a,@a+dptr
mov 6eh,a
mov a,22h ;money2
anl a,#0f0h
swap a
movc a,@a+dptr
mov 71h,a
cjne a,#0c0h,thoat111
mov 71h,#0ffh
thoat111: ret
write_eeprom_price:
orl WMCON,#EEMEN
orl WMCON,#EEMWE
mov dptr,#000h ;address write
mov a,50h
movx @dptr,a
loopbsy: movx a,@dptr
cjne a,50h,loopbsy
inc dptr
mov a,51h
movx @dptr,a
loopbsy1: movx a,@dptr
cjne a,51h,loopbsy1
inc dptr
mov a,52h
movx @dptr,a
loopbsy2: movx a,@dptr
cjne a,52h,loopbsy2
xrl WMCON,#EEMEN
xrl WMCON,#EEMWE
ret
;GIAI MA TOTAL
gma_total:
lcall read_total
mov dptr,#1fe0h
mov a,25h
cjne a,#0,tri1
mov a,27h
cjne a,#0,tri1
mov a,26h ;2 led giua cua lit
cjne a,#0,tri1
mov 64h,#0ffh
mov 61h,#0ffh
mov 4ah,#0fh ;LCD
mov 4bh,#0fh ;LCD
jmp hue22
tri1: mov a,25h
anl a,#0fh
mov 4ah,a
movc a,@a+dptr
mov 61h,a
mov a,25h
anl a,#0f0h
swap a
mov 4bh,a
movc a,@a+dptr
mov 64h,a
cjne a,#0c0h,hue22
mov a,27h
cjne a,#0,hue22
mov a,26h
cjne a,#0,hue22
mov 64h,#0ffh
mov 4bh,#0fh ;tat ky tu LCD
hue22:mov a,26h
cjne a,#0,hue11
mov a,27h
cjne a,#0,hue11
mov 67h,#0ffh
mov 6ah,#0ffh
mov 4ch,#0fh ;LCD
mov 4dh,#0fh ;tat ky tu LCD
jmp tho11
hue11:mov a,26h
anl a,#0fh
mov 4ch,a ;LCD
movc a,@a+dptr
mov 67h,a
mov a,26h
anl a,#0f0h
swap a
mov 4dh,a ;LCD
movc a,@a+dptr
mov 6ah,a
cjne a,#0c0h,tho11
mov a,27h
cjne a,#0,tho11
mov 6ah,#0ffh
mov 4dh,#0fh ;tat ky tu LCD
tho11:mov a,27h
cjne a,#0,huetot
mov 6dh,#0ffh
mov 70h,#0ffh
mov 4eh,#0fh ;tat ky tu LCD
mov 4fh,#0fh ;tat ky tu LCD
jmp exit_gmtotal
huetot:anl a,#0fh
mov 4eh,a ;LCD
movc a,@a+dptr
mov 6dh,a
mov a,27h
anl a,#0f0h
swap a
mov 4fh,a ;LCD
movc a,@a+dptr
mov 70h,a
cjne a,#0c0h,exit_gmtotal
mov 70h,#0ffh
mov 4fh,#0fh ;tat LCD
exit_gmtotal: ret
read_total:
orl WMCON,#EEMEN ;enable EEPROM
access
mov dptr,#010h
movx a,@dptr
mov 25h,a
inc dptr
movx a,@dptr
mov 26h,a
inc dptr
movx a,@dptr
mov 27h,a
xrl WMCON,#EEMEN
ret
write_total:
mov r3,#15
orl WMCON,#EEMEN
orl WMCON,#EEMWE
mov dptr,#010h ;address write
movx a,@dptr
mov 25h,a
inc dptr
movx a,@dptr
mov 26h,a
inc dptr
movx a,@dptr
mov 27h,a
lp_total1:lcall hthi
djnz r3,lp_total1
mov a,26h
cjne a,#00h,ret_total
mov a,27h
add a,#1
da a
mov 27h,a
inc dptr
mov r3,#15
movx @dptr,a
lp_total2: lcall hthi
djnz r3,lp_total2
ret_total: xrl WMCON,#EEMEN
xrl WMCON,#EEMWE
ret
off_7segment:
mov r1,#60h
off: mov @r1,#0ffh
inc r1
cjne r1,#6ch,off
ret
nhapdongia:
lcall dongia
lcall chuanp
mov 79h,#10 ;ma nhap don gia
w: lcall sweepkeylit
mov a,75h
cjne a,#28,w ;28 la ma phim C,
lcall EscLT ;Exit
mov 79h,#0
ret
;Area memory save code 7_segment
ORG 1fe0H
db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
ORG 2010H
DB 00H,00H,00H
End
PHUÏ LUÏC C
SÔ ÑOÀ MAÏCH ÑIEÄN
PHUÏ LUÏC D
TAØI LIEÄU THAM KHAÛO
[1] Ngoâ Dieân Taäp. Kyõ thuaät vi ñieàu khieån vôùi AVR. NXB Lao ñoäng-xaõ
hoäi, 2003.
[2] Toáng Vaên On. Hoï vi ñieàu khieån 8051. NXB Lao ñoäng-xaõ hoäi, 2003.
[3] http://www.cs.uiowa.edu/~jones/step
[4] http://www.atmel.com
PHUÏ LUÏC
Phuï luïc A Taäp leänh ASM cuûa AVR
Phuï luïc C Giôùi thieäu toång quan veà hoï vi ñieàu khieån AVR
Phuï luïc D Giôùi thieäu veà ISP Flash Microcontroller Ver 3.0
Introduction
This ISP Programmer can be used either for in-system programming or
as a stand-alone spi programmer for Atmel ISP programmable devices.
The programming interface is compatible to STK200 ISP programmer
hardware so the users of STK200 can also use the software which can
program both the 8051 and AVR series devices.
Hardware
Figure1 shows the circuit diagram of the in-system programmer
interface, the power to the interface is provided by the target system.
The 74HCT541 ic isolate and buffer the parallel port signals. It is
necessary to use the HCT type ic in order to make sure the programmer
should work with 3v type parallel port.
For the auto hardware detection it is necessary to short pin 2 and 12 of DB25
connector, otherwise the software uses the default parallel port i.e. LPT1.
I have only included the devices which I have in hand, and verified their correct
programming, when I will get the other devices the software will be updated.
The software does not provide the erase command because this function
is performed automatically during device programming. If you re required
to erase the controller, first use the clear buffer command then program
the controller, this will erase the controller and also set the AVR device
fuses to default setting. This ISP-Flash Programmer was designed by
M Asim Khan. Revised 05.december.2003 Any bug reports or suggestion
of using the ISP-Flash Programmer are welcome.
(Sôn copy vaøo vaø saép xeáp cho goïn laø ñöôïc . Sôn nhôù saép xeáp cho goïn goïn vì
Thaønh lôõ ñaët bia 70 trang thoâi ). sai soá laø 15 trang.
Sôn in file Eagle ra giaáy A3, troâng seõ raát ñeïp.( hoac la ko dua
vao cung dc)
PHAÀN C
BEGIN
S
C Kieåm tra
bit
Y
Goïi CT vaøo MK trong
Phím F5
ngaøy
N
Y
Goïi CT thay ñoåi ñôn giaù
Phím P
Goïi CT queùt phím phuï
N
Y
Goïi CT ñaët soá lít
Phím L
Goïi CT queùt phím phuï
N
Y
Goïi CT ñaët soá tieàn
Phím $
Goïi CT queùt phím phuï
N
Y
Goïi CT xem toång lít
Phím
Goïi CT queùt phím phuï
N
Y
Goïi CT xem toång lít
Phím S
Goïi CT queùt phím phuï
N
Y
Goïi CT vaøo maät khaåu CA
Phím
Goïi CT queùt phím phuï
N
Y
Bôm töï do Hieån thò
BEGIN
Lít = 0
Tieàn = 0
S
Môû valse, ñoäng cô vaø
KT bit
Taêng bieán ñeám
Start/stop =
Reti
Taét valse, ñoäng cô
Ret
LÖU ÑOÀ CHÖÔNG TRÌNH VAØO MAÄT KHAÅU, THAY ÑOÅI ÑÔN GIAÙ
BEGIN
S
Vaøo CT con phím P, goïi CT
queùt phím phuï, coù hieån thò Ñ
KT bit
Start/stop =
S
Ñaët password
N S
Nhaäp ñôn giaù
Phím C
Nhaán phím E
Y Ñ
LÖU ÑOÀ CHÖÔNG TRÌNH CON BÔM THEO SOÁ TIEÀN ÑAËT TRÖÔÙC
BEGIN
Nhaäp tieàn caàn bôm, caát vaøo oâ nhôù, goïi hieån thò
ÑKT xung
Môû Valse vaø ñoäng cô
S
So saùnh tieàn bôm
E
baèng vôùi tieàn ñaët
Ret
BEGIN
S
C Kieåm tra
bit
B
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 22
Y
Goïi CT vaøo MK trong
Phím F5
ngaøy
N
Y
Goïi CT thay ñoåi ñôn giaù
Phím P
Goïi CT queùt phím phuï
N
Y
Goïi CT ñaët soá lít
Phím L
Goïi CT queùt phím phuï
N
Y
Goïi CT ñaët soá tieàn
Phím $
Goïi CT queùt phím phuï
N
Y
Goïi CT xem toång lít
Phím
Goïi CT queùt phím phuï
N
Y
Goïi CT xem toång lít
Phím S
Goïi CT queùt phím phuï
N
Y
Goïi CT vaøo maät khaåu CA
Phím
Goïi CT queùt phím phuï
N
Y
Bôm töï do Hieån thò
C
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 23
BEGIN
Lít = 0
Tieàn = 0
S
Môû valse, ñoäng cô vaø
KT bit
Taêng bieán ñeám
Start/stop =
Reti
Taét valse, ñoäng cô
Ret
LÖU ÑOÀ CHÖÔNG TRÌNH VAØO MAÄT KHAÅU, THAY ÑOÅI ÑÔN GIAÙ
BEGIN
S
Vaøo CT con phím P, goïi CT
queùt phím phuï, coù hieån thò Ñ
KT bit
Start/stop =
S
Ñaët password
N S
Nhaäp ñôn giaù
Phím C
Nhaán phím E
Y Ñ
LÖU ÑOÀ CHÖÔNG TRÌNH CON BÔM THEO SOÁ TIEÀN ÑAËT TRÖÔÙC
BEGIN
Nhaäp tieàn caàn bôm, caát vaøo oâ nhôù, goïi hieån thò
ÑKT xung
Môû Valse vaø ñoäng cô
S
So saùnh tieàn bôm
E
baèng vôùi tieàn ñaët
Ret
Begin
Goi chöông
Ñ
Kieåm tra
phím F5 Goïi CT
S
Goi chöông
Ñ
Kieåm tra
phím L Goi CT
S
Goi chöông
Ñ
Kieåm tra
Goïi CT ñaët soá
phím $
A Ret
Goi chöông
Ñ
Kieåm tra Goïi CT vaøo maät khaåu
phím P
Goi chöông
Ñ
Kieåm tra
phím Total, Goïi CT
S
Ret
Begin
Goïi chöông
Goïi chöông
Goïi chöông
Goïi chöông
Goïi chöông
S
S Kieåm tra
Kieåm tra
phím C Start /
Ñ
Ñ
Ret
PHAÀN A
GIÔÙI THIEÄU
Boä Giaùo Duïc vaø Ñaøo Taïo Coäng hoøa xaõ hoäi chuû nghóa Vieät Nam
Tröôøng Ñaïi Hoïc Sö Phaïm Kyõ Thuaät Ñoäc laäp – Töï do – Haïnh phuùc
Thaønh phoá Hoà Chí Minh
.....................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
......................................................
Giaùo vieân höôùng
daãn
.....................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
......................................................
Giaùo vieân phaûn
bieän
Ngaøy nay, theá giôùi ñaõ vaø ñang thay ñoåi moät caùch nhanh choùng, vaên
minh vaø hieän ñaïi hôn raát nhieàu. Cuøng vôùi söï thay ñoåi ñoù laø söï phaùt trieån
cuûa khoa hoïc kyõ thuaät. Ñaëc bieät laø söï phaùt trieån cuûa kyõ thuaät ñieän töû ñaõ
taïo ra haøng loaït thieát bò vôùi caùc ñaëc ñieåm nhö: toác ñoä nhanh, ñoä chính xaùc
cao, goïn nheï …vaø nhöõng öùng duïng thieát thöïc trong ñôøi soáng.
Moät trong nhöõng öùng duïng raát quan troïng cuûa kyõ thuaät ñieän töû laø
kyõ thuaät ñieàu khieån töï ñoäng, coäng vôùi söï phaùt trieån cuûa coâng ngheä laäp
trình caùc thieát bò ñieàu khieån, cuï theå laø vi ñieàu khieån vaø vi xöû lyù, ñaõ ñöa
chuùng ñeán moät vò trí ñaëc bieät quan troïng trong khoa hoïc kyõ thuaät.
Vi ñieàu khieån khoâng nhöõng goùp phaàn phaùt trieån caùc ngaønh kyõ thuaät
ñieàu khieån maø coøn goùp phaàn vaøo vieäc phaùt trieån maïng löôùi thoâng tin. Ñoù
laø söï ra ñôøi cuûa haøng loaït caùc thieát bò ñieàu khieån toái taân trong caùc ngaønh :
vieãn thoâng, truyeàn hình, ñaëc bieät laø Internet ñaõ goùp phaàn ñöa con ngöôøi
ñeán ñænh cao cuûa vaên minh nhaân loaïi.
MUÏC LUÏC
PHAÀN B
NOÄI DUNG
CHÖÔNG 1
DAÃN NHAÄP
1.1. ÑAËT VAÁN ÑEÀ
Söï phaùt trieån cuûa khoa hoïc kyõ thuaät ñaõ goùp phaàn taêng naêng suaát lao
ñoäng, naâng cao ñôøi soáng con ngöôøi. Ñaëc bieät, vieäc öùng duïng cuûa kyõ thuaät
ñieàu khieån töï ñoäng ñaõ taïo ra nhieàu loaïi maùy töï ñoäng raát höõu ích vôùi hieäu
suaát laøm vieäc cao, chính xaùc nhö: maùy ruùt tieàn töï ñoäng, maùy baùn haøng töï
ñoäng, robot coâng nghieäp…. Söï phaùt trieån cuûa khoa hoïc coâng ngheä khoâng
ngoaøi muïc ñích naøo khaùc hôn laø phuïc vuï nhu caàu vaø lôïi ích con ngöôøi.
Xuaát phaùt töø muïc ñích ñoù nhoùm thöïc hieän ñoà aùn toát nghieäp ñaõ choïn ñeà
taøi: “Khaûo saùt vaø vieát chöông trình cho heä thoáng bôm xaêng”.
Nhöõng ngöôøi thöïc ñoà aùn laàn ñaàu tieân nghieân cöùu veà lónh vöïc naøy,
neân saûn phaåm coøn nhieàu haïn cheá, nhöng noù vaãn theå hieän moät soá vaán ñeà
quan troïng sau:
- Laø moâ hình raát toát trong vieäc daïy hoïc caùc tröôøng kyõ thuaät.
- Ñeà taøi naøy keát hôïp giöõa Vi ñieàu khieån, IC soá, LCD vaø led 7 ñoaïn
chuyeân duøng neân coù theå laøm taøi lieäu quan troïng ñeå tham khaûo.
- Ñeà taøi naøy cuõng laø cô sôû cho nhöõng ngöôøi thöïc hieän ñoà aùn aùp duïng
vaø phaùt trieån kieán thöùc vaøo nhöõng ñeà taøi lôùn hôn.
- Thöïc hieän ñeà taøi laø caû moät quaù trình nghieân cöùu, noù giuùp nhöõng
ngöôøi thöïc hieän ñoà aùn toát nghieäp naém vöõng lyù thuyeát vaø reøn kyõ
naêng laøm vieäc moät caùch khoa hoïc.
Ñaây laø laàn ñaàu tieân tìm hieåu veà ñeà taøi trong ñieàu kieän:
- Thôøi gian thöïc hieän ñeà taøi chæ coù 10 tuaàn.
- Kinh nghieäm thöïc teá chöa coù nhieàu.
Vì vaäy nhöõng ngöôøi thöïc hieän ñoà aùn toát nghieäp phaûi laøm ñöôïc:
- Khaûo saùt vaø nghieân cöùu nguyeân lyù hoaït ñoäng cuûa moâ hình bôm xaêng
thöïc teá.
- Vieát chöông trình phaàn meàm cho maïch ñieàu khieån:
1. Bôm töï do.
2. Bôm theo cheá ñoä ñaët tröôùc soá tieàn hoaëc soá lít.
Nhaèm hoaøn taát chöông trình hoïc vaø giuùp cho nhoùm thöïc hieän ñeà taøi
coù ñieàu kieän öùng duïng nhöõng kieán thöùc ñaõ ñöôïc trang bò ôû tröôøng, ñoàng
thôøi coù cô hoäi tìm hieåu öùng duïng cuûa vi ñieàu khieån neân nhoùm thöïc hieän ñaõ
choïn ñeà taøi naøy laøm ñoà aùn toát nghieäp cuoái khoaù vôùi mong muoán coù theå
thieát keá thaønh coâng heä thoáng bôm xaêng.
Nhoùm thöïc hieän mong raèng ñoà aùn naøy seõ laø taøi lieäu tham khaûo höõu
ích cho hoïc sinh, sinh vieân muoán nghieân cöùu veà vi ñieàu khieån vaø laäp trình
baèng hôïp ngöõ.
CHÖÔNG 2
Moâ hình bôm xaêng vaø laäp trình phaàn meàm vi ñieàu khieån.
− Phaân tích ñeà taøi nhaèm ñöa ra höôùng thieát keá phaàn meàm.
− Giôùi thieäu toång quaùt vi ñieàu khieån, caùc IC soá vaø LCD, led 7 ñoaïn.
− Xaây döïng phöông aùn thieát keá.
− Laäp trình phaàn meàm cho vi ñieàu khieån.
− Thöû nghieäm maïch.
− Tham kaûo taøi lieäu: tra cöùu treân maïng, saùch, caùc taøi lieäu veà vi
ñieàu khieån vaø caùc IC soá.
− Quan saùt : tìm hieåu caùch thöùc hoaït ñoäng cuûa caùc traïm xaêng.
− Thöïc nghieäm: vieát chöông trình thöïc nghieäm tröïc tieáp treân
board maïch.
Nhoùm laøm ñeà taøi thöïc hieän trong 10 tuaàn, coâng vieäc ñöôïc phaân boá
cho 10 tuaàn nhö sau:
− Tuaàn 1: Choïn ñeà taøi vaø tham khaûo tra cöùu taøi lieäu.
− Tuaàn 2,3: Khaûo saùt thöïc teá thu taäp soá lieäu, xaùc ñònh muïc tieâu
nghieân cöùu vaø phaân tích taøi lieäu .
− Tuaàn 4,5,6,7: Vieát chöông trình thöû nghieäm .
− Tuaàn 8 : Trieån khai ñeà cöông vaø ñaùnh maùy vaø kieåm tra maïch.
− Tuaàn 9,10 : Söõa chöõa vaø ñònh daïng, kieåm tra vaø in aán.
CHÖÔNG 3
AT89S8252 laø boä vi ñieàu khieån 8 bit, CMOS coù hieäu suaát cao vaø söû
duïng nguoàn nuoâi thaáp. Thieát bò naøy thieát keá caùc caáu truùc leänh vaø sô ñoà
chaân theo chuaån 8051. Noù bao goàm caùc ñaëc tính chuaån sau ñaây :
Coù 8 Kbyte boä nhôù FLASH ROM beân trong coù theå laäp trình ñöôïc
Coù 2 Kbyte boä nhôù EEPROM tích hôïp treân chip
Coù 256x8bit RAM noäi
4 port xuaát / nhaäp 8 bit
1 Watchdog Timer
3 Timer / Counter 16 bit
9 nguoàn ngaét
1 ngoõ truyeàn noái tieáp SPI
Coù cheá ñoä Low-power Idle vaø Power-down
2 con troû döõ lieäu Dptr (data pointer)
Thanh ghi con troû ngaên xeáp SP ( stack pointer)
Thanh ghi leänh IR (instruction register)
Maïch dao ñoäng noäi keát hôïp vôùi thaïch anh beân
ngoaøi ñeå taïo dao ñoäng
Ngoaøi ra, coøn moät soá caùc thanh ghi hoå trôï ñeå quaûn
lyù ñòa chæ boä nhôù RAM noäi beân trong cuõng nhö caùc Hình 3.1 : Sô ñoà
chaân
thanh ghi quaûn lyù ñòa chæ truy xuaát boä nhôù beân ngoaøi.
AT89S8252
Ñaây laø boä nhôù chæ ñoïc. Tuyø theo traïng thaùi cuûa chaân EA\, boä nhôù
chöông trình bao goàm 8Kbyte boä nhôù FLASH ROM beân trong vaø coù theå
ñöôïc boå sung leân tôùi 56Kbyte boä nhôù ngoaïi neáu EA\=1 hoaëc coù theå giao
tieáp vôùi 64Kbyte boä nhôù ngoaïi neáu EA\=0. Xem hình 3.2 :
Hình 3.3 trình baøy sô ñoà boä nhôù döõ lieäu cuûa AT89S8252, noù bao goàm
256 byte RAM noäi, caùc thanh ghi chöùc naêng ñaëc bieät, 2 Kbyte EEPROM
beân trong chip, vaø coù theå giao tieáp vôùi boä nhôù ngoaïi leân tôùi 64 Kbyte.
Beân traùi hình 3.3 laø 256 byte RAM noäi, caùc thanh ghi coù chöùc naêng
ñaëc bieät (SFR) ôû 128 byte cao cuûa RAM noäi coù ñòa laø 80H-0FFH, caùc byte
naøy chæ ñöôïc ñònh ñòa chæ tröïc tieáp. 128 byte thaáp cuûa RAM noäi coù ñòa chæ
laø 00H-7FH coù theå ñònh ñòa chæ tröïc tieáp hay giaùn tieáp.
Boä nhôù EEPROM vaø boä nhôù döõ lieäu ngoaøi coù theå xöû lyù baèng caùch
ñònh ñòa chæ tröïc tieáp baèng leänh MOVX. 2 Kbyte EEPROM ñöôïc xöû lyù taïi
ñòa chæ 000H-7FFH.
Ñeå xöû lyù boä nhôù döõ lieäu beân ngoaøi vaø EEPROM ta duøng bit EEMEN
trong thanh ghi WMCON coù ñòa chæ taïi 96H. Neáu EEMEN=1 cho pheùp xöû
lyù EEPROM, neáu EEMEN=0 cho pheùp xöû lyù boä nhôù döõ lieäu beân ngoaøi.
Khi reset, bit EEMEN bò xoaù.
Ñeå ghi döõ lieäu vaøo EEPROM, bit EEMWE trong thanh ghi
WMCON cuõng ñöôïc ñöôïc set=1. Khi reset bit naøy cuõng bò xoaù khi ñoù
khoâng cho pheùp ghi vaøo EEPROM. Khoâng caàn thieát phaûi xoaù töøng phaàn
cuûa EEPROM tröôùc khi ghi döõ lieäu môùi vaøo.
Moãi laàn ghi döõ lieäu vaøo EEPROM seõ gaây ra moät chu kyø laäp trình
beân trong, chu kyø naøy daøi khoâng quaù 10mS. Söï keát thuùc cuûa 1 chu kyø laäp
trình EEPROM ñöôïc xaùc ñònh baèng vieäc kieåm tra bit RDY/BSY beân trong
thanh ghi WMCON.
Neáu RDY/BSY=0 chæ ra raèng vieäc laäp trình vaøo EEPROM ñang
ñöôïc xöû lyù. Neáu RDY/BSY=1 chæ ra raèng vieäc laäp trình vaøo EEPROM ñaõ
xong. Khi vieäc laäp trình keát thuùc, noäi dung ñoù seõ ñöôïc ñoïc laïi vaø ñöôïc
kieåm tra.
Keát thuùc 1 chu kyø laäp trình EEPROM cuõng ñöôïc xaùc ñònh baèng
phöông phaùp Data polling, töùc laø trong phöông phaùp naøy noäi dung ñaõ ñöôïc
ghi seõ ñöôïc ñoïc laïi moät caùch lieân tuïc. Suoát quaù trình laäp trình EEPROM
bit lôùn nhaát cuûa döõ lieäu ñöôïc ñoïc laïi chính laø söï boå sung cuûa bit döõ lieäu
ñöôïc ghi. Khi vieäc laäp trình ñaõ xong thì döõ lieäu ñuùng seõ ñöôïc goïi laïi. Vieäc
goïi laïi döõ lieäu ñuùng cuõng xaùc ñònh raèng vieäc ghi döõ lieäu ñaõ ñöôïc saün saøng.
Sô ñoà caáu truùc RAM beân trong AT89S8252 cuõng gioáng vôùi AT89C51
vaø coù boå sung theâm moät soá thanh ghi trong vuøng RAM caùc thanh ghi ñaëc
bieät, cuï theå nhö baûng 3.1 :
F8H FFH
F0H B F7H
E8 EFH
H
E0 ACC E7H
H
D8 DFH
H
D0 PSW SPCR D7H
H
C8 T2CON T2MOD RCAP2L RCAP2H TL2 TH2 CFH
H
C0 C7H
H
B8 BFH
H
B0 B7H
H
A8 SPSR AFH
H
A0 A7H
H
98H SBUF 9FH
90H WMCON 97H
88H TCON TMOD TL0 TL1 TH0 TH1 8FH
80H P0 SP DP0L DP0H DP1L DP1H SPDR PCON 87H
Thanh ghi WMCON chöùa caùc bit ñieàu khieån Watchdog Timer vaø boä
nhôù. Bit EEMEN vaø EEMWE duøng ñeå choïn 2 Kbyte EEPROM vaø cho
pheùp ghi döõ lieäu vaøo EEPROM. Bit DPS choïn moät trong 2 thanh ghi
DPTR. Xem baûng 3.2:
Baûng 3.2 : Thanh ghi ñieàu khieån Watchdog Timer vaø Boä nhôù
EEMWE : Bit cho pheùp ghi döõ lieäu vaøo EEPROM treân chip. Set bit
naøy leân 1 tröôùc khi ghi byte döõ lieäu vaøo EEPROM vôùi leänh MOVX.
Sau khi hoaøn thaønh quaù trình ghi ta duøng phaàn meàm ñeå xoaù noù.
EEMEN : Bit cho pheùp xöû lyù EEPROM treân chip. Khi bit naøy baèng
1 leänh MOVX cuøng vôùi Dptr seõ xöû lyù EEPROM treân chip. Khi bit
naøy baèng 0 leänh MOVX cuøng vôùi Dptr xöû lyù boä nhôù döõ lieäu ngoaøi.
DPS : Bit löïa choïn thanh ghi con troû döõ lieäu. DPS=0 choïn bank ñaàu
tieân cuûa thanh ghi con troû döõ lieäu DP0, neáu DPS=1 choïn DP1.
WDTRST-RDY/BSY : côø Reset Watchdog Timer vaø cuõng laø côø chôø
hay côø baän cuûa EEPROM. Moãi laàn bit WDTRST ñöôïc set baèng 1
bôûi phaàn meàm thì seõ taïo ñöôïc 1 xung ñeå Reset Watchdog Timer.
Bit WDTR ñöôïc reset moät caùch töï ñoäng trong chu kyø leänh tieáp
theo (bit
− Neáu bit naøy baèng 1 cho pheùp Watchdog Timer hoaït ñoäng.
− Neáu bit naøy baèng 0 thì khoâng cho pheùp Watchdog Timer hoaït
ñoäng.
Ôû ñaây nhoùm chæ giôùi thieäu thanh ghi WMCON vaø caáu truùc boä nhôù
nhaèm phuïc vuï cho vieäc ghi vaø ñoïc cho EEPROM, caùc thanh ghi vaø caùc
chöùc naêng khaùc coù theå tham khaûo trong Datasheet cuûa AT89S8252.
Ñaây laø ghi dòch 8 bit ra noái tieáp, döõ lieäu naïp vaøo coù theå noái tieáp hoaëc
song song tuyø theo öùng duïng khaùc nhau. Khi chaân Serial Shift/Parallel
Load ôû möùc thaáp thì döõ lieäu vaøo ñoàng boä song song, vaø khi Serial
Shift/Parallel Load ôû möùc cao thì döõ lieäu naïp vaøo laø noái tieáp.
Vôùi loaïi 74HC165 ñieän aùp caáp ñieän 2V ñeán 6V, ñoä mieãn nhieåu cao, doøng
vaøo Iin ≤ 1μA .
Ngoõ vaøo:
SA(pin 10): Döõ lieäu vaøo noái tieáp.
A, B, C, D, E, F, G, H (pin 11, 12, 13, 14, 3, 4, 5, 6): Ngoõ vaøo döõ lieäu
song song.
− Ñaây laø IC ghi dòch 8 bit vaøo noái tieáp, ra song song.
− Ngoõ ra 3 traïng thaùi.
− Ngöôõng ñieän aùp cung caáp 2V ñeán 6V, doøng vaøo Iin ≤ 1μA , tieâu toán
naêng löôïng thaáp, ghi dòch coù xoaù tröïc tieáp.
− Thanh ghi dòch naøy coù ngoõ vaøo can thieäp xoaù tröïc tieáp
(SRCLR\), ngoõ vaøo naïp döõ lieäu noái tieáp (SER) vaø ngoõ ra noái tieáp
cho töøng taàng.
− Khi chaân OE\ ôû möùc thaáp thì cho pheùp ngoõ ra döõ lieäu, ngöôïc laïi
khi OE\ = 1 thì ngoõ ra ôû toång trôû cao baát chaáp tín hieäu vaøo.
− Caû 2 xung (SRCLK) vaø (RCLK) thì tích cöïc ôû caïnh leân.
Trong Modul key board naøy söû duïng LCD 2 doøng x 16 kyù töï, söû
duïng chíp söû duïng chíp KS006U laø LCD 1602A cuûa SamSung. Beân caïnh ñoù
coøn coù LCD söû duïng chíp HD44780 cuûa Hitachi tuy khaùc nhau loaïi chíp
nhöng caû hai loaïi coù chaân ra gioáng nhau vaø caùch söû duïng hoaøn toaøn töông
töï nhau. LCD laø thieát bò coù theå xuaát ( ghi data ñeå hieån thò ), nhaäp ( ñoïc giaù
trò töø LCD veà ), sô ñoà chaân vaø chöùc naêng caùc chaân nhö sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Khi R/W = 0: döõ lieäu ôû bus döõ lieäu ñang ñöôïc ghi vaøo LCD.
Khi R/W = 1: cho pheùp ñoïc töø LCD. Thoâng thöôøng thì chaân R/W ôû
möùc thaáp.
- Ngoõ vaøo EN
Ñöôïc söû duïng ñeå baùo cho LCD bieát ñang gôûi döõ lieäu ñeán. Ñeå gôûi döõ
lieäu ñeán LCD, tröôùc tieân phaûi ñöa EN leân möùc 1, sau ñoù ñieàu khieån hai
ñöôøng RS vaø R/W vaø ñöa döõ lieäu vaøo bus. Khi taát caû ñaõ saün saøng, ñöa EN
xuoáng möùc 0. Vieäc chuyeån töø möùc 1 xuoáng 0 baùo cho HD44780 nhaän döõ
lieäu hieän haønh treân bus döõ lieäu vaø xöû lyù.
- Bus döõ lieäu DB0 ÷ DB7
Vcc
LCD
10K Pin3
Gn
Hình 3.9: Sô ñoà maïch contrast LCD
Ñoái vôùi maïch caáp nguoàn cho led neàn chuùng ta coù theå caáp tröïc tieáp
hoaëc duøng moät bieán trôû ñeå chænh saùng toái khi caàn thieát.
“..” Khoâng quan taâm, noù coù theå laø “ 1” hay “0”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Haøn
00 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
g1
Haøng C C C C C C C C C C C C C
CD CE CF
2 0 1 2 3 4 5 6 7 8 9 A B C
Led 7 ñoaïn ñöôïc söû duïng ôû ñaây laø loaïi led chuyeân duøng cho caùc traïm
xaêng. Ñaây laø loaïi led coù cöôøng ñoä saùng raát maïnh ñeå phuø hôïp vôùi ñieàu kieän
laøm vieäc ngoaøi trôøi. Moãi thanh led ñöôïc tích hôïp 6 con led 7 ñoaïn vôùi nhau
nhö hình veõ :
F F P P P PP P P P PP P P GGGG GG F F
1 1 1 2 3 4 5 6 7 8 9 10 1112 6 5 4 3 2 1 2 2
Led loaïi naøy ñaëc bieät coøn coù sôïi daây toùc ñöôïc nung noùng bôûi moät
ñieän aùp AC .Tuyø theo moãi loaïi led maø giaù trò ñieän aùp naøy khaùc nhau, nhaèm
laøm taêng cöôøng ñoä saùng vaø tuoåi thoï cho led.
Caùc thoâng soá kyõ thuaät cuûa led:
¾ Ñieän aùp daây toùc ( Filament Voltage ) : 3,06 ñeán 4,6 VAC
Doøng ñieän : 90 ñeán 100 mA
¾ Ñieän aùp Anode ñænh ( Peak Anode Voltage ) :27 ñeán 32 Vp-p
Doøng ñieän : 6,5 ñeán 13 mA
¾ Ñieän aùp löôùi ñænh (Peak Grid Voltage ) : 27 ñeán 32 Vp-p
CHÖÔNG 4
Thôøi gian thöïc hieän ñeà taøi, nhoùm sinh vieân ñaõ laøm ñöôïc:
- Phaân tích ñöôïc nguyeân lyù hoaït ñoäng cuûa maïch ñieän trong heä thoáng
bôm xaêng.
- Vieát chöông trình ñieàu khieån heä thoáng theo yeâu caàu:
+ Bôm töï do.
+ Bôm theo ñaët tröôùc soá lít, soá tieàn.
+ Vaøo maät khaåu thay ñoåi ñôn giaù.
+ Xem toång soá lít baùn ñöôïc vaø löu vaøo EEPROM on chip.
Do thôøi gian thöïc hieän ñeà taøi coù haïn neân nhoùm chöa laøm kòp maät khaåu
xoaù toång soá lít khi boä nhôù EEPROM on chip traøn.
Ñeà taøi ñaõ hoaøn thaønh song ñaây chæ laø moâ phoûng theo moät öùng duïng
ñaõ coù trong thöïc teá, vì vaäy neáu thôøi löôïng cho pheùp thì seõ phaùt trieån ñeà taøi
theo caùc höôùng sau:
- Coù theå giao tieáp maùy tính ñeå kieåm tra nhanh choùng soá lít ñöôïc baùn
trong moät ngaøy, moät thaùng,…
- Coù theå phaùt trieån thaønh nhöõng heä thoáng bôm xaêng hoaøn toaøn töï
ñoäng, duøng tieàn caét hay duøng card bôm xaêng.
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 62