Professional Documents
Culture Documents
QUA NG DY IN THOAI
2008
TAI VI X LI
MC LC
MC ICH CUA TAI ........................................................................................ 3
II. LINH KIN CN THIT ......................................................................................... 3
I.
1. 8870 ............................................................................................................................ 3
2. 24c04 .......................................................................................................................... 6
3. 4n35 ............................................................................................................................ 7
4. Um66 .......................................................................................................................... 8
5. ULN2003: .................................................................................................................. 8
6. ng c bc: ........................................................................................................... 9
III. THC HIN PHN CNG ................................................................................... 10
1. S khi: ............................................................................................................... 10
2. Mch nhn tn hiu chung: ................................................................................... 11
3. Mch ong tai gia: .................................................................................................. 12
4. Mch nhn va giai ma tn hiu DTMF: ................................................................. 13
5. Mch truy xut b nh cha mt ma: .................................................................... 14
6. Mch to tn hiu phan hi:.................................................................................... 14
7. Mch iu khin ng c bc: ............................................................................. 15
8. Vi x li trung tm: ................................................................................................... 15
9. S mch: ............................................................................................................. 16
IV. Lp tri nh: ................................................................................................................... 18
1. Phn chi nh cua chng tri nh ................................................................................. 18
2. Phn nhn mt ma : ................................................................................................. 19
3. Phn kim tra mt ma : ............................................................................................ 20
4. Phn thay mt ma : .................................................................................................. 21
5. Phn iu khin ng c bc: .............................................................................. 22
6. Phn truy xut b nh: ........................................................................................... 22
a) Phn ghi b nh: ................................................................................................... 26
b) Phn oc b nh ................................................................................................... 27
7. oan code chi nh cua chng trinh (vit bng C) ................................................ 28
I.
Dung 8870, ta co th bit c ngi dung a bm s nao trn ban phi m in thoai , t
o a ra ti n hiu iu khin phu hp.
8870 cha 2 b loc thng dai , dung tach cp tone DTMF nhn c thanh 1 tone
thuc nhom tone cao va 1 tone thuc nhom tone thp. B giai ma s nm trong 8870
se xac nhn cp tone DTMF nhn c , nu cp tone nay tn tai trong 1 khoang thi
gian u dai i nh trc thi 4 bit ma tng ng cua no se c chuyn n cac ngo ra
Q1Q4, ng thi 1 ngt chn StD c sinh.
FLOW FHIGH
97
697
697
770
770
770
852
852
852
941
941
941
697
770
852
941
1209
1336
1477
1209
1336
1477
1209
1336
1477
1336
1209
1477
1633
1633
1633
1633
Key (ref.)
Q4
Q3
Q2
Q1
1
2
3
4
5
6
7
8
9
0
S
#
A
B
C
D
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
Hinh 2 - Ma DTMF
Mach lai
Trc khi a ra ngoai 4 bit ma tng ng vi cp tone nhn c , b nhn kim tra
khoang thi gian tn tai cua tin hiu . Vic kim tra da vao thi hng RC g n ngoai
qua ngo Est.
Est ln cao khi co 1 cp tone DTMF c nhn din . ESt con ln cao chng nao cp
tone nay con tn tai . ESt ln cao lam Vc tng ln . Sau khoang thi gian t GTP, Vc vt
mc ngng V TSt (khoang 2,22,5V), 4bit ma tng ng se c chuyn n cht
ngo ra. Luc nay chn GT kich hoat l am Vc tip tuc tng n V DD. Cui cung, sau khi
dng 1 thi gian ngn cht ngo ra n i nh, c ngo ra mach lai (steering output flag,
StD) ln cao, bao hiu rng cp tone nhn c a c chp nhn va 4 bit ma tng
ng a c chuyn n ngo ra.
Mach lai hoat ng ch trai ngc xac minh nhng oan ngt quang gia cac
tin hiu . Nh vy , b nhn se bo qua nhng s ngt quang tin hiu qua ngn
cung
nh nhng tin hiu qua ngn.
Kha nng nay cung vi tinh nng cho php chon thi hng bn ngoai cho php ngi
thit k co th iu chi nh h thng 1 cach phong phu phu hp muc ich h thng
Cu hi nh ngo vao: co 2 loai cu hinh ngo vao
+ Cu hi nh gm 1 ngo vao, ta se s dung cu hinh nay
+ Cu hi nh gm cp ngo vao sai bit
Ngo vao 8870 bao gm 1 opamp co ngo vao sai bit va 1 ngun phn cc Vref
phn cc ngo vao cua b khuch ai VDD/2. R hi tip ngo ra cua opamp ( GS)
dung iu chinh li cua tin hiu vao.
Thach anh 3.58MHz dung tao dao ng cho 8870.
2. 24c04
24C04 la b nh ni giao tip theo chun I 2C. Kt ni cua loai b nh nay rt
gian, lai nho gon. Tuy nhin, phn giao tip cua no vi vi x li lai phc tap.
24C04 giao tip vi vi x li bng 2 ngo SDA va SCL. SCL tao xung nhi p con SDA la
ng d liu.
Chc nng cua 24c04:
+ Truyn d liu qua bus 2 dy
+ Giao tip vi P, trong o P la thit bi chu, 24C04 la thit bi nhn. P se
quyt inh ch lam vic.
Cac c tinh ki thut cua 24C04:
-
+ SDA thay i khi SCL cao dung bao hiu iu kin bt u (START) va
kt thuc (STOP)
- SCL: xung clock dung ng b hoa vic truyn d liu
ngo vao SCL va SDA a co mach loc trit tiu nhiu
3. 4n35
4. Um66
Output
Input
Khi u vao Input mc cao , cp darlington dn cho phep dong t chn output
xung mass . in ap cng COM co
tac dung gii han ap ngo Output
,
VOutput>VCOM+VD thi toan b dong ra ngoai qua cng COM.
Ngc lai , khi Input mc thp , cp trasistor khoa lai , khng cho dong vao t
Output.
Xt trn phng din logic thi co th xem Output la cng ao cua Input . Tuy nhin ,
mc cao cua output khng nht thit la 5V ma co th la 12V hay bao nhiu tuy ngun
ngoai mc vao output.
Ta se dung ULN2003 lam b m iu khin cho ng c.
6. ng c bc:
Hinh 11 - Cu tao ng c bc
10
C2
2
1
Notes:
C2=0.47u/250V
C1=10uF/50V
R6'=1.8K
R7=1.2K
4N35
C3=10uF/50V
DZ=12V
R7
D5
T/R
~
2
1
CB
+
DZ
R6'
1
U12
C3
~
C1
2
4
4N35
C2 co tac dung ngn dong DC, ng thi giam bin tin hiu chung vao mach cam
bin.
Diode cu dung chinh lu tin hiu vao, tng gp i tn s.
C3, C1: loc tin hiu n inh, it nhp nh. Tn s tin hiu qua diode cu c tng
gp i nn loc d dang hn
Dz: loc nhiu , tin hiu < 12V khng th i qua.
11
Opto 4N35: khi co chung, photodiode bc xa lam phototransistor dn, ngo ra cua
mach cam bin mc 0. Ngoai ra, opto con dung tach tng cam bin chung va
tng x li tin hiu.
Tom lai: ngo ra cua mach cam bin chung mc
+ 0 khi co tin hiu chung
+ 1 khi khng co tin hiu chung
3. Mch ong tai gia:
3
VCC3
1
2
R8
2
1
1N4007
LED1
RELAY SPST
D6
14
TG
R11
1
C9
+
Q1
DTMFIN / LINE
1
2
RL1
4
Notes:
R8=330
R9=8.2K
R10=220
DZ1=,DZ2=4.7V
R11=2.7K
Q1,Q2=2N2383
C8,C9=10UF/50V
LED1
RELAY1
BIEN THE
1:1
R9
7404
DZ1
Q2
T/R1
R10
2
1
DZ2
C8
12
C4 R1
1
2
3
4
R2
DTMF IN
0.1uF100K
100K
VCC
U8
18
VCCD
IN+
TOE
INGS
VREFST/GT
EST
C2
7
Y2
8
IC
IC
Q0
Q1
Q2
Q3
C5
17
0.1uF
6.8K
16
R3
15
IRQ
11
12
13
14
Q0
Q1
Q2
Q3
5
3.579MHZ 6
OSC2
GND
C6
OSC1 STD
10
MT 8870
Nu phat hin cp tone DTMF thi 8870 sinh ra 1 ngt chn STD, ng thi 4bit ma
tng ng vi ti n hiu DTMF nhn c a n cac chn Q 0,Q1,Q2,Q3. Cac chn
nay c a n vi x li.
13
U18
1
2
3
4
A0
VCC
A1
WP
A2
SCL
GND
SDA
VCCV
7
6
SCL
SDA
AT2404
Hinh 17 - Kt ni b nh
um66
2k
NHAC
33n
5k
Hinh 18 - Tao tin hiu phan hi
14
1
2
3
4
5
6
7
8
CHUONG
Q3
Q2
Q1
Q0
C10
C11
Y1
19
18
VCCV
C12
R12
100
31
9
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
XTAL1
XTAL2
ALE/PROG
PSEN
EA/VPP
RST
GND
TAI
nhac1
nhac2
nhac3
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
R11'
20
4 39
3 38
2 37
1 36
35
34
33
32
VCC
40
VCCV
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
A1
A2
A3
A4
A5
A6
A7
A8
SCL
SDA
IRQ1
30
29
AT89C51
SW2
8.2K
Hinh 20 - Vi x li trung tm
15
Chn P0.5 P0.7 :phat ting nhac, phat tin hiu phan hi
Chn P1.0
:cam bin chung (xung 0 khi co chung)
Chn P1.1 P1.4 :ma tng ng vi tin hiu DTMF nhn c
(MSB:P1.1;LSB:P1.4)
Chn P3.0
:ni vi SCL cua 24C04
Chn P3.1
:ni vi SDA cua 24C04
Chn P3.2
:nhn ngt t 8870
9. S mch:
D7
VCCT
VCCD
VCCV
D8
2
1
VIN
VOUT
R19
SW6
3
C14
LED
LED
LED
LED
R18
1000U
GND
J33
CON2
R16
R15
78XX/SM
SW DIP-4
N
T
D
V
J11
1
2
1
2
3 DC
LS3
SW4
5
J1
1
2
4
1
2
SW KEY -SPDT
RELAY SPDT
R23
1N1
nhac2
nhac1
um66
R28
um66
330
Q3
SC2383
LED
R24
NHAC
NHAC
R22
4.7K
C13 33n4
R29
2
1
C13 33n
2
1
R25
J10
nhac3
um66
R26
J12
NHAC
C13 33n3
R27
16
C10
C11
VCCV
RT
4k
RT2
Y1
SW2
R12
100
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
VCCV
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
ALE/PROG
PSEN
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
XTAL1
XTAL2
4k
RT3
RT1
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
30
29
AT89C51
EA/VPP
RST
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
A1
A2
A3
A4
A5
A6
A7
A8
SCL
SDA
IRQ1
P3.3
P3.4
P6
P7
P8
1
2
3
4
5
1
2
J31
ALE/PSEN
S1
S2
S3
S4
S5
S6
S7
S8
A8
A7
A6
A5
A4
A3
A2
A1
S8
S7
S6
S5
S4
S3
S2
S1
D1
D2
D3
D4
D5
D6
D7
D8
A8
A7
A6
A5
A4
A3
A2
A1
2
3
4
5
6
7
8
9
p2
A0
A1
A2
A3
A4
A5
A6
A7
B0
B1
B2
B3
B4
B5
B6
B7
B0
B1
B2
B3
B4
B5
B6
B7
DIR
OE
A0
A1
A2
A3
A4
A5
A6
A7
p1
DIR
OE
2
3
4
5
6
7
8
9
1
19
DIR
OE
A0
A1
A2
A3
A4
A5
A6
A7
p0
VCCV
1
19
2
3
4
5
6
7
8
9
1
19
VCCV
18
17
16
15
14
13
12
11
18
17
16
15
14
13
12
11
4
3
2
1
1
2
3
4
5
6
7
8
J27
TAI
DCB
3
2
1
nhac1
nhac2
nhac3
Q0
Q1
Q2
Q3
CHUONG
J28
TANG DEM
B0
B1
B2
B3
B4
B5
B6
B7
VCCV
18
17
16
15
14
13
12
11
TAI
IRQ
TELE
VCCT
2
1
14
R8
LED1
7404
R11
2
8
6
7
SCL
WP
1N4007
4N35
IRQ1
T
R
U12
R7
A1
VCC
U18
A2
SDA
A0
GND
AT2404
Q1 T
2
1
VCCT
SCL
SDA
BO NHO NGOAI
CHUONG
20
VCC
GND
10
D1
D2
D3
D4
D5
D6
D7
D8
S1
S2
S3
S4
S5
S6
S7
S8
19
18
31
9
VCCV
C12
D1
D2
D3
D4
D5
D6
D7
D8
VCCV
8.2K
SCL
SDA
IRQ1
P3.3
P3.4
P6
P7
P8
4k
20
VCC
GND
10
VI XU LI
VCCV
VCCV
4k
VI XU LI:
89C51
CRYSTAL 12MHz
C10,C11=33PF
C12=0.1uF
R11'=8.2K
RT1-4=4.7k
R12=100
C1
C15
CAP
C3
R6'
VCCV
DZ
D6
2
1
8
5
RELAY DPDT
LS5
C4
R9
C8
R1
100K
0.1uF
NHAC
1:1
C9 BIEN THE
Q2
R10
R2
100K
C2
Y2
5
6
1
2
3
4
U8
DZ2
4.7V
IN+
TOE
INGS
VREFST/GT
EST
Q0
Q1
Q2
Q3
OSC1 STD
OSC2
IC
IC
10
17
16
15
11
12
13
14
MT 8870
6.8K
DZ1
4.7V
Q0
Q1
Q2
Q3
IRQ
R3
DTMF IN
0.1uF
C5
VCCD
DTMF IN
3.579MHZ
C6
GIAI MA DTMF:
R1, R2 = 100 k 1%
R3 = 6.8 k 1%
C4= 100 nF 5%
C5= 100 nF 10%*
C6 =C2 33pF 10%
X-tal = 3.579545 MHz
GIAI MA DTMF
18
VCC
GND
20
VCC
GND
10
40
VCC
GND
20
17
Sai
CO CHUNG?
ung
Sai
U 5 HI
CHUNG?
ung
NHC TAI GIA
NHP MT MA
UNG MT
MA?
ung
Sai
PHIM * HAY #
Phim khac
Phim *
Phim #
CHAY NG C
THAY MT MA
END
18
BEGIN
Sai
PHIM *?
ung
DAI MT MA sl=0
ung
PHIM #?
Sai
PHIM *?
ung
Sai
NHN MT MA
TH sl VAO
Pass[sl], sl++
NHP LAI MT MA
sl=0
TRA V CHUI
MT MA
END
19
OC DAI MT MA
T B NH VAO npas
Sai
Npas=sl?
ung
i=1
Sai
Inpas
ung
OC PHN MT MA
TH i T B NH VAO
tam
tam=Pass[i]?
MT MA UNG
Sai
ung
TNG i
MT MA SAI
END
20
BEGIN
DAI MT MA sl=0
ung
PHIM #?
Sai
PHIM *?
ung
Sai
NHN MT MA
TH sl VAO
Pass[sl], sl++
NHP LAI MT MA
sl=0
LU MT MA MI
VAO B NH
END
21
Hinh 23 - kt ni vi ng c
c hoat ng trong ch nao thi ta cp cac bit tng ng vi cac chn D0, D1, D2, D3
nh bang sau:
=D0
=D1
=D2
=D3
BUS ranh
+ SDA va SCL u ln cao
+ Trang thai nay phai c duy tri it nh t 4.7s gia mi ln oc, ghi d liu
Bt u truyn d liu
+ SDA t 1 0 khi SCL==1 : START
22
Nhn d liu
+ Sau START, SDA c inh khi SCL=1 nhn d liu
+ D liu chi c thay i khi SCL=0
+ Trong mi chu ki xung, chi co ti a 1 bit c truyn
23
+ 24C04 giam sat BUS lin tuc xac nhn ia chi tng ng cua no
+ 24C04 phat sinh bit acknowledge nu ung ia chi va no khng trong ch bn
(ang trong qua trinh ghi ni chng han)
GHI BYTE:
+ Sau loat tin hiu S1010xxxYZ (Z do 24C04 gy ra) la byte ia chi cua d liu cn
ghi
+ Byte ia chi nay c ghi vao con tro ia chi cua 24C04
+ 24C04 xac nhn byte ia chi.
+ P chuyn byte d liu cho ia chi a xac i nh trong 24C04
+ 24C04 xac nhn ln na
+ P tao tin hiu STOP
+ i 5ms cho qua trinh ghi (tin hanh trong 24C04)
- Ch
+ B m ia chi ni se khng tng ln ma gi ia chi cu sau khi ghi xong
+ Nu co tin hiu STOP khi cha kt thuc day lnh ghi thi qua trinh ghi se c huy
+ Nu nhiu hn 8 bit d liu c gi trc lnh STOP thi 24C04 xoa cac byte a
load trc o va load lai buffer
+ Nu co nhiu byte c chuyn trong 1 lnh thi chi co byte cui c lu.
+ Nu co nhiu byte c chuyn trong 1 lnh thi trong qua trinh truyn , nu byte
cui cha u 8 bit thi qua trinh ghi se bi huy
+ 24C04 dung mach xac inh ngng Vcc tt ch ghi/xoa logic nu Vcc<1.5V
(24AA00 va 24C04) hay <3.8V i vi 24C00
XC NHN (acknowledge polling)
+ 24C04 khng xac nhn chng nao cha ghi xong nhn bit khi nao chu ki ghi kt
thuc
+ Khi P ra lnh STOP cui day lnh ghi d liu, 24C04 bt u chu ki ghi ni.
+ Khi gi day lnh ghi S1010xxxYZ, nu 24C04 ang bn thi khng co tin hiu xac
nhn, phai gi lai day lnh ghi
24
C
+ Thit lp nh qua trinh ghi nhng Y==1
+ Co 3 kiu oc d liu c ban
- oc tai ia chi hin tai
- oc ngu nhin
- oc theo th t
(Ghi chi co 1 kiu: ghi tai ia chi xac inh)
oc tai ia chi hin tai
+ B m d liu tro n ia chi byte sau cung c truy xut
+ T ng tng ln 1 sau mi ln oc
+ Sau day lnh oc, 24C04 tao tin hiu ACK va truyn 8 bit d liu
+ P khng xac nhn vic truyn d liu ma sinh tin hi u STOP va 24C04 ngng gi
d liu
oc ngu nhin
+ Phai co 1 ia chi d liu thit lp trc
+ Thit lp bng ia chi trong lnh ghi
+ Sau khi ia chi d liu c gi thi P gi tip START lam qua trinh ghi kt thuc
nhng con tro ia chi vn nm vi tri c thit lp trong day lnh ghi trc o.
Day lnh gi i co dang S1010xxxYZxxxxxxxxZS (Y=0: ghi, Z: do 24C04)
+ Gi tip day lnh iu khin vi Y=1 S1010xxxY
+ 24C04 gi ACK va day 8 bit d liu
+ P phat sinh tin hiu STOP
+ B m ia chi se tro n ia chi tip theo sau ia chi va oc
oc theo th t
+ Thit lp ban u ging nh oc ngu nhin
+ Sau khi oc byte u tin, khng phat sinh STOP ma tao ACK
25
BEGIN
START
Sai
ung
ACK?
Sai
ung
ACK?
GI BYTE D LIU
CN GHI
Sai
ung
ACK?
STOP
END
26
b. Phn oc b nh
BEGIN
START
Sai
ACK?
ung
ACK?
Sai
ung
START
GI BYTE I A CHI
OC CUA 24C04: 0xa1
ACK?
Sai
ung
OC BYTE D
LIU T 24C04
STOP
END
27
#include <reg51.h>
#include <intrins.h>
#define NGAT0 0
#define NGAT1 3
//timer1
#define max 40
typedef unsigned char ii;
sbit kochuong=P1^0;
sbit taigia=P0^4;
sbit SDA=P3^1;
sbit SCL=P3^0;
sbit kongat=P3^2;
sbit
sbit
sbit
sbit
B3=P1^1;
B2=P1^2;
B1=P1^3;
B0=P1^4;
sbit nhac1=P0^5;
sbit nhac2=P0^6;
sbit nhac3=P0^7;
ii pass[max];
ii npas,sl;
bit started,xong;
ii buoc;
ii nwait;
void delay(int t)
{
int j;
for (j=0;j<1000*t;j++)
_nop_();
}
void delay_i2c()
{
while(0);
while(0);
}
void start_i2c()
{
SDA=1;
SCL=1;
delay_i2c();
SDA=0;
delay_i2c();
SCL=0;
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
delay_i2c();
}
void stop_i2c()
{
SDA=0;
SCL=0;
delay_i2c();
SCL=1;
delay_i2c();
SDA=1;
delay_i2c();
}
ii rx_i2c(ii ACK)
{
ii d=0,x;
SDA=1;// tha noi cong
// qua trinh doc du lieu tu
ngoai vao
for (x=0;x<8;x++)
{
d<<=1;
SCL=1;
while(SCL==0);
// khi da co canh len thi doc
du lieu tu ngoai vao
delay_i2c();
if (SDA) d|=1;
SCL=0;
}
//
// tao xung ACK luu y la co
xet xem la co can tao xung ACK
khong
if (ACK) SDA=0;
else SDA=1;
SCL=1;
delay_i2c();
SCL=0;
SDA=1;//release the SDA line
return d;
}
bit tx_i2c(ii trans)
{
ii x;
bit ACK;
SCL=0;
for (x=0;x<8;x++)
{
if(trans&0x80) SDA=1;
else SDA=0;
trans<<=1;
28
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
SCL=1;
delay_i2c();
SCL=0;
delay_i2c();
}
//giai phong duong truyen de
doi tin hieu ack
SDA=1;
SCL=1;
//
delay_i2c();
while(SCL==0);
ACK=SDA;
SCL=0;//pull down all line
return ACK;
}
void write(ii dc,ii dl)
{
bit ok=0;
while (!ok)
{
start_i2c();
if (tx_i2c(0xA0)) {continue;}
if (tx_i2c(dc)) {continue;}
if (tx_i2c(dl)) {continue;}
stop_i2c();
delay(3);//chu ki ghi du lieu
ok=1;
}
}
ii read(ii dc)
{
ii d;
while (1)
{
start_i2c();
//tao dia chi de doc
if (tx_i2c(0xA0)) {continue;}
if (tx_i2c(dc)) {continue;}
start_i2c();
if(tx_i2c(0xA1))
{continue;}//read
d=rx_i2c(0);//doc 1 byte voi
xung N_ACK
stop_i2c();
return d;
}
}
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
void cho(int t)
ts
{
int i;
for (i=0;i<t*20;i++)
//cho 50ms
{
TMOD &= 0xf0;
TMOD |= 0x01;
ET0 = 0;
TH0 = 0x6f;
TL0 = 0xff;
TF0 = 0;
TR0 = 1;
while (!TF0);
TR0 = 0;
}
}
//cho
void nhanchuong()
{
ii dem=0;
long t;
P2=0x0f;
while (kochuong) P2=~P2;
while (dem<5)
{
dem++;
P2=dem;
cho(1);
//tranh nhieu
while (!kochuong);
//2s co chuong
t=0;
cho(2);
//tranh nhieu
while ((kochuong)&&(t<50000))
t++;
if (t>=50000) //qua 4s ma
khong co chuong do lai
{dem=0;
P2=0x0f;
while (kochuong) P2=~P2;//doi
den khi co chuong lai
}
}
}
bit ok()
{
29
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
ii i;
npas=read(0);
if (npas!=sl) return 0;
for (i=1;i<=npas;i++)
{
if
(pass[i]!=read(i))
return 0;
}
return 1;
}
void delaydc()
{
ii i;
for (i=0;i<300;i++);
}
void mocua()
{
ii i;
for (i=0;i<240;i++)
{
P0&=0xf0;
P0+=1;
delaydc();
P0&=0xf0;
P0+=2;
delaydc();
P0&=0xf0;
P0+=4;
delaydc();
P0&=0xf0;
P0+=8;
delaydc();
}
}
void err()
{
EX0=0;
nhac2=1;
cho(5);
nhac2=0;
EX0=1;
}
void startPass()
{
EX0=0;
nhac1=1;
cho(5);
nhac1=0;
EX0=1;
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
}
void accept()
{
EX0=0;
nhac3=1;
cho(5);
nhac3=0;
EX0=1;
}
void changePass()
{
ii i;
switch (P2)
{
case 11: {sl=0;
startPass();
break;}
case 12: { EX0=0;
write(0,sl);
for (i=1;i<=sl;i++)
write(i,pass[i]);
accept();
xong=1;
break;}
default: { sl++;
pass[sl]=P2;
}
}
void run()
{
switch (P2)
{
case 12: {EX0=0;
accept();
mocua();
xong=1;
break;}
//mo cua
case 11: {buoc=1; sl=0;
startPass();
break;}
//thay mat
khau
}
}
void checkPass()
{
switch (P2)
{
case 11: {sl=0;
startPass();
break;}
30
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
cho(1);
}
}
void timer1_init()
{
TMOD &= 0x0f;
TMOD |= 0x10;
TH1 = 0;
TL1 = 0;
TR1 = 1;
}
void wait() interrupt NGAT1
//cho 65535 us
{
nwait++;
if (nwait>200)
xong=1;
}
main()
{
//NHAP MAT KHAU BAN DAU VAO BO
NHO
//inPass();
//confirm();
while(1)
{
xong=0;
buoc=0;
nwait=0;
TR1=0;
EA=EX0=ET1=0;
P0=P1=P2=P3=0xff;
nhac1=nhac2=nhac3=0;
nhanchuong();
taigia=0;
EA=EX0=ET1=1;
timer1_init();
startPass();
while (!xong) P2=nwait;
}}
void confirm()
{
ii i;
for (i=0;i<9;i++)
{
P2=read(i);
31