Professional Documents
Culture Documents
KHOA IN IN T
TI LIU MN HC
TH NGHIM VI IU KHIN
MC LC
1.2.
Cc bc to d n mi ........................................................................ 2
1.3.
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.
Khi Buzzer......................................................................................... 18
2.2.11.
2.2.12.
3.2.
3.3.
3.4.
3.5.
3.6.
TH NGHIM VI IU KHIN
Hin nay c kh nhiu trnh bin dch ngn ng C cho 8051 nh Mikro C, IAR,
SDCC, Reads 51
Vision l mi trng pht trin tch hp (IDE: Integrated Development
Environment) (trnh son tho ngn ng C, trnh bin dch v debug) ca cng ty Keil
Software, v thng c gi l Keil C.
Keil C l mi trng pht trin kh mnh v c s dng rng ri hin nay.
N h tr ta vit chng trnh cho cc chip vi iu khin li 8051 v ARM ca tt c
cc hng trn th gii
1.1.
TH NGHIM VI IU KHIN
Cc bc to mt d n mi
Bc 1: thun tin trong vic qun l cc d n, ta nn to tng th mc
Trang 2
TH NGHIM VI IU KHIN
Trang 3
TH NGHIM VI IU KHIN
Trang 4
TH NGHIM VI IU KHIN
1.3.
menu Project\Build target hoc nhn nt Build trn thanh cng c (hnh 1.6) hoc ta
cng c th nhn phm F7
TH NGHIM VI IU KHIN
chy debug mt chng trnh sau khi bin dch thnh cng, ta nhn c
th kch hot chc nng debug bng mt trong cc cch sau:
Nhn nt Debug trn thanh cng c (Hnh 1.8)
Nhn t hp phm Ctrl + F5.
M menu Debug-Start/Stop Debug Session
Hnh 1.9 Ca s Keil C sau khi kch hot chc nng Debug
Trong ca s ny, c 4 vng chnh:
1: Ca s th hin cc thanh ghi ca vi iu khin
2: Ca s lnh son tho, cha chng trnh ang c debug
Trang 6
TH NGHIM VI IU KHIN
Trang 7
TH NGHIM VI IU KHIN
Trang 8
TH NGHIM VI IU KHIN
Trang 9
TH NGHIM VI IU KHIN
Trang 10
TH NGHIM VI IU KHIN
Trang 11
TH NGHIM VI IU KHIN
PHN II
2.1.
VCC_5V
R1
U11
R8 100
R9 100
A1
A2
A3
A4
A5
A6
A7
A8
VOUT
VC C_5V
2
J3
18
17
16
15
14
13
12
11
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
J15
3
1
4
2
2
1
D 11 LED_POWER
U13
LM7805/TO
C7
12V AC
C8
104
VIN
2200uF 35V
SPI PROGRAM
VOUT
C9
104
C 10
2200uF 35V
R34
330
10
LPT PORT
G1
G2
BRIDGE
GND
2
3
4
5
6
7
8
9
VIN
R7 1K
D10
74HC 541
VC C
6
5
4
3
2
1
1
19
GN D
R2 100
1
ADAPTER 12V
1
20
5
4
3
2
J2
LM7805/TO
J13
U2
GND
VCC _5V
4K7
VCC _5V
VCC_5V
J7
VCC_5V
J8
D1
LED
1
2
SPI PROGR AM
D2
LED
D3
LED
D4
LED
D5
LED
D6
LED
D7
LED
D8
LED
MOSI
MISO
SC K
RESET
R18
4K7
VCC_5V
5V GND
R20
330
R21
330
R22
330
R23
330
R 24
330
R25
330
R 26
330
U7
J9
4
3
2
1
1
2
3
4
5
6
7
8
RXD
TXD
R S232
P1.0/T2
P1.1/T2EX
P1.2
P1.3
P1.4/SS
P1.5/MOSI
P1.6/MISO
P1.7/SCK
VCC _5V
VCC
40
R19
330
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
9
8
7
6
5
4
3
2
4
3
2
1
J10
AT89S52
39
38
37
36
35
34
33
32
8
7
6
5
4
3
2
1
VCC_5V
10
11
12
13
14
15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
104
P3.6/WR
P3.7/RD
ALE/PROG
P2.7/A15
D9
R30 330
VC C_5V
VC C_5V
2
1
31
R27 100
SW1
R ESET
PSEN
C3
U9
15
17
14
13
R /W
DS
AS
CS
29
RESET
4
5
6
7
8
9
10
11
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
DS12887
10uF
9
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
RST
SQW
IRQ
23
19
1
12
INTERRUPT 1
16
17
30
28
EA/VPP
C2
18
24
RXD
TXD
INFR A RED EY E/P3.2
STAND_BY LED/P3.3
BU ZZER/P3.4
AC LAMP/P3.5
RST
VCC
SC K
MOT
GND
MOSI
AD 0
AD 1
AD 2
AD 3
AD 4
AD 5
AD 6
AD 7
DATA LED/D0-D7
MISO
J11
AC LAMP/P3.5
R 28
P2.6/A14
P2.5/A13
P2.4/A12
P2.3/A11
8K2
VC C_5V
1
2
3
4
J 14
27
26
25
24
C6
U12
R32
4K7
104
R33
330
R31
330
D12
A1-G-A2
C 4 33p
18
XTAL2
CRYSTAL
11.0592
19
MOC 3020
XTAL1
LED
GND
3
2
1
23
22
21
P2.2/UP
P2.1/MODE
P2.0/DOWN
20
C 5 33p
P2.2/A10
P2.1/A9
P2.0/A8
U1
VCC _5V
U8
VCC
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
A
K
15
16
7
8
9
10
11
12
13
14
4
5
6
1
2
3
P2.2/UP
SW3
MODE
P2.1/MODE
VCC _5V
BUZZ ER/P3.4
8
7
6
5
4
3
2
1
R17 330
1
2
3
4
J6
LCD CONTROL
J1
VCC_5V
LED4
VCC_5V
Q1
A1013
LED3
R3 4K7
Q2
A1013
VCC_5V
LED2
R4 4K7
Q3
A1013
VC C_5V
LED1
R5 4K7
Q4
A1013
R6 4K7
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
1
2
4
5
6
7
9
10
3
e
d
c
VCC
1
2
4
5
6
7
9
10
3
e
d
c
VCC
1
2
4
5
6
7
9
10
e
d
c
VCC
1
2
4
5
6
7
9
10
VCC
e
d
c
VCC
g
f
a
b
e
d
c
VCC
R 10 330
1
2
3
4
5
6
7
8
VCC
VCC
LED CONTROL
J4
E
D
C
DP
B
A
F
G
DATA LED
U3 LED 7
U4 LED 7
Q5
A1013
LED1
LED2
LED3
LED4
2
DOWN
Q6
A1013
4
3
2
1
VCC_5V
C1
104
SW4
P2.0/DOWN
D0-D 7
VCC
GND
VC C_5V
J5
OUT
U10
BUZZER
UP
GND
RS
RW
E
VSS
VD D
VEE
SW2
U5 LED7
U6
LED7
Trang 12
TH NGHIM VI IU KHIN
2.2.
VCC_5V
R1
VCC_5V
U4
6
5
4
3
2
1
LPT PORT
R3 100
1
19
R4 1K
2
3
4
5
6
7
8
9
R5 100
R6 100
A1
A2
A3
A4
A5
A6
A7
A8
74HC541
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
18
17
16
15
14
13
12
11
J4
3
1
4
2
SPI PROGRAM
10
R7 100
G1
G2
GND
J3
VCC
5
4
3
2
20
4K7
Trang 13
TH NGHIM VI IU KHIN
1
2
3
4
5
6
7
8
P1.0/T2
P1.1/T2EX
P1.2
P1.3
P1.4/SS
P1.5/MOSI
P1.6/MISO
P1.7/SCK
VC C
40
U7
P0.0/AD 0
P0.1/AD 1
P0.2/AD 2
P0.3/AD 3
P0.4/AD 4
P0.5/AD 5
P0.6/AD 6
P0.7/AD 7
VCC_5V
R18
AT89S52
39
38
37
36
35
34
33
32
2
3
4
5
6
7
8
9
RXD
TXD
I NFR A RED EY E/P3.2
STAN D_BY LED/P3.3
BU ZZER/P3.4
AC LAMP/P3. 5
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
4K7
10
11
12
13
14
15
P3.0/R XD
P3.1/TXD
P3.2/I NT0
P3.3/I NT1
P3.4/T0
P3.5/T1
P3.6/W R
P3.7/R D
ALE/PROG
P2.7/A15
VC C_5V
31
R /W
RD
ALE
A15
EA/VPP
R27 100
SW 1
RESET
16
17
30
28
PSEN
C3
29
10uF
9
R ESET
R ST
J 11
R28
P2.6/A14
P2.5/A13
P2.4/A12
P2.3/A11
8K2
27
26
25
24
1
2
3
4
LC D CONTR OL/LED C ONTR OL
C4 33p
XTAL2
Y1
11.0592
C5 33p
XTAL1
P2.2/A10
P2.1/A9
P2.0/A8
23
22
21
P2.2/U P
P2.1/MODE
P2.0/D OW N
20
19
GND
18
Trang 14
TH NGHIM VI IU KHIN
D1
LED
D2
LED
R19
330
D3
LED
R20
330
D4
LED
R21
330
D5
LED
R22
330
D6
LED
R23
330
D7
LED
R24
330
D8
LED
R25
330
R26
330
VC C_5V
LED1
LED2
LED3
LED4
LED4
VC C_5V
Q1
A1013
LED3
R 3 4K7
VC C_5V
Q2
A1013
LED2
R 4 4K7
VCC _5V
Q3
A1013
LED 1
R 5 4K7
Q4
A1013
R6 4K7
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
E
D
C
DP
B
A
F
G
a
f
g
1
2
4
5
6
7
9
10
3
e
d
c
VC C
1
2
4
5
6
7
9
10
3
e
d
c
VC C
1
2
4
5
6
7
9
10
e
d
c
VC C
1
2
4
5
6
7
9
10
VC C
e
d
c
VC C
g
f
a
b
e
d
c
VC C
R 10 330
1
2
3
4
5
6
7
8
VC C
J4
VC C
LED C ONTROL
E
D
C
DP
B
A
F
G
DATA LED
U 3 LED7
U 4 LED7
U 5 LED7
U6
LED 7
Trang 15
TH NGHIM VI IU KHIN
Trang 16
TH NGHIM VI IU KHIN
15
16
A
K
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
7
8
9
10
11
12
13
14
4
5
6
1
2
3
RS
RW
E
VSS
VDD
VEE
U1
8
7
6
5
4
3
2
1
VCC_5V
VCC_5V
J5
D0-D7
R17 330
1
2
3
4
Q5
A1013
J6
LCD CONTROL
P2.2/UP
SW3
MODE
P2.1/MODE
SW4
DOWN
P2.0/DOWN
Trang 17
TH NGHIM VI IU KHIN
R30 330
2
1
VCC_5V
STAND_BY LED
J12
INTERRUPT 1
VCC_5V
C1
104
VCC
VCC_5V
GND
U10
BUZZER
R29 4K7
Q6
A1013
BUZZER/P3.4
Trang 18
TH NGHIM VI IU KHIN
3
2
1
J14
C6
104
U12
R32
4K7
R33
330
D12
R31
330
2
MOC3020
LED
A1-G-A2
RXD
TXD
RS232
VCC_5V
Trang 19
TH NGHIM VI IU KHIN
PHN III
THC HNH
3.1.
Trang 20
TH NGHIM VI IU KHIN
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
}
}
Trang 21
TH NGHIM VI IU KHIN
3.1.3. Bi tp m rng
1.
2.
3.
S dng ngt timer vit chng trnh iu khin sao cho 8 LED n
mi LED chp vi mt tn s khc nhau.
3.2.
3.2.1. Mc ch, yu cu
Gip sinh vin lm quen vi vic iu khin Buzzer to ra chui m beep
vi cc tn s khc nhau cho cc ng dng nh nhn phm, bo thc
3.2.2. Chng trnh tham kho
#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);
Trang 22
TH NGHIM VI IU KHIN
}
}
void delay(unsigned int time)
{
while(time--)
{
TMOD = 0x01;
TH0 = 0xFF;
TL0 = 0xBA;
TR0 = 1;
while(!TF0);
TF0 = 0 ;
TR0 = 0;
}
}
3.2.3. Bi tp m rng
1.
2.
thc.
3.3.
3.3.1. Mc ch, yu cu
Gip sinh vin lm quen vi thao tc kim tra nt nhn n trong cc ng dng
nhp d liu, hiu chnh thng s,ci t
3.3.2. Chng trnh tham kho
Chng trnh kim tra ln lt ba nt UP, MODE, DOWN, nu mt trong ba
nt c nhn th iu khin pht m beep thng bo phm c nhn, ng
iu khin tt hoc m LED tng ng.
#include <p89v51rx2.h>
//khai bao cac chan dieu khien
#define BTN_UP
#define BTN_DOWN
#define BTN_MODE
P2_2
P2_0
P2_1
#define LED0
#define LED1
#define LED2
P1_0
P1_1
P1_2
#define BUZZER
Trang 23
TH NGHIM VI IU KHIN
nha
nut
nha
nut
DOWN
LED1 = ~LED1;
}
}
if (!BTN_MODE)
{
delay (200); //delay chong doi
if (!BTN_MODE)
{
beep();
while (!BTN_MODE); //cho
MODE
LED2 = ~LED2;
}
}
Trang 24
TH NGHIM VI IU KHIN
}
}
//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. Bi tp m rng
Vit chng trnh iu khin sao cho nu nt Up nhn 8 LED n s dch t
tri sang phi, nt Down nhn dch t phi sang tri, nt Mode nhn th nhp nhy c 8
LED, mi kiu sng lp li 5 ln. Sau chng trnh tr li kim tra 3 nt nh ban
u.
3.4.
3.4.1. Mc ch, yu cu
Gip sinh vin lm quen vi vic iu khin hin th d liu trn LED 7 on
trong cc ng dng nh m sn phm, n giao thng, ng h bo gi
Sinh vin phi nm c k thut qut LED, k thut s dng ngt timer, bit
cch kt ni phn cng (kt ni header Data LED / D0 D7 (P0), LCD control / LED
Trang 25
TH NGHIM VI IU KHIN
control khi MCU vi header Data LED v LED control khi hin th LED 7 on
).
3.4.2. Chng trnh tham kho
Chng trnh sau m t 0 100 hin th ra led 7 on
#include <at89x52.h>
#define BTN_PRESSED
1
#define BTN_NOT_PRESSED 0
#define btnUp
#define btnDown
#define buzz
P2_0
#define ledUnits
#define ledTens
#define ledHundress
P2_3
P2_1
P3_4
P2_4
P2_5
char scrBuffer[3];
char count = 0;
char pos = 0;
0;
TH NGHIM VI IU KHIN
0)
0xff; //turn off all led
0xff; //clear data
1;
on
if (++ pos == 3) pos = 0;
on = 0;
}
}
Trang 27
TH NGHIM VI IU KHIN
3.4.3. Bi tp m rng
1.
hnh led.
Vit chng trnh hin th ch HELLO chy t phi qua tri trn mn
2.
Vit chng trnh iu khin ban u hin th s 0, nu nt UP c
nhn th tng gi tr hin th ln mt n v, nu nt DOWN c nhn th gim mt
n v, nt MODE c nhn th mch t ng m ln t gi tr hin hnh n 100
ri tr v 0 v tip tc m ln, nu nhn nt MODE ln na th dng li, lp li qu
tnh kim tra ba nt nh ban u.C m nhn phm, trong qu trnh tng t ng hai
nt UP v DOWN vn c tc dng.
3.5.
3.5.1. Mc ch, yu cu
Gip sinh vin lm quen vi vic iu khin hin th d liu trn mn hnh LCD
trong cc ng dng nh m sn phm, ng h bo gi, hin th chui thong bo
Sinh vin phi nm c cu to v cch thc iu khin hin th trn mn hnh
LCD.
3.5.2. Chng trnh tham kho
Chng trnh iu khin hin th hai dng Text ra mn hnh LCD sau di
chuyn hai dng text qua tri, qua phi.
#include <AT89x52.h>
//khai bao macro
#define LCD_DATA_PORT
#define LCD_E
#define LCD_RW
#define LCD_RS
P0
P2_5
P2_4
P2_3
#define lcd_char(chr)
#define lcd_cmd(cmd)
lcd_send_byte(1, chr)
lcd_send_byte(0, cmd)
Trang 28
TH NGHIM VI IU KHIN
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);
Trang 29
TH NGHIM VI IU KHIN
lcd_cmd(0x38);
lcd_cmd(0x01);
lcd_cmd(0x06);
lcd_cmd(0x0C);
// clear lcd
// move cursor to right
// lcd on, cursor off
5x7 dot
}
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. Bi tp m rng
Vit chng trnh iu khin hin th dng text ra mn hnh LCD kt hp vi
nt nhn v Buzzer. Nu nt c nhn th Buzzer pht ra m Beep bo nhn phm,
v mn hnh hin th dng text th nht, tng t nu tip tc nhn th dng text khc
s xut hin trn mn hnh LCD.
3.6.
3.6.1. Mc ch, yu cu
Gip sinh vin lm quen vi vic truy xut d liu thi gian t IC real time cho
cc ng dng yu cu thi gian thc nh ng h bo gi
Sau bi tp ny, sinh vin phi nm c cc im sau:
Cch khai bo ng dn n th vin.
Cch truy xut b nh ngoi bng Keil C
S dng c IC DS12887 cho cc ng dng cn c thi gian thc
3.6.2. Chng trnh tham kho
Chng trnh ng h bo gi, pht, giy bng cch truy xut d liu thi gian
t DS12887, cho php khi to li DS12887.
#include <AT89x52.h>
#include "lcd_lib.h"
Trang 30
TH NGHIM VI IU KHIN
_at_ 0x0000;
_at_ 0x0001;
_at_ 0x0002;
_at_ 0x0003;
_at_ 0x0004;
_at_ 0x0005;
_at_ 0x0006;
_at_ 0x0007;
_at_ 0x0008;
_at_ 0x0009;
_at_ 0x0032;
//--------------------------------------------------
_at_ 0x000A;
_at_ 0x000B;
_at_ 0x000C;
_at_ 0x000D;
//--------------------------------------------------
Trang 31
TH NGHIM VI IU KHIN
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);
}
}
Trang 32
TH NGHIM VI IU KHIN
return
//
new
installed
IC
or
Trang 33
TH NGHIM VI IU KHIN
PHN IV
BI TP M RNG
Bi 1: Vit chng trnh iu khin n giao thng s dng khi LED n v
khi LED 7 on. Cho php thay i gi tr thi gian bng cch s dng khi nt
nhn, kt hp vi khi Buzzer pht m nhn phm.
Bi 2: Vit chng trnh chung vui hc cho 3 i chi, s dng khi
LED n, khi nt nhn v Buzzer.
Bi 3: Vit chng trnh gii m tn hiu Remote TV Philips hoc TV Sony,
bng cch s dng khi Infrared Reciver v khi LED 7 on. Hin th gi tr phm
nhn c 0-9 ra LED 7 on.
Bi 4: Vit chng trnh ng h hin th bng mn hnh LCD cho php ngi
s dng hiu chnh thi gian v ci t thi gian chung. Hiu chnh bng khi nt
nhn v bo chung bng khi Buzzer.
Bi 5: Vit chng trnh ng h hin th bng mn hnh LCD cho php ngi
s dng hiu chnh thi gian v ci t thi gian chung. Hiu chnh bng Remote
TV v bo chung bng khi Buzzer.
Bi 6: Vit chng trnh kt hp Remote TV vi khi hin th LCD cho php
ngi s dng nhp on text vo bng cc phm trn Remote sau cho php to ra
cc hiu ng di chuyn on text bng cc nt iu khin trn Remote TV.
Trang 34