You are on page 1of 41

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

1 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

Trang ch
Th vin ring
Ti liu ng ln
Ti liu xem
Ti khon
Tr gip
Tt c
Biu mu - Vn bn
Cng Ngh Thng Tin
Gii Tr - Th Gin
Gio Dc - o To
K ton
Khoa Hc T Nhin
Khoa Hc X Hi
Kinh Doanh - Tip Th
Kinh T - Qun L
K Nng Mm
K Thut - Cng Ngh
Lun vn
Ngoi Ng
Nng - Lm - Ng
Ti Chnh - Ngn Hng
Th loi khc
Vn Bn Lut
Vn Ho - Ngh Thut
Vn hc
Y T - Sc Kho

kiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieukiem tai lieu

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

2 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

TRNG I HC BCH KHOA H NI


VIN IN
N 1
ti
Thit k my tnh b ti s dng vi x l 89C51
GVHD : Thy Nguyn Tun Ninh
SVTH : Nguyn Cao Nguyn 20101947

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

3 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

Nguyn Danh Tn 20102128


Lu Nh Tnh 20102321
Ng nh V 20102577
1

Li ni u
Ngy nay cng vi s tin b ca khoa hc k thut, c bit l ngnh vi iu khin.
i sng x hi ngy cng pht trin cao da trn nhng ng dng ca khoa hc vo i
sng. V vy m nhng cng ngh in t mang tnh t ng ngy cng c ng dng
rng ri. Trong s c s ng gp khng nh ca k thut vi iu khin. Cc b vi
iu khin ang c ng dng rng ri v thm nhp ngy cng nhiu trong cc lnh
vc k thut v i sng x hi. Hu ht l cc thit b c iu khin t ng t cc

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

4 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

thit b vn phng cho n cc thit b trong gia nh u dung cc b vi iu khin nhm


em li s tin nghi cho con ngi trong thi i cng nghip ha, hin i ha.
Ngoi ra cng vi s pht trin ca cc ngnh kinh t, gio dc, y hc, lm tng s
lng cng vic tnh ton v x l s liu v phi tip cn nhng con s ln v l m
khng th tnh ton bng tay c. Chnh v vy chng em la chn ti cho n 1 l
: Thit k my tnh b ti s dng vi x l 89C51 ny.
Tuy c gng thc hin n trong s nghim tc v trch nhim nht, nhng do kh
nng nghin cu cng nh kin thc cc thnh vin cn nhiu hn ch nn khng th
trnh khi nhng li v thiu st. Rt mong nhn c nhng kin ng gp tch cc t
thy Nguyn Tun Ninh !
2

MC LC
Trang
Trang ba .1
Li ni u ..2
Phn 1: GII THIU ..4
Phn 2 : C S L THUYT5
I Cc linh kin s dng trong mch ...5

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

5 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

II c im, cu to, chc nng ca cc linh kin ....5


Phn 3 : THIT K V M PHNG .....21
I S khi ..21
II M phng ..22
III Code chng trnh ...23
Phn 4 : KT QU V HNG PHT TRIN ...39
Cc ti liu tham kho .40
3

ang ti xung...
ang ti xung...
ang ti xung...

Phn I
GII THIU
I. Mc tiu ti
- Nng cao hiu qu tnh ton s liu
- Tng tc tnh ton v x l s liu
- Thy c tm quan trong ca vic ng dng vi iu khin vo cc lnh vc
khc nhau trong cuc sng

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

6 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

89C51 c tt c 40 chn c chc nng nh cc ng xut nhp. Trong c 24 chn


c tc dng kp (c ngha 1 chn c 2 chc nng), mi ng c th hot ng nh
ng xut nhp hoc nh ng iu khin hoc l thnh phn ca cc bus d liu v
bus a ch.
8

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

7 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

1. GND ( chn 20) : chn ni t 0V.


2. Port 0 l port c 2 chc nng cc chn 32 39 ca 8951. Trong cc thit k c
nh khng dng b nh m rng n c chc nng nh cc ng IO. i vi cc
thit k c ln c b nh m rng, n c kt hp gia bus a chv bus
dliu..
3. Port 1 l port IO trn cc chn 1-8. Cc chn c k hiu P1.0, P1.1, P1.2, c
th dng cho giao tip vi cc thit b ngoi nu cn. Port 1 khng c chc nng

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

8 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

khc, v vy chng ch c dng cho giao tip vi cc thit b bn ngoi.


4. Port 2 l 1 port c tc dng kp trn cc chn 21 - 28 c dng nh cc ng
xut nhp hoc l byte cao ca bus a ch i vi cc thit b dng b nh m
rng.
5. Port 3 l port c tc dng kp trn cc chn 10 - 17. Cc chn ca port ny c
nhiu chc nng, cc cng dng chuyn i c lin h vi cc c tnh c bit
ca 8951 nh bng sau:
Bit Tn Chc nng chuyn i
P 3.0
P 3.1
P 3.2
P 3.3
RxD
TxD
INT0
Ng vo d liu ni tip
Ng xut d liu ni tip
Ng vo ngt cng th 0
9

P 3.4
P 3.5
P 3.6
P 3.7
INT1
TO
T1

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

9 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

WR
RD
Ng vo ngt cng th 1
Ng vo ca TIMER/COUNTER th 0
Ng vo ca TIMER/COUNTER th 1
Tn hiu ghi d liu ln b nh ngoi
Tn hiu c b nh d liu ngoi
6. PSEN ( Program store enable ): PSEN l tn hiu ng ra chn 29 c tc dng cho
php c b nh chng trnh m rng thng c ni n chn 0E\ (output
enable) ca Eprom cho php c cc byte m lnh. PSEN mc thp trong thi
gian Microcontroller 8951 ly lnh. Cc m lnh ca chng trnh c c t
Eprom qua bus d liu v c cht vo thanh ghi lnh bn trong 8951 gii m
lnh. Khi 8951 thi hnh chng trnh trong ROM ni PSEN s mc logic 1.
7. ALE ( Address latch enable ) : Khi 8951 truy xut b nh bn ngoi, port 0 c
chc nng l bus a ch v bus d liu do phi tch cc ng d liu v a
ch. Tn hiu ra ALE chn th 30 dng lm tn hiu iu khin gii a hp cc
ng a chv d liu khi kt ni chng vi IC cht. Tn hiu ra chn ALE l
mt xung trong khong thi gian port 0 ng vai tr l a ch thp nn cht a
ch hon ton t ng. Cc xung tn hiu ALE c tc bng 1/6 ln tn s dao
ng trn chip v c th c dng lm tn hiu clock cho cc phn khc ca h
thng. Chn ALE c dng lm ng vo xung lp trnh cho Eprom trong 8951.
10

ang ti xung...
ang ti xung...
ang ti xung...
ang ti xung...

8. EA ( External access) : Tn hiu vo EA\ chn 31 thng c mc ln mc 1


hoc mc 0. Nu mc 1, 8951 thi hnh chng trnh t ROM ni trong khong
a ch thp 8 Kbyte. Nu mc 0, 8951 s thi hnh chng trnh t b nh m
rng. Chn EA c ly lm chn cp ngun 21V khi lp trnh cho Eprom trong
8951.
9. RST ( Reset ) : Ng vo RST chn 9 l ng vo Reset ca 8951. Khi ng vo tn
hiu ny a ln cao t nht l 2 chu k my, cc thanh ghi bn trong c np

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

10 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

nhng gi tr thch hp khi ng h thng. Khi cp in mch t ng Reset.


10. X1, X2 : B dao ng c tch hp bn trong 8951, khi s dng 8951 ngi
thit k ch cn kt ni thm thch anh v cc t nh hnh v trong s . Tn s
thch anh thng s dng cho 8951 l 12Mhz.
11. Vcc : chn ngun ni ln 5V .
b. T chc b nh
B nh bn trong chip bao gm ROM, RAM v EPROM. RAM trn chip bao
gm vng RAM a chc nng, vng RAM vi tng bit c nh a ch, cc dy
thanh ghi (bank) v cc thanh ghi chc nng c bit.
C 2 c tnh ng lu :
+ Cc thanh ghi v cc port I/O c nh a ch theo kiu nh x b nh v c
truy xut nh mt v tr nh trong b nh.
+ Vng track thng ch trong RAM trn chip thay v trong RAM ngoi nh
11

vi VCC=5V ca mch iu khin


3 VEE iu chnh tng phn ca LCD.
4 RS
Chn chn thanh ghi (Register select). Ni chn RS vi logic
0 (GND) hoc logic 1 (VCC) chn thanh ghi.
+ Logic 0: Bus DB0-DB7 s ni vi thanh ghi lnh IR ca
LCD ( ch ghi - write) hoc ni vi b m a ch ca

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

11 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

LCD ( ch c - read)
+ Logic 1: Bus DB0-DB7 s ni vi thanh ghi d liu DR
bn trong LCD.
5 R/W
Chn chn ch c/ghi (Read/Write). Ni chn R/W vi
logic 0 LCD hot ng ch ghi, hoc ni vi logic
1 LCD ch c.
6E
Chn cho php (Enable). Sau khi cc tn hiu c t ln bus
DB0-DB7, cc lnh ch c chp nhn khi c 1 xung cho
php ca chn E.
+ ch ghi: D liu bus s c LCD chuyn vo(chp
nhn) thanh ghi bn trong n khi pht hin mt xung (highto-low transition) ca tn hiu chn E.
+ ch c: D liu s c LCD xut ra DB0-DB7 khi
pht hin cnh ln (low-to-high transition) chn E v c
LCD gi bus n khi no chn E xung mc thp.
7 - 14 DB0 DB7
Tm ng ca bus d liu dng trao i thng tin vi
MPU. C 2 ch s dng 8 ng bus ny :
16

+ Ch 8 bit : D liu c truyn trn c 8 ng, vi bit


MSB l bit DB7.
+ Ch 4 bit : D liu c truyn trn 4 ng t DB4 ti
DB7, bit MSB l DB7
15 A
Ngun dng cho n nn
16 K

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

12 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

GND cho n nn
17

Bng 1 : Chc nng cc chn ca LCD


Ch : Chn 15 v chn 16: ghi l A v K. N l anot v katot ca mt con
led dng sng LCD trong bng ti, chng ta c th k ni , nu s dng ni chn
15 vi tr 220 or 330 m ln VCC , chn 16 ni t.
b. Cc thnh phn chc nng
- C Busy (BF - Busy flag): Nu BF = 1, LCD ang trong qu trnh thc thi mt
lnh. Khi , cc lnh gi tip theo s b b qua. BF c c ti chn D7 khi RS

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

13 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

= 0 v R/W = 1. Do , trc khi thc hin mt lnh, cn kim tra BF trc, nu


BF = 0 th mi gi lnh.
DD
- Vng RAM hin th DDRAM : (Display Data RAM)
y l vng RAM dng hin th, ngha l ng vi mt a ch ca RAM
l mt k t trn mn hnh v khi bn ghi vo vng RAM ny mt m 8 bit, LCD
18

s hin th ti v tr tng ng trn mn hnh mt k t c m 8 bit m bn cung


cp. Hnh sau y s trnh by r hn mi lin h ny :
Hnh 4 : Mi lin h gia a ch ca DDRAM v v tr hin th ca LCD
Vng RAM ny c 80x8 bit nh, ngha l cha c 80 k t m 8
bit.Nhng vng RAM cn li khng dng cho hin th c th dng nh vng RAM
a mc ch.
Lu l truy cp vo DDRAM, ta phi cung cp a ch cho AC theo m HEX

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

14 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

- B m a ch AC : (Address Counter)
Sau khi ghi vo (c t) RAM, b m AC t ng tng ln (gim i) 1 n
v v ni dung ca AC c xut ra cho MPU thng qua DB0-DB6 khi c thit lp
RS=0 v R/W=1 (xem bng tm tt RS - R/W).
Lu : Thi gian cp nht AC khng c tnh vo thi gian thc thi lnh m c
cp nht sau khi c BF ln mc cao (not busy), cho nn khi lp trnh hin th, bn
phi delay mt khong tADD khong 4uS-5uS (ngay sau khi BF=1) trc khi np
19

d liu mi.
Hnh 4 : Gin xung cp nht AC
- CGROM (Character Genaration ROM):
Cha cc m hnh k t s hin th trn LCD, bao gm 192 k t 5x7 theo
bng m ASCII (ngha l khi DDRAM cha gi tr 41H tng ng vi m ASCII
ca k t 'A' th trn LCD s hin 'A'), trong d ch c cc m t 00H-0Fh s
khng ly theo m ASCII m ly theo cc k t nh ngha trong CGRAM.

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

15 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

- Vng RAM cha k t ha CGRAM : (Character Generator RAM)


Nh trn bng m k t, nh sn xut dnh vng c a ch byte cao l 0000
ngi dng c th to cc mu k t ha ring. Tuy nhin dung lng vng ny
rt hn ch: Ta ch c th to 8 k t loi 5x8 im nh, hoc 4 k t loi 5x10 im
nh.
- Cc ch truyn d liu:
LCD 16x2 c 2 ch truyn d liu : ch 8 bit ( dng c D0-D7 ) v ch 4
bit ( khng dng D3 - D0, ch dng D7-D4 ). Trong trng hp dng ch 4 bit,
d liu 8 bit s c truyn 2 ln: truyn 4 bit cao ri tip tc truyn 4 bit thp. Sau
khi thc hin truyn xong 8bit, BF mi chuyn ln 1.
20

- Bng m lnh trong LCD 162 :


21

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

16 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

3. Bn phm keypad small calculator


Hnh 4: C cu bn phm keypad small calculator
4.Cc linh kin khc
- Mch to dao ng thch anh 12MHz:
22

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

17 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

Cp ngun 5V cho vi iu khin (Vcc: 5V chn 40; GND: 0V chn 20). Trong
C1,C2= 30pF10pF (thng c s dng vi C1,C2 l t 33pF) dng n nh
dao ng cho thch anh.
Phn 3:
THIT K V M PHNG
I. S KHI
23

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

18 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

II. MCH M PHNG


- y l mch m phng nguyn l cu to my tnh b ti s dng chip AT89C51,
bn phm v LCD16x2 trn phn mm Proteus 7.8
24

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

19 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

III. CODE CHNG TRNH


25

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

20 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

1. Cc th vin s dng trong chng trnh


a. Th vin LCD 16x2 ch 8 bit
/*==================Thu vien LCD16x2==============================
- Cac chan:
+ Vss : Mass
+ Vcc : Nguon 5V
+ Vee : Cap nguon dieu khien tuong phan

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

21 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

+ RS : Chon thanh ghi(register select).


1- thanh ghi data
0- Thanh ghi lenh
+ RW : read/write(1/0)
+ EN : Cho phep(enable)
- Ma lenh LCD:
+ 01h Xoa man hinh hien thi
+ 02h Tro ve dau dong
+ 04h Giam con tro(dich con tro sang trai)
+ 06h Tang con tro(dich con tro sang phai)
+ 05h Dich hien thi sang phai
+ 07h Dich hien thi sang trai
26

+ 08h Tat con tro, tat hien thi


+ 0ah Tat hien thi, bat con tro
+ 0ch Bat hien thi, tat con tro
+ 0eh Bat hien thi, nhap nhay con tro
+ 0fh Tat con tro, nhap nhay con tro
+ 10h Dich vi tri con tro sang trai
+ 14h Dich vi tri con tro sang phai

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

22 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

+ 18h Dich toan bo hien thi sang trai


+ 1ch Dich toan bo hien thi sang phai
+ 80h Ep con tro ve dau dong thu nhat
+ 0c0 Ep con tro ve dau dong thu 2
+ 38h Hai dong va ma tran 5x7
==============================================================*/
//==================== Main library =================================
#ifndef __LCD_16x2__
//===============Khai bao bien=====================================
sfr LCD_data = 0xA0;
sbit RS = P3^0 ;
27

sbit RW = P3^1 ;
sbit EN = P3^2 ;
//=================== DELAY ==================
void delay_LCD(unsigned int time)
{
while(time--);
}

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

23 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

//================ Write command =================================


void write_command(unsigned char str)
{
RW = 0 ; //Chon write
RS = 0 ; //Chon thanh ghi lenh
LCD_data = str; //Gui lenh
EN = 0 ; //Tao xung canh len(enable)
EN = 1 ;
EN = 0 ;
delay_LCD(5000); //wait busy LCD
}
28

//================= Write data 1char ===============================


void write_data(unsigned char str)
{
RW = 0 ; //Chon write
RS = 1 ; //Chon thanh ghi data
LCD_data = str; //Gui lenh
EN = 0 ; //Tao xung canh len(enable)

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

24 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

EN = 1 ;
EN = 0 ;
delay_LCD(5000); //wait busy LCD
}
//================= Khoi tao LCD ==================================
void LCD_khoitao(void)
{
write_command(0x38); //2 dong va font 5x7
write_command(0x0e); // bat man hinh va con tro
write_command(0x01); // xoa man hinh
}
29
Thit k my tnh b ti dng vi iu khin AT89C51 - Trang 30

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

25 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

#endif
b. Qut bn phm
/*==============================================================
GIAO TIEP PHIM BAM CACULATOR(4x4)
-Phuong phap : Quet phim
-Nam : Scan_keypad.h
==============================================================*/
#ifndef __SCAN_KEYPAD_SMALL_H__
#define __SCAN_KEYPAD_SMALL_H__
//============ Bien toan cuc ======================================
sfr keypad = 0x90 ; //Port 1
sbit H1 = 0x90 ; //Hang1
sbit H2 = 0x91 ; //Hang2
sbit H3 = 0x92 ; //Hang3
sbit H4 = 0x93 ; //Hang4
sbit C1 = 0x94 ; //Cot 1
sbit C2 = 0x95 ; //Cot 2
sbit C3 = 0x96 ; //Cot 3
sbit C4 = 0x97 ; //Cot 4
30

unsigned int phim_bam = 0 ;


//============= Main =============================================
void delay_keypad ( unsigned int time )
{
while( time -- );
}
int scan_keypad ( void )

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

26 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

{
phim_bam = 0 ;
keypad = 0xf0 ; //Quet cot
while(keypad == 0xf0) ; //wait phim bam
delay_keypad ( 1000 ); //Chong nay phim
if( C1 == 0 ) phim_bam = 0 ;
if( C2 == 0 ) phim_bam = 1 ;
if( C3 == 0 ) phim_bam = 2 ;
if( C4 == 0 ) phim_bam = 3 ;
keypad = 0xff; //Xoa port trc khi quet
keypad = 0x0f; //Quet hang
31

if( H1 == 0 ) phim_bam += 0 ;
if( H2 == 0 ) phim_bam += 4 ;
if( H3 == 0 ) phim_bam += 8 ;
if( H4 == 0 ) phim_bam += 12 ;
while ( keypad != 0x0f ) ; //wait nha phim bam
switch ( phim_bam )
{

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

27 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

case 0 : return '7';


case 1 : return '8';
case 2 : return '9';
case 3 : return ':';
case 4 : return '4';
case 5 : return '5';
case 6 : return '6';
case 7 : return 'x';
case 8 : return '1';
case 9 : return '2';
case 10: return '3';
case 11: return '-';
case 12: return ' ';
32

case 13: return '0';


case 14: return '=';
case 15: return '+';
}
}
#endif
c. Chng trnh chnh

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

28 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

/*=============================================================
PROGRAM CACULATOR SMALL
- Muc dich : Thiet ke may tinh cam tay thuc hien duoc cac phep tinh co ban
+ Cong
+ Tru
+ Nhan
+ Chia
- Su dung ban phim voi 16 phim(4x4)
- Hien thi tren man hinh LCD 16x2
==============================================================*/
//Khai bao tien xu ly
#include <REGX51.H>
33

#include <string.h>
#include "LCD16x2_8bit.h"
#include "Scan_keypad_small.h"
//============ CHUONG TRINH CON ===============
//=======Chuyen 1 xau so o dang asscii sang hex ========
long ASSCII_DEC(unsigned char *str, unsigned char do_dai)
{

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

29 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

unsigned char i = 0 ,j = 0 ;
long temp = 0 , kq = 0; //ket qua
for( i = 0 ; i < ( do_dai ) ; i ++ )
{
temp = (str [ i ] - 0x30) ; //Chuyen asscii ->hex
for ( j = 0 ; j < ( do_dai - i -1 ) ; j ++ )
{
temp *= 10 ;
}
kq += temp ;
}
return kq;
34

}
//======== Chuyen so hex -> asscii ====================================
char* DEC_ASSCII ( long number , unsigned char do_dai ) //so can chuyen va so chu so
{
unsigned char str[10] = "" ; //ket qua
unsigned int i = 0 , temp = 0, kiem_tra=0;
for ( i = 0 ; i < do_dai ; i ++ )

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

30 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

{
temp = number % 10 ; //Lay phan du
number /= 10 ;
str [ do_dai - i - 1 ] = temp + 0x30 ;
}
return &str [ 0 ] ;
}
//============== Thuc hien cac phep toan ==================
long result_math ( long number_1 , long number_2 , unsigned char phep_toan )
//phep toan : +,-,*,/
{
35

long kq = 0 ;
if ( phep_toan == '+' ) return number_1 + number_2 ; //Phep cong
if ( phep_toan == '-' )
if( number_1 > number_2 ) return number_1 - number_2 ; // Phep tru
else return number_2 - number_1 ;
if ( phep_toan == 'x' ) return number_1 * number_2 ; // Phep nhan
if ( phep_toan == ':' ) return (number_1 *1000)/number_2 ; //Phep chia

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

31 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

}
//================== MAIN PROGRAM =================
void main()
{
//Khai bao bien
unsigned char str [] = "Nhom_2" ;
unsigned char str_loi[] = "Loi Nhap" ;
unsigned char i = 0 , temp = 0 ;
unsigned char str_1 [ 10 ] = "" ; //Number 1 dang asscii
unsigned char str_2 [ 10 ] = "" ; // Number 2 dang asscii
unsigned char *kq_c; //Ket qua kieu char
unsigned char phep_toan; //Phep toan +,-,x,/
unsigned char xoa_man_hinh = 1 ;
36

unsigned char accept = 1 ; //cho phep luu vao 1->str_1, 0->str_2


unsigned char dem_1 = 0 , dem_2 = 0 , dem_dau = 0;
//Dem so chu so cua so thu nhat va hai
long number_1 = 0 , number_2 = 0 ; //Luu 2 so lieu dang hex
long kq_n = 0 ;
//Ket qua kieu number
//Main program

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

32 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

LCD_khoitao () ;
for ( i = 0 ; i < strlen ( str ) ; i ++ )
{
write_data ( str [ i ] ) ;
}
START :
while ( ( temp = scan_keypad ( ) ) != '=')
{
if ( xoa_man_hinh == 1 ) write_command ( 0x01 ) ; //Xoa man hinh khi bat dau nhap
xoa_man_hinh = 0 ;
//Neu bam phim ON/C-> xoa man hinh ,khoi tao lai cac bien va continue
37

if ( temp == ' ' )


{
write_command ( 0x01 ) ; //Xoa man hinh
write_data ( '0' ) ;
write_command ( 0x80 ) ;
kq_n = 0 ;
xoa_man_hinh = 1 ;

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

33 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

dem_1 = 0 ;
dem_2 = 0 ;
dem_dau = 0 ;
number_1 = 0 ;
number_2 = 0 ;
accept = 1 ;
continue ;
}
//Luu so lieu nhap tu ban phim
if ( temp == '-' || temp == '+' || temp == 'x' || temp == ':' )
{
phep_toan = temp ;
38

accept = 0 //Neu co phep tinh thi luu vao so thu 2 neu ko thi so thu
nhatwrite_data ( temp ) ; //in phep tinh ra man hinh
write_command ( 0xc0 ) ; //Dua con tro xuong dau dong 2
dem_dau = dem_dau + 1;
continue ;
}
if ( accept == 0)

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

34 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

{ if ( dem_2 <9 )
{ str_2 [ dem_2 ++ ] = temp ; //Luu so thu hai
}else goto START;
}else
if ( dem_1 < 9)
{
str_1 [ dem_1 ++ ] = temp ; //Luu so thu nhat
}else goto START;
write_data ( temp ) ; //in so lieu ra man hinh
}
number_2 = ASSCII_DEC ( str_2 , dem_2 ) ;
kq_n = result_math ( number_1 , number_2 , phep_toan ) ; //Ket qua dang number
39

kq_c = DEC_ASSCII ( kq_n ,10 ) ; //Ket qua dang char


//In ket qua ra man hinh
write_command ( 0x01 ) ; //xoa man hinh
write_command ( 0x80 ) ; //Dua con tro len dau dong 1
accept = 0 ; //ko cho phep in ket qua
if ( dem_dau > 1 || (accept == 0 && dem_2 == 0 && dem_dau == 1) || ( phep_toan ==
':' && number_2 == 0) || (( phep_toan == 'x' || phep_toan==':')&& dem_1==0)||

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

35 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

(phep_toan== 'x' && ( strlen(str_1) + strlen (str_2))>9))


// cac loi nhap
for ( i = 0 ; i < strlen ( str_loi ) ; i ++ )
{
write_data ( str_loi [ i ] ) ;
}else
for ( i = 0 ; i < 10 ; i ++ )
{
if ( kq_c [ i ] != 0x30 ) accept = 1 ; //cho phep in
if ( phep_toan == '-' && number_1 < number_2 && i == 0 ) write_data ( '-' ) ;
// Ket qua la so am
if ( accept == 1 ) write_data ( kq_c [ i ] ) ;
40

if ( phep_toan == ':' && accept == 0 && i >= 6 ) write_data ( '0' ) ;


//Neu number 1 < number 2
if ( phep_toan == ':' && i == 6) write_data ( '.' ) ;
//Neu la phep chia them dau '.' de phan cach phan thap phan
if ( i == 9 && accept == 0 ) write_data ( '0' ) ;
//Neu ket qua = 0 thi in so '0' ra man hinh
}

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

36 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

xoa_man_hinh = 1 ;
dem_1 = 0 ;
dem_2 = 0 ;
dem_dau = 0;
str_1[10]= 0;
str_2[10]= 0;
temp = 0;
phep_toan = 0;
number_1 = 0 ;
number_2 = 0 ;
accept = 1 ;
goto START ;
while(1);
41

}
//=========================== The end ============================
Phn 4 :
42

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

37 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

KT QU V HNG PHT TRIN


I. KT QU
Trnh tm hiu v nghin cu hon thnh n gip nhm em cng c li kin
thc c hc v m rng thm nhiu kin thc mi, ng thi c dp tm hiu k
hn phn mm Proteus 7.8 v rt ra c nhiu kinh nghim b ch. Di s hng
dn ca Thy Nguyn Tun Ninh gip nhm em hon thnh ti : Thit k my
tnh b ti s dng vi x l 89C51 mt cch hon chnh.

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

38 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

II. HN CH V HNG PHT TRIN


Hn ch
Phm vi tnh ton cn thp
Cha to ra sn phm tht
Hng pht trin
Tnh ton vi nhiu php tnh trong mt ln nhp
Tnh ton vi php nh kt qu
43

CC TI LIU THAM KHO


1. H Vi iu Khin Tng Vn n
2. Ngn ng C cho 8051 electronicctu.net
3. ng dng da trn MCS-51- Phm Hng Kim Khnh
4. Giao tip LCD 16x2 dientuvietnam.net
44

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

39 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

Add a comment...

Also post on Facebook

Posting as Thi Ngc Hiu (Change)

Facebook social plugin

Nu xem trc tuyn b li, bn c th ti v my xem.

45
Phn mm tnh ct thp thi cng
by namwru
0 ln xem

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

40 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

cap thoat nuoc


by Xun Thng Nguyn
0 ln xem

n cng ngh k thut mi trng


by dragonvika
48 ln xem

CNG NGH X L NC THI


by dragonvika
19 ln xem

CNG NGH USBF


by dragonvika
5 ln xem

n mn hc qu trnh v thit b t...


by sakalinh
48 ln xem

Gio trnh quang hc


by minhsonndl
2 ln xem

Danh mc tiu chun xy dng Vit Nam...


by thanhbinh6997
6 ln xem

Sa cha my thi cng trong xy dng


by Dinh Huynh
4 ln xem

huong dan auto cad


by namzonevn
0 ln xem

16/9/2014 07:17

KIM TI LIU | Thit k my tnh b ti dng vi iu khin AT89C51

41 of 41

http://kiemtailieu.com/ky-thuat-cong-nghe/tai-lieu/thiet-ke-may-tinh-bo-t...

Trang ch
.
Tr gip
.
Gp
.
Tha thun s dng
.
Lin kt
.
Lin h
2012 kiemtailieu.com - Ton b ti liu c ng gp trn tinh thn chia s ca cc thnh vin.
Website ang hot ng th nghim, ch giy php hot ng ca B Thng tin v Truyn thng.
Like

3.2k

16/9/2014 07:17

You might also like