You are on page 1of 135

KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 27

PHUÏ LUÏC B
CHÖÔNG TRÌNH ASM VI ÑIEÀU KHIEÅN
AT89S8252

RS bit p0.0 ;DK ghi LCD


EN bit p0.1 ;Enable LCD & bit receiver serial from key
board
CK bit p0.2 ;Xung Clock
SDI bit p0.3 ;SDI input 74hc595
RCLK bit p0.4 ;Bit Parellel / serial of165, RCLK of 74hc595
DIR bit p3.7 ;Pin Direction control 74LS 245
G2B bit p3.6 ;pin G2B of 74LS138
In_A bit p2.2 ;Pin A of 74LS138
In_B bit p2.3 ;Pin B of 74LS138 and pin A stage 2 of 74LS139
In_C bit p2.4 ;Pin C of 74LS138 and pin B stage 2 of 74LS139
In_A1 bit p2.6 ;Pin A stage 1 of 74LS139
In_B1 bit p2.7 ;Pin B stage 1 of 74LS139
WMCON data 96h ;watchdog and memory control register
EEMEN equ 00001000b ;EEPROM access enable bit
EEMWE equ 00010000b ;EEPROM write enable bit
WDTRST equ 00000010b ;EEPROM RDY/ BSY bit

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 28

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

lcall Function_set ;Data can dieu khien la 38h


lcall command_byte
lcall Display_on ;Data can dieu khien la 0ch
lcall command_byte
lcall LCD0 ;Khi chua co phim nhan
ret

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 29

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 30

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 31

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 32

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 33

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 34

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 35

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 36

lcall loop_04h ;xxxx1100b


setb SDI
mov r3,#0
lcall loop_04h ;x1000100b
setb SDI
mov r3,#2
lcall loop_04h ;10001001b
lcall enable
ret
code_C0h:
lcall data_03h
mov r2,#6
clr SDI
lcall zero
ret
code_38h:lcall num_8
ret
Function_set:
lcall num_8
ret
Display_on:
lcall data_03h
mov r2,#2
clr SDI
lcall zero
ret
Clear_display:
acall clear_output
lcall data_01h
lcall enable
ret
point: lcall data_04h ;point is 20h
mov r2,#0
clr SDI
hue3: mov r3,#3
lcall loop_A
inc r2
cjne r2,#3,hue3
lcall enable
ret
Dot_code:

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 37

lcall data_05h ;Dot code is 2Eh


mov r3,#2
setb SDI
lcall loop_04h
mov r3,#2
setb SDI
lcall loop_04h
mov r3,#2
lcall loop_04h
lcall enable
ret
A_code: ;A code is 41h
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
mov r3,#0
lcall loop_A
lcall enable
ret
loop_A: clr CK
clr In_A
nop
setb In_A
nop
clr In_A
setb CK
nop
setb In_A
inc r3
cjne r3,#4,next_A
jmp go_A
next_A: cjne r3,#3,loop_A
setb SDI
mov r3,#3
jmp loop_A
go_A: ret

enable: clr In_A ;disable CK output


setb RCLK ;RCLK is high
nop
setb In_A ;enable output
ret
B_code: ;B code is 42h

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 38

lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1


two: mov r3,#1
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
lcall enable
ret
C_code: ;C code is 43h
lcall data_04h
three:mov r3,#1
data_011: lcall loop_A
setb SDI
mov r3,#3
lcall loop_A
lcall enable
ret
D_code: ;D code is 44h
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
four: mov r3,#2
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
mov r3,#3
lcall loop_A
lcall enable
ret
E_code: ;E code is 45h
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
five: 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
F_code: ;F code is 46h

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 39

lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1


six: mov r3,#2
lcall loop_A
setb SDI
mov r3,#3
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
lcall enable
ret
G_code: ;G code is 47h
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
seven: mov r3,#2
lcall loop_A
setb SDI
mov r3,#3
lcall loop_A
mov r3,#3
lcall loop_A
lcall enable
ret
H_code: ;H code is 48h
lcall data_04h
eight: setb SDI
mov r3,#3
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
mov r3,#3
lcall loop_A
mov r3,#3
lcall loop_A
lcall enable
ret
I_code: ;I code is 49h
lcall data_04h
nine: setb SDI
mov r3,#0
lcall loop_04h

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 40

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 41

ret

N_code: ;N code is 4Eh


lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
data_1110:
mov r3,#1
setb SDI
lcall loop_A
clr SDI
mov r3,#3
lcall loop_A
lcall enable
ret
O_code: ;O code is 4Fh
lcall data_04h ;xxxx0100b / SDI = 0, CK = 1, In_A = 1
setb SDI
mov r3,#0
lcall loop_A
lcall enable
ret
P_code: mov r2,#4 ;P code is 50h
lcall data_05h ;xxxx0101b / SDI = 1, CK = 1, In_A = 1

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 42

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 43

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 44

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 45

lcall gma_lit ;decode litre


lcall data_tien ;convert hex ---> BCD
lcall gma_tien ;decode money
setb tr0
d1: lcall LCD1 ;chuong trinh LCD co hien thi 7
doan
lcall start
jb p1.6,d1 ;p1.6 := 1 not count
setb ie.1
nop
lcall start ;chuong trinh con reset
jmp d1
start: mov p3,#01111100b ;Dir is low B--->A, G2B of 138 is low
mov p2,#01000000b ;cho phep 74ls373 hoat dong
nop
jb p0.4,Lam ;kiem tra start / stop
lcall EscLT ;hien thi khi nhan co bom
lcall sweepkey ;chuong trinh quet phim co hien thi
lam: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
ret

;bat dau chuong trinh ngat


gm22: mov 56h,#0 ;2 led giua cua lit
gm11: mov 55h,#0 ;2 led dau cua lit
gm0: lcall gma_lit ;decode litre
lcall data_tien ;convert hex ---> BCD
lcall gma_tien ;decode money
ttt: mov tl0,#0a7h
mov th0,#0fdh ;time0 dem thi ngat
clr ie.1
setb tr0
mov r7,#0
reti

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 46

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 47

Ft1: cjne a,#8,ttttt


sss: mov a,56h
cjne a,73h,ttttt
setb p1.4 ;dong co dong
setb p1.3 ;bit valse1 dong
setb p1.2 ;bit valse2 dong
jmp tttt
ttttt: mov a,55h
add a,#1
da a
mov 55h,a
mov a,40h
add a,30h ;O nho chua don gia
mov 40h,a ;save money
mov a,41h
addc a,#0
mov 41h,a ;save money
mov a,42h
addc a,#0
mov 42h,a ;save money
mov a,43h
addc a,#0
mov 43h,a ;save money
mov a,55h ;cat BCD 2 led dau cua lit vao 56h
setb p1.5
cjne a,#00h,gm
lcall write_total
clr p1.5 ;tang bo dem co khi
mov a,56h
add a,#1
da a
mov 56h,a ;cat BCD 2 led giua cua lit vao 56h
cjne a,#00h,gm1
mov a,57h
add a,#1
da a
mov 57h,a ;cat ma BCD 2 led cuoi cua lit vao 57h
cjne a,#00h,gm2 ;litre = 9.999,99 lit

gma_tien: mov dptr,#1fe0h ;gia tri nay de lay ma 7segment


mov 31h,53h

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 48

mov a,53h ;test million money


cjne a,#0,xxx
jmp xx
xxx: jmp decode_million
xx: mov a,50h
cjne a,#0,thinh
mov a,52h
cjne a,#0,thinh
mov a,51h
cjne a,#0,thinh
mov 63h,#0ffh
mov 60h,#0c0h
mov 44h,#0
mov 45h,#0fh ;tat ky tu ke LCD
jmp ktra2
thinh: mov a,50h
anl a,#0fh
mov 44h,a
movc a,@a+dptr
mov 60h,a
mov a,50h
anl a,#0f0h
swap a
mov 45h,a
movc a,@a+dptr
mov 63h,a
cjne a,#0c0h,ktra2
mov a,52h ;money2
cjne a,#0,ktra2
mov a,51h ;money1
cjne a,#0,ktra2
mov 63h,#0ffh
mov 45h,#0fh ;tat ky tu LCD
ktra2: mov a,51h ;money1
cjne a,#0,ktra1
mov a,52h ;money2
cjne a,#0,ktra1
mov 66h,#0ffh
mov 69h,#0ffh
mov 46h,#0fh ;tat ky tu LCD
mov 47h,#0fh ;tat ky tu LCD

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 49

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 50

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 51

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 52

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 53

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 54

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 55

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 56

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 57

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 58

tc45: cjne a,#6,tc46


lcall num_6
tc46: cjne a,#7,tc47
lcall num_7
tc47: cjne a,#8,tc48
lcall num_8
tc48: cjne a,#9,tc49
lcall num_9
tc49: cjne a,#0fh,tc4
lcall point
tc4: ret

tchar5: mov a,48h


cjne a,#0,tc50
lcall num_0
tc50: cjne a,#1,tc51
lcall num_1
tc51: cjne a,#2,tc52
lcall num_2
tc52: cjne a,#3,tc53
lcall num_3
tc53: cjne a,#4,tc54
lcall num_4
tc54: cjne a,#5,tc55
lcall num_5
tc55: cjne a,#6,tc56
lcall num_6
tc56: cjne a,#7,tc57
lcall num_7
tc57: cjne a,#8,tc58
lcall num_8
tc58: cjne a,#9,tc59
lcall num_9
tc59: cjne a,#0fh,tc5
lcall point
tc5: ret

tchar6:mov a,49h
cjne a,#0,tc60
lcall num_0
tc60: cjne a,#1,tc61

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 59

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

lchar0: mov a,4ah


cjne a,#0,lc00
lcall num_0
lc00: cjne a,#1,lc01
lcall num_1
lc01: cjne a,#2,lc02
lcall num_2
lc02: cjne a,#3,lc03
lcall num_3
lc03: cjne a,#4,lc04
lcall num_4
lc04: cjne a,#5,lc05
lcall num_5
lc05: cjne a,#6,lc06
lcall num_6
lc06: cjne a,#7,lc07
lcall num_7
lc07: cjne a,#8,lc08
lcall num_8
lc08: cjne a,#9,lc09

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 60

lcall num_9
lc09: cjne a,#0fh,lc0a
lcall point
lc0a: cjne a,#10,lc0
lcall dot_code
lc0: ret

lchar1: mov a,4bh


cjne a,#0,lc10
lcall num_0
lc10: cjne a,#1,lc11
lcall num_1
lc11: cjne a,#2,lc12
lcall num_2
lc12: cjne a,#3,lc13
lcall num_3
lc13: cjne a,#4,lc14
lcall num_4
lc14: cjne a,#5,lc15
lcall num_5
lc15: cjne a,#6,lc16
lcall num_6
lc16: cjne a,#7,lc17
lcall num_7
lc17: cjne a,#8,lc18
lcall num_8
lc18: cjne a,#9,lc19
lcall num_9
lc19: cjne a,#0fh,lc1a
lcall point
lc1a: cjne a,#10,lc1
lcall dot_code
lc1: 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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 61

lc22: cjne a,#3,lc23


lcall num_3
lc23: cjne a,#4,lc24
lcall num_4
lc24: cjne a,#5,lc25
lcall num_5
lc25: cjne a,#6,lc26
lcall num_6
lc26: cjne a,#7,lc27
lcall num_7
lc27: cjne a,#8,lc28
lcall num_8
lc28: cjne a,#9,lc29
lcall num_9
lc29: cjne a,#0fh,lc2a
lcall point
lc2a: cjne a,#10,lc2
lcall dot_code
lc2: ret

lchar3: mov a,4dh


cjne a,#0fh,lc3
lcall point
lc3: cjne a,#0,lc30
lcall num_0
lc30: cjne a,#1,lc31
lcall num_1
lc31: cjne a,#2,lc32
lcall num_2
lc32: cjne a,#3,lc33
lcall num_3
lc33: cjne a,#4,lc34
lcall num_4
lc34: cjne a,#5,lc35
lcall num_5
lc35: cjne a,#6,lc36
lcall num_6
lc36: cjne a,#7,lc37
lcall num_7
lc37: cjne a,#8,lc38
lcall num_8

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 62

lc38: cjne a,#9,lc39


lcall num_9
lc39: ret
lchar4:
mov a,4eh
cjne a,#0fh,lc4
lcall point
lc4: cjne a,#0,lc40
lcall num_0
lc40: cjne a,#1,lc41
lcall num_1
lc41: cjne a,#2,lc42
lcall num_2
lc42: cjne a,#3,lc43
lcall num_3
lc43: cjne a,#4,lc44
lcall num_4
lc44: cjne a,#5,lc45
lcall num_5
lc45: cjne a,#6,lc46
lcall num_6
lc46: cjne a,#7,lc47
lcall num_7
lc47: cjne a,#8,lc48
lcall num_8
lc48: cjne a,#9,lc49
lcall num_9
lc49: ret
lchar5:
mov a,4fh
cjne a,#0fh,lc5
lcall point
lc5: cjne a,#0,lc50
lcall num_0
lc50: cjne a,#1,lc51
lcall num_1
lc51: cjne a,#2,lc52
lcall num_2
lc52: cjne a,#3,lc53
lcall num_3
lc53: cjne a,#4,lc54

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 63

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

sweepkey: setb p1.4 ;dong co dong


setb p1.3 ;bit valse1 dong
setb p1.2 ;bit valse2 dong
mov 75h,#0ffh ;nap gia tri 75h = 0ffh cho phim
Clear
mov 2ah,#0ffh ;so sanh de dung dat so tien
mov 7ch,#0ffh ;xoa ma phim chuong trinh quet P
chinh
mov 33h,#0ffh
lcall row1
lcall row2
lcall row3
mov p3,#01111100b
mov p2,#01000000b ;cho phep 74ls373 hoat dong
nop
jb p0.4,Esc2 ;kiem tra start / stop
lcall row4
lcall row5
jmp sweepkey
Esc2: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
clr p1.4 ;dong co mo
clr p1.3 ;bit valse1 mo
clr p1.2 ;bit valse2 mo
ret
row1: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low
mov p2,#10010000b
lcall hthi
mov p2,#10010000b

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 64

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 65

row5: mov p3,#10111100b ;DIR is high, G2B of 74LS138 is low


mov p2,#10010000b
lcall hthi
mov p2,#10010000b
lcall data_03h
lcall data_01h
lcall data_01h
lcall enable
clr SDI
mov r5,#21 ;code row1 when r5 equal to 21
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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 66

clr CK ;CK is low


nop
setb In_A ;enable output CK is low
nop
clr In_A
nop
nop
mov p3,#01111100b ;DIR is 0 output B--->A,
mov p2,#01000000b ;cho phep 74ls373 hoat dong
nop
jb p0.1,so ;call check key
mov a,7ch
cjne a,#0ffh,swcol
lcall sweep_column
jmp so
swcol: lcall swcolumn
so: cjne r6,#7,loop_key
ret
sweep_column: mov a,r6
anl a,#0ffh
add a,r5
cjne a,#9,test6
mov 7ch,a
lcall datsolit ;test key L
test6: cjne a,#14,test15
mov 7ch,a
lcall datsotien ;test key $, dat so tien
test15: cjne a,#19,test16
mov 7ch,a
lcall password
test16: cjne a,#24,test17
mov 7ch,a
lcall keytotal ;test key Total
test17:cjne a,#25,test18
mov 7ch,a
lcall keytime ;test key Time
test18:cjne a,#27,exit
;mov 7ch,a
;lcall keyS ;test key S
exit: ret
chuanp: mov 4ch,#0fh

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 67

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 68

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 69

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 70

col13: cjne a,#17,col14


mov 7bh,a
lcall keycommon ;test key number 6
col14: cjne a,#18,col15
mov 7bh,a
lcall keycommon ;test key number5
col15: cjne a,#20,col17
mov 7bh,a
lcall keycommon ;test key number 000
col17: cjne a,#21,col18
mov 7bh,a
lcall keycommon ;test key number 00
col18: cjne a,#22,col19
mov 7bh,a
lcall keycommon ;test key number 0
col19: cjne a,#23,col20
mov 7bh,a
lcall keycommon ;test key number 9
col20: cjne a,#26,col23
mov 33h,a
col23: cjne a,#28,exitl
mov 75h,a ;cat gia tri phim Clear vao 75h
exitl: ret
conertT_G: mov 62h,60h
mov 65h,63h
mov 68h,66h
mov 6bh,69h
mov 6eh,6ch
mov 71h,6fh
mov 60h,#0ffh
mov 63h,#0ffh
mov 66h,#0ffh
mov 69h,#0ffh
mov 6ch,#0ffh
mov 6fh,#0ffh
mov a,79h
cjne a,#10,retT_G
lcall write_eeprom_price ;write EEPROM price
retT_G: ret
convertL_T: lcall gma_tien
mov 4ah,44h

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 71

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 72

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 73

lit2: lcall dat_keylit


djnz r7,lit2
ljmp lit_dung
dattF2: mov a,7ch
cjne a,#14,bien4
mov 50h,#00h
mov 51h,#00h
mov 52h,#01h
lcall convertL_T
tien10: lcall dat_keylit
djnz r7,tien10
bien4: ljmp exit_lkc
l1lit:
mov a,7bh
cjne a,#8,l0lit
mov a,7ch
cjne a,#9,dattF1
mov 55h,#00h
mov 56h,#0f1h
mov 57h,#0ffh
lcall gma_lit
lit1: lcall dat_keylit
djnz r7,lit1
ljmp lit_dung
dattF1: mov a,7ch
cjne a,#14,lkcl6
mov 50h,#00h
mov 51h,#50h
mov 52h,#00h
lcall convertL_T
tien5: lcall dat_keylit
djnz r7,tien5
lkcl6: ljmp exit_lkc
l0lit: mov a,4fh
cjne a,#0fh,lkcl6
mov a,4eh
cjne a,#0fh,lkcl5
mov a,4dh
cjne a,#0fh,lkcl4
mov a,4ch
cjne a,#0fh,lkcl3

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 74

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 75

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

ph7: mov a,7bh

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 76

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

ph9: cjne a,#23,ph0


mov a,7ch
cjne a,#9,ntien9
mov 55h,#09h ;ph9

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 77

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

lkcl15: mov r3,#6


mov a,7ch ;LAN NHAN THU 6
cjne a,#9,nut0
mov a,4eh
swap a
orl a,4dh
mov 57h,a
mov a,4ch
swap a
orl a,4bh
mov 56h,a
ljmp lkcl21
nut0: mov a,4eh
swap a
orl a,4dh
mov 52h,a
mov a,4ch
swap a
orl a,4bh

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 78

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

lkcl12: mov r3,#3


mov a,7ch ;LAN NHAN THU 3
cjne a,#9,ntie2
mov 56h,4bh
jmp lkcl21
ntie2: mov 51h,4bh
mov 52h,#00h
jmp lkcl21
lkcl11: mov r3,#2

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 79

lkcl21: mov a,4bh


cjne a,#10,lan2t
jmp vaoP
lan2t: mov a,7bh ;LAN NHAN THU 2
cjne a,#10,num3
mov a,7ch
cjne a,#9,goi4
lcall vao4
jmp datkeylit
goi4: mov a,7ch
cjne a,#14,in_MK2
lcall vaoT4

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 80

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 81

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 82

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 83

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 84

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 85

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 86

vaoT1: mov a,4ah


swap a
orl a,#01h ;ph1_tien
jmp ktvaoT
vaoT0: mov a,4ah
swap a
orl a,#00h ;ph0_tien
ktvaoT: mov 50h,a
lcall convertL_T
ret

vao9: mov a,4ah


swap a
orl a,#09h ;ph9
jmp ktvao
vao8: mov a,4ah
swap a
orl a,#08h ;ph8
jmp ktvao
vao7: mov a,4ah
swap a
orl a,#07h ;ph7
jmp ktvao
vao6: mov a,4ah
swap a
orl a,#06h ;ph6
jmp ktvao
vao5: mov a,4ah
swap a
orl a,#05h ;ph5
jmp ktvao
vao4: mov a,4ah
swap a
orl a,#04h ;ph4
jmp ktvao
vao3: mov a,4ah
swap a
orl a,#03h ;ph3
jmp ktvao
vao2: mov a,4ah
swap a

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 87

orl a,#02h ;ph2


jmp ktvao
vao1: mov a,4ah
swap a
orl a,#01h ;ph1
jmp ktvao
vao0: mov a,4ah
swap a
orl a,#00h ;ph0
ktvao: mov 55h,a
lcall gma_lit
ret
waitus: mov 7eh,#7
djnz 7eh,$
ret
gma_price:
orl WMCON,#EEMEN ;enable EEPROM
access
mov dptr,#000h
price6: movx a,@dptr
mov b,a
mov a,dpl
cjne a,#00h,price1
mov 20h,b
price1: cjne a,#01h,price2
mov 21h,b
price2: cjne a,#02h,price3
mov 22h,b
price3: inc dptr
cjne a,#03h,price6
xrl WMCON,#EEMEN ;disable EEPROM
access
lcall gma_price_7segment
ret
gma_price_7segment:
mov dptr,#1fe0h
mov a,20h ;62h,65h,68h,6bh,6eh,71h save code
7_segment
cjne a,#0,thinh1
mov a,22h ;money2
cjne a,#0,thinh1

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 88

mov a,21h ;money1


cjne a,#0,thinh1
mov 65h,#0ffh
mov 62h,#0ffh
jmp ktra22
thinh1: mov a,20h ;money0
anl a,#0fh
movc a,@a+dptr
mov 62h,a
mov a,20h ;money0
anl a,#0f0h
swap a
movc a,@a+dptr
mov 65h,a
cjne a,#0c0h,ktra22
mov a,22h ;money2
cjne a,#0,ktra22
mov a,21h ;money1
cjne a,#0,ktra22
mov 65h,#0ffh
ktra22:mov a,21h ;money1
cjne a,#0,ktra11
mov a,22h ;money2
cjne a,#0,ktra11
mov 68h,#0ffh
mov 6bh,#0ffh
jmp thoat11
ktra11:mov a,21h ;money1
anl a,#0fh
mov 23h,a ;cat don gia hang tram
movc a,@a+dptr
mov 68h,a
mov a,21h ;money1
anl a,#0f0h
swap a
mov 24h,a ;cat don gia hang ngan
movc a,@a+dptr
mov 6bh,a
cjne a,#0c0h,thoat11
mov a,22h ;money2
cjne a,#0,thoat11

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 89

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 90

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 91

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

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 92

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

mov dptr,#010h ;address write


mov a,25h
add a,#1
da a
mov 25h,a
movx @dptr,a
bsy_total1: lcall hthi
djnz r3,bsy_total1
mov a,25h
cjne a,#00h,ret_total
mov a,26h
add a,#1
da a
mov 26h,a
inc dptr
mov r3,#15
movx @dptr,a

Phuï luïc B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 93

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 B: Chöông trình ASM treân Vi ñieàu khieån AT89S8252


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH BÔM XAÊNG Trang 94

PHUÏ LUÏC C
SÔ ÑOÀ MAÏCH ÑIEÄN

1. Maïch hieån thò


2. Maïch baøn phím vaø LCD
3. Maïch ñieàu khieån
4. Maïch nguoàn

Phuï luïc C: Sô ñoà maïch ñieän


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 20

PHUÏ LUÏC D
TAØI LIEÄU THAM KHAÛO

1. NGUYEÃN HÖÕU PHÖÔNG


Maïch soá, NXB Thoáng Keâ, 2001
2. NGUYEÃN ÑÌNH PHUÙ
Vi ñieàu khieån – Lyù thuyeát & Thöïc haønh, Tröôøng ÑH SPKT TP.HCM
3. TOÁNG VAÊN ON – HOAØNG ÑÖÙC HAÛI
Hoï Vi ñieàu khieån 8051, NXB Lao ñoäng-Xaõ hoäi, Haø Noäi, 2001
4. WEBSITE
http://www.atmel.com
http://www.americanmicrosemi.com
http://www.electronics-lab.com/downloads/index.html
http://www.fairchildsemi.com/pf/KS/KSC2335.html

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 21

TAØI LIEÄU THAM KHAÛO

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 22

[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

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 23

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 24

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 25

Phuï luïc B Taäp leänh Bascom-AVR

#IF $BGF $EEPROM $EEPROMHEX


#ELSE $BOOT $EEPROMHEX $EXTERNAL
#ENDIF $CRYSTAL $EXTERNAL $INCLUDE
$ASM $DATA $INCLUDE $LCD
$BAUD $DBG $LCD $LCDRS
$BAUD1 $DEFAULT $LCDRS $LCDPUTCTRL
$LCDPUTDATA $REGFILE $SERIALOUTPUT1 1WRESET
$LCDVFO $ROMSTART $TINY 1WREAD
$LIB $SERIALINPUT $WAITSTATE 1WWRITE
$MAP $SERIALINPUT1 $XRAMSIZE 1WSEARCHFIRST
$NOINIT $SERIALINPUT2LC $XRAMSTART 1WSEARCHNEXT
$NORAMCLEAR D $SIM 1WVERIFY
$SERIALOUTPUT
1WIRECOUNT ATN BASE64DEC BITWAIT
ABS ATN2 BAUD BYVAL
ACOS BASE64DEC BCD CALL
ALIAS BAUD BIN CIRCLE
ASC BCD BINVAL CHECKSUM
ASIN BIN BIN2GREY CHR
CLOCKDIVISION CONFIG ADC CONFIG ATEMU CONFIGLCDBUS
CLOSE CONFIG CCARD CLS CONFIG
CPEEKH CONFIG CLOCK CONFIG GRAPHLCD LCDMODE
CONFIG CONFIG COM1 CONFIG KEYBOARD CONFIG 1WIRE
CONFIG CONFIG COM2 CONFIG TIMER0 CONFIG
ACI CONFIG DATE CONFIG TIMER1 SERIALIN
CLOSESOCKET CONFIG S2EMU CONFIG LCD CONFIG ERIALIN1
CONFIG
SERIALOUT
CONFIG
ERIALOUT1
CONFIG SDA CONFIG COSH CRC8 CRC16 DBG
CONFIG SCL WATCHDOG CRYSTAL DEBOUNCE
CONFIG CONFIG PORT CPEEK DECR
DEBOUNCE COUNTER0
CURSOR DAYOFWEEK
CONFIG TCPIP AND COUNTER1
DATE DAYOFYEAR
CONFIG SPI CONST DATA DATE$ DISPLAY
CONFIG LCDPIN COS
DO-LOOP EXP GLCDCMD I2CINIT
DTMFOUT FIX GLCDDATA I2CRECEIVE
ECHO ELSE FORMAT DELAY I2CSEND
ENABLE FOR-NEXT DIM I2CSTART,I2CSTO
END FOURTHLINE DISABLE P,I2CRBYTE,I2CW
EXIT FRAC GOSUB BYTE
DECLARE FUSING GOTO IDLE
FUNCTION GETADC GREY2BIN IF-THEN-ELSE-
DEFXXX GETKBD HEX END

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 26

DEFLCDCHAR GETATKBD HEXVAL IF


DEG2RAD GETRC HIGH INCR
DECLARE SUB GETRC5 HIGHW INITLCD

INKEY INPUTHEX LOADADR LOOKUPSTRLOW


INP INPUTINSTRINT LOADLABEL LOWERLINELTRIM
INPUTBIN ISCHARWAITING LOCAL MAKEBCD
INPUTHEX LCASE LOCATE MAKEDEC
INPUT LCD LOG MAKEINT
INSTR LCDAT LOG10 MID
INT LEFT LEN LOOKDOWN MAX
INPUTBIN LINE LOAD LOOKUP MIN

MAKEBCD OPEN POWERSAVE RC5SEND


MAKEDEC OUT PRINT RC6SEND
MAKEINT PEEK PRINTBIN READ
MID POKE PSET READEEPROM
MAX POPALL PULSEIN READMAGCARD
MIN POWER PULSEOUT REM
ON VALUE POWERDOWN PUSHALL RESET
ON INTERRUPT PS2MOUSEXY RAD2DEG RESTORE
RETURN SET SYSDAY SHOWPIC
RIGHT SELECT CASE SYSSEC SHOWPICE
RND END SELECT SYSSECELAPSED SIN
ROTATE SETFONT SGN SINH
ROUND SERIN SHIFT START
RTRIM SEROUT SHIFTCURSOR SONYSEND
SENDSCAN SECOFDAY SHIFTIN SOUND
SENDSCANKBD SECELAPSED SHIFTOUT SPACE
SPC SUB TIME$ VARPTR
SPIIN SOCKETSTAT TOGGLE WAIT
SPIINIT SOCKETCONNEC TRIM WAITKEY
SPIMOVE T
UCASE WAITMS
SPIOUT SOCKETLISTEN
SQR TIME UPPERLINE WAITUS
STCHECK TCPWRITE VAL WHILE-WEND
STOP TCPWRITESTR UDPREAD WRITEEEPRO
STR TCPREAD UDPWRITE M
STRING SWAPTAN
UDPWRITESTR X10SEND
TANHTHIRDLINE
X10DETECT

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 27

Phuï luïc C Giôùi thieäu toång quan veà hoï vi ñieàu khieån AVR

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 28

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 29

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 30

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.

Figure 1: Circuit Diagram of the ISP Programmer Interface


Figure 2 shows the circuit diagram of the stand-lone spi programmer,the
power to the interface is provided by the PC USB port which can supply
a max of 100mA current. Get a cheap USB cable, cut the cable other end
connector and attach a crimp shell connector to this end, red wire is 5v
and black is 0v.
The printer port buffer interface is same as shown in figure 1. For the u-
controller a 40 pin ZIF socket can be used. This programmer circuit can
be use to program the 89S series devices and the AVR series devices
which are pin compatible to 8051, like 90S8515. For other AVR series
devices the user can make an adapter board for 20, 28 and 40 pin
devices. The pin numbers shown in brackets correspond to PC parallel
port connector.

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 31

Figure 2: Circuit Diagram of the SPI Programmer


Software
The ISP-3v0.zip file contains the main program and the i/o port driver for
windows 2000 & XP. Place all files in the same folder, for win-95/98 use
the "ISP-Pgm3v0.exe" file, for win-2000 & XP use the "ISP-XP.bat" file.
The main screen view of the program is shown in figure 3.
Also make sure do not program the RSTDISBL fuse in ATmega8,ATiny26
and ATtiny2313otherwise further spi programming is disable and you will
need a parallel programmer to enable the spi programming. For the fuses
setting consult the datasheet of the respective device.

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.

Following are the main features of this software,

• Read and write the Intel Hex file


• Read signature, lock and fuse bits
• Clear and Fill memory buffer
• Verify with memory buffer
• Reload current Hex file
• Display buffer checksum
Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 32

• Program selected lock bits & fuses


• Auto detection of hardware
Note:
The memory buffer contains both the code data and the eeprom data for
the devices which have eeprom memory. The eeprom memory address
in buffer is started after the code memory, so it is necessary the hex file
should contains the eeprom start address after the end of code memory last
address i.e. for 90S2313 the start address for eeprom memory is 0x800.

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.

Figure 3: Main screen of the program ISP-Pgm3v0

Phuï luïc E Giôùi thieäu veà IC ULN2803


Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 33

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 34

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 35

Phuï luïc F Caùc chöông trình ví duï

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

Phuï luïc G BOARD maïch in cuûa boä thí nghieäm


Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo
KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 36

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: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 37

PHAÀN C

PHUÏ LUÏC VAØ TAØI


LIEÄU THAM
KHAÛO

Phaàn C: Phuï luïc vaø taøi lieäu tham khaûo


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 21

LÖU ÑOÀ CHÖÔNG TRÌNH CHÍNH

BEGIN

Khôûi taïo LCD

Xoaù bit ÑK valse,


ñoäng cô

Khôûi taïo ngaét


timer, xoaù bieán
ñeám xung

Goïi CT hieån thò

S
C Kieåm tra
bit

Goïi CT queùt phím


F5, L, $, Total,
P,Timer, S

Phuï luïc A: Löu ñoà chöông trình


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ò

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 20

LÖU ÑOÀ CHÖÔNG TRÌNH BÔM TÖÏ DO

BEGIN

Lít = 0
Tieàn = 0

Hieån thò, Goïi CT ngaét S


Cho pheùp Kieåm tra

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

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 21

LÖU ÑOÀ CHÖÔNG TRÌNH VAØO MAÄT KHAÅU, THAY ÑOÅI ÑÔN GIAÙ

BEGIN

Goïi CT queùt phím chính


coù CT hieån thò

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

Goïi CT con thay ñoåi ñôn giaù,


goïi CT queùt phím phuï, coù hieån
thò

N S
Nhaäp ñôn giaù
Phím C
Nhaán phím E

Y Ñ

Löu ñôn giaù vaøo Ret


EEPROM
å

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 22

LÖU ÑOÀ CHÖÔNG TRÌNH CON BÔM THEO SOÁ TIEÀN ÑAËT TRÖÔÙC

BEGIN

Goïi chöông trình queùt phím chính , coù hieån thò

Goïi CT ñaët soâ tieàn, goïi CT queùt phím phuï, coù


hieån thò

Nhaäp tieàn caàn bôm, caát vaøo oâ nhôù, goïi hieån thò

Caûm bieán xung


S

ÑKT xung
Môû Valse vaø ñoäng cô

Taêng bieán ñeám xung

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 23

Tính tieàn, hieån thò

Chuyeån tieàn thaønh lít , ñuû 1


lit caát vaøo EEPROM

S
So saùnh tieàn bôm
E
baèng vôùi tieàn ñaët

Ngaét valse & ñoäng cô

Ret

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 24

Phuï luïc A: Löu ñoà chöông trình


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 21

LÖU ÑOÀ CHÖÔNG TRÌNH CHÍNH

BEGIN

Khôûi taïo LCD

Xoaù bit ÑK valse,


ñoäng cô

Khôûi taïo ngaét


timer, xoaù bieán
ñeám xung

Goïi CT hieån thò

S
C Kieåm tra
bit

Goïi CT queùt phím


F5, L, $, Total,
P,Timer, S

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

LÖU ÑOÀ CHÖÔNG TRÌNH BÔM TÖÏ DO

BEGIN

Lít = 0
Tieàn = 0

Hieån thò, Goïi CT ngaét S


Cho pheùp Kieåm tra

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

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 24

LÖU ÑOÀ CHÖÔNG TRÌNH VAØO MAÄT KHAÅU, THAY ÑOÅI ÑÔN GIAÙ

BEGIN

Goïi CT queùt phím chính


coù CT hieån thò

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

Goïi CT con thay ñoåi ñôn giaù,


goïi CT queùt phím phuï, coù hieån
thò

N S
Nhaäp ñôn giaù
Phím C
Nhaán phím E

Y Ñ

Löu ñôn giaù vaøo Ret


EEPROM
å

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 25

LÖU ÑOÀ CHÖÔNG TRÌNH CON BÔM THEO SOÁ TIEÀN ÑAËT TRÖÔÙC

BEGIN

Goïi chöông trình queùt phím chính , coù hieån thò

Goïi CT ñaët soâ tieàn, goïi CT queùt phím phuï, coù


hieån thò

Nhaäp tieàn caàn bôm, caát vaøo oâ nhôù, goïi hieån thò

Caûm bieán xung


S

ÑKT xung
Môû Valse vaø ñoäng cô

Taêng bieán ñeám xung

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 26

Tính tieàn, hieån thò

Chuyeån tieàn thaønh lít , ñuû 1


lit caát vaøo EEPROM

S
So saùnh tieàn bôm
E
baèng vôùi tieàn ñaët

Ngaét valse & ñoäng cô

Ret

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 27

LÖU ÑOÀ CHÖÔNG TRÌNH QUEÙT PHÍM CHÍNH

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

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 28

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

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 29

LÖU ÑOÀ CHÖÔNG TRÌNH QUEÙT PHÍM PHUÏ

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 B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 30

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

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 31

--- oOo ---


KHOA ÑIEÄN TÖÛ
BOÄ MOÂN ÑIEÄN TÖÛ COÂNG NGHIEÄP

NHIEÄM VUÏ ÑEÀ TAØI

Hoï vaø teân sinh vieân : Nguyeãn Taán Thònh


Maõ soá sinh vieân : 00101291
Hoï vaø teân sinh vieân : Tröông Naêng Toaøn
Maõ soá sinh vieân : 00101311
Khoùa : 00 KÑÑ
1. Teân ñeà taøi: KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH
CHO HEÄ THOÁNG BÔM XAÊNG
2. Caùc soá lieäu ban ñaàu: .............................................................................................
....................................................................................................................................
....................................................................................................................................
3. Noäi dung phaàn thuyeát minh:
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
4. Caùc baûn veõ: ...........................................................................................................
....................................................................................................................................
5. Giaùo vieân höôùng daãn : Th.S Nguyeãn Ñình Phuù
6. Ngaøy giao nhieäm vuï : Ngaøy 20 thaùng 12 naêm 2004
7. Ngaøy hoaøn thaønh : Ngaøy 19 thaùng 2 naêm 2005

Giaùo vieân höôùng daãn Thoâng qua boä moân


Ngaøy ......... thaùng ……… naêm ………
Chuû nhieäm boä moân
Nguyeãn Ñình Phuù

NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN


[z\

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 32

.....................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
......................................................
Giaùo vieân höôùng
daãn

NHAÄN XEÙT CUÛA GIAÙO VIEÂN PHAÛN BIEÄN


[z\

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 33

.....................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
............................................................................................................
......................................................
Giaùo vieân phaûn
bieän

LÔØI MÔÛ ÑAÀU

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 34

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.

LÔØI CAÛM TAÏ

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 35

Nhoùm thöïc hieän ñoà aùn caùm ôn thaày


Nguyeãn Ñình Phuù ñaõ taän tình höôùng
daãn vaø taïo moïi ñieàu kieän thuaän lôïi
cho nhoùm hoaøn thaønh toát ñeà taøi.
Nhoùm thöïc hieän ñoà aùn xin chaân
thaønh caùm ôn quí thaày, coâ khoa ñieän
töû cuøng caùc baïn sinh vieân ñaõ ñoùng
goùp yù kieán vaø kinh nghieäm trong quùa
trình thöïc hieän ñeà taøi naøy.
TP.HCM Ngaøy 19 thaùng 02 naêm 2005

Sinh vieân thöïc hieän

Tröông Naêng Toaøn


Nguyeãn Taán Thònh

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 36

MUÏC LUÏC

PHAÀN A : GIÔÙI THIEÄU ......................................................................................i


Nhieäm vuï ñeà taøi..................................................................................ii
Nhaän xeùt cuûa giaùo vieân höôùng daãn .................................................iii
Nhaän xeùt cuûa giaùo vieân phaûn bieän ..................................................iv
Lôøi môû ñaàu..........................................................................................v
Lôøi caûm taï..........................................................................................vi
Muïc luïc .............................................................................................vii
Lieät keâ caùc baûng ...............................................................................ix
Lieät keâ caùc hình .................................................................................x

PHAÀN B : NOÄI DUNG......................................................................................... 1


Chöông 1 : Daãn nhaäp......................................................................... 2
1.1 Ñaët vaán ñeà ................................................................................... 2
1.2 Taàm quan troïng cuûa ñeà taøi ........................................................ 2
1.3 Giôùi haïn cuûa ñeà taøi ..................................................................... 2
1.4 Muïc ñích nghieân cöùu .................................................................. 3
Chöông 2 : Cô sôû lyù luaän ................................................................... 4
2.1 Ñoái töôïng nghieân cöùu ................................................................. 4
2.2 Daøn yù nghieân cöùu ........................................................................ 4
2.3 Phöông phaùp vaø phöông tieän nghieân cöùu ................................. 4
2.3.1 Phöông phaùp nghieân cöùu......................................................... 4
2.3.2 Phöông tieän nghieân cöùu .......................................................... 4
2.4 Laäp keá hoaïch nghieân cöùu........................................................... 4
Chöông 3 : Giôùi thieäu caùc linh kieän duøng trong maïch................... 5
3.1 Giôùi thieäu Vi ñieàu khieån AT89S8252 ........................................ 5
3.1.1 Ñaëc tính kyõ thuaät vaø sô ñoà chaân cuûa AT89S8252 ................. 5
3.1.2 Caáu truùc boä nhôù beân trong AT89S8252................................. 5
3.1.2.1 Boä nhôù chöông trình (Program Memory)......................... 5
3.1.2.2 Boä nhôù döõ lieäu (Data Memory) ........................................... 6
3.1.2.3 Boä nhôù EEPROM.................................................................. 7
3.3 Giôùi thieäu caùc IC soá queùt phím................................................. 9
3.3.1 IC ghi dòch 74HC165................................................................ 9
3.3.2 IC ghi dòch 74HC595.............................................................. 11
3.4 Giôùi thieäu LCD (liquid crystal character display)................. 12
3.5 Giôùi thieäu led 7 ñoaïn ............................................................... 17
3.5.1 Sô ñoà vaø chöùc naêng caùc chaân ................................................ 17

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 37

3.5.2 Caùc thoâng soá kyõ thuaät ........................................................... 17


Chöông 4 : Keát luaän – Ñeà nghò ...................................................... 19
4.1 Keát luaän ..................................................................................... 19
4.2 Ñeà nghò....................................................................................... 19

PHAÀN C : PHUÏ LUÏC VAØ TAØI LIEÄU THAM KHAÛO .................................... 20


Phuï luïc A : Löu ñoà chöông trình.................................................... 21
Phuï luïc B : Chöông trình ASM treân Vi ñieàu khieån AT89S8252 . 27
Phuï luïc C : Sô ñoà maïch ñieän........................................................... 93
Phuï luïc D : Taøi lieäu tham khaûo ...................................................... 94

LIEÄT KEÂ CAÙC BAÛNG

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 38

Baûng 3.1 : Caùc thanh ghi ñaëc bieät ...................................................................... 8


Baûng 3.2 : Thanh ghi ñieàu khieån Watchdog Timer vaø
Boä nhôù.............................................................................. 8
Baûng 3.3 : Baûng traïng thaùi cuûa 74HC165................... 10
Baûng 3.4 : Baûng traïng thaùi cuûa 74HC595................... 12
Baûng 3.5 : BaÛng chöùc naêng caùc chaân LCD................. 13
Baûng 3.6 : Baûng maõ leänh ñeå laäp trình LCD ............... 14
Baûng 3.7 : Baûng maõ ñòa chæ DDRAM.......................... 15
Baûng 3.8 : Baûng maõ ñòa chæ CGRAM .............................................................. 16
Baûng 3.9 : Chöùc naêng caùc chaân Led 7 ñoaïn ............... 17

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 39

LIEÄT KEÂ CAÙC HÌNH

Hình 3.1 : Sô ñoà chaân AT89S8252 . .................................................................... 5


Hình 3.2 : Sô ñoà boä nhôù chöông trình AT89S8252 .................... 6
Hình 3.3 : Sô ñoà boä nhôù döõ lieäu AT89S8252............................... 6
Hình 3.4 : Sô ñoà chaân cuûa 74HC165 .............................. 9
Hình 3.5 : Giaûn ñoà xung cuûa 74HC165........................ 10
Hình 3.6 : Sô ñoà chaân cuûa 74HC595 ............................ 11
Hình 3.7 : Giaûn ñoà xung cuûa 74HC595 ............................................................ 12
Hình 3.8 : Sô ñoà chaân LCD .......................................... 12
Hình 3.9 : Sô ñoà maïch ñieàu khieån ñoä töông phaûn LCD14
Hình 3.10 : Hình aûnh cuûa moät thanh Led 7 ñoaïn ....... 17

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 40

PHAÀN B

NOÄI DUNG

Phaàn B: Noäi dung


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 41

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

1.2. TAÀM QUAN TROÏNG CUÛA ÑEÀ TAØI

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.

1.3. GIÔÙI HAÏN CUÛA ÑEÀ TAØI

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

Chöông 1: Daãn nhaäp


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 42

3. Ñaët maät khaåu thay ñoåi ñôn giaù.


4. Coù theå xem toång soá lít baùn ñöôïc.
5. Coù theå xoaù toång soá lít baùn ñöôïc.

1.4. MUÏC ÑÍCH NGHIEÂN CÖÙU

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 1: Daãn nhaäp


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 43

Chöông 1: Daãn nhaäp


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 44

CHÖÔNG 2

CÔ SÔÛ LYÙ LUAÄN


2.1. ÑOÁI TÖÔÏNG NGHIEÂN CÖÙU

Moâ hình bôm xaêng vaø laäp trình phaàn meàm vi ñieàu khieån.

2.2. DAØN YÙ NGHIEÂN CÖÙU

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

2.3. PHÖÔNG PHAÙP VAØ PHÖÔNG TIEÄN NGHIEÂN CÖÙU


2.3.1. Phöông phaùp nghieân cöùu

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

2.3.2. Phöông tieän nghieân cöùu

− Maùy tính PC, maïng Internet.


− Card naïp vi ñieàu khieån.
− Board maïch vaø caùc linh kieän ñieän töû coù lieân quan ñeán ñeà taøi.

2.4. LAÄP KEÁ HOAÏCH NGHIEÂN CÖÙU

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 2: Cô sôû lyù luaän


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 45

Chöông 2: Cô sôû lyù luaän


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 46

CHÖÔNG 3

GIÔÙI THIEÄU CAÙC LINH KIEÄN


DUØNG TRONG MAÏCH
3.1. GIÔÙI THIEÄU VI ÑIEÀU KHIEÅN AT89S8252
3.1.1. Ñaëc tính kyõ thuaät vaø sô ñoà chaân cuûa AT89S8252

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

3.1.2. Caáu truùc boä nhôù beân trong AT89S8252


3.1.2.1. Boä nhôù chöông trình (Program Memory)

Ñ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 :

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 47

Hình 3.2 : Sô ñoà boä nhôù chöông trình AT89S8252

3.1.2.2. Boä nhôù döõ lieäu (Data Memory)

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.

Hình 3.3 : Sô ñoà boä nhôù döõ lieäu AT89S8252

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 48

3.1.2.3. Boä nhôù EEPROM

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 :

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 49

Baûng 3.1 : Caùc thanh ghi ñaëc bieät

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ôù

PS2 PS1 PS0 EEMWE EEMEN DPS WDTRST WDTEN


7 6 5 4 3 2 1 0

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 50

‰ 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

naøy chæ ñöôïc ghi).


Bit naøy cuõng coù vai troø laø côø chôø hay baän cuûa EEPROM. Bit
RDY/BSY=1 nghóa laø EEPROM ñaõ saün saøng cho vieäc ghi. Neáu quaù
trình ghi ñang ñöôïc thöïc hieän thì bit RDY/BSY=0 vaø ñöôïc reset
moät caùch töï ñoängkhi quaù trình ghi keát thuùc.
‰ WDTEN : bit cho pheùp Watchdog Timer hoaït ñoäng:

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

3.3. GIÔÙI THIEÄU CAÙC IC SOÁ QUEÙT PHÍM


3.3.1. IC ghi dòch 74HC165

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

Moät soá ñaëc ñieåm:

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 .

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 51

Hình 3.4 : Sô ñoà chaân cuûa 74HC165


Moâ taû caùc chaân:

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

 Ngoõ vaøo ñieàu khieån:


Serial Shift/Parellel Load (pin 1): Khi chaân naøy ôû möùc cao thì döõ
lieäu ôû ngoõ vaøo SA ñöôïc dòch vaøo thanh ghi khi coù caïnh leân cuûa xung Clock.
Ngöôïc laïi chaân naøy ôû möùc thaáp thì naïp vaøo döõ lieäu song song ñoàng boä, 8
bit ñöôïc naïp vaøo 8 taàng cuûa Flip Flop.
 Ngoõ ra QH, QH\ (pin 9, 7).
 Ngoõ vaøo Clock, Clock Inhibit (pin 2, 15) : Xung ñoàng hoà taùc ñoäng ôû
söôøn leân cho ghi dòch hoaït ñoäng.

Baûng 3.3 : Baûng traïng thaùi cuûa 74HC165

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 52

Hình 3.5 : Giaûn ñoà xung cuûa 74HC165


3.3.2. IC ghi dòch 74HC595

− Ñ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.

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 53

Hình 3.6 : Sô ñoà chaân cuûa 74HC595

Baûng 3.4 : Baûng traïng thaùi cuûa 74HC595

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 54

Hình 3.7 : Giaûn ñoà xung cuûa 74HC595

3.4. GIÔÙI THIEÄU LCD (liquid crystal character display)

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

Hình 3.8: Sô ñoà chaân LCD


Baûng 3.5 : BaÛng chöùc naêng caùc chaân LCD

Soá Teân Möùc logic Chöùc naêng


1 VSS 0V GND
2 VDD 5V Nguoàn cung caáp +5V
3 VLC …. Ñieän aùp ñieàu chænh contrast
H/L H: tín hieäu data, L: tín hieäu cho
4 RS
leänh
5 R/W H/L H: cheá ñoä ñoïc, L: cheá ñoä ghi
6 EN H/H L Chaân cho pheùp
7…14 DB0…DB7 H/L Data bus line
15 VA 4,4V Anode: cöïc döông ñeøn neàn
16 VC 0V Cathode: cöïc aâm ñeøn neàn

- Ngoõ vaøo choïn thanh ghi RS


Khi RS = 0: thanh ghi ñang choïn laø thanh ghi leänh IR.
Khi RS = 1: thanh ghi ñang choïn laø thanh ghi döõ lieäu DR.
- Ngoõ vaøo R/W

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 55

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

- Moät soá ñaëc tính:

+ Hieån thò: 16 x 2 haøng.


+ Boä ñieàu khieån: KS0066U hoaëc töông ñöông.
+ Hoå trôï ñeøn neàn, ñeøn chöõ.
+ Hoå trôï baûng leänh ñeå laäp trình.
+ Thôøi gian ñaùp öùng nhanh.
+ Sô ñoà maïch caáp nguoàn 5V ñieàu khieån contrast ( ñoä töông phaûn
):Vôùi maïch naøy khi thay ñoåi bieán trôû, töùc thay ñoåi aùp V0 ta coù chænh ñöôïc
möùc ñoä töông phaûn cuûa chöõ xuaát treân LCD.

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.

Baûng 3.6: Baûng maõ leänh ñeå laäp trình LCD

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 56

Address 0 0 0 AC AC AC AC AC AC AC Set laïi 39


DDRA 6 5 4 3 2 1 0 DDRAM μs
M
Ñoïc ñòa 0 1 BF AC AC AC AC AC AC AC BF=1 leänh 1 μs
chæ vaø 6 5 4 3 2 1 0 ñang thöïc
côø Busy hieän trong
LCD ñoïc
noäi dung
boä ñeám
ñòa chæ.
Ghi data 1 0 D7 D6 D5 D4 D3 D2 D1 D0 Ghi döõ 43
vaøo lieäu vaøo μs
RAM CGRAM
hay
DDRAM.
Ñoïc D7 D6 D5 D4 D3 D2 D1 D0 Ñoïc döõ 43
data töø lieäu töø μs
RAMM CGRAM
hay
DDRAM.

“..” Khoâng quan taâm, noù coù theå laø “ 1” hay “0”

Baûng 3.7 : Baûng maõ ñòa chæ DDRAM

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

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 57

- Ñòa chæ CGRAM:

Baûng 3.8: Baûng maõ ñòa chæ CGRAM

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 58

3.5. GIÔÙI THIEÄU LED 7 ÑOAÏN


3.5.1. Sô ñoà vaø chöùc naêng caùc chaân

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

Hình 3.10 : Hình aûnh cuûa moät thanh Led 7 ñoaïn


F1,F2 : Filament
G1..G6 : Grid

Baûng 3.9: Chöùc naêng caùc chaân Led 7 ñoaïn

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12


I I dot com
c g f b a e d 1/2
treân döôùi

3.5.2. Caùc thoâng soá kyõ thuaät

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 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 59

Doøng ñieän : 7,5 ñeán 15 mA


¾ Ñieän aùp taét moãi thanh : 5Vdc
¾ Ñieän aùp cho saùng moãi thanh : 0 Vdc
¾ Nhieät ñoä laøm vieäc : -20 ñeán 70 ñoä C
¾ Nhieät ñoä laøm vieäc tôùi haïn : -55 ñeán 80 ñoä C

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 60

Chöông 3: Giôùi thieäu caùc linh kieän duøng trong maïch


KHAÛO SAÙT VAØ VIEÁT CHÖÔNG TRÌNH CHO HEÄ THOÁNG BÔM XAÊNG Trang 61

CHÖÔNG 4

KEÁT LUAÄN - ÑEÀ NGHÒ

4.1. KEÁT LUAÄN

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.

4.2. ÑEÀ NGHÒ

Ñ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

You might also like