You are on page 1of 110

HNG DN S DNG KIT 8051

Mc lc
Gii thiu kit th nghim BK89IT ...................................................................................... 4
M hnh lp trnh C trong vi iu khin ............................................................................. 5
Bi 1 : Hng dn ci t Keil C v Flash Magic.......................................................... 6
1.1 Ci t Keil C ........................................................................................................... 6
1.2 Ci t Flash Magic ................................................................................................ 11
1.3 Cu hnh cho Flash Magic ...................................................................................... 16
Bi 2 : Truy xut Port I/O............................................................................................. 22
2.1 To project trn Keil C ........................................................................................... 22
2.2 Vit chng trnh n gin ..................................................................................... 32
2.2.1 Kt ni phn cng............................................................................................ 32
2.2.2 Vit chng trnh ............................................................................................. 33
2.2.3 Np chng trnh ............................................................................................. 34
2.2.4 Cc li xy ra khi np chng trnh................................................................. 35
Bi 3 : iu khin n gin Led 7 on....................................................................... 38
3.1 Kt ni phn cng:.................................................................................................. 38
3.2 Vit chng trnh .................................................................................................... 39
3.2.1 Hm init_main()............................................................................................... 39
3.2.2 Hm main() ...................................................................................................... 39
3.3 Mt s li lp trnh quan trng ............................................................................... 41
Bi 4 : Ngt Timer........................................................................................................ 42
4.1 Khai bo ngt timer................................................................................................. 42
4.2 Vit chng trnh .................................................................................................... 43
4.2.1 Hm init_timer1() ............................................................................................ 43
4.2.2 Hm start_timer1()........................................................................................... 43
4.2.3 Hm timer1_isr().............................................................................................. 43
4.2.4 Hm delay_ms(unsigned int duration)............................................................. 44
4.2.5 Hm stop_timer1()........................................................................................... 44
Bi 5 : Dng ngt timer vit ng dng LED RIVER ................................................... 45
5.1 Kt ni phn cng................................................................................................... 45
5.2 Vit chng trnh .................................................................................................... 45
Bi 6 : Chng rung cho phm ....................................................................................... 47
6.1 Nguyn l chng rung............................................................................................. 47
6.2 Kt ni phn cng................................................................................................... 48
6.3 Vit chng trnh .................................................................................................... 49
6.3.1 Hm initKey() .................................................................................................. 49
6.3.2 Hm getKey() .................................................................................................. 49
Bi 7 : Qut led iu khin Led 7 on ........................................................................ 51
7.1 Nguyn l qut led 7 on ...................................................................................... 51
7.2 Kt ni phn cng................................................................................................... 52
7.3 Vit chng trnh .................................................................................................... 52
7.3.1 Hm init_led7()................................................................................................ 52
7.3.2 Hm clear_led7() ............................................................................................. 53
7.3.3 Hm set_position(unsigned int pos) ................................................................ 53
7.3.4 Hm get_position() .......................................................................................... 53
BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051


7.3.5 Hm put_Number(unsigned int num) .............................................................. 54
7.3.6 Hm put_string(char strNum[]) ....................................................................... 54
7.3.7 Hm scan_led7................................................................................................. 54
Bi 8 : iu khin Ma trn led ..................................................................................... 56
8.1 Nguyn l iu khin ma trn led........................................................................... 56
8.2 Kt ni phn cng................................................................................................... 56
8.3 Vit chng trnh .................................................................................................... 56
8.3.1 Hm init_led_matrix() ..................................................................................... 57
8.3.2 Hm scan_led_matrix().................................................................................... 57
8.3.3 Hm update_display_led_matrix() .................................................................. 57
Bi 9 : Chy ch trn Ma trn led ................................................................................ 59
9.1 Nguyn l chy ch trn ma trn led ...................................................................... 59
9.2 Kt ni phn cng................................................................................................... 60
9.3 Vit chng trnh .................................................................................................... 60
9.3.1 Hm set_message(char strMsg[]) .................................................................... 60
9.3.2 Hm main() ...................................................................................................... 61
Bi 10 :
Ngt ngoi..................................................................................................... 62
10.1 Nguyn l iu khin ngt ngoi .......................................................................... 62
10.2 Kt ni phn cng................................................................................................. 62
10.3 Vit chng trnh .................................................................................................. 62
10.3.1 Hm init_ext_int0()........................................................................................ 62
10.3.2 Hm init_ext_int1()........................................................................................ 62
10.3.3 Hm ext0_isr() ............................................................................................... 63
10.3.4 Hm ext1_isr() ............................................................................................... 63
Bi 11 :
iu khin encoder ....................................................................................... 64
11.1 Nguyn l iu khin encoder .............................................................................. 64
11.2 Kt ni phn cng................................................................................................. 65
11.3 Vit chng trnh .................................................................................................. 65
Bi 12 :
Giao tip UART............................................................................................ 67
12.1 Nguyn l giao tip UART................................................................................... 67
12.2 Giao tip UART vi my tnh .............................................................................. 68
12.3 Vit chng trnh .................................................................................................. 69
12.3.1 Thanh ghi iu khin truyn nhn ni tip .................................................... 69
12.3.2 Dng Timer1 to Baud rate ........................................................................... 71
12.3.3 Chng trnh truyn nhn UART trn 8051.................................................. 71
12.4 Kim tra truyn nhn UART ................................................................................ 74
12.5 Xy dng chng trnh trn PC ............................................................................ 74
12.5.1 Load cc cng COM ca PC ln ComboBox ................................................ 78
12.5.2 Kt ni cng vi cng COM.......................................................................... 79
12.5.3 Gi d liu ..................................................................................................... 80
12.5.4 Nhn d liu................................................................................................... 81
Bi 13 :
Giao tip PS2 vi bn phm .......................................................................... 85
13.1 Nguyn l giao tip PS2 ....................................................................................... 85
13.2 Kt ni phn cng................................................................................................. 86
13.3 Vit chng trnh .................................................................................................. 87
Bi 14 :
PWM iu khin motor................................................................................. 88

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051


14.1 Khi nim PWM ................................................................................................... 88
14.2 Lp trnh PWM trn 89V51 .................................................................................. 89
Bi 15 :
Giao tip LCD character ............................................................................... 90
15.1 Chc nng cc chn ca LCD............................................................................... 90
15.2 Kt ni mn hnh LCD.......................................................................................... 91
15.3 Cc vng nh ca LCD......................................................................................... 91
15.3.1 Display Data Ram (DDRAM) ....................................................................... 91
15.3.2 Character Generator Ram (CGRAM) ............................................................ 91
15.3.3 B nh CGROM ............................................................................................ 92
15.4 Cc lnh c bn ca LCD ..................................................................................... 93
15.5 Kt ni LCD vi vi iu khin ............................................................................. 94
15.6 Khi to LCD ....................................................................................................... 95
15.7 Kt ni phn cng................................................................................................. 97
15.8 Vit chng trnh .................................................................................................. 98
15.8.1 Cc hm c bn.............................................................................................. 98
15.8.2 Khi to LCD ch 4 bit............................................................................. 98
15.8.3 Xo mn hnh................................................................................................. 99
15.8.4 Thit lp v tr con tr .................................................................................... 99
15.8.5 In k t ra mn hnh..................................................................................... 100
Bi 16 :
Giao tip I2C DS1307.............................................................................. 101
16.1 Cc c im ca DS1307 .................................................................................. 101
16.2 Nguyn l hot ng........................................................................................... 101
16.3 Cc tn hiu Input v Output............................................................................... 102
16.4 RTC v s a ch Ram.................................................................................. 103
16.5 Thng tin thi gian v lch.................................................................................. 103
16.6 Thanh ghi iu khin (Control Register) ............................................................ 104
16.7 Bus d liu ni tip............................................................................................. 104
16.8 Giao thc I2C v RTC DS1307 ......................................................................... 105
16.8.1 Kt ni phn cng........................................................................................ 105
16.8.2 Start v Stop truyn d liu ......................................................................... 105
16.8.3 Truyn 1 byte d liu................................................................................... 107
16.8.4 Giao tip vi DS1307 .................................................................................. 108

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051

Gii thiu kit th nghim BK89IT

Cc chc nng ca board th nghim BK89IT :


v 8 nt nhn : ni vi P3.
v 8 led 7 on : h tr qut led, P0 gi d liu v P2 chn led.
v Led ma trn 2 mu : P0 gi d liu m , P2 gi d liu xanh, P1 chn ct hin
th.
v Giao tip vi bn phm PS2.
v Giao tip COM
v 4 chn dng kt ni encoder.
v Cu hnh bng switch : Switch 1 cho Port 1, 2 cho Port 3, 3 cho led ma trn v 4
cho led 7 on.
v Cp ngun ngoi hoc USB.
v Mch np onboard.

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051

M hnh lp trnh C trong vi iu khin


timer.h
#ifndef __TIMER_H_
#define __TIMER_H_
#include "LED7\led7.h"
extern int counter0;
void init_timer0();
void init_timer1();
...............
#endif
main.c
#include "TIMER\timer.h"
#include "LED7\led7.h"
#include <REG51F.H>
void main()
{
init_main();
init_timer0();
....................
while1(){}
}

led7.h

timer.c
#include "timer.h"
int counter0;
int counter1;
void init_tim er0();
{
IE |= 0x20;
TR0 = 1;
..........................
}
void init_tim er1()
{
..........................
}
void private_function()
{
..........................
}

led7.c

#ifndef __LED7_H_
#define __LED7_H_

#include "led7.h"
unsigned char led7_buff[8];

void init_led7();
void scan_led7();
...............

void init_led7();
{
P0 = 0x00;
T2 = 0x00;
..........................
}
void scan_led7()
{
..........................
}
void private_function()
{
..........................
}

#endif

c th t chc tt chng trnh, thng thng mi module ta s chia lm 2


file:
v File .h : Khai cc hm v extern cc bin ton cc.
v File .c : Hin thc cc hm c khai bo trong file .h.
Khi mun s dng module ny, ta ch cn include file .h l c th gi c cc
hm c khai bo trong file .h.

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051

Bi 1 :

Hng dn ci t Keil C v Flash Magic

Mc ch :
Ci t Keil C son tho chng trnh.
Ci t Flash Magic np chng trnh.
Cu hnh cho Flash Magic.

1.1 Ci t Keil C
Keil C l chng trnh h tr kh y ngi dng son tho chng trnh
dnh cho cc vi iu khin thuc h 8051. ci t bn tin hnh theo cc bc nh
sau:
Bc 1 : Click vo file c51v815.exe trong CD i km, mn hnh sau s xut hin

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051


Bc 2 : Chn Next, mn hnh sau s xut hin.

Bc 3 : Click chn I agree v chn Next, mn hnh sau s xut hin.

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051


Bc 4 : Bn c th mc nh v chn Next. Tuy nhin bn c th thay i
Destinatioin Folder, l th mc cha 1 s th vin h tr trong vic lp trnh trn Keil C.
Mn hnh sau xut hin bn in 1 s thng tin c nhn.

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051


Bc 5 : Chn Next bt u ci t

Bc 6 : Khi ci t xong, mn hnh sau xut hin v bn nhn Finish hon tt


qu trnh ci t.

BKIT HARDWARE CLUB

www.bkit4u.com

HNG DN S DNG KIT 8051

Bc 7 : Trang web sau hin th gii thiu v KeilC phin bn ny.

Cc bc cu hnh cho Keil C dch chng trnh ra file Hex s c trnh by


trong bi thc hnh tip theo.

BKIT HARDWARE CLUB

www.bkit4u.com

10

HNG DN S DNG KIT 8051


1.2 Ci t Flash Magic
y l chng trnh dng np file Hex cho 89V51. ci t bn lm theo cc
bc sau :
Bc 1 : Double click vo file FlashMagic.exe, mn hnh sau s xut hin

Bc 2 : Chn Next

BKIT HARDWARE CLUB

www.bkit4u.com

11

HNG DN S DNG KIT 8051

Bc 3 : Click chn I accept v chn Next

BKIT HARDWARE CLUB

www.bkit4u.com

12

HNG DN S DNG KIT 8051


Bc 4 : Bn c th mc nh v chn Next, hoc thay i ng dn ca th mc ci
t nu bn mun. Khi click Next mn hnh sau s xut hin.

Bc 5 : mc nh v chn Next

BKIT HARDWARE CLUB

www.bkit4u.com

13

HNG DN S DNG KIT 8051

Bc 6 : Chn Next.

BKIT HARDWARE CLUB

www.bkit4u.com

14

HNG DN S DNG KIT 8051


Bc 7 : Chn Install ci t.

Bc 8 : Khi ci t xong mn hnh sau s xut hin, bn nhn Finish kt thc ci t.

BKIT HARDWARE CLUB

www.bkit4u.com

15

HNG DN S DNG KIT 8051

1.3 Cu hnh cho Flash Magic


Bc 1 : Khi ng Flash Magic t mn hnh Desktop (hoc vo Start\Program
Files\Flash Magic v chn Flash Magic), mn hnh sau s xut hin

BKIT HARDWARE CLUB

www.bkit4u.com

16

HNG DN S DNG KIT 8051

Bc 2 : Bn chn Baud Rate l 9600, Device l chip tng ng m bn dng.


Check chn Verify after programming v Erase blocks used by Hex File.

BKIT HARDWARE CLUB

www.bkit4u.com

17

HNG DN S DNG KIT 8051

Bc 3 : Chn menu Option v chn Advance Option, mn hnh sau s xut hin :

BKIT HARDWARE CLUB

www.bkit4u.com

18

HNG DN S DNG KIT 8051


Bc 4 : Chn qua tab Hardware Config v check chn Assert DTR and RTS
while COM Port open. Nhn OK ng ca s ny li.

Bc 5 : Xem cng COM ang l cng no. Bn thu nh Flash Magic li, trn
mn hnh Desktop, t biu tng My Computer, click phi chut v chn Manage.

BKIT HARDWARE CLUB

www.bkit4u.com

19

HNG DN S DNG KIT 8051


Bc 6 : Mn hnh sau xut hin, bn chn Device Manager.

Bc 7 : Cm dy cng COM nu bn ang dng USB to COM, m rng Ports


(COM &LPT), bn s bit c tn cng COM ang dng (trong v d ny l COM 9).

BKIT HARDWARE CLUB

www.bkit4u.com

20

HNG DN S DNG KIT 8051

Bc 9 : Kch hot li Flash Magic v chn cng COM tng ng.

BKIT HARDWARE CLUB

www.bkit4u.com

21

HNG DN S DNG KIT 8051

Bi 2 :

Truy xut Port I/O

Mc ch:
To project n gin trong Keil C v cu hnh cho Keil C.
iu khin Port 1 v Port 3.
Np chng trnh bng Flash Magic.
Yu cu:
Vit chng trnh nhn nt 1 n th 1 sng, nt 2 n th 2 sng,.

2.1 To project trn Keil C


Bc 1 : Kch hot Keil uVision3, ca s Keil C hin ra.

Bc 2 : Chn Project v chn New uVision Project

BKIT HARDWARE CLUB

www.bkit4u.com

22

HNG DN S DNG KIT 8051

Bc 3 : Chn ng dn v g tn project v khung File name, chn Save,


khung ca s sau y xut hin.

BKIT HARDWARE CLUB

www.bkit4u.com

23

HNG DN S DNG KIT 8051

Bc 4 : Chn chip tng ng vi board ca bn, trong board ca chng ti s


dng 89V51RB2. Browse ti NXP, v chn P89V51RB2

BKIT HARDWARE CLUB

www.bkit4u.com

24

HNG DN S DNG KIT 8051

Bc 5 : Sau khi nhn OK, mn hnh sau s xut hin, bn chn No

Bc 6 : Project c to ra nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

25

HNG DN S DNG KIT 8051

Bc 7 : Cu hnh to ra file Hex, bn chn menu Project, chn Option for


Target

BKIT HARDWARE CLUB

www.bkit4u.com

26

HNG DN S DNG KIT 8051


Bc 8 : Mn hnh sau xut hin

BKIT HARDWARE CLUB

www.bkit4u.com

27

HNG DN S DNG KIT 8051


Bc 9 : Chn tab Output, v click chn Click Hex File

Bc 10 : Chp th file REG51F.H (nu ci mc nh s nm trong th mc


C:\Keil\C51\INC\Philips hoc bn c th copy trong CD i km) l file define cc thanh
ghi ca 89V51 vo cng cp vi file project.

BKIT HARDWARE CLUB

www.bkit4u.com

28

HNG DN S DNG KIT 8051

Bc 11 : Bn c th chn v nhn Delete Source Group1 do Keil C t to ra, v


t to Group mi cho mnh. Chn Target, click phi chut v chn New Group, 1 group
mi c to ra, i tn thnh Main cho gi nh. Trong tt c cc bi demo, group ny s
cha file main.c, l file chnh chy chng trnh.

BKIT HARDWARE CLUB

www.bkit4u.com

29

HNG DN S DNG KIT 8051


Bc 11 : To mi 1 file bng cch chn menu File ri chn New. Chn tip
menu File ri chn Save, khung ca s sau s hin ln, bn nhp tn file vo v nhn
Save.

Bc 12 : Click phi vo group Main, v chn Add Files to Group Main

BKIT HARDWARE CLUB

www.bkit4u.com

30

HNG DN S DNG KIT 8051

Bc 13 : Ch ng dn n file main.c m bn va to, nhn Add ri nhn tip


Close.

BKIT HARDWARE CLUB

www.bkit4u.com

31

HNG DN S DNG KIT 8051


Bc 14 : Click vo du + ca Main, bn s thy file main.c c thm vo
project

2.2 Vit chng trnh n gin


Keil C h tr compiler ca C chun, nn cu trc chng trnh ca n hon ton
ging C chun. Bn c th tm hiu thm v lp trnh C nng cao kh nng t chc 1
chng trnh C. Tuy nhin, i theo trnh t ca cc bi th nghim ny, bn cng c th
nm c 1 cu trc ca chng trnh C chun vit cho 89V51.
Yu cu ca bi th nghim ny l vi nt 1 c nht, th n led 1 sng, nt 2
c nhn th n 2 sng,.

2.2.1 Kt ni phn cng


Gt switch 1 ln ON kch hot Port 1.
Gt switch 2 ln ON kch hot Port 3.

Cc nt nhn c ni vi P3 (Port 3) ca vi iu khin theo trnh t nt 1 ni vi


P3.0, nt 2 ni vi P3.1, v.v. Cc nt nhn tch cc 0.

BKIT HARDWARE CLUB

www.bkit4u.com

32

HNG DN S DNG KIT 8051

y l kiu kt ni phm n gin nht, cc gii php kt ni phm khc tt hn


s c trnh by bi chng rung cho phm.
Cc n led c ni vi P1 (Port 1) ca vi iu khin, n 1 ni vi P1.0, n 2
ni vi P1.1, v,v. Cc n tch cc mc 1.

2.2.2 Vit chng trnh


Trong file main.c, bn vit code nh sau :
#include <REG51F.H>
void main()
{
while(1)
{
P1 = ~P3;
}
}
Do P3 tch cc mc 0, nt 1 c nhn gi tr ca n s l 1111 1110 = 0xFE,
~P3 lc s l 0000 0001 = 0x01. P1 tch cc mc 1 nn P1 = 0x01 th n 1 s sng.
Chn menu Project v chn Build Target hoc nhn F7 dch chng trnh. Nu
c li, Keil C s thng bo bn sa, nu khng c li file Hex s c to ra cng cp
vi file project.

BKIT HARDWARE CLUB

www.bkit4u.com

33

HNG DN S DNG KIT 8051


2.2.3 Np chng trnh
Bc 1 : Kt ni mch np vi board thng qua jack 4, vi chn s 1 l VCC,
chn 2 l GND, chn 3 l TX v chn 4 l RX.
Bc 2 : Gn ngun cho kit th nghim.
Bc 3 : Khi ng Flash Magic.
Bc 4 : Chn menu ISP v chn Erase Flash Pages xo code c trong
89V51RB2. Bn cn phi lm bc ny trc khi np chng trnh cho cc dng 8051
khng t xo. Mn hnh sau s hin ln :

Bn dng thm t hp phm Shift c th chn c nhiu Pages, v nhn


Erase. Khi mn hnh sau hin ln, bn nhn nt Reset trn board tip tc (nn nhn v
gi trong khong 2 giy).

Bc 5 : Khi ca s sau hin ln, nhn OK tip tc

BKIT HARDWARE CLUB

www.bkit4u.com

34

HNG DN S DNG KIT 8051


Bc 6 : Nhn Browse chn ng dn ti file Hex cn np ri nhn Start.

Bc 7 : Khi thy Status l Finished, bn c th nhn nt Reset trn board bt


u chy chng trnh ca bn.

2.2.4 Cc li xy ra khi np chng trnh


Di y l 1 s li ph bin khi np chng trnh. Kinh nghim tm li l
kim tra qua ht cc li thng dng di y hoc da vo cc thng bo li phn
on.
Cha cu hnh Flash Magic

BKIT HARDWARE CLUB

www.bkit4u.com

35

HNG DN S DNG KIT 8051


khc phc li ny, bn chn vo menu Opition/ Advance Option , chn qua
tab Hardware Config v check chn Assert DTR and RTS while COM Port open. Nhn
OK ng ca s ny li.

Chn sai cng COM

Chn sai tc Baud

li ny, Flash Magic hin th thng bo yu cu bn nhn reset, nhng khi nhn
reset th thng bo trn xut hin, bn chnh li tc Baud l 9600.

BKIT HARDWARE CLUB

www.bkit4u.com

36

HNG DN S DNG KIT 8051


Chn sai chip

li ny, Flash Magic cng chy c ti phn ch nhn nt Reset, sau khi n
nt Reset th thng bo ny xut hin.
Xung t Port 3
Li ny xut hin l do ngi lp trnh can thip n Port 3, nn Flash Magic
khng th giao tip c vi vi iu khin np chng trnh. Khi b li ny thng bo
sau y s xut hin (tng t nh thng bo chn sai cng COM) :

khc phc li ny, trc khi np bn nhn nt Reset, mi thao tc vn din


ra bnh thng cho n khi ca s yu cu bn nhn nt Reset, bn gia thm vi giy ri
th ra. Cch th 2 l rt ngun ca board ra, cho n khi Flash Magic yu cu bn nhn
Reset th cm ngun vo.
Nu nh kim tra qua ht cc li kia m chng trnh vn cha np c, th
nguyn nhn c th l bn cm ngc chiu mch np, phn mm Flash Magic b li, IC
MAX 232 b h hoc h vi iu khin.

BKIT HARDWARE CLUB

www.bkit4u.com

37

HNG DN S DNG KIT 8051

Bi 3 :

iu khin n gin Led 7 on

Mc ch:
Nm nguyn l iu khin led 7 on.
Yu cu:
Vit chng trnh nhn nt 1 s hin th s 0 led 7 on ngoi cng, nt 2 s
hin th s 1 led 7 on k tip, v.v

3.1 Kt ni phn cng:


Gt switch 2 ln ON kch hot Port 3 l cc nt nhn.
Gt switch 4 ln ON kch hot Led 7 on.
Port 2 dng chn led 7 on no s c sng v Port 0 l d liu cho led 7
on .

P0 : Data
P0.0 : a
P0.1 : b
P0.2 : c
P0.3 : d
P0.4 : e
P0.5 : f
P0.6 : g
P0.7 : dot

BKIT HARDWARE CLUB

P2 : Select
P2.0 : Led 1
P2.0 : Led 2
P2.0 : Led 3
P2.0 : Led 4
P2.0 : Led 5
P2.0 : Led 6
P2.0 : Led 7
P2.0 : Led 8

www.bkit4u.com

38

HNG DN S DNG KIT 8051

Vi kt ni phn cng nh vy, hin th s 5 th d liu xut ra s l 0x6D


(0110 1101). Tng t, gi tr cho cc s t 0 n 9 s l :
unsigned char led7_data[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

3.2 Vit chng trnh


3.2.1 Hm init_main()
Do c im ca phn cng, trong hm main, bn phi dng thm hm init_main,
gn cc Port 0,1,2 vi gi tr 0x00.
void init_main()
{
P0 = 0x00;
P2 = 0x00;
P1 = 0x00;
}
Cc chng trnh sau ny s u c hm ny.

3.2.2 Hm main()
Hm ny s gi init_main(), sau xt cc gi tr ca Port 3 v hin th ra led 7
on gi tr tng ng.
void main()
{
//P0 : Data
//P0.0 : a
//P0.1 : b
//P0.2 : c
//P0.3 : d

BKIT HARDWARE CLUB

P2 : Select
P2.0 : Led 1
P2.0 : Led 2
P2.0 : Led 3
P2.0 : Led 4

www.bkit4u.com

39

HNG DN S DNG KIT 8051


//P0.4 : e
//P0.5 : f
//P0.6 : g
//P0.7 : dot

P2.0 : Led 5
P2.0 : Led 6
P2.0 : Led 7
P2.0 : Led 8

unsigned char led7_data[10] =


{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

init_main();
while(1)
{
if((P3 & 0x01) == 0) // P3 = 1111 1110
{
P0 = led7_data[0];
P2 = 0x01;
}
else if((P3 & 0x02) == 0)// P3 = 1111 1101
{
P0 = led7_data[1];
P2 = 0x02;
}
else if((P3 & 0x04) == 0)// P3 = 1111 1011
{
P0 = led7_data[2];
P2 = 0x04;
}
else if((P3 & 0x08) == 0) // P3 = 1111 0111
{
P0 = led7_data[3];
P2 = 0x08;
}
else if((P3 & 0x10) == 0) // P3 = 1110 1111
{
P0 = led7_data[4];
P2 = 0x10;
}
else if((P3 & 0x20) == 0) // P3 = 1101 1111
{
P0 = led7_data[5];
P2 = 0x20;
}
else if((P3 & 0x40) == 0) // P3 = 1011 1111
{
P0 = led7_data[6];

BKIT HARDWARE CLUB

www.bkit4u.com

40

HNG DN S DNG KIT 8051


P2 = 0x40;
}
else if((P3 & 0x80) == 0) // P3 = 0111 1111
{
P0 = led7_data[7];
P2 = 0x80;
}
else
{
P0 = 0x00;
P2 = 0x00;
}
}
}
Cc bc dch v np chng trnh bn xem li bi trc. Code mu ca bi th
nghim ny bn c th tham kho th mc Bi 3 nh km trong CD ny.

3.3 Mt s li lp trnh quan trng


Li gi sai hm : Chng hn bn nh ngha hm l init_main(), nhng trong hm
main.c bn li gi l initmain() (thiu du _ ), th khi nhn F7 compile chng trnh, file
hex vn c to ra, nhng khi np vo chng trnh chy sai. Bn nn lu cc thng
bo ca compiler lc dch, s c thng bo sau :

Khi gi sai tn 1 hm, compiler ca KeilC s vn to ra file hex, bn nn lu


cc warning khc phc li.
Khng gi hm c nh ngha : 1 module c th dng li, thng thng
ta hin thc nhiu hm lin quan n n, nhng trong 1 ng dng khng gi ht tt c cc
hm , s c thng bo v trng hp ny. Tuy nhin y khng phi l li, file hex
c to ra vn s chy ng. Thng bo dng ny nh sau :

Nh thng bo trn, hm start_timer0() v start_timer1() khng c gi trong


bt k hm no.

BKIT HARDWARE CLUB

www.bkit4u.com

41

HNG DN S DNG KIT 8051

Bi 4 :

Ngt Timer

Mc ch:
Tm hiu ngt timer ca 89V51
Xy dng module dnh cho timer ca 89V51 c th dng li c.
Yu cu:
Vit chng trnh hin th t 0, sau 1 giy tng ln 1, khi tng n 9 th chuyn
sang hin th led k tip, hin th bt u li t 0.

4.1 Khai bo ngt timer


Trnh t l cho php ngt ton cc, cho php ngt timer v thit lp ch hot
ng cho timer:
IE = 0x80; //enable global interrupt
IE &= ~(0x02);// enable timer 0
IE |= 0x02;
TMOD &= ~(0x01);// setup mode for timer 0
TMOD |= 0x01;
TH0 = (-10000/256); //10 ms
TL0 = (-10000%256);
TR0 = 1;//start timer0
Hm phc v ngt s c khai bo nh sau:
void timer0_isr() interrupt 1
{
TR0 = 0;//stop timer 0
// reinitialize
TH0 = (-10000/256);
TL0 = (-10000%256);
//Add your code here

TR0 = 1;//start timer 0


}

BKIT HARDWARE CLUB

www.bkit4u.com

42

HNG DN S DNG KIT 8051


4.2 Vit chng trnh
V mc ch l to ra module Timer c kh nng dng li, nn chng trnh s
gm group TIMER c 2 file timer.h v timer.c. File timer.h c t cc hm ca module
ny cn file timer.c s hin thc cc hm . Cc hm trong timer.h bao gm:
void init_timer0();
void init_timer1();

//init timer 0, interrupt after 10ms


//init timer 1, interrupt after 1ms

void start_timer0();
void start_timer1();
void stop_timer0();
void stop_timer1();
void delay_ms(unsigned int duration);//using timer1 to delay in ms

4.2.1 Hm init_timer1()
Hm ny lm nhim v khi to ngt timer1 sau mi 1ms, khi khi to ngt
timer1 xong, ta phi hin thc hm phc v ngt qung cho n, nu khng chng trnh
s chy sai.
void init_timer1()
{
IE &= ~(0x08);// enable timer 1
IE |= 0x08;
TMOD &= ~(0x10);// setup mode for timer 1
TMOD |= 0x10;
TH1 = (-1000/256); //1 ms
TL1 = (-1000%256);
TR1 = 1; //start timer1
}

4.2.2 Hm start_timer1()
void start_timer1()
{
TR1 = 1;
}

4.2.3 Hm timer1_isr()
y l hm phc v ngt qung ca timer1, c khai bo v nh ngha nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

43

HNG DN S DNG KIT 8051


void timer1_isr() interrupt 3
{
TR1 = 0;//stop timer 1
// reinitialize
TH1 = (-1000/256);
TL1 = (-1000%256);
//Add your code here
if(counter1!= 0)
{
counter1--;
}
//End your code
TR1 = 1;//start timer 1
}

4.2.4 Hm delay_ms(unsigned int duration)


Hm ny ch cn ci t gi tr cho bin counter1, gi tr ny s t ng gim nh
on code trong hm phc v ngt qung ca timer1. Vng lp while ch cho n khi
counter1 bng 0.
void delay_ms(unsigned int duration)
{
counter1 = duration;
while(counter1 !=0)
{
}
}

4.2.5 Hm stop_timer1()
void stop_timer1()
{
TR1 = 0;
}
Phn hin thc cc bn xem trong project Bai 4 bit thm chi tit.

BKIT HARDWARE CLUB

www.bkit4u.com

44

HNG DN S DNG KIT 8051

Bi 5 :

Dng ngt timer vit ng dng LED RIVER

Mc ch:
Nm vng ngt timer.
S dng ngt timer vit ng dng LED RIVER.
Yu cu:
Vit chng trnh led river n gin, 1 led chy t P0.0 sang P1.1, n P0.7
chuyn sang P3.7, P3.6. Khi ti P3.0 th tr v P0.0. Thi gian chuyn qua trng thi mi
l 1s

5.1 Kt ni phn cng


Gt switch 1 ln ON kch hot Port 1 (cc led n).
Gt switch 2 ln ON kch hot Port 3 (cc led n v nt nhn).

5.2 Vit chng trnh


i vi led chy nh yu cu, ta thy c 16 trng thi ca P1 v P3 nh sau
P0.0 sng : P1 = 0x01, P3 = 0x00
P0.1 sng : P1 = 0x02, P3 = 0x00

P0.7 sng : P1 = 0x80, P3 = 0x00


P3.7 sng : P1 = 0x00, P3 = 0x80
P3.6 sng : P1 = 0x00, P3 = 0x40

P3.0 sng : P1 = 0x00, P3 = 0x01


Nh vy, ta s khai bo 2 mng, mi mng 16 phn t cho P1 v P3, ri cho 1
bin index t ng tng ln sau 1s, khi index bng 16 th gn li index bng 0, qu
trnh c lp li.
i vi led river c nhiu trng thi hn, bn ch cn khai bo ra tt c cc trng
thi vo 1 mng, ri ln lt nh k xut n ra.
Vic delay gia cc trng thi, ta s s dng li hm delay_ms(unsigned int
duration) lm bi th nghim trc.
i vi yu cu ca bi led river ny, chng ti ch s dng 1 mng 16 phn t
dng cho c 2 Port. Index ca P1 s tng dn t 0 n 15, Index ca P3 s gim dn t 15
n 0.
//led_river : mng 16 phn t
//INDEX_MAX = 16
//duration = 1000ms
while(1)
{
P3 = led_river[INDEX_MAX - index-1];
P1 = led_river[index++];
if(index == INDEX_MAX)
index = 0;
BKIT HARDWARE CLUB

www.bkit4u.com

45

HNG DN S DNG KIT 8051


delay_ms(duration);
}
Chi tit code ca bi th nghim ny, bn xem thm trong th mc Bi 5 trong CD
i km.

BKIT HARDWARE CLUB

www.bkit4u.com

46

HNG DN S DNG KIT 8051

Bi 6 :

Chng rung cho phm

Mc ch:
Nm vng k thut chng rung cho phm.
Yu cu:
Vit chng trnh xut s m ra led 7 on vi gi tr khi to l 0. Khi nhn nt
1 (c ni vi P3.0) th gi tr ny tng ln 1, tng n 9 th quay tr li 0.

6.1 Nguyn l chng rung

Hnh trn minh ho mc in p ca 1 phm nhn tch cc mc 0, trng thi


bnh thng, in p vi iu khin nhn vo l 5V cn khi nhn l 0V. Tuy nhin, do
rung c hc ca phm, ti thi im va nhn xung, in p s khng n nh trong 1
khong thi gian, trc khi n nh mc 0V. Hiu tng ny gi l rung phm.
Mc d khong thi gian in p mc 0 trong giai on rung phm l nh nhng
cng vi iu khin nhn c. V vy khi ta xt nu in p l 0 th gi hm func()
th hm ny s c gi rt nhiu ln, l iu m ta khng mong mun. khc phc
hin tng rung phm, c 2 hng gii quyt : dng phn cng v phn mm.
V gii php phn cng : thay v mc n gin nh kit th nghim ny (xem li s
Bi 2), ta c th dng thm t in hn ch vic thay i in p t ngt, s
nguyn l nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

47

HNG DN S DNG KIT 8051


s trn, khi khng nhn l mc 1, khi nhn l mc 0. Phm nhn trn tch
cc mc 0. Mch trn cn gi l mch RC.
Nu nt nhn c 2 cc (3 chn), ta c th chn gii php dng mch RS flip flop,
y l mch phn cng chng rung tt nht, s nguyn l nh sau:

V gii php phn mm : Ta s nh k c tn hiu t nt nhn, cho n khi no


chng trng nhau n ln th mi x l. Hnh di y minh ho trong trng hp 2 ln l 0
th mi xc nhn l phm c nhn v mi x l tc v m ta mong mun.

Khong thi gian gia 2 ln c l khong 10ms, ta s hin thc hm c ny v


gi n trong timer. Gii thut n gin x l chng rung c th hin thc nh sau:
previous_key = current_key;
current_key = Port_key;
If(previous_key == current_key)
effective_key = current_key;
Trong :
previous_key : bin lu gi tr phm trc .
current_key : bin lu gi tr phm hin ti.
Port_key : Port ca vi iu khin kt ni vi phm.
effective_key : gi tr phm hp l (gi tr trong giai on n nh)
tng tnh chnh xc, ta c th dng nhiu bin previous_key lu li cc gi
tr v so snh nhiu ln. on code trn ch so snh trng nhau 2 ln.

6.2 Kt ni phn cng


S nguyn l ca phm trong kit ny nh sau :

BKIT HARDWARE CLUB

www.bkit4u.com

48

HNG DN S DNG KIT 8051

Phm nhn ny tnh cc mc 0, c kt ni kh n gin, nn ta s dng phn


mm chng rung. Ta s dng 3 bin so snh 2 ln trng nhau, 2 ln lin tip cch
nhau 10ms.
Trong trng hp nhn 1 phm, ta s dng bin TimeOutForKeyPress xc
nh thi gian tch cc tip theo. Bin ny s quan trng trong trng hp ta vit 1 ng
dng chng hn nh son tho vn bn. Nu khng c bin ny qun l, nu ta th
trong 1s c ti 100 ln tch cc. Trong v d ca Bi 6, thi gian TimeOutForKeyPress =
100 tng ng vi 1s (100*10 = 1000ms = 1s).

6.3 Vit chng trnh


Module ny c 2 hm nh sau :
void initKey() : Khi ng cc thng s ban u
void getKey() : Hm ny c gi trong timer0, dng qut phm.
void SubKeyProcess() : Hm ny hin thc tc v bn cn thc hin khi
nhn phm.
kit th nghim ny, cc nt nhn c ni vi port 3, nn ta c nh ngha sau
u file key.c :
#define KEY_PORT P3

6.3.1 Hm initKey()
void initKey()
{
KeyReg0 = 0x00;
KeyReg1 = 0x00;
KeyReg2 = 0x00;
KeyReg3 = 0x00;
}
Trong KeyReg0, KeyReg1, KeyReg2 dng lu 3 ln lin tip. Khi 3 bin
ny bng nhau, bin KeyReg3 mi c cp nht. Bin KeyReg3 l gi tr hp l ca
phm nhn.

6.3.2 Hm getKey()
Hm ny c chia lm 2 phn, phn u l chng rung phm dng 2 ln so
snh trng nhau. Phn th 2 x l khi 1 phm c , phi sau 1 khong thi gian
TimeOutForKeyPress mi c tnh cc.

BKIT HARDWARE CLUB

www.bkit4u.com

49

HNG DN S DNG KIT 8051


void getKey()
{
KeyReg2 = KeyReg1;
KeyReg1 = KeyReg0;
KeyReg0 = KEY_PORT;// Cho phep nut nhan nao duoc tich cuc.
if ((KeyReg1 == KeyReg0) && (KeyReg1 == KeyReg2))
{
TimeOutForKeyPress --;
if (TimeOutForKeyPress == 0)
{
KeyReg3 = 0x00;
}
if (KeyReg2 != KeyReg3)
{
KeyReg3 = KeyReg2;
if (FlagFirstTimeKeyPress == 1)// Day la lan dau phim
duoc nhan.
{
TimeOutForKeyPress = 100;
SubKeyProcess();
FlagFirstTimeKeyPress = 0;
}
else
{
if (KeyReg2 == 0x00)
FlagFirstTimeKeyPress = 1;
else
{
TimeOutForKeyPress = 100;
SubKeyProcess();
}
}
}
}
}

BKIT HARDWARE CLUB

www.bkit4u.com

50

HNG DN S DNG KIT 8051

Bi 7 :

Qut led iu khin Led 7 on

Mc ch:
Nm vng k thut qut Led.
ng dng qut Led vo vic iu khin 8 led 7 on.
Yu cu:
Vit module iu khin Led 7 on c th dng li cho cc ng dng khc.
a ra hm xut gi tr s nguyn ra led 7 on ti bt k v tr no.

7.1 Nguyn l qut led 7 on


hin th 1 led 7 on, ta cn 8 chn gi d liu cho n. Nh vy, vi 8 led 7
on, theo kt ni bnh thng,ta cn tng cng 56 ng tn hiu thp sng 8 led
cng lc.
khc phc vic tn ti nguyn ny, ngi ta dng k thut qut led. Ti 1 thi
im, ch c 1 led sng. Ti thi im t1 ch c led 1 sng, ti thi im t2 = t1 + t0 ch c
led 2 sng, khi t0 rt nh, mt ngi khng th nhn bit c nhp nhy gia 2 ln
lun chuyn, v s c cm gic l 2 n sng cng lc.

qut led, s nguyn l s c mc nh trn. Port 2 gi l port d liu, d


liu ny s c ni vi tt c cc led. Port 1 dng chn led, cc E ca transitor c
ni vi chn mass ca led 7 on.
Port 1 bng 1 ti bit no th transitor tng ng s dn. Gi s Port 1 = 0x80,
transitor T4 dn, dng data s i qua led 7 on ni vi T4 xung t, v led ny s sng,
cc led cn li th khng.

BKIT HARDWARE CLUB

www.bkit4u.com

51

HNG DN S DNG KIT 8051


Khi s lng led cng nhiu, ta phi tnh ton tm ra s t0 hp l.Thng
thng, khong thi gian ti a gia led u tin v led cui cng trong khi qut led phi
nh hn 1/50 giy (50Hz).
qut 8 led 7 on trong bi th nghim ny, ta s dng 1 buffer c 8 phn t,
ri nh k xut tng phn t ra led 7 on tng ng. Vic thay i d liu trong buffer
ny s do cc hm c cung cp cho ngi dng s dng cp nht.
Ta s dng ngt timer nh k gi hm scan_led7(), hm ny c chc nng xut
1 gi tr trong buffer ra led tng ng, sau mi ln gi, index s tng ln 1, n khi bng 8
s quay tr v 0.

7.2 Kt ni phn cng


Gt switch 4 ln ON kch hot led 7 on.

7.3 Vit chng trnh


module ny c th dng li cho cc ng dng khc, ta s hin thc cc hm
di y :
void init_led7() : Khi to cc thng s ban u
void clear_led7() : Xo d liu ang hin th trn led 7 on
void set_position(unsigned int pos) : Thit lp v tr xut d liu, v tr 0 l led
ngoi cng bn tri.
unsigned int get_position() : Truy xut v tr ang xut d liu.
void put_number(unsigned int num) : Xut gi tr num (l s unsigned int) ra led
7 on t v tr hin ti.
void put_string(char strNum[]) : Xut gi tr strNum (l gi tr char) ra led 7
on t v tr hin ti.
void scan_led7() : Xut d liu t buffer ra led 7 on.
Cc hm interface ny c khai bo trong file led7.h. File led7.c s hin thc cc
hm ny.

7.3.1 Hm init_led7()
void init_led7()
{
P0 = 0x00;
P2 = 0x00;
position = 0;
led7_index = 0;
is_valid_data = 1;
}

//data port
//selected port
//output index
//scan index
//flag to check if data is valid

P0 : Port xut d liu cho led 7 on, khi to 0x00 tc l khng c led no
trong led 7 on sng.
P2 : Port chn led 7 on no trong 8 led s nhn data t Port 0, tc cc mc 1,
P2 = 0x01 (0000 0001)tc l led 7 on ngoi cng bn tri s sng, P2 = 0x20 (0000
0010) tc l led th 2 tnh t tri s sng.

BKIT HARDWARE CLUB

www.bkit4u.com

52

HNG DN S DNG KIT 8051


position : v tr bt u hin th gi tr, chng hn ngi dng mn hin th s 123
t v tr th 2 tnh t tri th phi thit lp position l 1 (position = 0 l led ngoi cng bn
tri). Bin position ny ngi dng phi dng hm set_positon th mi thay i c (chi
tit xem bn di).
led7_index : v tr s xut data, bin ny c dng trong hm scan_led, ngi
dng khng can thip vo bin ny c.
is_valid_data : bin dng trong hm scan_led, bin ny tm dng vic qut led
trong khi ang thay i buffer hin th, ngi dng cng khng can thip c vo bin
ny.

7.3.2 Hm clear_led7()
void clear_led7()
{
led7_buffer[0] = 0x00;
led7_buffer[1] = 0x00;
led7_buffer[2] = 0x00;
led7_buffer[3] = 0x00;
led7_buffer[4] = 0x00;
led7_buffer[5] = 0x00;
led7_buffer[6] = 0x00;
led7_buffer[7] = 0x00;
}
Hm ny ch n gin l xo buffer 8 phn t, lc ton b cc led s tt. Buffer
ny dng cha d liu ca 8 led 7 on, d liu ca tng led s c nh k a ra
led tng ng.

7.3.3 Hm set_position(unsigned int pos)


void set_position(unsigned int pos) //set position to begin output
{
position = pos;
}
Hm ny s ly thng s t ngi dng cp nht cho bin position.

7.3.4 Hm get_position()
unsigned int get_position() //get current position
{
return position;
}
Hm ny tr v v tr ang xut d liu.

BKIT HARDWARE CLUB

www.bkit4u.com

53

HNG DN S DNG KIT 8051


7.3.5 Hm put_Number(unsigned int num)
void put_number(unsigned int num)
{
int i;
is_valid_data = 0;

//disable scan led

for(i=position; i<8; i++)


{
if(i>=0)
{
led7_buffer[i] = led7_data[num % 10];
}
num = num / 10;
if(num == 0)
break;
}
position = i;
is_valid_data = 1;

//enable scan led

}
Hm ny dng ct tng ch s ca s num b vo buffer tng ng. Vng
lp for dng hin thc tc v ny, ch s hng n v ca num s c b vo buffer
v tr position.

7.3.6 Hm put_string(char strNum[])


Hm ny cng gn ging vi hm put_Number, ch khc l i s l kiu char[].
Vic thao tc trn d liu kiu char[] cn phi include thm th vin string.h ( u file
led7.c). Vic hin thc hm ny phc tp hn, cc bn c th tham kho thm trong code
mu th mc Bi 7 c nh km trong CD. Mc ch ca hm ny cng l ly tng
phn t trong mng strNum b vo buffer cho ng v tr.

7.3.7 Hm scan_led7
void scan_led7()
{
if(is_valid_data)
{
P2 = 0x00;
P0 = led7_buffer[led7_index];
P2 = 1 << led7_index;

led7_index++;
if(led7_index == 8)
BKIT HARDWARE CLUB

//remove noise
//data for the next led
//enable data

//update new index

www.bkit4u.com

54

HNG DN S DNG KIT 8051


led7_index = 0;
}
}
y l hm dng qut led, v s c ngt timer gi. Mc ch ca hm ny l
xut d liu ra led v tr tip theo.
Port 2 dng chn led, v trnh hin tng bng m khi qut led, bn phi
gn n v 0x00 trc.
led7_index l bin ch v tr ca led hin ti chun b nhn d liu.
Hm scan_led7() c gi trong ngt timer0.
Vi cc hm thit k trn, xut s 1234 ti v tr th 2 tnh t tri sang ta
vit trong hm main() nh sau:
void main()
{
init_main();
init_timer0();
init_led7();
set_position(1);
put_Number(1234);
while(1){};
}
Hm main() trong v d ca Bi 7 xut cc s 123 v 4321 ti cc v tr lin tip
nhau, thi gian gia 2 ln xut l 1s (1000ms), ta s c cm gic l dng s ny chy qua
cc led 7 on.

BKIT HARDWARE CLUB

www.bkit4u.com

55

HNG DN S DNG KIT 8051

Bi 8 :

iu khin Ma trn led

Mc ch:
ng dng qut Led iu khin Ma trn led 2 mu.
Yu cu:
Vit chng trnh nh k 1s xut cc ch ci in hoa t A-Z ra ma trn led.

8.1 Nguyn l iu khin ma trn led


Ma trn led 2 mu c cu to gm nhng im sng, mi im sng c 2 bng
n v xanh l bn trong. Khi c 2 n ny cng sng cho ta cm gic mu vng.
Nguyn l iu khin ma trn led cng tng t nh led 7 on, ta dng Port1
chn ct, Port0 v Port2 dng gi d liu v xanh cho hng . Cc k thut iu
khin ma trn led hon ton tng t nh led 7 on.

8.2 Kt ni phn cng


Gt switch 3 ln ON kch hot ma trn led.

8.3 Vit chng trnh


Chng trnh c t chc gm 3 module : MAIN cha file main.c, TIMER
gi hm qut ma trn led v LED MATRIX cha cc hm lin quan n ma trn
led.
Cc hm v ma trn led nh sau :
void init_led_matrix(); //Khi to ma trn led
void scan_led_matrix(); //Qut ma trn led, hm ny c gi trong
timer.
void update_display_led_matrix(); //Cp nht buffer hin th.

BKIT HARDWARE CLUB

www.bkit4u.com

56

HNG DN S DNG KIT 8051


8.3.1 Hm init_led_matrix()
void init_led_matrix()
{
P0 = 0x00; //red data
P2 = 0x00; //green data
index_led_matrix = 0; //index use to scan led
alphabet_index = 208;// in the initial, led matrix doesn't display
anything
}
Trong :
P0 : Port xut d liu cho ma trn led.
P2 : Port xut d liu xanh cho ma trn led.
index_led_matrix : bin dng qut d liu hin th trn ma trn led, ta dng
bin ny ly d liu trong 2 buffer (mi buffer 8 phn t) hin th v chn ct.
alphabet_index : bin dng ly d liu cn hin th, b vo 2 buffer v
xanh. Mng d liu ny thng kh ln v c khai bo trong file table_led_matrix.h.

8.3.2 Hm scan_led_matrix()
Hm ny c gi trong timer, c nhim v xut buffer hin th ra ma trn led,
nh k xut tng phn t ca buffer ra ct tng ng.
void scan_led_matrix()
{
P1 = 0; //remove noise
P0 = red_buff[index_led_matrix];
P2 = green_buff[index_led_matrix];
P1 = 1 << index_led_matrix;
index_led_matrix = (index_led_matrix + 1) % 8;

//next column

8.3.3 Hm update_display_led_matrix()
Hm ny dng thay i ni dung hin th, cc ng dng ca ngi dng ch
yu l thay i code hm ny.
void update_display_led_matrix()
{
char i;
for(i = 0; i < 8; i++)
{
red_buff[i]=alphabet_upcase_led_matrix[i+alphabet_index ];
green_buff[i]=alphabet_upcase_led_matrix[i+alphabet_index];

}
}
Hm main ch vic thay i alphabet_index (d liu ca ch ci k tip) ri gi
hm update_display_led_matrix(), nh k 1s sau thay i ch k tip:

BKIT HARDWARE CLUB

www.bkit4u.com

57

HNG DN S DNG KIT 8051


while(1)
{
alphabet_index = (alphabet_index + 8) % 216;
update_display_led_matrix();
delay_ms(1000);
}

BKIT HARDWARE CLUB

www.bkit4u.com

58

HNG DN S DNG KIT 8051

Bi 9 :

Chy ch trn Ma trn led

Mc ch:
Nm vng nguyn l iu khin ma trn led. Xy dng ng dng trn ma trn led.
Yu cu:
Vit chng trnh ch chy trn ma trn led, cung cp interface gip ngi dng
c th thay i d dng.

9.1 Nguyn l chy ch trn ma trn led

chy 1 dng ch qua ma trn led, bn s c 1 buffer lu ton b dng ch .


Buffer ny thng l 1 mng cc byte. Chng trnh s nh k ct 1 phn trong buffer
ny d liu vo buffer nh hn dng qut led. Chng trnh qut led s hin th ra
led ma trn.
Ti thi im T1, d liu vo buffer qut led l ch H. Ti thi im T2, 1
phn ch H v E c vo buffer ny, v ti thi im T3 l ch E. Nu khong
cch gia cc thi im nh li, bn s thy hiu ng dng chu chy qua ma trn led.
sinh ra c buffer cha ton b dng ch, bn phi x l d liu lu sn
(tm gi l font ch), ghp ni chng sao cho p mt. Chng hn mun hin ch
HELLO WORLD,bn phi lm nh sau:
Ly font ca ch H, b nhng ct trng u v cui, phn cn li b vo
buffer.
Ly font ca ch E, b nhng ct trng u v cui,thm 1 byte 0x00 vo
buffer (to 1 nt ri gia H v E) ri b d liu ca E vo.
Tng t, ht ch O, bn thm khong 3 byte 0x00.
Tu vo ti nguyn ca h thng, bn nh ngha ra di ti a ca buffer ny.
Trong qu trnh sinh ra buffer, chng trnh s cp nht di hin ti v s dng vic
ghp ch nu di l qu mc cho php.

BKIT HARDWARE CLUB

www.bkit4u.com

59

HNG DN S DNG KIT 8051


9.2 Kt ni phn cng
Gt switch 3 ln ON kch hot ma trn led.

9.3 Vit chng trnh


Chng trnh s gm 3 group l TIMER, LED MATRIX v MAIN. Cc group
TIMER v LED MATRIX c dng li. Trong file led_matrix.h ta khai bo thm 1 hm
cung cp cho ngi dng:
void set_message(char strMsg[]);
Hm ny cho php ngi dng thay i ni dung ch chy qua ma trn led. V d
gi set_message(HELLO WORLD).
x l chui trong KeilC, bn include thm 2 th vin sau u file
led_matrix.c:
#include <stdlib.h>
#include <string.h>
D liu ca buffer ln gm c 100 ct, bin total_length dng lu di hin
ti ca mng buffer ny:
unsigned char data_buff[100];
int total_length;
Mng alphabet_upcase_led_matrix l d liu font ca cc ch ci in hoa. Trong
chng trnh ny ch hin th c cc ch ci in hoa, khng bao gm cc ch ci thng
v cc k t s.

9.3.1 Hm set_message(char strMsg[])


void set_message(char strMsg[])
{
int length;
int i;
int j;
int index_char;
length = strlen(strMsg);
//fill data into data_buff
for(i=0;i<length;i++)
{
index_char = (strMsg[i] - 'A')*8; //position to get font data
if(strMsg[i] != ' ')
//is not blank character
{
for(j=index_char;;j++)//remove 0x00 at the begining
{
if(alphabet_upcase_led_matrix[j] != 0x00)
break;
}
for(;j<8 + index_char;j++)//copy data to data_buff
{
if(total_length != 100)

BKIT HARDWARE CLUB

www.bkit4u.com

60

HNG DN S DNG KIT 8051


data_buff[total_length++]=
alphabet_upcase_led_matrix[j];
}
}
else //blank character,add 3 bytes 0x00
{
if(total_length != 100)
data_buff[total_length++] = 0x00;
if(total_length != 100)
data_buff[total_length++] = 0x00;
if(total_length != 100)
data_buff[total_length++] = 0x00;
}
}
}

9.3.2 Hm main()
void main()
{
init_main();
init_timer0();
//use for scan led
init_timer1();
//use for delay_ms() function
init_led_matrix();
//initiate led matrix
set_message("HELLO WORLD");
while(1)
{
delay_ms (300);
update_display_led_matrix();
}
}
Hm update_display_led_matrix() tng con tr alphabet_index ly d liu
trong data_buff b vo red_buff v green buff. Bin alphabet_index c khi to l -8
vi ngha trng thi u tin mn hnh led 7 on khng hin th g c. Khi hin thc
hm ny bn ch kim tra iu kin ca alphabet_index ly d liu cho ng. Chi
tit ca chng trnh cc bn tham kho ti th mc Bai 9.

BKIT HARDWARE CLUB

www.bkit4u.com

61

HNG DN S DNG KIT 8051

Bi 10 : Ngt ngoi
Mc ch:
Nm vng k thut iu khin ngt ngoi.
Yu cu:
Vit chng trnh khi c ngt ngoi 0 th tng bin m ln 1, ngt ngoi 1 th
gim i 1, xut gi tr ra led 7 on.

10.1 Nguyn l iu khin ngt ngoi


Ngt ngoi c 2 loi : Ngt cnh v ngt mc.
Ngt cnh cng c 2 loi : ngt cnh ln xy ra khi c s chuyn tn hiu t
mc thp ln mc cao chn ngt ngoi. Tng t ngt cnh xung xy ra khi c
s chuyn tn hiu t mc cao xung mc thp.
Ngt mc cng c 2 loi : ngt mc cao v mc thp. Ngt mc cao xy ra
khi tn hiu ti chn ngt ngoi mc cao trong ti thiu 1 chu k.
Trong vi iu khin P89V51RB2, h tr 2 loi ngt ngoi : ngt cnh xung v
ngt mc thp. Vic cu hnh cho ngt ngoi da vo bit ITn trong thanh ghi TCON.

10.2 Kt ni phn cng


Hai ngt ngoi c mc vo nt nhn, ti chn P3.2 l ngt ngoi 0 v P3.3 l
ngt ngoi 1.
Gt switch 4 ln ON kch hot led 7 on.

10.3 Vit chng trnh


Module ngt ngoi kh n gin, gm cc hm khi to c khai bo trong file
ext_int.h :
void init_ext_int0();
void init_ext_int1();
Cc hm ny c hin thc trong file ext_int.c cng vi 2 hm phc v ngt ngt
ngoi. Code x l trong bi mu ny kh n gin, ch l vic cng v tr bin count ri
dng bin ny hin th gi tr tng ng ra led 7 on.

10.3.1 Hm init_ext_int0()
void init_ext_int0()
{
IE &= ~(0x01);// enable external interrupt 0
IE |= 0x01;
IT0 = 1;
}

10.3.2 Hm init_ext_int1()
void init_ext_int1()
{
IE &= ~(0x04);// enable external interrupt 1

BKIT HARDWARE CLUB

www.bkit4u.com

62

HNG DN S DNG KIT 8051


IE |= 0x04;
IT1 = 1;
}

10.3.3 Hm ext0_isr()
y l hm phc v ngt ngoi 0.
void ext0_isr() interrupt 0
{
//Add your code here
if(count<9)
count++;
}

10.3.4 Hm ext1_isr()
y l hm phc v ngt ngoi 1.
void ext0_isr() interrupt 1
{
//Add your code here
if(count>0)
count--;
}

BKIT HARDWARE CLUB

www.bkit4u.com

63

HNG DN S DNG KIT 8051

Bi 11 : iu khin encoder
Mc ch:
Hiu c nguyn l hot ng ca encoder. Nm vng k thut iu khin
encoder bng ngt ngoi.
Yu cu:
Xy dng chng trnh c s xung encoder v hin th gi tr ra led 7 on.

11.1 Nguyn l iu khin encoder


Encoder l thit b cm bin c dng ph bin trong cc ng dng cn o
khong cch, vn tc hoc trong cc ng dng cn chnh xc cao. Hnh dng thc t
ca encoder nh sau:

Cu to ca encoder gm 1 vng trn, trn x nhiu rnh (cn gi l a), v 1


mch cm bin pht xung

S rnh trn a gi l phn gii hay s xung ca encoder. i vi encoder c


phn gii thp (di 200 xung) th a ny l a thp. i vi cc encoder c phn
gii cao, c 1000 xung, th a ny c lm bng a t, encoder nh vy cn gi l
encoder quang.

BKIT HARDWARE CLUB

www.bkit4u.com

64

HNG DN S DNG KIT 8051


Tn hiu tr v ca encoder c 3 knh A, B v Z. Thng thng ta s dng 2 knh
A v B l thng tin cho qung ng v chiu quay ca encoder. Tn hiu tr v trn 2
knh ny nh sau :

Nh vy nu ta a tn hiu A vo chn ngt ngoi v cu hnh l ngt


cnh ln, th khi tn hiu B mc cao l chiu quay thun ca encoder, khi
B mc thp l chiu quay ngc li.
11.2 Kt ni phn cng
Gt switch 4 ln ON kch hot led 7 on.
Kt ni vi encoder gm 4 chn : VCC, GND, A v B vo board. Tn
hiu A c ni vo P3.2 gy ra ngt ngoi 0, tn hiu B ni vi P3.5
11.3 Vit chng trnh
Chng trnh gm c 3 group : TIMER dng qut led, hin th gi
tr encoder ra led 7 on; EXT_INT dng cp nht gi tr encoder mi khi
c ngt ngoi 0 chn P3.2, MAIN cha file main.c l chng trnh chnh
chy.
Chng trnh trong bi ny hon ton tng t nh bi trc, on
code trong hm phc v ngt ngoi sa i li nh sau:
void ext0_isr() interrupt 0
{
if(P3 & (1 << 5))
pulse ++;
else
pulse --;
}
Bin pulse c khai bo l unsigned int, dng lu tr gi tr ca
encoder.

BKIT HARDWARE CLUB

www.bkit4u.com

65

HNG DN S DNG KIT 8051


xut gi tr encoder ra led 7 on, ta thm 2 dng lnh sau trong
hm phc v ngt timer 0:
set_position(2);
put_number(pulse);
Hm main() ch n gin l khi to cc thng s cn thit v sau loop v tn.
Tt c mi cng vic s do cc hm phc v ngt qung thc hin. y l 1 m hnh lp
trnh c bn ca vi iu khin trong cc ng dng thc t. Chi tit code cc bn xem thm
trong th mc Bi 11.

BKIT HARDWARE CLUB

www.bkit4u.com

66

HNG DN S DNG KIT 8051

Bi 12 : Giao tip UART


Mc ch:
Nm vng giao tip Uart.
Yu cu:
Xy dng ng dng giao tip gia board 89 v my tnh thng qua cng COM.

12.1 Nguyn l giao tip UART


Uart RS232 l chun giao tip kh ph bin v c h tr hu ht cc dng vi
iu khin v khong cch xa v chi ph thp. Dng 8051 h tr 1 knh giao tip uart.
D liu c truyn i trn chn TX gm 1 start bit (mc 0), data v 1 stop bit
(mc 1).
Tc truyn : n v bit per second (bps) cn gi l Baud (s ln thay i tn
hiu trong 1 giy thng s dng cho modem). i vi ng truyn th Baud v bps
l nh nhau.
UART l phng thc truyn nhn bt ng b. ngha l bn nhn v bn pht
khng cn phi c chung tc xung clock (v d : xung clock ca vi iu khin khc
xung clock ca my tnh) . Khi bn truyn mun truyn d liu s gi start bit (bit 0)
bo cho bn thu bit bt u nhn d liu v khi truyn xong d liu th stop bit (bit
1) s c gi bo cho bn thu bit kt thc qu trnh truyn.
Khi c start bit th c hai bn s dng chung 1 xung clock (c th sai khc mt t)
vi rng 1 tn hiu (0 hoc 1) c quy nh bi baud rate, v d baud rate = 9600bps
ngha l rng ca tn hiu 0(hoc 1) l 1/9600 = 104 ms v khi pht th bn pht s
dng baud rate chnh xc (v d 9600bps) cn bn thu c th dng baud rate sai lch 1
t(9800bps chng hn).
Truyn bt ng b s truyn theo tng frame v mi frame c cu trc nh sau:
Stop bit--B7--B6-- B5-- B4-- B3-- B2-- B1-- B0-- Start bit
goes out last

goes out first

Ngoi ra trong frame truyn c th c thm bit odd parity (bit l) hoc even
parity (bit chn) kim tra li trong qu trnh truyn. Bit parity ny c c im nu
s dng odd parity th s cc bit 1 + odd parity bit s ra 1 s l cn nu s dng even
parity th s cc bit 1 + even parity bit s ra 1 s chn.

BKIT HARDWARE CLUB

www.bkit4u.com

67

HNG DN S DNG KIT 8051


12.2 Giao tip UART vi my tnh
giao tip COM gia vi iu khin v my tnh, ta kt ni mch theo s nh
sau:

Do mc in p ca tn hiu logic 1/0 cng COM ca my tnh khc vi vi iu


khin, nn MAX 232 c tc dng chun ho mc in p gia my tnh v iu khin
trong qu trnh truyn nhn d liu. Nu giao tip trc tip gia 2 vi iu khin, ta khng
cn phi s dng MAX 232.

BKIT HARDWARE CLUB

www.bkit4u.com

68

HNG DN S DNG KIT 8051

12.3 Vit chng trnh


12.3.1 Thanh ghi iu khin truyn nhn ni tip
Vi iu khin 8051 c hai chn dng trong truyn nhn ni tip l RxD(nhn d
liu ng vi chn P3.0) v TxD(pht d liu ng vi chn P3.1), ngoi ra cn s dng b
m SBUF lu d liu thu khi nhn v d liu pht khi truyn v thanh ghi
SCON(Serial Control) truy xut port ni tip.
B m SBUF c a ch byte l 99h, thc t c hai b m l b m thu (chi
c) dng trong nhn d liu v b m pht (ch ghi) dng trong pht d liu.
Thanh ghi SCON c a ch byte l 98h l thanh ghi c th nh a ch tng bit
dng thit lp ch hot ng ca port ni tip v cc bit trng thi ch s kt thc
vic thu hoc pht d liu.

Bit

SCON.7

K hiu

SM0/FE

Chc nng
Cch dng ca bit ny c nh ngha bng gi tr ca bit
SMOD0 trong thanh ghi PCON, nu SMOD=0, bit ny c
c v vit l SM0, n vi bit SM1 nh ngha ch hot
ng ca cng ni tip. Nu SMOD0=1, bit ny c c v
vit l FE (khung li). FE c set trong qu trnh nhn khi
pht hin bit dng khng hp l, v n ch c xa bi phn
mm. (ch rng cc ch UART nn c lp trnh(thng
qua SM0 v SM1) khi SMOD0=0-ch mc nh sau cc
qu trnh RESET)

BKIT HARDWARE CLUB

www.bkit4u.com

69

HNG DN S DNG KIT 8051

SCON.6

SM1
SM0,
SM1

Cng vi SM0, xc nh ch lm vic ca cng ni tip

00

0: thanh ghi dch

01
10
11
SCON.5

SM2

SCON.4

REN

SCON.3

TB8

SCON.2

RB8

SCON.1

TI

SCON.0

RI

Ch UART

UART 0 Baud Rate

CCLK/16 (ch mc nh sau khi


RESET)
1: UART 8-bit
Thay i
2: UART 9-bit
CCLK/32 hoc CCLK/16
3: UART 9-bit
Thay i
Cho php truyn thng a x l. Mode 2 v 3, nu SM2
c lp, RI s khng tch cc nu bit d liu nhn th 9 (RB8)
l 0. Mode 0, SM2 nn bng 0, mode 1, SM2 phi bng
0.
Cho php thu cng ni tip. Thit lp bi phn mm cho
php thu. Xa bi phn mm khi khng cho php thu,REN = 1
trong tt c 4 ch tuyn nhn.
Bit d liu th 9 c pht mode 2 v 3, lp/xa bi phn
mm khi mun.
Bit d liu th 9 c nhn mode 2 v 3. mode 1(SM2=0),
RB8 l bit dng c nhn, mode 0, RB8 khng c nh
ngha.
C ngt pht(truyn ni tip), lp bi phn cng cui bit th
8 mode 0, hay l bit dng ca cc ch cn li, phi c
xa bng phn mm. (Xem thm bit INTL0 thanh ghi
SSTAT)
C ngt thu, lp bi phn cng cui bit th 8 trong mode 0,
hay khong gia bit dng mode 1. vi mode 2 v mode 3,
nu SMOD0=0, n c lp gn khong gia bit d liu th 9
(bit 8). Nu SMOD0=1, n c lp gn khang gia bit dng.
Phi c xa bi phn mm.

Cc ch truyn ni tip:
Ch 0: ch ny chn RxD s va lm nhim v thu v pht d liu
cn chn TxD lm nhim v pht xung dch bit(Shift Clock) vi tc sung
bng 1/12 tc xung ca XTAL.D liu truyn i gm 8 bit vi bit LSB
c truyn hoc nhn trc. ng dng ca ch ny l m rng ng ra
cho 8051 t 2 ng TxD,RxD s to ra 8 ng m rng.

8051
TxD(P3.1)

CLOCK
Data

Shift register

RxD(P3.0)

BKIT HARDWARE CLUB

www.bkit4u.com

70

HNG DN S DNG KIT 8051

Ch 1: l ch truyn vi mi frame c 10 bits (bit start 8 bits data


bit stop) ,tc baud rate c th thay i c ty vo cch khi to ban
u.C th nhn i tc truyn bng cch bt PCON.7 = 1.
Ch 2: l ch truyn vi mi frame c 11 bits (bit start 8 bits data
bit parity bit stop),bit parity c t trong TB8 khi pht v c t
trong RB8 khi thu, tc baud rate ch ny khng thay i c v
bng 1/64 dao ng ca XTAL (1/32 dao ng ca XTAL nu PCON.7 =
1).
Ch 3: c chc nng tng t nh ch 2 nhng tc baud rate c
th thay i c nh ch 1.

Tc Baud : Tc (Baud) ca cng 8051 phi ph hp vi my tnh: 100,


150, 300, 600, 1200, 2400, 4800, 9600, 19200. Khuyn co dng thch anh c tn s
11.0592Mhz c th to ra tc Baud vi sai s thp (gn nh l 0).

12.3.2 Dng Timer1 to Baud rate


Timer 1 c dng to tc baud cho truyn ni tip ,cn phi t Timer 1
Mode 2 8 bit t np li, nu t ch khc s tn vi chu k my cho qu trnh thit
lp li gi tr cho TH1,TL1.
t TH1 theo bng sao c tc Baud tng ng vi SMOD = 0 (bit D7 trong
thanh ghi PCON, XTAL = 11.0592 MHz) :
Tc Baud

TH1 (Thp phn)

TH1 (Hexa)

9600

-3

ED

4800

-6

FA

2400

-12

F4

1200

-24

E8

Tc Baud rate s nhn i khi SMOD = 1.

12.3.3 Chng trnh truyn nhn UART trn 8051


v Hm init_timer1() s thit lp Timer1 to tc baud cho truyn ni tip
void init_timer1()
{
TMOD &= ~(0x20);// setup mode for timer 1
TMOD |= 0x20;
// Baud rate = 9600
// PCON.7 = 0, without increasing baud rate 2 times
TL1 = 0xFD; //-3

BKIT HARDWARE CLUB

www.bkit4u.com

71

HNG DN S DNG KIT 8051


TH1 = 0xFD; //-3

TR1 = 1; //start timer1

}
Tc truyn nhn UART c quy nh nh sau :
Nu PCON.7 = 0 : TH1 = 256 - ((Crystal / 384) / Baud)
TH1 = (-48); // baudrate 600
TH1 = (-24); // baudrate 1200
TH1 = (-12); // baudrate 2400
TH1 = (-6); // baudrate 4800
TH1 = (-3); // baudrate 9600
Nu PCON.7 = 1, baud is double, TH1 = 256 - ((Crystal / 192) / Baud)
TH1 = (-96); // baudrate 600
TH1 = (-48); // baudrate 1200
TH1 = (-24); // baudrate 2400
TH1 = (-12); // baudrate 4800
TH1 = (-6); // baudrate 9600
TH1 = (-4); // baudrate 14400
TH1 = (-3); // baudrate 19200
TH1 = (-2); // baudrate 28800
v Hm initUart() s thit lp ch hot ng ca port ni tip
void initUart()
{
//IE = 0xb0;
//SCON: SM0 SM1 SM2 REN TB8 RB8 TI RI
ES = 1;
// enable UART
IP = 0x10;
// set priority for serial port
SCON = 0x50;
// Uart mode 1
}
v Hm sendChar(unsigned char c)
truyn d liu i, ta ch cn ghi gi tr cn truyn vo thanh ghi SBUF. Khi
qu trnh truyn kt thc, c ngt TI s bt ln. Ta s dng 1 bin c trans_busy nhn
bit khi no qu trnh truyn kt thc, v s xo bin c ny trong hm phc v ngt
truyn ni tip.
void sendChar(unsigned char c)
{

BKIT HARDWARE CLUB

www.bkit4u.com

72

HNG DN S DNG KIT 8051


trans_busy = 1;
SBUF = c;
while(trans_busy);
}
v Hm uart_isr() l hm phc v ngt ca truyn nhn ni tip :
void uart_isr(void) interrupt 4
{
if (TI == 1) // Truyn d liu
{
/*
Cc cu lnh x l khi truyn d liu
*/
trans_busy = 0; //c bo hiu truyn kt thc
TI = 0; // xo c ngt TI , kt thc truyn d liu
}
if (RI == 1) //Nhn d liu
{
/*
Cc cu lnh x l khi nhn d liu
*/
data_recv[index] = SBUF; // nhn d liu
RI = 0; // xo c ngt RI, kt thc nhn d liu
}
}
D liu truyn ti vi iu khin c lu trong thanh ghi SBUF v khi vi iu
khin nhn d liu, c ngt RI s bt ln.

BKIT HARDWARE CLUB

www.bkit4u.com

73

HNG DN S DNG KIT 8051


12.4 Kim tra truyn nhn UART
kim tra vic truyn nhn uart c ng hay khng ta thng dng 1 s ng
dng hyper terminal kim tra. Lc ny my tnh ca chng ta s l i tng dng
giao tip vi Kit89. Trong a CD ny c phn mm hyper terminal kh thng dng cha
trong th mc Terminal, bn ch cn double click vo file Terminal.exe l khi ng
c chng trnh.

Cng vic cn li l cu hnh cho cng COM truyn nhn uart cho tng thch vi
giao thc truyn nhn ca board 89. Cc thng s thng thng l Baud rate 9600, Data
bit 8bit, khng c Parity (chn none) v 1 Stop bit. Nhn nt Connect kt ni. K t
y nu board 89 c gi d liu ln, d liu ny s nm trong phn Receive. Ngc li,
mun gi d liu xung board 89 ta g vo textbox v n Send.

12.5 Xy dng chng trnh trn PC


Trong mc ny, chng ti s trnh by tng bc xy dng 1 software trn PC
giao tip vi vi iu khin bng Visual .NET 2005 v ngn ng C#.
Khi ng Visual .NET 2005, mn hnh sau s hin ln

BKIT HARDWARE CLUB

www.bkit4u.com

74

HNG DN S DNG KIT 8051

Chn vo menu File, chn New Project nh hnh trn, mn hnh di y s hin ra.

Bn chn loi project l Visual C#, Windows Application v t tn cho project


ti mc Name. Sau khi chn xong nhn OK. Project s c load ln bt u thit k

BKIT HARDWARE CLUB

www.bkit4u.com

75

HNG DN S DNG KIT 8051


giao din. Nu xi h iu hnh Windows Vista, thng bo sau c th xut hin v bn
chn Load Project Normally.

Ca s thit k giao din hin ra nh sau

BKIT HARDWARE CLUB

www.bkit4u.com

76

HNG DN S DNG KIT 8051


thit k giao din, bn ch cn ko th cc i tng giao din vo form v thay i
thuc tnh ca n. Trong v d ny dng cc i tng Label, ComboBox,
TextBox,SerialPort v Command Button.

Chn control SerialPort, ko th vo form v sa thuc tnh Name thnh


serialPort, kt qu nh hnh di y:

iu chnh thuc tnh ca cc i tng nh sau:


v Chnh thuc tnh Name ca ComboxBox l cboPorts. ComboBox ny dng list ra
cc cng COM m my h tr.
v Nt Connect c thuc tnh Name l btnConnect, Caption l Connect.
v Nt Send c thuc tnh Name l btnSend, Caption l Send.
v Textbox dng cha d liu truyn c tn l txtSend v textbox dng hin th d
liu nhn tn txtReceive, thuc tnh Multiple lines chnh thnh true.

BKIT HARDWARE CLUB

www.bkit4u.com

77

HNG DN S DNG KIT 8051


12.5.1 Load cc cng COM ca PC ln ComboBox
Chc nng ny c hin thc trong th tc Form Load, to ra s kin ny,
bn ch cn double vo form ang thit k hoc chn trong ca s thuc tnh s kin ny
ri double click vo tng ng nh sau :

Chn tab s
kin

Chn Form

Double Click ti y
to hm x l s
kin Form Load

Ca s vit code s hin ra nh sau :

BKIT HARDWARE CLUB

www.bkit4u.com

78

HNG DN S DNG KIT 8051


Chi tit hin thc nh sau :
private void frmMain_Load(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
// Add all port names to the combo box:
foreach (string port in ports)
{
cboComPorts.Properties.Items.Add(port);
}
}

12.5.2 Kt ni cng vi cng COM


Chuyn qua li ca s thit k giao din bng cch double click vo Form1 trong
ca s project explore :

Mn hnh thit k giao din hin ra, bn nhp i vo button Connect to hm


x l s kin Click cho n. Hm c to ra v bn hin thc code nh sau :
private void btnConnect_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen) serialPort.Close();
serialPort.PortName = cboComPorts.Text;
try
{
serialPort.Open();
MessageBox.Show(" kt ni cng COM!");
}
catch
{

BKIT HARDWARE CLUB

www.bkit4u.com

79

HNG DN S DNG KIT 8051


MessageBox.Show("Cha kt ni c cng COM!");
}
}

12.5.3 Gi d liu
Chuyn qua li ca s thit k giao din bng cch double click vo Form1 trong
ca s project explore :

gi d liu, ta to hm x l cho s kin click nt Send bng cch double


click vo nt trn form thit k giao din, hm ny s c t ng to ra nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

80

HNG DN S DNG KIT 8051

Hm ny c chc nng truyn 1 string gm nhiu k t qua cng UART, vic hin
thc hm ny nh sau :
private void btnSend_Click(object sender, EventArgs e)
{
serialPort.Write(txtSend.Text);
}

12.5.4 Nhn d liu


Chuyn sang ca s thit k giao din, chn vo i tng serialPort, chn tab s
kin v to hm cho s kin nhn bng cch double click vo dng DataReceived :

BKIT HARDWARE CLUB

www.bkit4u.com

81

HNG DN S DNG KIT 8051

Chn tab s kin

Chn cng COM

Double
Click

Hm s c to ra nh sau :

Do khi d liu c gi n my tnh s c chia thnh nhiu phn. V d 1


chui 10byte gi, my tnh c th ln 1 nhn c 8 byte, ln 2 mi nhn 2 byte cn li.
V l do ny, vic nhn d liu s b xung t vi thread v mn hnh giao din ca
chng trnh m chng ta ang vit. khc phc vn ny, C#.NET a ra khi nim

BKIT HARDWARE CLUB

www.bkit4u.com

82

HNG DN S DNG KIT 8051


hm gi bt ng b, khi s kin nhn UART b xung t vi thread mn hnh, n s b
delay li v khng b mt.
Ta khai bo hm gi bt ng b u chng trnh nh sau :

Hin thc hm SetText() nh sau :


private void SetText(string text)
{
//InvokeRequired required compares the thread ID of the
//calling thread to the thread ID of the creating
thread.
// If these threads are different, it returns true.
if (this.txtReceive.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
//process incoming data + return character
txtReceive.Text += text + Environment.NewLine ;
}
}

BKIT HARDWARE CLUB

www.bkit4u.com

83

HNG DN S DNG KIT 8051


Cui cng ta hin thc hm nhn d liu:
private void serialPort_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
InputData = serialPort.ReadExisting();
if (InputData != String.Empty)
{
SetText(InputData);
}
}

Chi tit code bn c th xem thm trong project RS232Demo i km trong a CD


ny. chy chng trnh bn nhn F5 hoc t hp phm Ctrl v F5. my tnh khc
khng ci Visual 2005, bn cn phi ci dotnetframework 2.0 ri chp file
RS232Demo.exe trong th mc bin\Debug. Bn c th tham kho thm trn mng to
ra file setup cho ng dng ny sinh ra file ci t ging nh khi bn mua a CD v ci
t ng dng.

BKIT HARDWARE CLUB

www.bkit4u.com

84

HNG DN S DNG KIT 8051

Bi 13 : Giao tip PS2 vi bn phm


Mc ch:
Nm vng giao tip PS2 vi bn phm.
Yu cu:
Hin thc chng trnh giao tip vi bn phm, hin th k t c nhn ra ma
trn led .

13.1 Nguyn l giao tip PS2


D liu trong giao tip PS2 cng c truyn ni tip tng bit nh uart. Khi 1
phm c nhn, 11 bit bao gm Start bit, 8 bit d liu (bit trng s thp truyn trc), 1
bit parity v 1 stop bit s c gi i :

Ta s ly d liu ti cnh xung ca clock, chn ca clock c ni vo chn ngt


ngoi 1 ca vi iu khin (P3.3) nh sau:

kb_Shield

VCC

VCC
R3
22K

J3

R4
22K

6
VCC
kb_Vcc

kb_Clock

kb_Ground

kb_Data

P3.3

4
2
P3.4

PS/2 CIR 7-R

Khi 1 phm c nhn xung, m make_code s c gi ln. Trong khong thi


gian phm c xung th m make_code vn c nh k gi ln. Khi th phm ra
th bn phm gi ln m break_code v make_code.
Bng m make_code v break_code ca cc phm nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

85

HNG DN S DNG KIT 8051

D dng nhn ra m break_code ca 1 phm gm 0xF0 v m make_code ca


phm .

13.2 Kt ni phn cng


Chn clock ca bn phm ni vi P3.3.
Chn data t bn phm ni vi P3.4.
ng dng xut k t ra ma trn led, nn ta gt switch 3 ln ON.

BKIT HARDWARE CLUB

www.bkit4u.com

86

HNG DN S DNG KIT 8051


13.3 Vit chng trnh
Phn chnh ca bi thc hnh ny l ly cho c d liu truyn ln t bn phm.
Qu trnh dch tng bit ly data 8 bit trong chui 10 bit c hin thc trong hm phc
v ngt ngoi 1. DATA chnh l chn P3^4
void ext1_isr() interrupt 2
{
count_bit_input++;
if(count_bit_input == 1)
//start to get data
scan_code = 0x00;
// getting data when the key pressed
// ignore start bit, parity bit and stop bit
// just getting 8 data bits
if(count_bit_input > 1 && count_bit_input < 10)
{
scan_code >>= 1;
if(DATA)
scan_code |= 0x80;
}
if(count_bit_input > 10)
{
//Add your code here
count_bit_input = 0; //reset
}
}
Bin count_bit_input dng m s bit gi v, khi count_bit_input = 11 ta s
c c d liu scan_code t bn phm truyn ln. Bn s phi x l phn loi y l
m make_code hay break_code, c c nhn km vi phm shift hay caps lock hay
khng chuyn sang m ascii cho k t c nhn. Chi tit code bn xem thm trong
Bai 13.

BKIT HARDWARE CLUB

www.bkit4u.com

87

HNG DN S DNG KIT 8051

Bi 14 : PWM iu khin motor


Mc ch:
Nm vng k thut iu xung PWM.
Yu cu:
Vit ng dng iu khin motor chy nhiu tc khc nhau.

14.1 Khi nim PWM


PWM vit tt ca t Pulse Width Modulation. PWM c s dng nhiu trong h
thng iu khin t ng ngy nay. N c ng dng trong iu khin tc ng c,
sng ti ca led, mn hnh LCD, pha mu cho bang quang bo, s dng trong cc
thut ton iu khin vn tc cho Robot nh PI, PD, PID
Hiu n gin PWM hot ng nh mt cng tc ng m rt nhiu ln trong 1
giy. Nu tn s ng m cng nhanh th in p cp trung bnh cng ln.

Mt s khi nim c bn ca PWM :


v Tn s (Hz, Khz).
v Chu k T, thi gian xung mc cao TH + thi gian xung mc thp TL.
v Duty Cycle: t l thi gian xung mc v thi gian xung mc thp.
Nh hnh trn ta c Duty Cycle ln lt l 0%, 25%, 50%, 75%, 100%.
Mt s cng thc :

BKIT HARDWARE CLUB

www.bkit4u.com

88

HNG DN S DNG KIT 8051

Chu k : TTotal = TOn + TOff


Duty Cycle : D = TOn/TOff
Volt Output : V = Vinput x D
Khi nu TOn = 0 th VoltOutput = 0 (V) cn TOn = TTotal th VoltOutput = VoltInput .
Trong thc t ta c IC chuyn dng dng cho vic iu xung v c cc vi iu
khin c tch hp sn PWM bn trong. Vi iu khin 89V51 h 5 knh iu xung (P1.3
P1.7) c s dng kh linh hot cho vic iu xung, ngi dng ch cn ghi gi tr thch
hp vo cc thanh ghi c c tn hin PWM mong mun.

14.2 Lp trnh PWM trn 89V51


Khi to 5 knh iu xung nh sau:
void initPWM()
{
CCAPM0 = 0x42;
CCAPM1 = 0x42;
CCAPM2 = 0x42;
CCAPM3 = 0x42;
CCAPM4 = 0x42;
CMOD = 0x00;

//set P1.3 pwm mode


//set P1.4 pwm mode
//set P1.5 pwm mode
//set P1.6 pwm mode
//set P1.7 pwm mode
// setup to devide frequency by 6

CCAP0H = 0xff;
CCAP1H = 0xff;
CCAP2H = 0xff;
CCAP3H = 0xff;
CCAP4H = 0xff;
CCON |= (1<<6);

// set registry PCA


}
Sau khi khi to, mc in p 5 chn iu xung l 0V. Mun thay i gi tr
in p ta ch cn thay i ni dung trong thanh ghi CCAPnH, 0x00 tng ng vi 100%
duty cycle, 0xFF tng ng vi 0% duty cycle. Motor c ni vi P1.3 tng ng vi
knh iu xung 0. Motor c tch cc mc 0 nn gi tr trong thanh ghi CCAP0H cng
ln th motor quay cng chm (duty cycle nh th motor quay nhanh).

BKIT HARDWARE CLUB

www.bkit4u.com

89

HNG DN S DNG KIT 8051

Bi 15 : Giao tip LCD character


Mc ch:
Nm vng k thut iu khin LCD character theo 2 ch 8 bit v 4 bit.
Yu cu:
Xy dng chng trnh xut d liu ra LCD theo ch 4 bit.

15.1 Chc nng cc chn ca LCD

LCD thng s dng 14 chn, ch 16 chn khi cn iu khin n nn. Chc


nng ca cc chn nh sau:
Chc nng
Ground
Power Supply
Contrast

Control
Operation

1
2
3
4

Th t

Tn
VSS
Vdd
Vee
RS

R/W

Mc Logic
0
1
0
1
0
1
T 1 xung 0

D0
D1
D2
D3
D4
D4
D6
D7

0|1
0|1
0|1
0|1
0|1
0|1
0|1
0|1

7
8
9
Data/Command 10
11
12
13
14

BKIT HARDWARE CLUB

M t
0V
+5V
0-Vdd
D0-D7 l command
D0-D7 l Data
Write
Read
Disable
Normal
Truyn
Data
hoc
Command xung LCD
Bit 0 LSB
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7 MSB

www.bkit4u.com

90

HNG DN S DNG KIT 8051


15.2 Kt ni mn hnh LCD

Hnh trn m t kt ni LCD vi ch 16 chn, 2 chn K v A dng kt ni


vi n nn.

15.3 Cc vng nh ca LCD


15.3.1 Display Data Ram (DDRAM)
Lu tr m k t hin th ra mn hnh. M ny ging vi m ASCII. C tt c 80
nh DDRAM. Vng hin th tng ng vi ca s gm 16 nh hng u tin v 16
nh hng th hai. Chng ta c th to hiu ng dch ch bng cch s dng lnh dch ,
khi ca s hin th s dch em li hiu ng dch ch.

15.3.2 Character Generator Ram (CGRAM)


Lu tr tm mu k t do ngi dng nh ngha. Tm mu k t ny tng ng
vi cc m k t D7-D0 = 0000*D2D1D0 (* mang gi tr ty nh 0 hay 1).

BKIT HARDWARE CLUB

www.bkit4u.com

91

HNG DN S DNG KIT 8051

15.3.3 B nh CGROM
B nh dng lu tr cc k t hin th trn LCD. Cc gi tr lu trong b nh
ny nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

92

HNG DN S DNG KIT 8051

Chng ta mun hin th ch CE gia hng u tin, gi s ca s hin th


ang bt u t v tr u tin (hng th nht hin th d liu ca nh t 0x00 n 0x0f,
hng th hai hin th d liu ca nh t 0x40 n 0x4f, y l v tr home). Gi tr ca
nh 0x07 l 0x43 (k t C), ca nh 0x08 l 0x45 (k t E).
Chng ta mun hin th ch gi hng th hai, gi s c s hin th ang
v tr home. Trong bng mu k t chng ta thy khng c mu . Lc ny chng ta
phi nh ngha mu 5x8 im, gm c 8 byte, sau lu vo v tr ca mu k t
CGRAM th nht. Lc ny gi tr ca nh 0x47 l 0x00 hoc 0x08 (v tr ca mu k
t CGRAM th nht ).

15.4 Cc lnh c bn ca LCD


truyn lnh cho LCD th chn RS = 0, khi cc tn hin trn D0-D7 c
xem l lnh. ngha ca cc lnh iu khin LCD nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

93

HNG DN S DNG KIT 8051

Lnh
Clear display
Return home
Entry mode set
Display on/off
control
Cursor/Display
shift
Function set
Set CGRAM
address
Set DDRAM
address
Read BUSY flag
(BF)
Write to
DDRAM or
CGRAM
Read from
DDRAM or
CGRAM

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

Thi gian
thc thi

1.52ms

1.52ms

37s

S/
C

R/
L

37s

DL

37s

DDRAM address

37s

BF

DDRAM address

0s

D7

D6

D5

D4

D3

D2

D1

D0

43s

D7

D6

D5

D4

D3

D2

D1

D0

43s

I/D RL

CGRAM address

37s

37s

I/D 1 = Increment (by 1)


0 = Decrement (by 1)

RL

1 = Shift right
0 = Shift left

S 1 = Display shift on
0 = Display shift off

DL 1 = 8-bit interface
0 = 4-bit interface

D 1 = Display on
0 = Display off

N 1 = Display in two lines


0 = Display in one line

U 1 = Cursor on
0 = Cursor off

F 1 = Character format 5x10 dots


0 = Character format 5x7 dots

B 1 = Cursor blink on
0 = Cursor blink off

D/C 1 = Display shift


0 = Cursor shift

15.5 Kt ni LCD vi vi iu khin


LCD c 2 ch 8 bit v 4 bit. ch 8 bit, ta dng ton b 8 chn D0-D7
giao tip. ch 4 bit, ta ch dng 4 bit cao D4-D7 giao tip vi LCD. D liu gi

BKIT HARDWARE CLUB

www.bkit4u.com

94

HNG DN S DNG KIT 8051


cho LCD ch ny bao gm 4bit cao gi trc, sau s n 4bit thp. S kt ni
2 ch nh sau:

Nu mun tit kim chn, R/W c th ni xung GND. ch 4bit th 4 bit


thp ca LCD c th ni xung GND.

15.6 Khi to LCD


Qu trnh khi to LCD ch 8 bit nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

95

HNG DN S DNG KIT 8051

Qu trnh khi to ch 4 bit nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

96

HNG DN S DNG KIT 8051

15.7 Kt ni phn cng


LCD c kt ni vi Port 3 ca vi iu khin nh sau:
LED_BACKLIGHT = P3^0
PIN_RS
: P3^1
PIN_RW
: P3^2
PIN_EN
: P3^3
D4
: P3^4
D5
: P3^5
D6
: P3^6
D7
: P3^7

BKIT HARDWARE CLUB

www.bkit4u.com

97

HNG DN S DNG KIT 8051


15.8 Vit chng trnh
15.8.1 Cc hm c bn
qu trnh iu khin LCD hiu qu, ta nh ngha 1 s hm c bn nh sau
v Hm delay: trung bnh 89V51 thc hin 1 lnh mt 1us.
void lcd_delay(int time)
{
while(--time);
}
v Hm ghi d liu ra LCD:
//Ghi 4 bit
void lcd_write_4bits(unsigned char dat)
{
RW(WRITE);
//ko chn RW xung 0
EN(SET);
//set chn Enable ln 1
LCD_DATA_OUT(dat & 0xF0); //Gi data ra
lcd_delay(10);
EN(CLR);
//ko chn Enable xung 0
lcd_delay(10);
}
//Ghi 1 byte : ghi 4 bit 2 ln
void lcd_write_cmd(unsigned char cmd){
lcd_wait_busy();
RS(CMD);
lcd_write_4bits(cmd);
lcd_write_4bits(cmd << 4);
}
v Mt s macro trong file lcd.h, v d nh:
#define RS(x)

( (x) ? ( LCD_PORT |= 0x02 ) : ( LCD_PORT &= 0xFD ) )

Nu x = 1 th thc hin lnh LCD_PORT |=0x02, x=0 th thc hin LCD_PORT


&=0xFD.

15.8.2 Khi to LCD ch 4 bit


void init_lcd() {
lcd_delay(15000);
RS(CMD);
lcd_write_4bits(0x03 << 4);
lcd_delay(4100);
lcd_write_4bits(0x03 << 4);
lcd_delay(100);

BKIT HARDWARE CLUB

//1
//2
//3
//4
//5
//6

www.bkit4u.com

98

HNG DN S DNG KIT 8051


lcd_write_4bits(0x03 << 4);
lcd_write_4bits(0x02 << 4);
lcd_write_cmd(0x28) ;
lcd_write_cmd(0x0C);
lcd_write_cmd(0x06);

//7
//8
//9
//10
//11

}
ngha cc lnh trn nh sau:
v Lnh 1 : gi hm lcd_delay(15000) delay 15ms.
v Lnh 2 : ko chn RS (ni vi LCD_PORT ti bit 1) xung 0. Lnh ny c
nh ngha l 1 macro trong file lcd.h:
#define RS(x)
( (x) ? ( LCD_PORT |= 0x02 ) : ( LCD_PORT &= 0xFD ) )
CMD c define l 0 nn lnh RS(CMD) s c iu kin (x) l false v s thc
hin phn th 2 ca lnh trn : LCD_PORT & 0xFD (ko bit 1 xung 0 : 1111 1101).
v Lnh 3 : thc hin trng thi u tin sau khi ch 15ms, ghi D7 D6 D5 D4 =
0011. Cc chn ny c ni vi 4 bit cao ca vi iu khin nn ta phi dch tri gi tr
0x03 4 bit.
v Lnh 4 : delay khong 41ms.
v Lnh 5,6,7,8 : Thc hin cc trng thi 2,3 v 4. Sau lnh 7 th LCD
chuyn sang ch 4 bit, v gi 1 byte, ta s gi 2 ln 4 bit cao trc ri ti 4 bit thp.
v Lnh 9 : gi hm lcd_write_cmd ghi 4 bit 2 ln, gi tr 0x28 tng ng vi
N = 1 (hin th trn 2 hng ca LCD) v B = 0 (font nh dng 5x7 im).
v Lnh 10 : thc hin lnh display on (xem thm trong bng lnh), D = 1.
v Lnh 11 : thc hin lnh entry set mode, 0x06 tng ng vi ch dch phi
tng dn.

15.8.3 Xo mn hnh
Hm ny ch n gin l gi lnh clear mn hnh lcd (xem thm trong bng lnh
ca LCD).
void lcd_clear()
{
lcd_write_cmd(0x01);
lcd_goto_xy(0, 0);
}

15.8.4 Thit lp v tr con tr


Hm ny thit lp v tr bt u xut d liu trn mn hnh LCD 2 hng 16 ct.
hin thc hm ny ta phi tnh c a ch tng ng vi to (row,col) v dng lnh
SET DDRAM ADDRESS (bit 7 ca lnh ny bng 1).
char lcd_goto_xy(unsigned char row, unsigned char col) {
unsigned char addr = 0x00;
if(col >= 20 || row >= 4)
return FALSE;
if(row < 2) {
addr = (row * 0x40) + col;
addr = 0x80 | (addr & 0x7F);

BKIT HARDWARE CLUB

www.bkit4u.com

99

HNG DN S DNG KIT 8051


}
else {
addr = (row * 0x40) + col;
addr = 0x94 | (addr & 0x7F);
}
lcd_write_cmd(addr);
current_row = row;
current_col = col;
return TRUE;
}

15.8.5 In k t ra mn hnh
Hm ny nhn thng s l 1 k t v hin th k t ra mn hnh LCD. Vic hin
thc hm ny kh n gin, ta ch cn ko chn RS xung 0 l LCD s hiu cc bit D7D4 l d liu.
void lcd_print_char(unsigned char dat)
{
lcd_wait_busy();
//find next position
if(current_row == 0 && current_col == 16)
lcd_goto_xy(1,0);
if(current_row == 1 && current_col ==16)
lcd_goto_xy(0,0);
RS(DAT); //RS = 0
lcd_write_4bits(dat);
lcd_write_4bits(dat << 4);
current_col ++; //update new position
}
T nhng hm c bn ny, bn c th hin thc thm cc hm xut 1 string
hay 1 gi tr s ra mn hnh LCD. Code chi tit c th xem thm trong th mc Bi 15.

BKIT HARDWARE CLUB

www.bkit4u.com

100

HNG DN S DNG KIT 8051

Bi 16 : Giao tip I2C DS1307


Mc ch:
Nm vng giao tip I2C
Yu cu:
Xy dng ng dng giao tip vi DS1307 ly d liu ngy thng nm, gi pht
giy.

16.1 Cc c im ca DS1307
Real time clock m gi, pht, giy, thng, ngy ca
thng, ngy ca tun, nm k c nm nhun (n nm 2100).
56 byte Ram lu tr d liu, nhng d liu khng b
mt khi tt ngun.
S dng 2 dy tn hiu truyn d liu theo giao thc
I2C.
C th lp trnh c xut tn hiu xung vung.
T ng pht hin ra ngun cung cp b li (ngt ngun) v chuyn qua
mch bo v s dng ngun pin d tr.

16.2 Nguyn l hot ng


DS1307 hot ng nh mt slaver trn bus d liu ni tip. truy xut
ni dung ta phi thit lp mt iu kin Start v cung cp m nhn dng ca IC
(Device Identification Code) theo sau bi thanh ghi a ch. Cc thanh ghi theo sau
c truy xut tun t cho n khi gp tn hiu Stop.
Khi VCC = 1.25Vbat th DS1307 s kt thc vic truy xut v reset li b
m a ch. Cc Input s khng c nhn ra ti thi im ny ngn nga mt
s lng ln d liu c ghi ti DS1307 t h thng bn ngoi. Khi VCC < Vbat
th ic ny s chuyn sang mode s dng pin d tr. Khi ngun chnh c bt ln
th IC ny s chuyn t dng ngun pin sang dng ngun chnh. Hnh sau m t
nhng phn chnh ca DS1307.

BKIT HARDWARE CLUB

www.bkit4u.com

101

HNG DN S DNG KIT 8051

16.3 Cc tn hiu Input v Output


VCC, GND : Ngun DC c cung cp cho IC qua nhng chn ny. Khi
gn vo ngun 5V th IC ny c th c ghi bnh thng. Nhng khi ngun gim
xung cn 3V th vic c ghi s khng c php. Tuy nhin, cc chc nng ca
timer vn tip tc vi ngun cung cp thp. Khi Vcc gim xung di VBAT th
RAM v timekeeper c chuyn qua s dng ngun cung cp ti VBAT.
VBAT : Cung cp ngun d tr 3V. hot ng ch s dng ngun
Vbat th 2.0V < Vbat < 3.5V. Khi VCC gn bng 1.25VBAT th chng ta s
khng c php truy xut vo RTC (Real time clock) v Ram bn trong ca IC.
SCL (Serial Clock Input) : SCL c dng ng b d liu trn ng
truyn ni tip.
SDA (Serial Data Input/Output) : SDA l chn I/O. SDA l chn Open
drain nn cn c in tr ko ln bn ngoi.
SQW/OUT (Square Wave/Output Driver) : Khi c bt ln, th bit SQWE
set ln 1, v chn ny s output ra 1 trong 4 tn s sng vung l 1hz, 4khz, 8khz,
BKIT HARDWARE CLUB

www.bkit4u.com

102

HNG DN S DNG KIT 8051


32khz. Chn ny cng l chn Open drain nn cng yu cu c in tr ko ln
ngun bn ngoi. SQW/OUT s hot ng khi c ngun cung cp vo cho d
l ngun VCC hay l VBAT.
X1, X2 : Kt ni vi thch anh 32.768Khz. Mch to xung bn trong c
thit k hot ng vi thch anh v t CL = 12.5 pF.

16.4 RTC v s a ch Ram


S a ch ca RTC v cc thanh ghi Ram ca DS1307 nh hnh di.
Cc thanh ghi RTC c nh a ch t 00h n 07h. Cc thanh ghi Ram c
nh a ch tip theo sau v t 08h n 3fh. Trong khi truy sut nhiu byte v
khi con tr a ch ch ti 3fh, v tr cui ca vng nh Ram, th n s quay li
a ch 00h truy xut tip.

16.5 Thng tin thi gian v lch


Thng tin thi gian v lch c cha trong trong cc thanh ghi tng ng.
Cc thanh ghi RTC nh hnh trn. Thi gian v lch c set hoc khi to bng
cch ghi ra cc byte thanh khi tng ng. Ni dung ca cc thanh ghi thi gian v
lch c nh dng theo kiu BCD. Bit 7 ca thanh ghi 0 l clock halt bit (CH).
Khi bt ny c set ln 1 th mch dao ng s b n khng c s dng na,
khi clear xung 0 th mch dao ng s c kch hot tr li.
DS1307 c th chy ch 12h hay 24h. Bt th 6 ca thanh ghi hours
c nh ngha set xem s dng IC ny ch no. Khi bit ny bng 1 th
ch 12h c chn. Trong ch 12h th bit 5 ch AM/PM (PM khi bit ny l
1). Trong ch 24h, th bt 5 l bt th 2 ca 10hour (20:23).

BKIT HARDWARE CLUB

www.bkit4u.com

103

HNG DN S DNG KIT 8051

16.6 Thanh ghi iu khin (Control Register)


Thanh ghi iu khin ca DS1307 c s dng iu khin hot ng
ca chn SQW/OUT.

Out (Output control) : Bt ny iu khin mc logic xut ra trn chn


SQW/OUT khi m sng vung khng c kch hot. Nu SQWE = 0, th mc
logic trn chn SQW/OUT l 1 nu OUT = 1, v l 0 nu OUT = 0.
SQWE (Square Wave Enabel) : Bt ny khi c set ln mc 1 th s kch
hot mch dao ng xut ra ngoi. Tn s ca sng vung ph thuc vo gi tr
bt RS0 v RS1. Vi sng vung xut ra 1Hz th thanh ghi clock s cp nhp d
liu khi c cnh xung ca xung vung.
RS (Rate select) : Nhng bit ny iu khin tn s ca sng vung c
xut ra trn chn SQW/OUT. Bng sau lit k ra cc tn s c th c chn bi 2
bit RS ny.

16.7 Bus d liu ni tip.


DS1307 h tr truyn d liu 2 chiu v giao thc truyn d liu I2C trn 2
dy ny. Thit b gi d liu trn bus gi l transmitter v thit b nhn d liu gi
l receiver. Thit b iu khin cc message gi l master. Thit b c iu
khin bi master th gi l slaver.
Bus d liu c iu khin bi master. Bn cnh n cng c nhim v
to xung clock trn ng tn hiu SCL, iu khin truy xut bus, v to cc tn
hiu Start, Stop. DS1307 hot ng nh mt slave trn ng bus ny.

BKIT HARDWARE CLUB

www.bkit4u.com

104

HNG DN S DNG KIT 8051

Cc trng thi ca bus:


Bus khng bn : khi c 2 ng gi tn hiu mc high.
Bt u truyn d liu (start condition) : Thay i trng thi trn ng d
liu t High xung Low, trong khi ng clock n nh mc high c nh
ngha l mt tn hiu Start.
Kt thc truyn d liu (stop condition) : Thay i trng thi trn ng d
liu t Low ln High, trong khi ng clock n nh mc high th c nh
ngha l mt tn hiu Stop.
D liu hp l : Trng thi ca ng d liu biu din d liu hp l khi
theo sau bi tn hiu START, ng d liu n nh trong khong thi gian m tn
hiu clock mc High. D liu trn ng d liu phi c thay i trong
khong thi gian m tn hiu clock mc Low.
Mi khi truyn d liu iu c bt u bi mt tn hiu Start v kt thc
vic truyn bng mt tn hiu Stop. S byte d liu truyn gia 2 tn hiu Start v
Stop l khng hn ch v c xc nh bi master. Thng tin c truyn v mi
ln truyn receiver gi thm ack bt th 9. cho bit l nhn xong mt byte
d liu.

16.8 Giao thc I2C v RTC DS1307


16.8.1 Kt ni phn cng
Gt switch 1 v 2 ln ON kch hot P1 v P3.
SDA c ni vi P1.0.
SCL c ni vi P1.1.

16.8.2 Start v Stop truyn d liu


Vic truyn d liu c bt u bi mt tn hiu Start v kt thc vic
truyn bng mt tn hiu Stop. S byte d liu truyn gia 2 tn hiu Start v Stop
l khng hn ch v c xc nh bi master.
Gin xung cho iu kin Start nh sau:

BKIT HARDWARE CLUB

www.bkit4u.com

105

HNG DN S DNG KIT 8051

Da vo gin trn ta hin thc hm Start I2C nh sau :


void start_I2C()
{
SCL = 1;
SDA = 1;
nop();nop();
SDA = 0;
SCL = 0;
nop();nop();
}
Tc clock chun ca giao thc I2C l 100KHz. Khi truyn tc cao c th
hot ng clock 1MHz. Tuy nhin bn nn delay vi uS m bo tnh ng n ca
d liu.
Gin xung cho iu kin Stop nh sau

Hm Stop I2C c hin thc nh sau:


void stop_I2C()
{
SCL = 1;
SDA = 0;
nop();nop();
SDA = 1;
}

BKIT HARDWARE CLUB

www.bkit4u.com

106

HNG DN S DNG KIT 8051


16.8.3 Truyn 1 byte d liu
Khi truyn 1 byte d liu, bit c trng s cao nht (bit 7) s c truyn trc.
Khi bit cui cng (bit 0) c truyn, s c thm bit ACK bo hiu kt thc 1 byte d
liu.

Truyn t master xung slave:


ch ny, master s gi 8 bit d liu, sau khi nhn xong 8 bit ny, slave s t
ng gi li 1 bit ACK v master phi to ra thm 1 clock nhn bit ACK ny.
//write I2C
void write_I2C(unsigned char data2send)
{
int i;
for (i=0;i<8;i++)
{
SDA = (data2send & 0x80) ? 1:0;
SCL=1;
nop();
SCL=0;
data2send<<=1;
nop();
}
//clock to receive ACK from slave
SCL = 1;
nop();nop();
SCL = 0;
}

Truyn t slave ln master


ch ny, master s nhn vo 8 bit d liu, v sau khi nhn xong, master phi
gi 1 bit ACK xung slave. Trong qu trnh c 1 chui byte t slave, master gi bit
ACK. i vi byte cui cng, master s gi bit NO ACK v sau gi tn hiu stop.
Hm c 1 byte sau y c tham s l ACK_Bit, dng phn bit ACK v NACK.
unsigned char read_I2C(bit ACK_Bit)
{
unsigned char Data=0;
int i;
SDA = 1;
for (i=0;i<8;i++)
{
SCL = 1;
Data<<= 1;
Data = (Data | SDA);
SCL = 0;

BKIT HARDWARE CLUB

www.bkit4u.com

107

HNG DN S DNG KIT 8051


nop();
}
if (ACK_Bit == 1)
SDA = 0; // Send ACK
else
SDA = 1; // Send NO ACK
nop();nop();
//clock to send (N)ACK
SCL = 1;
nop();nop();
SCL = 0;
return Data;
}

16.8.4 Giao tip vi DS1307

Ghi d liu vo DS1307

y l qu trnh truyn d liu t master xung slave. Khi master gi xong 1


byte, slave s gi li bit ACK. Qu trnh giao tip nh sau:
v Master gi tn hiu Start.
v Master gi a ch ca DS1307 (1101 000) v bit R/W, trong trng hp
ny l 0. Byte u tin m master gi xung sau khi start l D0.
v Master gi a ch pointer d liu cn ghi, chng hn l 0x00 (register
pointer, word address)
v Master gi cc byte data cn ghi.
v Master gi tn hin stop.
Code hin thc cho qu trnh ny nh sau
void write_RTC(unsigned char *buff)
{
start_I2C();
write_I2C(0xD0);
write_I2C(0x00);
write_I2C(*(buff+0));
write_I2C(*(buff+1));
write_I2C(*(buff+2));
BKIT HARDWARE CLUB

www.bkit4u.com

108

HNG DN S DNG KIT 8051


write_I2C(*(buff+3));
write_I2C(*(buff+4));
write_I2C(*(buff+5));
write_I2C(*(buff+6));
stop_I2C();
}
buff l 1 mng c 7 phn t, tng ng vi cc gi tr giy, pht, gi, th, ngy,
thng v nm.

c d liu t DS1307

y l qu trnh truyn d liu t slave ln master. Nh trnh by phn trc,


khi gi nhn tng byte, s c bit ACK i km ngoi tr byte cui cng trc khi stop.
c th c chnh xc gi tr mong mun, thng thng ta phi ghi vo thanh
ghi a con tr d liu (register pointer). Qu trnh ny chnh l trnh truyn d liu t
master xung slave nn R/W bit s l 0. Sau khi ghi d liu v register pointer xong, qu
trnh c d liu mi bt u, v bit R/W s l 1.
Tng bc c d liu t DS1307 nh sau:
v Master gi tn hiu start.
v Master gi a ch DS1307 + R/W = 0 : 0xD0.
v Master gi byte ghi vo register pointer : 0x00.
v Master gi tn hiu start
v Master gi a ch DS1307 + R/W = 1 : 0xD1.
v Master c cc byte d liu v gi bit ACK. Byte cui cng trc khi stop,
master gi bit NACK.
v Master gi tn hin stop.
Code hin thc cho qu trnh ny nh sau
void read_RTC(unsigned char * buff)
{
//send address to slave and reset pointer
start_I2C();
write_I2C(0xD0); //address + direction
write_I2C(0x00); //pointer data
//start read operation
start_I2C();
write_I2C(0xD1);
*(buff+0)=read_I2C(ACK);
*(buff+1)=read_I2C(ACK);
*(buff+2)=read_I2C(ACK);
*(buff+3)=read_I2C(ACK);

BKIT HARDWARE CLUB

// Second
// Minute
// hour
// Day

www.bkit4u.com

109

HNG DN S DNG KIT 8051


*(buff+4)=read_I2C(ACK); // date
*(buff+5)=read_I2C(ACK); // month
*(buff+6)=read_I2C(NO_ACK);
// year
stop_I2C();
}
Hm main() di y minh ho cho vic s dng cc hm trong module RTC
DS1307:
void main()
{
P1 = P3 = 0x00;
RTC_ARR[0] = 0x12;
RTC_ARR[1] = 0x55;
RTC_ARR[2] = 0x05;
RTC_ARR[3] = 0x01;
RTC_ARR[4] = 0x01;
RTC_ARR[5] = 0x08;
RTC_ARR[6] = 0x05;

//second = 12
// minute = 55
// hour = 05 ,24-hour mode(bit 6=0)
// Day = 1 or sunday
// Date = 01
// month = August
// year = 05 or 2005

write_RTC(&RTC_ARR[0]); // Set RTC


while(1)
{
read_RTC(&RTC_ARR[0]); //read 7 bytes RTC
P3=RTC_ARR[0];
delay();;

//out second to P3
// delay about 1 second

}
}

BKIT HARDWARE CLUB

www.bkit4u.com

110

You might also like