P. 1
111123 - Giao Trinh Thuc Tap Vi Dieu Khien

111123 - Giao Trinh Thuc Tap Vi Dieu Khien

|Views: 762|Likes:
Được xuất bản bởiokihiroi

More info:

Published by: okihiroi on Feb 16, 2012
Bản quyền:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/04/2013

pdf

text

original

TR!

NG $%I H'C L%C H)NG
KHOA $I*N – $I*N T,






TÀI LIU MÔN H"C
THÍ NGHIM VI $I%U KHI&N


BIÊN SO%N: $. BÌNH NGUYÊN







BIÊN HÒA, THÁNG 11/2011
M'C L'C

PH)N I : GI+I THIU PH)N M%M KEIL C ................................................. 1
1.1. Màn hình làm vi/c c2a Keil C............................................................... 1
1.2. Các b45c t8o d: án m5i ........................................................................ 2
1.3. Debug ch46ng trình............................................................................... 5
PH)N II : GI+I THIU THI.T B/ ................................................................. 12
2.1. S6 ;< nguyên lý kit thí nghi/m ........................................................... 12
2.2. Các kh>i ch?c n@ng trên kit thí nghi/m .............................................. 13
2.2.1. Kh>i ngu<n .......................................................................................... 13
2.2.2. Kh>i n8p ch46ng trình ........................................................................ 13
2.2.3. Kh>i MCU ........................................................................................... 14
2.2.4. Kh>i led ;6n ........................................................................................ 15
2.2.5. Kh>i led 7 ;o8n ................................................................................... 15
2.2.6. Kh>i hiBn thC LCD ............................................................................... 17
2.2.7. Kh>i nút nhEn ...................................................................................... 17
2.2.8. Kh>i Stand_by LED/Interrupt input.................................................... 18
2.2.9. Kh>i thu h<ng ngo8i ............................................................................ 18
2.2.10. Kh>i Buzzer......................................................................................... 18
2.2.11. Kh>i Opto Triac .................................................................................. 19
2.2.12. Kh>i giao tiFp UART ......................................................................... 19
PH)N III : TH1C HÀNH ................................................................................. 20
3.1. $iGu khiBn kh>i LED ;6n ................................................................... 20
3.2. $iGu khiBn kh>i Buzzer ....................................................................... 22
3.3. Giao tiFp v5i nút nhEn ;6n .................................................................. 23
3.4. $iGu khiBn kh>i hiBn thC LED 7 ;o8n ................................................. 25
3.5. $iGu khiBn kh>i hiBn thC LCD ............................................................. 28
3.6. Truy xuEt IC real time DS12887 ......................................................... 30
PH)N IV : BÀI T3P M4 R6NG ..................................................................... 34

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 1
PHHN I
GI+I THIU PH)N M%M KEIL C

Hi/n nay có khá nhiGu trình biên dCch ngôn ngI C cho 8051 nh4 Mikro C, IAR,
SDCC, Reads 51 …
µVision là môi tr4Kng phát triBn tích hLp (IDE: Integrated Development
Environment) (trình so8n thMo ngôn ngI C, trình biên dCch và debug) c2a công ty Keil
Software, và th4Kng ;4Lc gNi là Keil C.
Keil C là môi tr4Kng phát triBn khá m8nh và ;4Lc sO dPng rQng rãi hi/n nay.
Nó hR trL ta viFt ch46ng trình cho các chip vi ;iGu khiBn lõi 8051 và ARM c2a tEt cM
các hãng trên thF gi5i
1.1. Màn hình làm vi9c c<a Keil C
Màn hình làm vi/c c2a Keil C bao g<m các thanh công cP T phía trên cùng và 3
vùng chính nh4 trong hình 1.1

Hình 1.1 Màn hình làm vi/c c2a Keil C
Vùng 1: Là vC trí c2a các cOa sU Project, cho phép ta quMn lý các tVp tin trong
d: án, và cOa sU Function, cho phép ta quMn lý các ch46ng trình con.
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 2
Vùng 2: Vùng so8n thMo. $ây là n6i ta sW so8n thMo ch46ng trình.
Vùng 3: COa sU Build Output. HiBn thC các thông tin trong quá trình biên dCch
ch46ng trình
1.2. Các b>?c tAo mCt dE án m?i
B45c 1: $B thuVn ti/n trong vi/c quMn lý các d: án, ta nên t8o tXng th4 mPc
riêng cho mRi d: án, v5i tên th4 mPc là tên d: án kèm theo ngày lVp d: án ;ó. Kèm
theo ;ó, ta nên thêm mQt file text, có nQi dung ghi l8i nhIng thay ;Ui c2a d: án, vào
th4 mPc c2a d: án ;ó.
B45c 2: Vào menu Project\New uVision Project ;B t8o project m5i. NhVp
;4Kng dYn và tên project vào hQp tho8i. NhEn OK.
B45c 3: ChNn lo8i vi ;iGu khiBn cZn sO dPng trong hQp tho8i Select device …
(Hình 1.2). NhEn OK. Sau ;ó, chNn Yes trong hQp tho8i “Copy Standard 8051 …”
xuEt hi/n tiFp theo.
B45c 4: T8o mQt file m5i : File\New và l4u l8i v5i ;Cnh d8ng *.c ho[c *.h.
B45c 5: Add file vXa t8o vào project:
• Right click vào mPc Source Group 1 và chNn Add file to Group
‘Source Group 1’ … (hình 1.3)
• ChNn file vXa t8o. NhEn Add r<i nhEn Close. Lúc này, trong cOa sU
Project, T phía trái màn hình, sW xuEt hi/n thêm tVp tin mà ta vXa add.
B45c 6: ThiFt lVp cho Keil C xuEt ra file .hex, ta mT hQp tho8i Option for
Group 1 (Hình 1.4). Click chNn vào checkbox Create HEX file trong tab Output
(Hình 1.5). NhEn OK
$Fn ;ây, ta ;ã hoàn tEt các b45c thiFt lVp cho mQt d: án m5i. Các b45c trên ch\
cZn th:c hi/n mQt lZn khi t8o d: án m5i.

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 3

Hình 1.2 HQp tho8i Select Device

Hình 1.3 Menu Add Files to Group
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 4

(a) MT menu Project (b) BEm chuQt phMi vào Target 1

(c) BEm nút Target Options trên thanh công cP
Hình 1.4 Các cách mT hQp tho8i Options for Target

Hình 1.5 HQp tho8i Options for Target
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 5
1.3. Debug ch>@ng trình
Sau khi so8n thMo ch46ng trình xong, ta biên dCch ch46ng trình b^ng cách vào
menu Project\Build target ho[c nhEn nút Build trên thanh công cP (hình 1.6) ho[c ta
c_ng có thB nhEn phím F7

Hình 1.6 Thanh công cP Build
Sau khi ch46ng trình tiFn hành biên dCch ch46ng trình, nFu không có lRi xMy ra,
ta sW nhVn ;4Lc thông báo 0 Error(s), 0 Warning(s) trong cOa sU Buid Output sau khi
quá trình biên dCch hoàn tEt (hình 1.7)

Hình 1.7 Thông báo quá trình biên dCch ;ã hoàn tEt
Trong quá trình phát triBn mQt ch46ng trình, sW có hai lo8i lRi có thB xMy ra:
• LRi cú pháp (Syntax error): LRi này là các sai sót trong cEu trúc câu l/nh
nh4 thiFu tham s>, sai tX khóa … Các lRi này sW ;4Lc trình biên dCch t:
;Qng phát hi/n trong quá trình biên dCch.
• LRi luVn lý (LRi Logic): LRi này là các sai sót trong giMi thuVt ch46ng
trình, làm cho ch46ng trình ch8y không ;úng ý ;< ban ;Zu c2a lVp trình
viên. LRi này ch\ có thB do chính lVp trình viên phát hi/n và sOa chIa.
Các IDE không thB tr:c tiFp phát hi/n các lRi logic, nó ch\ cung cEp cho
ng4Ki dùng các công cP hR trL cho quá trình phát hi/n và sOa chIa lo8i
lRi này.
Keil C ngoài vi/c hR trL ta so8n thMo và biên dCch ch46ng trình, nó còn hR trL ta
mQt công cP g` r>i (Debug) ch46ng trình hFt s?c hi/u quM.
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 6
$B ch8y debug mQt ch46ng trình sau khi ;ã biên dCch thành công, ta nhEn có
thB kích ho8t ch?c n@ng debug b^ng mQt trong các cách sau:
• NhEn nút Debug trên thanh công cP (Hình 1.8)
• NhEn tU hLp phím Ctrl + F5.
• MT menu Debug-Start/Stop Debug Session

Hình 1.8 Nút Debug
Mu>n tat ch?c n@ng Debug, ta làm l8i thao tác trên mQt lZn nIa.
Sau khi kích ho8t ch?c n@ng Debug, cOa sU Keil C có d8ng nh4 hình 1.9. NFu
có cOa sU nào không xuEt hi/n, ta có thB vào menu View ;B bVt cOa sU ;ó lên.

Hình 1.9 COa sU Keil C sau khi kích ho8t ch?c n@ng Debug
Trong cOa sU này, có 4 vùng chính:
• 1: COa sU thB hi/n các thanh ghi c2a vi ;iGu khiBn
• 2: COa sU l/nh so8n thMo, ch?a ch46ng trình ;ang ;4Lc debug
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 7
• 3: Cho phép ta theo dõi giá trC c2a mQt biFn nào ;ó b^ng cách nhVp tên
biFn
• 4: COa sU Watches cho phép ta theo dõi giá trC c2a tEt cM các biFn ch?a
trong ch46ng trình. Mu>n biFt giá trC c2a biFn nào, ta chNn cOa sU này và
nhEn phím F2, sau ;ó nhVp tên c2a biFn cZn theo dõi. Lúc này, c2a sU sW
hiBn thC tên biFn c_ng nh4 giá trC hi/n t8i c2a biFn ;ó.
Ngoài ra, ta còn có thB kích ho8t thêm mQt s> cOa sU nh4:
• COa sU Disassembly (Hình 1.10) : Cho ta biFt chính xác mQt l/nh Keil C
;4Lc viFt b^ng hLp ngI nh4 thF nào. Kích ho8t cOa sU này b^ng cách
vào menu View/Disassembly.
• COa sU Memory (Hình 1.11): Kích ho8t b^ng menu View/Memory. Cho
phép xem nQi dung bQ nh5 ch46ng trình và bQ nh5 dI li/u:
§ Mu>n xem bQ nh5 ch46ng trình bat ;Zu tX mQt ;Ca ch\ nào ;ó, ta
nhVp C: "a ch$ vào ô Address.
§ Mu>n xem bQ nh5 RAM bat ;Zu tX mQt ;Ca ch\ nào ;ó, ta nhVp D:
"a ch$ vào ô Address.
• COa sU Registers: Cho phép ta quan sát giá trC các thanh ghi c2a vi ;iGu
khiBn nh4 các thanh ghi R0-R7, PSW, DPTR …

Hình 1.10 COa sU Disassembly
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 8

Hình 1.11 COa sU Memory
Ta có thB biFt ;4Lc mQt ;o8n ch46ng trình ;ã th:c hi/n mEt bao nhiêu thKi
gian b^ng cách quan sát mPc sec trong cOa sU Registers ho[c trên thanh status bar
(Hình 1.12). Tuy nhiên, ;B có thKi gian t46ng ?ng ch46ng trình debug và trên m8ch
th:c tF, ta phMi th:c hi/n mQt s> b45c hi/u ch\nh nh4 sau:
• MT hQp tho8i Options for Target (Hình 1.4)
• ChNn thb Target.
• NhVp tZn s> th8ch anh mà ta mu>n sO dPng trên m8ch th:c tF vào ô Xtal
(MHz) (Hình 1.13)

Hình 1.12 ThKi gian ch8y ch46ng trình
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 9

Hình 1.13 Thb Target trong hQp tho8i Options for Target
Ti/n ích cho phép quan sát thKi gian ch8y ch46ng trình này cho phép ta xác
;Cnh chính xác thKi gian c2a mQt hàm delay mà ta ;Cnh sO dPng, và nó c_ng giúp ích
cho chúng ta khi lVp trình v5i nhIng bài toán có liên quan ;Fn thKi gian th:c, ;B chúng
ta có thB tìm ra ;4Lc mQt giMi thuVt ngan nhEt và nhanh nhEt.
Ta c_ng có thB quan sát tr8ng thái các Port, các Timer, ngat b^ng cách vào
menu Peripherals, chNn các ;>i t4Lng cZn quan sát (Hình 1.14).
Keil C c_ng hR trL ta quan sát các ngõ ra d45i d8ng xung. $B kích ho8t ch?c
n@ng này, chúng ta chNn biBu t4Lng Analysis Window (Hình 1.15). TiFp theo chúng
ta chNn mPc Setup > cOa sU Setup Logic Analyzer xuEt hi/n > chNn mPc New (Insert)
và nhVp Port cZn quan sát (VD: P0.0, P1.2…). Ngoài ra ta có thB chNn màu hiBn thC t8i
mPc Color. Sau khi ;ã thiFt ;[t ;Zy ;2 các chân c_ng nh4 màu sac, ta chNn Close ;B
kFt thúc phZn Setup. Khi không cZn quan sát mQt tín hi/u nào ;ó, ta có thB chNn tín
hi/u ;ó trong hQp tho8i Setup này và nhEn nút Delete, ho[c nhEn nút Kill All ;B lo8i
bc tEt cM tín hi/u ;ã ;4Lc chNn tr45c ;ó.


THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 10

Hình 1.14 Menu Peripherals

Hình 1.15 ThiFt ;[t cho Analysis Window
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 11

Hình 1.16 COa sU Logic Analysis
Sau khi ;ã kích ho8t ;Zy ;2 các cOa sU cZn thiFt, ta bat ;Zu cho ch8y debug
b^ng cách chNn mQt trong các nút trên thanh công cP Debug (Hình 1.17):
• Nút Reset: Reset ch46ng trình vG tr8ng thái ban ;Zu
• Run (F5): Th:c thi ch46ng trình
• Step (F11): Th:c thi tXng dòng l/nh, có nhMy vào hàm con.
• Step over (F10): th:c thi tXng dòng l/nh, không nhMy vào hàm con.
• Step out (Ctrl + F11): NhMy ra khci hàm con
• Run to Cursor line (Ctrl + F10): Th:c thi ch46ng trình tX ;Zu cho ;Fn vC
trí con trc

Hình 1.17 Thanh công cP Debug

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 12
PH)N II
GI+I THIU THI.T B/

2.1. S, $F NGUYÊN LÝ KIT NGHIM

Hình 2.1 S6 ;< kit thí nghi/m
VCC_5V
f
D12
LED
J15
12V AC
1
2
R32
4K7
P2. 2/UP
LED4
A
D
3
U10
BUZZER
1
2
V
C
C
G
N
D
U11
LM7805/TO
1
2
3
VI N
G
N
D
VOUT
e
D1
LED
f
U3 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
d
AD0
J12
I NTERRUPT 1
1 2
R34
330
VCC_5V
e
C6
104
R8 100
AD7
f
AD6
RXD
Q6
A1013
U7
AT89S52
11
12
13
14
15
16
17
18
19
2
0
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
4
0
1
2
3
4
5
6
7
8
9
10
P3.1/ TXD
P3.2/ INT0
P3.3/ INT1
P3.4/ T0
P3.5/ T1
P3. 6/ WR
P3. 7/ RD
XTAL2
XTAL1 G
N
D
P2.0/ A8
P2.1/ A9
P2. 2/ A10
P2. 3/ A11
P2. 4/ A12
P2. 5/ A13
P2. 6/ A14
P2. 7/ A15
PSEN
ALE/PROG
EA/VPP
P0. 7/AD7
P0. 6/AD6
P0. 5/AD5
P0. 4/AD4
P0. 3/AD3
P0. 2/AD2
P0. 1/AD1
P0. 0/AD0
V
C
C
P1.0/ T2
P1.1/ T2EX
P1.2
P1.3
P1.4/ SS
P1.5/ MOSI
P1.6/ MISO
P1.7/ SCK
RST
P3.0/ RXD
D8
LED
R17 330
A
D
5
VCC_5V
g
AD1
g
U2
74HC541
2
3
4
5
6
7
8
9
1
19
18
17
16
15
14
13
12
11
2
0
1
0
A1
A2
A3
A4
A5
A6
A7
A8
G1
G2
Y 1
Y 2
Y 3
Y 4
Y 5
Y 6
Y 7
Y 8
V
C
C
G
N
D
R23
330
VCC_5V
U9
DS12887
19
23
2
4
1
2
4
5
6
7
8
9
10
11
14
17
1
1
8
15
13
I RQ
SQW
V
C
C
G
N
D
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AS
DS
M
O
T
R
S
T
R/W
CS
C2
104
Q1
A1013
AD4
LED1
U8
INFRA RED RECI EVER
1
3
2
GND
VCC
OUT
VCC_5V
R29 4K7
c
Q2
A1013
RXD
A
D
0
MOSI
D3
LED
U1
1234567891
0
1
1
1
2
1
3
1
4
1
5
1
6
V
S
S
V
D
D
V
E
E
R
S
R
W
ED
B
0
D
B
1
D
B
2
D
B
3
D
B
4
D
B
5
D
B
6
D
B
7
AK
a
VCC_5V
R28
8K2
LED1
R2 100
SW4
DOWN
RESET
C1
104
D9
STAND_BY LED
R25
330
TXD
e
J11
LCD CONTROL/LED CONTROL
1
2
3
4
RESET
VCC_5V
LED3
D6
LED
J5 D0-D7
1 2 3 4 5 6 7 8
C10
2200uF 35V
P2. 1/MODE
D11 LED_POWER
J13
ADAPTER 12V
1
2
AD3
R3 4K7
R19
330
P2. 2/ UP
LED4
Q5
A1013
J2
LPT PORT
1
2
3
4
5
6
VCC_5V
c
R5 4K7
C5 33p
STAND_BY LED/ P3. 3
VCC_5V
C3
10uF
b
C7
2200uF 35V
- +
D10
BRI DGE
1 4
3
2
SCK
c
J4
DATA LED
1
2
3
4
5
6
7
8
J3
SPI PROGRAM
1
2
3
4
TXD
VCC_5V
R7 1K
U6 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
SW1
RESET
D7
LED
BUZZER/ P3.4
VCC_5V
d
J9
RS232
1
2
3
4
P2. 0/ DOWN
VCC_5V
C9
104
AD5
a
VCC_5V
J8
5V GND
1
2
Q4
A1013
R27 100
VCC_5V J7
SPI PROGRAM
1
2
3
4
R22
330
I NFRA RED EY E/ P3. 2
LED2
J14
A1-G-A2
1
2
3 C4 33p
g
R9 100
SW2
UP
c
AC LAMP/ P3.5
VCC_5V
R6 4K7
J6
LCD CONTROL
1234
A
D
4
AC LAMP/ P3.5
I NFRA RED EYE/P3. 2
VCC_5V
g
R4 4K7
BUZZER/ P3. 4
U13
LM7805/TO
1
2
3
VI N
G
N
D
VOUT
U4 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
LED2
STAND_BY LED/ P3.3
U5 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
MI SO
a a
R20
330
C
R1
4K7
1
2 3 4 5
VCC_5V
R31
330
g
A
D
7
VCC_5V
e
J10
DATA LED/ D0-D7
1
2
3
4
5
6
7
8
c
D2
LED
U12
MOC3020
1
2
6
4
Q3
A1013
VCC_5V
A
D
6
LED3
R21
330
R33
330
AD2
C8
104
MOSI
f
R24
330
a
SCK
P2. 0/DOWN
D4
LED
d
VCC_5V
f
R18
4K7
1
2 3 4 5 6 7 8 9
R26
330
A
D
2
d
CRYSTAL
11.0592
J1
LED CONTROL
1
2
3
4
SW3
MODE
D5
LED
d
R30 330
A
D
1
e
P2.1/ MODE
MISO
R10 330
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 13
2.2. CÁC KHGI CHHC NING TRÊN KIT THÍ NGHIM
2.2.1. KhKi nguLn

Hình 2.2 S6 ;< kh>i ngu<n
Kh>i này nhVn ;i/n áp 12Vac, nan, lNc thành ;i/n mQt chiGu. Sau ;ó ;4a qua
7805 ;B Un ;Cnh ;i/n áp ngõ ra T 5Vdc. $i/n áp này ;4Lc cung cEp cho các kh>i khác
trên kit.
2.2.2. KhKi nAp ch>@ng trình :

Hình 2.3 S6 ;< kh>i n8p ch46ng trình
$ây là s6 ;< m8ch n8p ;i kèm v5i phZn mGn SPI Programmer 3.7 ,cho phép ta
n8p ch46ng trình cho các chip 89Sxx c2a hãng Atmel. Ch46ng trình ;4Lc n8p n>i tiFp
thông qua các chân MOSI, MISO, SCK và RESET c2a chip.

R3 100
R4 1K
VCC_5V
J4
SPI PROGRAM
1
2
3
4
VCC_5V
C
R1
4K7
1
2 3 4 5
U4
74HC541
2
3
4
5
6
7
8
9
1
19
18
17
16
15
14
13
12
11
2
0
1
0
A1
A2
A3
A4
A5
A6
A7
A8
G1
G2
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
V
C
C
G
N
D
J3
LPT PORT
1
2
3
4
5
6
R6 100
R5 100
R7 100
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 14
2.2.3. KhKi MCU :

Hình 2.4 S6 ;> kh>i MCU
Kh>i này bao g<m vi ;iGu khiBn AT89S52 và các kh>i phP trL, giúp cho vi ;iGu
khiBn ho8t ;Qng ;4Lc:
• Kh>i Auto Reset bao g<m R28, C3: giúp t: ;Qng reset vi ;iGu khiBn khi
vXa bVt ngu<n.
• Kh>i Manual Reset bao g<m SW1, R27: cho phép reset vi ;iGu khiBn
b^ng tay. Kh>i này không bat buQc phMi có m[t nFu không có nhu cZu
reset vi ;iGu khiBn b^ng tay.
• Kh>i dao ;Qng bao g<m: Y1, C4, C5: KFt hLp v5i các kh>i khác T bên
trong vi ;iGu khiBn t8o ra xung nhCp cho vi ;iGu khiBn ho8t ;Qng.
C3
10uF
A
D
7
I NFRA RED EYE/P3.2
C4 33p
A15
A
D
3
VCC_5V
ALE
P2.2/UP
P2.1/MODE
R27 100
R28
8K2
R18
4K7
1 2
3
4
5
6
7
8
9
U7
AT89S52
11
12
13
14
15
16
17
18
19
2
0
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
4
0
1
2
3
4
5
6
7
8
9
10
P3.1/TXD
P3.2/I NT0
P3.3/I NT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
XTAL2
XTAL1 G
N
D
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
PSEN
ALE/PROG
EA/VPP
P0.7/AD7
P0.6/AD6
P0.5/AD5
P0.4/AD4
P0.3/AD3
P0.2/AD2
P0.1/AD1
P0.0/AD0
V
C
C
P1.0/T2
P1.1/T2EX
P1.2
P1.3
P1.4/SS
P1.5/MOSI
P1.6/MISO
P1.7/SCK
RST
P3.0/RXD
A
D
1
R/W
A
D
5
BUZZER/P3.4
RESET
Y1
11.0592
SW1
RESET
P2.0/DOWN
A
D
0
TXD
J11
LCD CONTROL/LED CONTROL
1
2
3
4
AC LAMP/P3. 5
C5 33p
RD
VCC_5V
RXD
A
D
4
A
D
2
VCC_5V
A
D
6
STAND_BY LED/P3.3
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 15
• $i/n trT kéo lên R18: Do các chân trên port 0 c2a vi ;iGu khiBn là các
chân có c:c thu ;B hT nên khi mu>n giao tiFp vi ;iGu khiBn v5i các IC s>
khác, ta cZn có mQt ;i/n trT kéo lên ;B xác lVp m?c ;i/n áp.
2.2.4. KhKi led M@n

Hình 2.5 S6 ;< kh>i led ;6n
Các ngõ ;iGu khiBn ;4Lc kFt n>i tr:c tiFp v5i port 1 c2a vi ;iGu khiBn. Mu>n
led sáng, ta sW phMi xuEt m?c thEp ra chân vi ;iGu khiBn.
2.2.5. KhKi led 7 MoAn

Hình 2.6 S6 ;< kh>i led 7 ;o8n
Kh>i này bao g<m b>n led 7 ;o8n ;4Lc thiFt kF theo ph46ng pháp ;a hLp
(ph46ng pháp ;iGu khiBn quét led). TEt cM các ;o8n (kathod) c2a các LED ;4Lc n>i
chung vào nhau vào mQt port ;iGu khiBn còn anode c2a tEt các led ;4Lc n>i vào mQt
port ;iGu khiBn khác và ;4Lc cEp tín hi/u quét led mQt các tuZn t: (t8i mQt thKi ;iBm
VCC_5V
R24
330
R23
330
D8
LED
R21
330
D1
LED
R20
330
R26
330
D6
LED
D4
LED
D3
LED
R25
330
R22
330
R19
330
D2
LED
D5
LED
D7
LED
a
U4 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
LED1
Q1
A1013
e
LED3
J1
LED CONTROL
1
2
3
4
LED4
c
b
Q3
A1013
VCC_5V
c
d a
R10 330
LED2
g
c
g
R5 4K7
VCC_5V
LED2
a a
J4
DATA LED
1
2
3
4
5
6
7
8
g e
VCC_5V
c
LED3
f
a
d
f
d d d
e
f
LED4
e
U3 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
f
Q4
A1013
e
f
U6 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
VCC_5V
R4 4K7
g
U5 LED7
1
2
3
4
5
6
7
8
9
10
E
D
V
C
C
C
DP
B
A
V
C
C
F
G
g
LED1
R3 4K7
Q2
A1013
c
R6 4K7
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 16
ch\ có mQt led ;4Lc cEp ngu<n). L4u ;< giMi thuVt quét led ;4Lc thB hi/n trong hình
2.7, trong ;ó N_max là tUng s> led 7 ;o8n cZn ;4Lc quét.

Hình 2.7 L4u ;< giMi thuVt quét led 7 ;o8n

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 17
2.2.6. KhKi hiNn thO LCD

Hình 2.8 S6 ;< kh>i LCD
LCD ;4Lc thiFt kF trên kit là lo8i LCD 2 dòng, 16 cQt. Module này ;4Lc thiFt
kF cho mPc ;ích thí nghi/m ;iGu khiBn LCD. J5 là ngõ vào nhVn dI li/u (DATA) ho[c
l/nh (COMMAND) c2a LCD. J6 là ngõ vào ;iGu khiBn LCD
2.2.7. KhKi nút nhQn

Hình 2.9 S6 ;< kh>i nút nhEn
Kh>i này ;4Lc thiFt kF cho các bài thí nghi/m nút nhEn ;6n. Bao g<m ba nút
;4Lc kFt n>i vào các chân P2.0,P2.1,P2.2 và tích c:c T m?c thEp

VCC_5V
J5 D0-D7
1 2 3 4 5 6 7 8
R17 330
VCC_5V
Q5
A1013
U1
1234567891
0
1
1
1
2
1
3
1
4
1
5
1
6
V
S
S
V
D
D
V
E
E
R
S
R
W
ED
B
0
D
B
1
D
B
2
D
B
3
D
B
4
D
B
5
D
B
6
D
B
7
AK
J6
LCD CONTROL
1234
P2. 1/MODE
P2.2/UP
P2. 0/DOWN
SW3
MODE
SW2
UP
SW4
DOWN
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 18
2.2.8. KhKi Standby LED/Interrupt input

Hình 2.10 S6 ;< kh>i Standby LED/ Interrupt input
Stand_by LED ;4Lc kFt n>i vào chân P3.3, ;<ng thKi ;ây c_ng là ngõ vào ngat
ngoài 1 và tích c:c T m?c thEp.
2.2.9. KhKi thu hLng ngoAi

Hình 2.11 S6 ;< kh>i thu h<ng ngo8i
Ngõ ra c2a bQ thu tín hi/u h<ng ngo8i ;4Lc kFt n>i vào chân P3.2. Tín hi/u
h<ng ngo8i tX Remote khi qua bQ thu sW bC ;Mo m?c tích c:c .
2.2.10. KhKi Buzzer

Hình 2.12 S6 ;< kh>i Buzzer
Buzzer là mQt loa nhc, dùng ;B t8o âm thanh. Trong kit thí nghi/m này, buzzer
;4Lc ;iGu khiBn thông qua transistor A1013 và ;4Lc kFt n>i vào chân P3.4.
R30 330
D9
STAND_BY LED
VCC_5V
STAND_BY LED/P3.3
J12
INTERRUPT 1
1 2
C1
104
VCC_5V
U8
I NFRA RED RECIEVER
1
3
2
GND
VCC
OUT
I NFRA RED EYE/P3.2
U10
BUZZER
1
2
V
C
C
G
N
D
BUZZER/P3.4
R29 4K7
VCC_5V
Q6
A1013
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 19
2.2.11. KhKi Opto Triac

Hình 2.13 S6 ;< kh>i Opto Triac
Kh>i Opto Triac dùng ;B ;iGu khiBn thiFt bC 220V AC bên ngoài thông qua
m8ch mT rQng, chân ;iGu khiBn ;4Lc kFt n>i vào chân P3.5 và tích c:c T m?c thEp.
2.2.12. KhKi giao tiRp UART

Hình 2.14 S6 ;< kh>i giao tiFp UART
Kh>i giao tiFp UART dùng ;B giao tiFp n>i tiFp v5i các thiFt bC ngo8i vi ho[c
v5i các MCU khác thông qua port n>i tiFp (TxD, RxD) ho[c kFt n>i thêm m8ch ngoài
;B giao tiFp theo chudn RS232.

D12
LED
R32
4K7
C6
104
J14
A1-G-A2
1
2
3
AC LAMP/P3.5
VCC_5V
R31
330 U12
MOC3020
1
2
6
4
R33
330
J9
RS232
1
2
3
4
RXD
VCC_5V
TXD
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 20
PH)N III
TH1C HÀNH

3.1. $I%U KHI&N KHGI LED $,N
3.1.1. MSc Mích, yêu cTu:
Giúp cho sinh viên làm quen v5i vi/c ;iGu khiBn LED ;6n nh4 tat, mT, dCch
LED sang trái, dCch LED sang phMi, sáng d<n, nhEp nháy.
Sinh viên phMi biFt sO dPng Timer ;B t8o Delay và biFt cách sO dPng các toán tO
liên quan nh4 toán tO thao tác bit, toán tO logic …
3.1.2. Ch>@ng trình tham khUo
#include <p89v51rx2.h>

// khai bao prototype
void delay (unsigned int time);
void nhap_nhay (void);
void dem_nhi_phan (void);
void dich_trai (void);

//chuong trinh chinh
void main (void)
{
while (1)
{
nhap_nhay();
delay(500);
dem_nhi_phan();
delay(500);
dich_trai();
delay(500);
}
}

//cac chuong trinh con

void nhap_nhay (void)
{
unsigned char i;

for (i = 0; i < 10; i ++)
{
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 21
P1 = 0;
delay (500);
P1 = 0xff;
delay (500);
}
}

void dem_nhi_phan (void)
{
unsigned char i;

for (i = 0; i < 255; i ++)
{
P1 = ~i;
delay (300);
}
}

void dich_trai (void)
{
unsigned char i, j;

for (j = 0; j < 5; j ++)
{
for (i = 0x01; i > 0; i <<= 1)
{
P1 = ~i;
delay (300);
}
}
}

void delay (unsigned int time)
{
while (time--)
{
TMOD = 0x01; //timer0 che do 16 bit
TH0 = 0xFF; //nap gia tri cho timer
TL0 = 0x00;
TR0 = 1; //khoi dong bo dinh thoi
while (!TF0); //cho co TF = 1
TF0 = 0 ; //xoa co TF
TR0 = 0; //dung bo dinh thoi
}
}

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 22
3.1.3. Bài tVp mW rCng
1. ViFt ch46ng trình dCch mQt led qua phMi
2. ViFt ch46ng trình 8 led sáng d<n.
3. SO dPng ngat timer ;B viFt ch46ng trình ;iGu khiBn sao cho 8 LED ;6n
mRi LED ch5p v5i mQt tZn s> khác nhau.
3.2. $I%U KHI&N KHGI BUZZER
3.2.1. MSc Mích, yêu cTu
Giúp sinh viên làm quen v5i vi/c ;iGu khiBn Buzzer ;B t8o ra chuRi âm “beep”
v5i các tZn s> khác nhau cho các ?ng dPng nh4 nhVn phím, báo th?c …
3.2.2. Ch>@ng trình tham khUo
#include <p89v51rx.h>

#define BUZZER P3_4 //khai bao chan dieu khien Buzzer

// khai bao prototype

void delay (unsigned int time);
void beep (void);

//chuong trinh chinh

void main (void)
{
while (1)
{
beep();
delay (1000);
}
}

// cac chuong trinh con

void beep (void)
{
unsigned char i;

for (i = 0; i < 20; i ++)
{
BUZZER = 0;
delay (1);
BUZZER = 1;
delay (1);
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 23
}
}

void delay(unsigned int time)
{
while(time--)
{
TMOD = 0x01;
TH0 = 0xFF;
TL0 = 0xBA;
TR0 = 1;
while(!TF0);
TF0 = 0 ;
TR0 = 0;
}
}
3.2.3. Bài tVp mW rCng
1. ViFt ch46ng trình ;iGu khiBn Buzzer phát âm thanh cho ;<ng h< báo
th?c.
2. ViFt ch46ng trình ;iGu khiBn Buzzer giM lVp âm thanh c2a còi xe c?u hca
3.3. GIAO TI.P V+I NÚT NHXN $,N
3.3.1. MSc Mích, yêu cTu
Giúp sinh viên làm quen v5i thao tác kiBm tra nút nhEn ;6n trong các ?ng dPng
nhVp dI li/u, hi/u ch\nh thông s>,cài ;[t …
3.3.2. Ch>@ng trình tham khUo
Ch46ng trình kiBm tra lZn l4Lt ba nút UP, MODE, DOWN, nFu mQt trong ba
nút ;4Lc nhEn thì ;iGu khiBn phát âm “beep” ;B thông báo phím ;ã ;4Lc nhEn, ;<ng
;iGu khiBn tat ho[c mT LED t46ng ?ng.
#include <p89v51rx2.h>

//khai bao cac chan dieu khien

#define BTN_UP P2_2
#define BTN_DOWN P2_0
#define BTN_MODE P2_1

#define LED0 P1_0
#define LED1 P1_1
#define LED2 P1_2

#define BUZZER P3_4 //chan dieu khien Buzzer
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 24

// khai bao prototype
void delay (unsigned char time);
void beep (void);

//chuong trinh chinh

void main (void)
{
while (1)
{
if (BTN_UP == 0)
{
delay (200); //delay chong doi
if (BTN_UP == 0)
{
beep();
while (BTN_UP == 0); //cho nha nut
UP
LED0 = ~LED0;
}
}

if (!BTN_DOWN)
{
delay (200); //delay chong doi
if (!BTN_DOWN)
{
beep();
while (!BTN_DOWN); //cho nha nut
DOWN
LED1 = ~LED1;
}
}

if (!BTN_MODE)
{
delay (200); //delay chong doi
if (!BTN_MODE)
{
beep();
while (!BTN_MODE); //cho nha nut
MODE
LED2 = ~LED2;
}
}

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 25
}
}

//cac chuong trinh con
void beep (void)
{
unsigned char i;

for (i = 0; i < 20; i ++)
{
BUZZER = 0;
delay (1);
BUZZER = 1;
delay (1);
}
}

void delay(unsigned char time)
{
while (time--)
{
TMOD = 0x01; //timer0 che do 16 bit
TH0 = 0xFF; //nap gia tri cho timer
TL0 = 0xBA;
TR0 = 1; //khoi dong bo dinh thoi
while(!TF0); //cho co TF = 1
TF0 = 0 ; //xoa co TF
TR0 = 0; //dung bo dinh thoi
}
}
3.3.3. Bài tVp mW rCng
ViFt ch46ng trình ;iGu khiBn sao cho nFu nút Up nhEn 8 LED ;6n sW dCch tX
trái sang phMi, nút Down nhEn dCch tX phMi sang trái, nút Mode nhEn thì nhEp nháy cM 8
LED, mRi kiBu sáng lVp l8i 5 lZn. Sau ;ó ch46ng trình trT l8i kiBm tra 3 nút nh4 ban
;Zu.
3.4. $I%U KHI&N KHGI HI&N TH/ LED 7 $O7N
3.4.1. MSc Mích, yêu cTu
Giúp sinh viên làm quen v5i vi/c ;iGu khiBn hiBn thC dI li/u trên LED 7 ;o8n
trong các ?ng dPng nh4 ;Fm sMn phdm, ;èn giao thông, ;<ng h< báo giK…
Sinh viên phMi nam ;4Lc ke thuVt quét LED, ke thuVt sO dPng ngat timer, biFt
cách kFt n>i phZn c?ng (kFt n>i header Data LED / D0 … D7 (P0), LCD control / LED
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 26
control T kh>i MCU v5i header Data LED và LED control T kh>i hiBn thC LED 7 ;o8n
).
3.4.2. Ch>@ng trình tham khUo
Ch46ng trình sau ;Fm tX 0 – 100 hiBn thC ra led 7 ;o8n
#include <at89x52.h>

#define BTN_PRESSED 1
#define BTN_NOT_PRESSED 0

#define btnUp P2_0
#define btnDown P2_1
#define buzz P3_4

#define ledUnits P2_3
#define ledTens P2_4
#define ledHundress P2_5

unsigned char code code_7seg [] = {0x81, 0xed, 0x43,
0x49, 0x2d, 0x19, 0x11, 0xcd, 0x01, 0x09};
unsigned char code code_scan [] = {0xf7, 0xef, 0xdf};

unsigned char scrBuffer[3];
unsigned char count = 0;
unsigned char pos = 0;
bit on = 0;

void init (void);
void delay (unsigned int time);
void decode (unsigned char tmpCount);

void main (void)
{
init();
while(1)
{
count ++;
if (count > 100) count = 0;
decode(count);
delay(200);
}
}

void delay (unsigned int time) //chuong trinh delay
{
unsigned int i,j;
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 27
for(i = 0; i < time; i ++)
for(j = 0; j < 100; j ++);
}

void decode (unsigned char tmpCount)
{
scrBuffer[0] = code_7seg[tmpCount % 10];
tmpCount /= 10;
scrBuffer[1] = code_7seg[tmpCount % 10];
tmpCount /= 10;
scrBuffer[2] = code_7seg[tmpCount % 10];
}

void init (void) // khoi tao timer0
{
TH0 = 0x94;
TL0 = 0x00;
TF0 = 0;
TR0 = 1; // cho phep dem
ET0 = 1; // cho phep ngat
EA = 1;

decode(count);
}

void isrTmr0 (void) interrupt 1
{
TH0 = 0x94;
TL0 = 0x00;

if (on == 0)
{
P2 = 0xff; //turn off all led
P0 = 0xff; //clear data
on = 1;
}
else
{
P0 = scrBuffer[pos]; // output data
P2 = code_scan[pos]; // turn appropriate led
on
if (++ pos == 3) pos = 0;
on = 0;
}
}

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 28
3.4.3. Bài tVp mW rCng
1. ViFt ch46ng trình hiBn thC chI HELLO ch8y tX phMi qua trái trên màn
hình led.
2. ViFt ch46ng trình ;iGu khiBn ban ;Zu hiBn thC s> 0, nFu nút UP ;4Lc
nhEn thì t@ng giá trC hiBn thC lên mQt ;6n vC, nFu nút DOWN ;4Lc nhEn thì giMm mQt
;6n vC, nút MODE ;4Lc nhEn thì m8ch t: ;Qng ;Fm lên tX giá trC hi/n hành ;Fn 100
r<i trT vG 0 và tiFp tPc ;Fm lên, nFu nhEn nút MODE lZn nIa thì dXng l8i, lVp l8i quá
tình kiBm tra ba nút nh4 ban ;Zu.Có âm nhVn phím, trong quá trình t@ng t: ;Qng hai
nút UP và DOWN vYn có tác dPng.
3.5. $I%U KHI&N KHGI HI&N TH/ LCD
3.5.1. MSc Mích, yêu cTu
Giúp sinh viên làm quen v5i vi/c ;iGu khiBn hiBn thC dI li/u trên màn hình LCD
trong các ?ng dPng nh4 ;Fm sMn phdm, ;<ng h< báo giK, hiBn thC chuRi thong báo…
Sinh viên phMi nam ;4Lc cEu t8o và cách th?c ;iGu khiBn hiBn thC trên màn hình
LCD.
3.5.2. Ch>@ng trình tham khUo
Ch46ng trình ;iGu khiBn hiBn thC hai dòng Text ra màn hình LCD sau ;ó di
chuyBn hai dòng text qua trái, qua phMi.
#include <AT89x52.h>

//khai bao macro
#define LCD_DATA_PORT P0
#define LCD_E P2_5
#define LCD_RW P2_4
#define LCD_RS P2_3

#define lcd_char(chr) lcd_send_byte(1, chr)
#define lcd_cmd(cmd) lcd_send_byte(0, cmd)

//khai bao prototype
void lcd_waitms (unsigned int time);
void lcd_send_byte (bit cmd, unsigned char byte);
void lcd_init (void);
void lcd_string(unsigned char *str);

//chuong trinh chinh
void main (void)
{
unsigned char i, j;

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 29
lcd_init();
lcd_string ("Dai hoc Lac Hong");
lcd_cmd(0xC0); //di chuyen con tro ve dong thu 2
lcd_string (“Welcome !!!”);
while (1)
{
for (i = 0; i < 16; i ++)
{
lcd_send_byte(0,0x18);
lcd_waitms(1000);
}

for (i = 0; i < 16; i ++)
{
lcd_send_byte(0,0x1C);
lcd_waitms(1000);
}

}
}

//chuong trinh con
void lcd_send_byte(bit cmd, unsigned char byte)
{
LCD_RW = 0; //write mode
LCD_RS = cmd; // cmd = 0 send command, cmd =
1 send data
LCD_DATA_PORT = byte;
LCD_E = 1;
LCD_E = 0;
lcd_waitms(1);
}

void lcd_string(unsigned char *str)
{
while(*str != '\0') // lap lai cho den khi ket
thuc chuoi
{
lcd_char(*str); // ghi ky tu len man hinh
str ++; // ky tu tiep theo
}
}

void lcd_init(void)
{
lcd_waitms(15); //wait for about 15ms

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 30
lcd_cmd(0x38); // two line, size of char
5x7 dot
lcd_cmd(0x01); // clear lcd
lcd_cmd(0x06); // move cursor to right
lcd_cmd(0x0C); // lcd on, cursor off
}

void lcd_waitms (unsigned int time)
{
unsigned int x, y;
for (x = 0; x <= time; x ++)
{
for (y = 0; y <= 121; y ++);
}
}
3.5.3. Bài tVp mW rCng
ViFt ch46ng trình ;iGu khiBn hiBn thC dòng text ra màn hình LCD kFt hLp v5i
nút nhEn và Buzzer. NFu nút ;4Lc nhEn thì Buzzer phát ra âm “Beep” báo nhVn phím,
và màn hình hiBn thC dòng text th? nhEt, t46ng t: nFu tiFp tPc nhEn thì dòng text khác
sW xuEt hi/n trên màn hình LCD.
3.6. TRUY XUXT IC DS12887
3.6.1. MSc Mích, yêu cTu
Giúp sinh viên làm quen v5i vi/c truy xuEt dI li/u thKi gian tX IC real time cho
các ?ng dPng yêu cZu thKi gian th:c nh4 ;<ng h< báo giK…
Sau bài tVp này, sinh viên phMi nam ;4Lc các ;iBm sau:
• Cách khai báo ;4Kng dYn ;Fn th4 vi/n.
• Cách truy xuEt bQ nh5 ngoài b^ng Keil C
• SO dPng ;4Lc IC DS12887 cho các ?ng dPng cZn có thKi gian th:c
3.6.2. Ch>@ng trình tham khUo
Ch46ng trình ;<ng h< báo giK, phút, giây b^ng cách truy xuEt dI li/u thKi gian
tX DS12887, cho phép khTi t8o l8i DS12887.
#include <AT89x52.h>
#include "lcd_lib.h"

unsigned char code my_signature[] = "plain";
unsigned char code strDOW[7][4] =
{
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 31
"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};
//---------location of date/time data---------------
unsigned char xdata sec _at_ 0x0000;
unsigned char xdata sec_alarm _at_ 0x0001;
unsigned char xdata min _at_ 0x0002;
unsigned char xdata min_alarm _at_ 0x0003;
unsigned char xdata hour _at_ 0x0004;
unsigned char xdata hour_alarm _at_ 0x0005;
unsigned char xdata DOW _at_ 0x0006;
unsigned char xdata date _at_ 0x0007;
unsigned char xdata month _at_ 0x0008;
unsigned char xdata year _at_ 0x0009;
unsigned char xdata century _at_ 0x0032;
//--------------------------------------------------

//-------location of control register---------------
unsigned char xdata reg_A _at_ 0x000A;
unsigned char xdata reg_B _at_ 0x000B;
unsigned char xdata reg_C _at_ 0x000C;
unsigned char xdata reg_D _at_ 0x000D;
//--------------------------------------------------

//--------location of signature---------------------
unsigned char xdata signature[5] _at_ 0x000E;
//--------------------------------------------------

bit check_DS12C887 (void);
void init_DS12C887 (void);

THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 32
void main (void)
{
if (check_DS12C887()) init_DS12C887();
lcd_init();

while (1)
{
lcd_1st_line;
lcd_string(strDOW[0]);
lcd_char(',');
lcd_write_dec(date);
lcd_char('/');
lcd_write_dec(month);
lcd_char('/');
lcd_write_dec(year);

lcd_2nd_line;
lcd_write_dec(hour);
lcd_char(':');
lcd_write_dec(min);
lcd_char(':');
lcd_write_dec(sec);
}
}

bit check_DS12C887 (void)
{
unsigned char i;
for (i = 0; i < 5; i ++){
if (signature[i] != my_signature[i])
THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 33
return 1; // new installed IC or
battery was empty
}
return 0; // IC's working properly
}

void init_DS12C887 (void)
{
unsigned char i;

// write signature into Dalas
for (i = 0; i < 5; i ++){
signature[i] = my_signature[i];
}
// init the registers
reg_A = 0x20;
reg_B = 0x86; // SET bit = 1

// init the time
hour = 3;
min = 9;

reg_B = 0x06; // SET bit = 0
}
3.6.3. Bài tVp mW rCng
ViFt ch46ng trình ;<ng h< hiBn thC giK b^ng màn hình LCD, cho phép ng4Ki sO
dPng ch\nh thKi gian b^ng ba nút MODE, UP, DOWN.
ViFt ch46ng trình ;<ng h< báo th?c.



THÍ NGHIM VI $I%U KHI&N BIÊN SO7N: $8 BÌNH NGUYÊN
Trang 34
PH)N IV
BÀI T3P M4 R6NG

Bài 1: ViFt ch46ng trình ;iGu khiBn ;èn giao thông sO dPng kh>i LED ;6n và
kh>i LED 7 ;o8n. Cho phép thay ;Ui giá trC thKi gian b^ng cách sO dPng kh>i nút
nhEn, kFt hLp v5i kh>i Buzzer phát âm nhVn phím.
Bài 2: ViFt ch46ng trình chuông ;> vui ;B hNc cho 3 ;Qi ch6i, sO dPng kh>i
LED ;6n, kh>i nút nhEn và Buzzer.
Bài 3: ViFt ch46ng trình giMi mã tín hi/u Remote TV Philips ho[c TV Sony,
b^ng cách sO dPng kh>i Infrared Reciver và kh>i LED 7 ;o8n. HiBn thC giá trC phím
nhVn ;4Lc 0-9 ra LED 7 ;o8n.
Bài 4: ViFt ch46ng trình ;<ng h< hiBn thC b^ng màn hình LCD cho phép ng4Ki
sO dPng hi/u ch\nh thKi gian và cài ;[t thKi gian ;R chuông. Hi/u ch\nh b^ng kh>i nút
nhEn và báo chuông b^ng kh>i Buzzer.
Bài 5: ViFt ch46ng trình ;<ng h< hiBn thC b^ng màn hình LCD cho phép ng4Ki
sO dPng hi/u ch\nh thKi gian và cài ;[t thKi gian ;U chuông. Hi/u ch\nh b^ng Remote
TV và báo chuông b^ng kh>i Buzzer.
Bài 6: ViFt ch46ng trình kFt hLp Remote TV v5i kh>i hiBn thC LCD cho phép
ng4Ki sO dPng nhVp ;o8n text vào b^ng các phím trên Remote sau ;ó cho phép t8o ra
các hi/u ?ng di chuyBn ;o8n text b^ng các nút ;iGu khiBn trên Remote TV.

MỤC LỤC

PHẦN I : GIỚI THIỆU PHẦN MỀM KEIL C ................................................. 1 1.1. 1.2. 1.3. 2.1. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.2.6. 2.2.7. 2.2.8. 2.2.9. 2.2.10. 2.2.11. 2.2.12. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. Màn hình làm việc của Keil C............................................................... 1 Các bước tạo dự án mới ........................................................................ 2 Debug chương trình............................................................................... 5 Sơ đồ nguyên lý kit thí nghiệm ........................................................... 12 Các khối chức năng trên kit thí nghiệm .............................................. 13 Khối nguồn .......................................................................................... 13 Khối nạp chương trình ........................................................................ 13 Khối MCU ........................................................................................... 14 Khối led đơn ........................................................................................ 15 Khối led 7 đoạn ................................................................................... 15 Khối hiển thị LCD ............................................................................... 17 Khối nút nhấn ...................................................................................... 17 Khối Stand_by LED/Interrupt input.................................................... 18 Khối thu hồng ngoại ............................................................................ 18 Khối Buzzer......................................................................................... 18 Khối Opto Triac .................................................................................. 19 Khối giao tiếp UART ......................................................................... 19 Điều khiển khối LED đơn ................................................................... 20 Điều khiển khối Buzzer ....................................................................... 22 Giao tiếp với nút nhấn đơn .................................................................. 23 Điều khiển khối hiển thị LED 7 đoạn ................................................. 25 Điều khiển khối hiển thị LCD ............................................................. 28 Truy xuất IC real time DS12887 ......................................................... 30

PHẦN II : GIỚI THIỆU THIẾT BỊ ................................................................. 12

PHẦN III : THỰC HÀNH ................................................................................. 20

PHẦN IV : BÀI TẬP MỞ RỘNG ..................................................................... 34

You're Reading a Free Preview

Tải về
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->