Professional Documents
Culture Documents
Giao Trinh Thuc Hanh Vi Dieu Khien Va Vi Xu Ly
Giao Trinh Thuc Hanh Vi Dieu Khien Va Vi Xu Ly
B MN IN T - VIN THNG
GIO TRNH:
MUC LUC
PHN I: M T H THNG..........................................................................................4
I.Tng quan h thng.....................................................................................................4
II.Module LMD01.........................................................................................................6
III.Module LMD02........................................................................................................8
IV.Module LMD03........................................................................................................9
V.Module LMD04.......................................................................................................10
VI.Module LMD05......................................................................................................12
VII.Module LMD06....................................................................................................14
VIII.Module LMD07...................................................................................................16
IX.Module LMD09 Module iu khin chnh..........................................................16
PHN II: THC HNH.................................................................................................18
BI 1: KHO ST MA TRN LED 8x8 MT MU V QUT HNG...............18
I. MC CH..........................................................................................................18
II. THIT B S DNG.........................................................................................18
III.THC HNH.....................................................................................................21
1.Kim tra LMD..................................................................................................21
2. Kim tra khi m cathode ULN2803............................................................21
3. Kim tra b m cc dng............................................................................21
4.Kim tra khi cht hng...................................................................................22
5.Kim tra khi m hng...................................................................................22
6.S dng khi LMD09 lp trnh iu khin thay i ni dung hin th ch.....22
BI 2: KHO ST MA TRN LED 8x8 MT MU V QUT CT..................23
I. MC CH..........................................................................................................23
II. THIT B S DNG.........................................................................................23
III. THC HNH....................................................................................................25
1. Kim tra LMD.................................................................................................25
2. Kim tra khi m Cathode ULN2803............................................................26
3.Kim tra b m cc dng.............................................................................26
4.Kim tra khi cht ct......................................................................................26
5.Kim tra khi m ct......................................................................................27
6.S dng khi LMD09 lp trnh iu khin thay i ni dung hin th ch.....27
BI 3: KHO ST MA TRN LED 8x8 2 MU XANH V PHNG PHP
QUT HNG..............................................................................................................28
I. MC CH..........................................................................................................28
II. THIT B S DNG.........................................................................................28
III. THC HNH....................................................................................................31
1.Kim tra LMD..................................................................................................31
2. Kim tra b m cc dng............................................................................31
3.Kim tra khi MCHT...............................................................................32
4. S dng khi LMD09 lp trnh iu khin thay i ni dung hin th ch....32
BI 4: KHO ST MA TRN LED 8x8 2 MU XANH V PHNG PHP
QUT CT..................................................................................................................33
I. MC CH..........................................................................................................33
II. THIT B S DNG.........................................................................................33
III. THC HNH....................................................................................................36
1.Kim tra LMD..................................................................................................36
2.Kim tra b m cc m DEMG, DEMR........................................................36
3.Kim tra khi MCHT...............................................................................37
4.S dng khi LMD09 lp trnh iu khin thay i ni dung hin th ch.....37
2
PHN I: M T H THNG
I. Tng quan h thng
Gii thiu
LMD TS l h thng m hnh o to phc v kho st, nghin cu, thc hnh
thit k bng thng tin in t s dng cng ngh ma trn n LED (Light
Emitting Diode i t pht quang). H thng gip sinh vin tip cn vi cng
ngh hin th bng bng ma trn n LED t c bn n nng cao, t sinh
vin c th hiu, thit k c h thng bng. H thng c thit k theo t duy
logic k thut lin mch t u tr cui da theo cch nhn ca sinh vin, cng
vi s sp xp, phn chia bi bn theo cc vn chuyn mn chi tit r rng.
c tnh
Thit k dn tri
S nguyn l r rng
Hin th mt mu v t hp 2 mu xanh
Tn
LMD01
LMD02
LMD03
LMD04
LMD05
LMD06
LMD07
LMD09
Khung
M t
Ma trn LED n sc 8x8, qut theo hng, khi qut hng, m hng,
cht hng, m cathode, m anode, cc cht cp ngun kim th tn
hiu
Ma trn LED n sc 8x8, qut theo ct, khi qut ct, m ct, cht
ct, m cathode, m anode, u ni tn hiu iu iu khin v d
liu, cc cht cp ngun kim th tn hiu
Ma trn LED hai mu xanh/ 8x8, qut theo hng, khi qut hng,
m cht hng, m anode, u ni tn hiu iu iu khin v d
liu, cc cht cp ngun kim th tn hiu
Ma trn LED hai mu xanh/ 8x8, qut theo ct, khi qut ct, m
cht ct, m cathode, u ni tn hiu iu iu khin v d liu, cc
cht cp ngun kim th tn hiu
Module hin th mu , 16x32 pixel, qut theo hng, khi kch dng,
m cht d liu, u vo/u ra tn hiu iu khin v d liu, cc
cht cp ngun kim th tn hiu
Module hin th hai mu xanh/ 16x32 pixel, qut theo hng, khi
kch dng, m cht d liu, u vo/u ra tn hiu iu khin v d
liu, cc cht cp ngun v kim th tn hiu
Bng tin in t 16x96 pixel, outdoor, n sc, giao tip RS232,
ngun 220VAC
Board iu khin chung, MCU AT89S52, 16Kbyte Ram, RS232,
LMD port, KeyBoard, np ISP v cp ngun cho th nghim
Gi bng kim loi
IV.Module LMD03
LMD03 a ra mt ma trn LED 8x8 im, hai mu xanh/ v cc linh kin
iu khin mt LMD theo phng php Qut theo hng.
Cc thnh phn c b tr dn tri, c s nguyn l r rng, cc ng tn
hiu c cc cht o th.
LMD03 gm cc thnh phn sau:
V. Module LMD04
LMD04 a ra mt ma trn LED 8x8 im, hai mu xanh/ v cc linh kin
iu khin mt LMD theo phng php Qut theo ct.
Cc thnh phn c b tr dn tri, c s nguyn l r rng, cc ng tn
hiu c cc cht o th.
LMD04 gm cc thnh phn sau:
Khi m mu ULN2803
10
11
VI.Module LMD05
LMD05 l mt module hin th 16x32 pixel, n sc mu trn c m kch
dng Anode, m Kathode, m cht d liu theo hng. Cc thnh phn c b
tr dn tri, c s nguyn l r rng, cc ng tn hiu c cc cht o th.
LMD05 gm cc thnh phn sau:
12
13
VII.
Module LMD06
14
15
VIII.
Module LMD07
LED outdoor
16x96 pixel mu
16 Kbyte RAM
16K RAM
Bn phm 8
S nguyn l
16
17
18
thp ht, sau mt khong thi gian quy nh s chuyn sang chn tip theo, c
nh th t chn u tin cho n ht chn cui cng sau li quay li chn u
tin. Thi gian tn ti trng thi mc cao ca mi chn u ra l bng nhau
nhng c th thay i c, tng thi gian qut ht mt vng 8 chn u ra
cng thay i c, do vy phi quyt nh c thi im bt u chuyn trng
thi ca mt chn bt k. Khi qut hng c mt u vo tn hiu ng b SYN
v mt u vo xung nhp. u vo xung nhp quyt nh thi im chuyn
i trng thi ca u ra, cn u vo tn hiu ng b xc nh thi im bt
u mt vng qut. Ti thi im trc khi bt u mt vng qut mi tn hiu
SYN bng mt, ngay sau l mt xung dng a vo lm cho u ra H1
chuyn trng thi t 0 sang 1, sau mt khong thi gian bt u chuyn trng
thi cho chn u ra tip theo (H2) tn hiu SYN = 0, v lin l mt xung
dng c a vo u vo xung nhp, tn hiu SYN ch bng 1 khi bt u mt
vng qut mi cn li ton b thi gian qut lun = 0.
- Khi m hng lm nhim v cha d liu ca mt hng sng sng cho
vic hin th mt hng, d liu c a vo kiu ni tip v dch chuyn trn
cc chn u ra b1 n b8. D liu b8 c a vo u tin, b1 dch n sau,
dch n khi d liu ca b1 c a vo th d liu b8 dch n chn b8 v d
liu ca b1 c trn chn b1. Khi ny c mt chn u vo xung nhp s dng
cho vic c d liu vo.
- Khi cht hng lm nhim v cht d liu ca mt hng. Trc khi hin th
mt hng d liu phi sn hng cc u vo D ca khi cht hng, mt xung
dng c a vo y d liu t cc chn u vo D ti cc chn u ra Q
v gi nguyn cho mt hng c hin th trong khong thi gian xc
nh trc hin th mt hng tip theo.
- Khi m Kathode lm nhim v to in p m ht dng cho kathode ca
n LED, cc u ra ca khi s ni n cc cathode ca n LED. Cc u vo
c ni vi d liu iu khin n LED.
- Khi m Anode lm nhim v cp ngun dng cho nhm cc LED v cc
u ra Q ni n cc chn A ca n LED.
- Khi ma trn n LED l mt ma trn 8x8 n LED cc chn A ca mt hng
LED c ni chung to nn 8 chn A chung, cc chn K ca mt ct c ni
chung v to nn 8 chn K chung.
19
hng th hai sng. Hng th hai cng s c hin th trong mt khong thi
gian xc nh v kt thc
Qu trnh c din ra lp li tng t i vi cc hng sau cho n ht hng 8.
Kt thc thi gian hin th hng 8 l ht mt chu trnh qut ton b LMD, mt
chu trnh qut mi s li bt u. Qu trnh c lp i lp li nh th trong sut
thi gian hot ng ca LMD.
III.THC HNH
1.Kim tra LMD
-
21
Ch : tt c cc IC phi cm ng chiu
-
sn.
24
25
a tn 0 hoc 1 vo u vo bt k t D1 n D8 ca khi
CHTCOT, dng thanh kim kim loi hoc ngun 0V hoc 5V qut vo
cht OUTCLK, dng ng h o in p ca cc u ra t Q tng ng
vi u vo D sau mi ln qut.
Lm li nh trn vi ln vi cc tn hiu vo l 0 , 1 ta s thy u
vo D c a n u ra Q v sau mi ln c xung, trng thi u ra s
c gi nguyn nu khng c mt xung qut ln cht OUTCLK mc d
u vo c thay i trng thi 0/1.
5.Kim tra khi m ct
-
Ch : tt c cc IC phi cm ng chiu
-
27
29
30
xc nh. Khi ht thi gian cho vic hin th hng u tin th vic hin th hng
th hai s phi bt u.
Vic bt u cho hin th hng th 2 cng ging nh hng th nht ch c im
duy nht khc bit l tn hiu SYN t vo phi bng 0 cn li th mi th tc
khng c g thay i. Do vy khi c xung OUTCLK th H1 s mc thp v
mc cao trc ca n s c dch sang H2 lm cho A2 c cp ngun v
hng th hai sng. Hng th hai cng s c hin th trong mt khong thi
gian xc nh v kt thc
Qu trnh c din ra lp li tng t i vi cc hng sau cho n ht hng 8.
Kt thc thi gian hin th hng 8 l ht mt chu trnh qut ton b LMD, mt
chu trnh qut mi s li bt u. Qu trnh c lp i lp li nh th trong sut
thi gian hot ng ca LMD.
III. THC HNH
1.Kim tra LMD
-
31
Ch : tt c cc IC phi cm ng chiu
-
32
33
34
35
36
Ch : tt c cc IC phi cm ng chiu
-
37
38
39
40
Vic bt u cho hin th hng th 2 hon ton ging nh hng th nht, khi y
H1 tr v mc thp, H2 s chuyn ln mc cao, cn li cc u vo cn li
mc thp ht. Hng th hai cng s c hin th trong mt khong thi gian xc
nh v kt thc
Qu trnh c din ra lp li tng t i vi cc hng sau cho n ht hng16.
Kt thc thi gian hin th hng 16 l ht mt chu trnh qut ton b LMD, mt
chu trnh qut mi s li bt u.
III.THC HNH
1.Kim tra LMD
-
Tt c cc IC c gn trn module
Ch : tt c cc IC phi cm ng chiu
-
42
43
44
45
46
47
Tt c cc IC c gn trn module
Ch : tt c cc IC phi cm ng chiu
-
48
49
T trn xung di giao din s dng ca phn mm gm nhng thnh phn sau:
- Ca s Preview: l ca s mu en xem bn tin hin trc khi cho hin
th trn bng in t
- Khung Display Option gm c: Nt lnh Font dng chn font ch, v
Message l nhp ni dung bn tin hin th. Nt lnh Font s cho php chn
Font, Size, Style ca bn tin s hin th trn bng tin in t
- Dimension Inf: l thng bo kt qu kch thc ca bn tin d inh
hin th, kch thc c tnh bng s im nh ca chiu cao v rng
- Khung Preview gm: Nt lnh Capture l lnh thc hin chuyn on vn
bn thnh bc nh vi cc im nh n gin (ch c mu v mu en).
Nt lnh Preview l lnh xem trc bn tin trn my trc khi cho hin th
trn bng tin in t. Top Cutting ct i phn trn ca bc nh bng s
dng im nh hin ti ca . Bottom Cutting ct i phn di ca bc
nh theo s dng im nh hin ti ca . Threshold dng t ngng
cho chuyn i mt im nh nhiu mc thnh mt im nh n gin (0
hoc 1).
- Nt lnh Bit2Byte: mng bt cc im nh n gin thnh mng byte, thc
cht l ghp 8 bit thnh mt byte truyn i qua cng COM my tnh theo
tng byte
- Nt lnh Out Array: l lnh Truyn Mng cc Byte xung bng tin in
t, lnh ny truyn mng byte l kt qu chuyn i v m ha bn tin vi
nh dng yu cu trc xung bng tin in t v yu cu bng tin in t
hin th c nh ni dung ca bn tin ny (khng thc hin hiu ng g)
-
Nt lnh Roll
Load np li ni dung lu
50
51
- Nu sau khi capture thng bo kch thc nh ln hn kch thc bng tin
hin c th ni dung hin th s b mt i phn trn ca bc nh xem trong
Preview
- Dng cc iu chnh Top cutting, v Bottom Cutting ct nh phn trn
v di ca bc nh
- Kch Capture xem thng bo v kch thc nh sau mi ln chnh sa,
lu kch thc tht ca bng hin c l cao 16 im v c th hin th bn
tin rng 256 im, mt kch thc nh rng hn s hin th b mt i phn
trn v phn bn phi.
-
52
Ph Lc
M ngun chng trnh
Bi 1:
/* Chuong trinh mau LMD1
NTL viet tren Keil C
*/
#include <reg51.h>
sbit clkIN
53
clkIN = 0;
}
clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong
thoi mot hang
clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo
DongBo = 0; //tat xung dong bo o cac hang sau
}
}
}
Bi 2:
/*chuong trinh thu nghiem LMD2
-----------------------------dung hai ngat ngoai de dieu khien thay doi du lieu trong mang hien thi.
khi co ngat o chan 12 hien thi chu A
khi co ngat o chan 13 hien thi chu Z
mang char dc khai bao o ngoai
-------------------------Viet tren Keil C
NTL
*/
#include <reg51.h>
sbit clkIN
= 0xAF; //EA
sbit Ngatchan12
= 0xA8; //EX0
54
sbit Ngatchan13
= 0xAA; //EX1
55
56
Bi 3:
/*chuong trinh thu nghiem LMD3
---------------------------------hien thi chu A
----------------------------------NTL
*/
#include <reg51.h>
//cac chan tin hieu dieu khien
sbit clkIN
= 0xAF; //EA
sbit Ngatchan12
= 0xA8; //EX0
sbit Ngatchan13
= 0xAA; //EX1
57
58
clkIN = 1; //tao mot xung vuong kich vao dem ghi dich
clkIN = 0;
}
clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong
thoi mot hang
clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo
DongBo = 0; //tat xung dong bo o cac hang sau
}
}
}
Bi 4:
/*chuong trinh thu nghiem LMD4
*/
#include <reg51.h>
//cac chan tin hieu dieu khien
sbit clkIN
= 0xB3;
0xe0,0x01,0x00,0x00,
0xb0,0xff,0xff,0x3f,
0x98,0xff,0xff,0x3f,
0x0c,0x00,0x00,0x30,
0x0c,0x00,0x00,0x30,
0x98,0xff,0xff,0x3f,
0xb0,0xff,0xff,0x3f,
0xe0,0x01,0x00,0x00,
0xc0,0x01,0x00,0x00,
0x80,0x01,0x00,0x00,
0x00,0x01,0x00,0x00,
0x00,0x00,0x00,0x00
};
/*--------------------------------------------------------------------*/
/*sau day la chuong trinh chinh
1. NHIEM VU:
- khai bao, khoi tao
khoi tao mang hien thi
khoi tao cac biet dieu khien chi so mang de phuc vu xuat mang
khoi tao tin hieu dieu khien
- dieu khien xuat mang theo vong lap vo han
2. GIAI THUAT
3. Danh sach cac bien, du lieu tac dong
- du lieu toan cuc
+ mang du lieu hien thi: X
+ Cac chan tin hieu dieu khien
port1: Dulieu
chan dieu khien xung dich vao bo dem: clkIN
chan dieu khien xung dich ra bo dem: clkOUT
chan tao xung dong bo hang dau tien: DongBo
- Du lieu cuc bo
60
Bi 5:
/*chuong trinh thu nghiem LMD5 --- "CHAY TOT !!!"
dieu khien mach quet LED co so do phan cung nhu ...
dieu khien quet LED bang ngat dinh thoi
61
moi khi say ra ngat dinh thoi 0 chuong trinh se xuat ra mot hang dua vao bien
ChiSo
va chot giu. cu the viec do la
- xuat ra lien tuc cac byte cua hang do xe ke xung clkIN
- sau khi xuat het cac byte thi xuat ra mot xung clkOUT
ChiSo la bien toan cuc dc khoi tao do chuong trinh chinh
neu ChiSo bang 0, tuc la hang dau tien dc xuat, khi ay xuat ra DongBo = 1
neu ChiSo khac 0 thi xuat ra mot ra DongBo = 0
sau khi xuat het so byte kiem tra neu ChiSo = 63 thi dua tro ve 0
cong P1 xuat ra song song DuLieu
cac chan 21, 22, 23 (p20, p21, p22) dieu khien clkIN, clkOUT, DongBo
mang char dc khai bao o ngoai
*/
#include <reg51.h>
//cac chan tin hieu dieu khien
sfr DuLieu = 0x90; //chan 1,2,3,4,5,6,7,8 cong P1 cua 8951 duong dl song
song noi den dau vao bo dem ghi dich
sbit clkIN
= 0xA0; //chan 21 8951 tao xung dich vao bo dem ghi dich
sbit clkOUT = 0xA1; //chan 22 8951 tao xung xuat ra dong thoi cua bo dem
sbit DongBo = 0xA2; //chan 23 8951 tao xung dong bo hang dau tien, chan nay
noi toi dau vao bo ghi dich quet hang
//cac thanh ghi va bit chuc nang dac biet
sfr CheDoDinhThoi = 0x89;
sfr ByteThapDinhThoi0 = 0x8A;
sfr ByteCaoDinhThoi0 = 0x8C;
sbit BatDinhThoi0 = 0x8C;
//cac bit cho phep ngat
sbit Ngat
= 0xAF; //EA
62
//DINH NGHIA CAC THAM SO KICH THUOC BANG, THOI GIAN QUET
#define BeRong 4
#define ChieuCao 16
#define SoByteMang 64
//so hang
//so byte cua mang hien thi X
#define SoLanNgat 5
0x00,0x00,0x00,0x00,
0x00,0x00,0x06,0x00,
0x00,0x00,0x49,0x00,
0xFF,0xFF,0x49,0xFF,
0x40,0x40,0x49,0x40,
0x20,0x20,0x25,0x20,
0x00,0x00,0x1E,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x8c,0x6E,0x7C,0x00,
0x92,0x91,0xA2,0x00,
0xA1,0x91,0x91,0xFF,
0xA1,0x91,0x91,0x40,
0xA1,0x91,0x91,0x20,
0x72,0x6E,0x62,0x00,
0x00,0x00,0x00,0x00
};
/*--------------------------------------------------------------------*/
int ChiSo,n;//chi so mang va bien n de dem so lan say ra ngat
/*--------------------------------------------------------------------*/
#pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac
63
if (ChiSo==0)
else
{DongBo = 0;}//
{
DuLieu = X[ChiSo];
clkIN = 1;
dich
clkIN = 0;
ChiSo++;
64
{
n++;//tiep tuc dem so lan ngat
}
}
#pragma AREGS
/*--------------------------------------------------------------------*/
void NgatDinhThoi0 (void) interrupt 1 using 1
{
XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai
}
/*--------------------------------------------------------------------*/
/*sau day la chuong trinh chinh
1. NHIEM VU:
+ khoi tao cac gia tri bien:
khoi tao bien dieu khien chi so mang ChiSo de phuc vu xuat mang
khoi tao bien dem n de tinh toc do ngat
+ thiet lap cac che do ngat va dinh thoi
cho phep ngat toan cuc
cho phep ngat dinh thoi
2. GIAI THUAT
3. Danh sach cac bien, du lieu tac dong
Bit cho phep ngat toan cuc: Ngat
Bit cho phep ngat dinh thoi 0: Ngatdinhthoi0
65
//khoi tao
ChiSo = 0;
n = 0;
Bi 6:
/*chuong trinh thu nghiem LMD6 --- "CHAY TOT !!!"
dieu khien mach quet LED co so do phan cung nhu ...
dieu khien quet LED bang ngat dinh thoi
tao hieu ung dich chuyen ngang
moi khi say ra ngat dinh thoi 0 chuong trinh se xuat ra mot hang dua vao bien
ChiSo
va chot giu. cu the viec do la
66
sfr DuLieu
= 0x90;
sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem
sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao
bo ghi dich quet hang
= 0xAF;
67
#define ChieuCao 16
//so hang
#define SoByteMang 64
#define NgatDu 5
68
char bdata ThanhGhiTrungGian; //day la thanh ghi trung gian truy cap bit
sbit BitThapNhat= ThanhGhiTrungGian ^ 0;
sbit BitCaoNhat = ThanhGhiTrungGian ^ 7;
bit BitRa;//bit chua bit di ra tu bit dau hang
bit BitVao;//bit chua bit di Vao cuoi hang
/*--------------------------------------------------------------------*/
int ChiSo,DemSoLanNgatT0;//chi so mang va bien n de dem so lan say ra ngat
int SoDongDaXuat;
/*--------------------------------------------------------------------*/
#pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac
// ham duoc goi tu dich vu ngat
/*----------------------------------*/
static void XuLiNgatDinhThoi0 (void) //xuat ra mot hang thu x
/*day la chuong chinh con phuc vu ngat dinh thoi 0
nhiem vu cua chuong trinh con nay la:
- dem so lan say ra ngat dinh thoi qua bien n
- khi n < SoLanNgat thi tang len 1 ket thuc
- khi n = SoLanNgat thi xuat ra hang ket thuc
viec xuat ra mot hang dua vao bien ChiSo.
bien ChiSo ban dau dc main gan la 0, la chi so cua byte dau hang
+ kietm tra neu la hang dau tien (n==0) thi DongBo=0, nguoc lai =1
+ su dung vong lap voi so vong la so byte cua hang
moi chu trinh lap se xuat ra mot byte, va clkIN, tang ChiSo
+ ket thuc vong lap thi xuat ra mot xung chot clkOUT, va chi so da tro den hang
tiep theo
+ kiem tra neu xuat het mang (chiso=SoByteMang) thi gan lai chiso=0
*/
{
int k; //bien dem so byte trong mot hang
if (++DemSoLanNgatT0==NgatDu)
69
DemSoLanNgatT0=0;
//dem lai tu 0 voi lan sau
SoDongDaXuat++;
if (ChiSo==0)
else
{DongBo = 0;}//
{
DuLieu = X[ChiSo];
clkIN = 1;
dich
clkIN = 0;
ChiSo++;
}
70
dich
ThanhGhiTrungGian *=2; //dich trai
if (BitVao) {ThanhGhiTrungGian++;}
BitVao = BitRa;
X[(SoHang-1)*BeRong + SoByte] = ThanhGhiTrungGian;
}
}
/*--------------------------------------------------------------------*/
/*sau day la chuong trinh chinh
1. NHIEM VU:
71
DemSoLanNgatT0 = 0;
ByteThapDinhThoi0 = ByteCaoDinhThoi0;
72
MC LC
75
PHN I: M T THIT B
I. GII THIU H THNG
H THNG O TO PIC (PIC.TS) l board mch y cc cng c cho
vic hc tp v nghin cu vi iu khin PIC ca Microchip. Sinh vin d dng
thc hnh, kim tra v nh gi kh nng ca vi iu khin PIC. PIC.TS cho
php PIC giao tip vi mt s lng ln cc thit b ngoi vi v mch ngoi. Vi
PIC.TS, sinh vin khng cn lo lng v phn cng m ch cn tp trung vo vic
pht trin phn mm. Trn PIC.TS, mi thnh phn c in thng trn board
mch rt r rng nh du s m t kt ni n cc thit b cng mt vi ghi ch
hu ch.
76
78
2. JUMPERs
Jumpers cng ging nh switches, c th ngt hoc ni hai im vi nhau. Bn
trong v bc nha ca jumper l mt l kim loi dng tip xc. N s ni (dn
in) nu jumper ny c gn vo hai pin ang b ngt.
V d: Hai bin tr trong mch ADC c ngt ri vi RA2 v RA3. ni
chng vi nhau cn s dng jumper.
79
80
81
4. POWER SUPPLY
h thng lm vic cn phi cp ngun. PIC.TS c th hoch ng bng ngun
ngoi hoc c cung cp qua cable USB.
Trong trng hp cp ngun qua USB, h thng phi c ni vi PC bng
cable USB v cng tc ngun phi c gt v pha USB. Lu l vic cp
ngun qua USB ch s dng khi chy th chng trnh. Khi np chng trnh cho
chip bn phi s dng ngun ngoi. Khi s dng ngun ngoi, PIC.TS s to ra in
p +5V cp cho h thng v in p +13V dng lm in p lp trnh chip.
Power supply connector
82
Cp kt ni
RTC DS1307
Pin Cmos
83
84
khin c RC3, RC4 v RC5 c tch ra khi cc phn t khc trn board v ni
vi socket USB.
86
87
88
89
90
91
92
93
94
95
A0
A1
D0
D1
A2
A3
D2
A4
D3
D4
A5
B0
D5
B1
D6
D7
B2
B3
D8
B4
D9
D10
B5
B6
D11
B7
D12
D13
C0
C1
D14
D15
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
C2
C3
C4
C5
C6
C7
D0
D1
D2
D3
D4
D5
D6
D7
E0
E1
D16
D17
R16
R17
D18
D19
R18
R19
A1
A3
A5
B0
B2
B4
B6
JP1
A0
A2
A4
VCC
1
3
5
7
9
D20
R20
D21
D22
R21
R22
B1
B3
B5
B7
C0
C2
C4
C6
JP2
2
4
6
8
10
1
3
5
7
9
D23
R23
D24
D25
R24
R25
C1
C3
C5
C7
D0
D2
D4
D6
JP3
2
4
6
8
10
VCC
VCC
1
3
5
7
9
D26
R26
D27
D28
R27
R28
D1
D3
D5
D7
E0
E2
JP4
2
4
6
8
10
VCC
1
3
5
7
9
D29
R29
D30
R30
E2
D31
R31
D32
R32
JP5
2
4
6
8
10
1
3
5
7
9
2
4
6
8
10
E1
VCC
A0
A1
A2
A3
A4
A5
B4
B5
B6
B7
R0
R1
R2
R3
R4
R5
R10
R11
R12
R13
D0
A0
A2
A4
D1
JP1
1
3
5
7
9
2
4
6
8
10
D2
D3
A1
A3
A5
B0
B2
B4
B6
VCC
D4
D5
JP2
1
3
5
7
9
D10
B1
B3
B5
B7
2
4
6
8
10
C0
C2
C4
C6
VCC
JP3
1
3
5
7
9
2
4
6
8
10
C1
C3
C5
C7
VCC
D0
D2
D4
D6
DIGIT2
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
DIGIT1
A
A
3
8
D0
D1
D2
D3
D4
D5
D6
D7
R22
R23
R24
R25
R26
R27
R28
R29
1
3
5
7
9
2
4
6
8
10
D12
D1
D3
D5
D7
E0
E2
VCC
VCC
C0 R14
C1 R15
C2 R16
C3 R17
C4 R18
C5 R19
C6 R20
C7R21
JP4
D11
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
A
A
D13
JP5
1
3
5
7
9
2
4
6
8
10
E1
VCC
E0
E1
E2
R30
R31
R32
3
8
D30
D31
D32
B3
B2
B1
B0
F1
F2
F3
F4
VCC
JP
1
2
3
97
A1
A2
A3
A4
A5
B4
B5
B6
B7
R0
R1
R2
R3
R4
R5
R10
R11
R12
R13
D0
A0
A2
A4
D1
JP1
1
3
5
7
9
2
4
6
8
10
D2
D3
A1
A3
A5
B0
B2
B4
B6
VCC
D4
D5
JP2
1
3
5
7
9
D10
B1
B3
B5
B7
2
4
6
8
10
C0
C2
C4
C6
VCC
JP3
1
3
5
7
9
2
4
6
8
10
C1
C3
C5
C7
VCC
D0
D2
D4
D6
DIGIT2
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
DIGIT1
A
A
3
8
D0
D1
D2
D3
D4
D5
D6
D7
R22
R23
R24
R25
R26
R27
R28
R29
1
3
5
7
9
2
4
6
8
10
D12
D1
D3
D5
D7
E0
E2
VCC
VCC
C0 R14
C1 R15
C2 R16
C3 R17
C4 R18
C5 R19
C6 R20
C7R21
JP4
D11
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
A
A
D13
JP5
1
3
5
7
9
2
4
6
8
10
E1
VCC
E0
E1
E2
R30
R31
R32
3
8
D30
D31
D32
B3
B2
B1
B0
F1
F2
F3
F4
VCC
JP
1
2
3
98
Tn cng
A0
A1
A2
A3
B4
A5
B5
B6
B7
E0
E1
E2
B0
B1
B2
B3
Gi ch
Vng
Xanh
Xanh
Vng
Vng
Xanh
Xanh
Vng
Nt 1
Nt 2
Nt 3
Nt 4
99
Bi thc hnh s 2
BIN I ADC, O IN P, NHIT
HIN TH TRN LED V TRUYN THNG QUA RS232
I. MC CH
Lm quen vi b bin i tng t s ADC c sn trn vi iu khin
PIC16F877A. Tm hiu chun 1 dy v truyn thng khng ng b UART. Vit
chng trnh bin i ADC, o in p, giao tip vi cm bin nhit
DS18B20.
II. CHUN B
My tnh c ci chng trnh WinPIC800, trnh dch CCS,
HT-PIC.
PIC.TS v cc module, vi iu khin PIC16F877A, ng h o,
cp ngun, cp kt ni.
L thuyt v lp trnh C, lp trnh C cho PIC trn CCS, HTPIC
L thuyt v chun 1 dy, truyn thng khng ng b
UART.
III. THC HNH
1. Bin i ADC v hin th trn led
Nhim v: Tm hiu v s dng b bin i ADC ca vi iu khin PIC16F877A
VCC
JP_ADC1
JP_ADC2
1
2
3
RA2
VR2
2
1
2
1
VR1
1
2
3
RA3
100
101
102
- Kim tra jumper JP_temp trng thi kt ni chn 1 (bn phi) vi chn
2 ni chn data ca DS1820 vi RE2 ca PIC.
- Cng tc DIP_SW1.5 trng thi ON ni n in tr treo (in tr
treo dng khi lm vic ch vo ra tn hiu s).
- Kim tra JP_TX v JP_RX trng thi ni chn 5 vi chn 6, ni
chn TX v RX ca b thu pht UART vi b pht thu MAX232.
- Ni cng truyn thng ni tip ca Kit chnh vi cng COM ca my
tnh.
- S dng trnh HyperTermial giao tip vi tn hiu trn knh RS232.
- Vit chng trnh c gi tr nhit t DS1820 v truyn i qua b
truyn thng khng ng b.
- Bin dch v np chng trnh ln vi iu khin PIC
- Sau khi np thnh cng, khi chng trnh ang chy, dng tay (hoc mt
ngun nhit no ) trm vo cm bin nhit DS1820 v quan st thy gi
tr nhit hin th trn mn hnh t t tng ln (Ch tr l tng i
ln, c 1 giy v gi tr hin th c c th sai lch vi ). Khi b tay ra
nhit s gim xung t t.
C th th chng trnh mu c sn th mc /sample/TEMP2UART/
tham kho hoc kim tra module c chy tt hay khng, trc khi vit mt
chng trnh cho ring mnh.
Bi thc hnh s 3
C PHM BM, IU KHIN RELAY
V C THI GIAN THC DS1307 HIN TH TRN LEB 7 ON
I. MC CH
c phm bm, phng php qut ma trn phm. Tm hiu lm quen vi Thi
gian thc DS1307 c sn trn PIC.TS. Vit chng trnh c phm bm v iu
khin vo ra s, c d liu thi gian t DS1307 v hin th trn led 7 on.
II. CHUN B
My tnh c ci chng trnh WinPIC800, trnh dch CCS,
HT-PIC.
PIC.TS v cc module, vi iu khin PIC16F877A, ng h o,
cp ngun, cp kt ni.
104
105
Lm quen vi vic giao tip vi bn phm ma trn, giao tip PIC vi bn phm
ma trn bng cng vo ra s. Vit mt chng trnh s dng cc cng vo ra
nhn lnh t phm bm.
Jum1
VCC
3
2
1
P40
1
2
3
4
5
P41
P43
P45
P47
1 2
3 4
5 6
7 8
9 10
Jum2
VCC
3
2
1
B01
B02
B03
B10
B11
B12
B13
B20
B21
B22
B23
B30
B31
B32
B33
AR0
JP4
P40
P42
P44
P46
B00
P41
P42
VCC
P43
AR1
1
2
3
4
5
P44
P45
P46
P47
106
16
15
14
13
12
11
10
9
1
2
3
4
5
6
7
8
R_rtc1
4K7
R_rtc2
VCC
4K7
X 32768Hz
6
5
1
2
4
RTC
SCL
VCC
SDA
VBAT
X1
X2
SQW/OUT
8
3
7
GND
DS1307
BATTERY
108
Digit4
3
A
8
A
Digit3
3
A
8
A
Digit1
3
A
8
A
a
b
c
d
e
f
g
DP
seg_a 7
seg_b 6
seg_c 4
seg_d 2
seg_e 1
seg_f 9
seg_g 10
seg_P 5
a
b
c
d
e
f
g
DP
seg_a 7
seg_b 6
seg_c 4
seg_d 2
seg_e 1
seg_f 9
seg_g 10
seg_P 5
a
b
c
d
e
f
g
DP
Q2
3
A
8
A
Q3
Digit0
3
A
8
A
Q4
Q1
VCC
1
VCC
Q5
P21
P23
P25
P27
seg_a 7
seg_b 6
seg_c 4
seg_d 2
seg_e 1
seg_f 9
seg_g 10
seg_P 5
1 2
3 4
5 6
7 8
9 10
a
b
c
d
e
f
g
DP
JP2
P20
P22
P24
P26
Digit2
3
A
8
A
A0
a
b
c
d
e
f
g
DP
seg_a 7
seg_b 6
seg_c 4
seg_d 2
seg_e 1
seg_f 9
seg_g 10
seg_P 5
A1
seg_a 7
seg_b 6
seg_c 4
seg_d 2
seg_e 1
seg_f 9
seg_g 10
seg_P 5
A2
Digit5
seg_a 7
a
seg_b 6
b
seg_c 4
c
seg_d 2
d
seg_e 1
e
seg_f 9
f
seg_g 10
g
seg_P 5
DP
A3
220
220
220
220
220
220
220
220
A4
R0
R1
R2
R3
R4
R5
R6
R7
A5
P20
P21
P22
P23
P24
P25
P26
P27
R8
10K
R9
10K
R10
10K
R11
10K
R12
10K
R13
10K
P15
P14
P13
P12
P11
P10
JP1
P10
P12
P14
1 2
3 4
5 6
7 8
9 10
P11
P13
P15
VCC
JP3
P30
P32
P34
P36
1 2
3 4
5 6
7 8
9 10
P37
P31
P33
P35
P37
F7
P36
F6
P35
F5
P34
F4
P33
F3
P32
F2
P31
F1
P30
F0
VCC KEY JP
VCC
1
2
3
109
Q0
in tr
R8
R9
R10
R11
R12
R13
R7
R6
R5
R4
R3
R2
R1
R0
//ship a
for (i=0;i<=6;i++)
{
output_a(count);
delay_ms(150);
count=count<<1;
}
count=1;
//ship b
for (i=0;i<=8;i++)
111
{
output_b(count);
delay_ms(150);
count=count<<1;
}
count=1;
//ship c
for (i=0;i<=8;i++)
{
output_c(count);
delay_ms(150);
count=count<<1;
}
count=1;
//ship d
for (i=0;i<=8;i++)
{
output_d(count);
delay_ms(150);
count=count<<1;
}
count=1;
//ship e
for (i=0;i<=3;i++)
{
output_e(count);
delay_ms(150);
count=count<<1;
}
output_a(0xff);
// a
112
delay_ms(150);
output_a(0x00);
output_b(0xff);
// b
delay_ms(150);
output_b(0x00);
output_c(0xff);
// c
delay_ms(150);
output_c(0x00);
output_d(0xff);
// d
delay_ms(150);
output_d(0x00);
output_e(0xff);
// e
delay_ms(150);
output_e(0x00);
delay_ms(150);
output_a(0xff);
//flash all ON
output_b(0xff);
output_c(0xff);
output_d(0xff);
output_e(0xff);
delay_ms(150);
output_a(0x00); // OFF
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
delay_ms(150);
output_a(0xff); // ON
113
output_b(0xff);
output_c(0xff);
output_d(0xff);
output_e(0xff);
delay_ms(150);
output_a(0x00); // OFF
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
delay_ms(150);
}}
//===============================================//TEN DE
TAI :HE THONG DAO TAO VI DIEU KHIEN PIC
//Ngon ngu
:VAO RA CONG
:16f877a cua Microchip.thach anh 8 Mhz
:Ngay xx thang' xx nam 2008
114
115
for (i=30;i>3;i--)
displayh(i);
//phase2
//duong ngang
RA2 = 0; RE0 = 0;//xanh
RA1 = 1; RE1 = 1;//vang
RA0 = 0; RE2 = 0;//do
//duong doc
RA3 = 0; RB7 = 0;//xanh
RB4 = 0; RB6 = 0;//vang
RA5 = 1; RB5 = 1;//do
//dem
for (i=3;i>0;i--)
displayl(i);
//============
//phase 3
//duong ngang
RA2 = 0; RE0 = 0;//xanh
RA1 = 0; RE1 = 0;//vang
RA0 = 1; RE2 = 1;//do
//duong doc
RA3 = 1; RB7 = 1;//xanh
RB4 = 0; RB6 = 0;//vang
RA5 = 0; RB5 = 0;//do
//dem
for (i=30;i>3;i--)
displayh(i);
116
//=============
//phase4
//duong ngang
RA2 = 0; RE0 = 0;//xanh
RA1 = 0; RE1 = 0;//vang
RA0 = 1; RE2 = 1;//do
//duong doc
RA3 = 0; RB7 = 0;//xanh
RB4 = 1; RB6 = 1;//vang
RA5 = 0; RB5 = 0;//do
//dem
for (i=3;i>0;i--)
displayl(i);
}
}
//===================================
void display_right_led(byte digit)
{
output_c(DIGITS[digit] ^ 0xff);
}
//===================================
void display_left_led(byte digit)
{
output_d(DIGITS[digit] ^ 0xff);
}
//===================================
void displayh(byte n) {
byte i;
117
************************************************************/
#include <16F877A.h>
#fuses HS, NOWDT, PUT,NOLVP
#use delay (clock=8000000) // define crystal = 8MHz
#define LEFT_LED_C1 PIN_A1
#define RIGHT_LED_C2 PIN_A0
//
0 1 2 3 4 5 6 7 8 9
118
119
void count_00_99() {
byte i;
for (i = 0; i < 100; i++)
display(i);
}
//****************************************************************
/**********************************************
***********************************************/
#include <16F877A.h>
#fuses HS, NOWDT, NOPROTECT, NOLVP
#device 16F877*=16, ADC=8
#use delay(clock=8000000)
//*********************************************
void main()
{
setup_adc(adc_clock_internal);
setup_adc_ports(ALL_ANALOG);
set_adc_channel(3); // PIC.TS VR1 JP1=RA2, VR2 JP2=RA3
delay_ms(10);
while (true)
output_c(read_adc());
}
//*********************************************
/****************************************************
* Bo mon DTVT Khoa CNTT Dai hoc Thai Nguyen
*
120
// 10 bits ADC
#use delay(clock=8000000)
#define DO_START_ADC
#define DO_END_ADC
1
2
/*============================================*/
void main(void)
{
int16 int_volt;
int8 str_volt[21];
float flt_volt;
int8 do_what = DO_NOTHING;
int8 tmp;
printf( "S: Start ADC\n\r");
Printf( "Q: END ADC\n\r");
while(true){
// if rs232 get char
if(0 != kbhit())
{
tmp = fgetc(MYPC);
switch(tmp)
{
case 'S':
case 's':
121
putc(tmp);
break;
}//end switch(tmp)
}//end if(kbhit())
switch(do_what)
{
case DO_START_ADC:
// start adc and send result to PC
int_volt = read_adc();
flt_volt = 5.0 * int_volt / 0x3ff;
sprintf(str_volt, "ADC: %1.3fV\n\r", flt_volt);
printf(str_volt);
printf( "\n\r" );
122
delay_ms(500);
break;
case DO_END_ADC:
// you want to do
break;
case DO_NOTHING:
// you want to do
break;
default:
break;
}//end switch(do_what)
}//end while(1)
}//end main()
/****************************************
chuong trinh dieu khien led de kiem tra cong
Bo mon DTVT Khoa CNTT Dai hoc Thai Nguyen
***************************************/
#include <16F877A.h>
#device *=16
#device adc=8
#FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#include <1wire.c>
#use rs232(baud=9600, xmit=PIN_C7, rcv=PIN_C6, stream=MYPC)
// rs232 setting
#include <ds1820.c>
123
void main()
{
float temperature;
setup_psp(PSP_DISABLED); // huy bo PSP
setup_spi(FALSE);
");
124
File name:
//==============================================
//TEN DE TAI
//Ngon ngu
//ma lenh
0 1 2 3 4 5 6 7 8 9
void keyscan();
void display();
//*****************************************************
void main()
{
Set_tris_D(1);
command = 0;
output_a(0x00);//bat chan A5
while(true)
125
{
keyscan();
display();
}
}//end of main program
//****************************************************
void keyscan()
{
output_d(0xff);
if(input(PIN_D0) == 0)
{
delay_ms(150);
if (input(PIN_D0)==0) command = 1;
display() ;
}
if(input(PIN_D1) == 0)
{
delay_ms(150);
if (input(PIN_D1)==0) command = 2;
display() ;
}
if(input(PIN_D2) == 0)
{
delay_ms(150);
if (input(PIN_D2)==0) command = 3;
display() ;
}
if(input(PIN_D3) == 0)
{
126
delay_ms(150);
if (input(PIN_D3)==0) command = 4;
display() ;
}
if(input(PIN_D4) == 0)
{
delay_ms(150);
if (input(PIN_D4)==0) command = 5;
display() ;
}
if(input(PIN_D5) == 0)
{
delay_ms(150);
if (input(PIN_D5)==0) command = 6;
display() ;
}
if(input(PIN_D6) == 0)
{
delay_ms(150);
if (input(PIN_D6)==0) command = 7;
display() ;
}
if(input(PIN_D7) == 0)
{
delay_ms(150);
if (input(PIN_D7)==0) command = 8;
display() ;
}
output_d(0xff);
}
127
//******************************************************
void display()
{
output_b(DIGITS[command] ^ 0xff);
}
//*****************************************************
//END PROGRAM
//========================================================
=====================
//TEN DE TAI
:RELAY
//Ngon ngu:ANSI C cho PIC, dung trinh bien dich Hi-Tech PICC compiler
//Lap trinh vien : Bo mon DTVT Khoa CNTT
//Chuong trinh :HIEN THI SO BAT KY TREN LED_7T
//Su dung MCU : 16f877a cua Microchip.thach anh 20 Mhz
//Ngay bat dau :Ngay xx thang' xx nam 20xx
//Ngay hoan thanh : Ngay xx thang' xx nam 20xx
//Mo ta hardware :
//khi dich chon dung loai PIC:Configure-->Select Device-->chon loai PIC
//============================================
#include<pic.h>
__CONFIG(UNPROTECT & WDTEN & HS & PWRTEN & BOREN &
LVPDIS & DUNPROT & DEBUGDIS);
//**************************************************
void init(void);
void Delay(void);
//===========Chuong trinh =========================
void main()
128
{
init();
while(1)
{
if (RB1 == 0)
{
Delay();
if (RB1 == 0)RB0 ^= 1;}
if (RB3 == 0)
{
Delay();
if (RB3 == 0)RB2 ^= 1;}
if (RB5 == 0)
{
Delay();
if (RB5 == 0)RB4 ^= 1;}
if (RB7 == 0)
{
Delay();
if (RB7 == 0)RB6 ^= 1;}
CLRWDT();
}
CLRWDT();
}
//==============THE END =========================
void init(void)
{
//---------Dinh nghi cacs cong-----------------OPTION = 0x01000000;
TRISB = 0b10101010;
129
Delay();
PORTB = 0b10101010;
}
//===============================================
void Delay()
{
unsigned char i;
for (i =0;i<20;i++)
{
NOP(); NOP(); NOP(); NOP(); NOP();
NOP(); NOP(); NOP(); NOP(); NOP();
NOP(); NOP(); NOP(); NOP(); NOP();
NOP(); NOP(); NOP(); NOP(); NOP();
}
}
//================THE END =====================
//===============================================//TEN DE
TAI : Ma tran phim
//Ngon ngu
:ANSI C cho PIC, dung trinh bien dich Hi-Tech PICC compiler
130
#include<pic.h>
__CONFIG(UNPROTECT & WDTEN & HS & PWRTEN & BOREN &
LVPDIS & DUNPROT & DEBUGDIS);
//===============Mang phng so; p vo mauc thu
hai===================
#define KEYPORT PORTC
#define NOKEY 16
bit keyfound = 0;
const unsigned char KEY_IO[16] = {0xEE, 0xDE, 0xBE, 0x7E, //C4 C5 C6 C7
0xED, 0xDD, 0xBD, 0x7D,//C3
0xEB, 0xDB, 0xBB, 0x7B,//C2
0xE7, 0xD7, 0xB7, 0x77};
const unsigned char KEY_MAP[16] = {12,11, 0,10,
13, 9, 8, 7,
14, 6, 5, 4,
15, 3, 2, 1};
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
const unsigned char DIGITS[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7
9,0x71};
unsigned char maphim;
//===========Cac dinh nghia =========================
void init(void);
void keyscan(void);
void display(void);
unsigned char kboard_idkey(void);
void delay(void);
//==================Chuong trinh chinh'===============
void main()
{
131
init();
PORTA = 0xff;
maphim = 0;
PORTB = (DIGITS[maphim] ^ 0xff);
while(1)
thoat khoi
{
keyscan();
display();
CLRWDT();
}
CLRWDT();
}
//================THE END MAIN===================
void init(void)
{
//---------Dinh nghi cacs cong-----------------TRISD
= 0b00000000;
//cong X la ra
PORTD
= 0b11111111;
TRISE = 0b00000011;
TRISB = 0b00000000;
PORTB = 0b00000000;
//--------Dinh nghia cong A-------ADCON1
= 0b00001111;
TRISA
= 0b11000000;
//C?ng A c A0-5 l ra
so
TRISC = 0b11110000;
PORTC = 0b11110000;
}
132
133
{
key++;
KEYPORT &= 0xF0;
*
*
134
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use
delay(clock=8000000)
byte sec,min,hour;
//Su dung led 7 thanh loai catot
//
// 1 2 3 4 5 6 7 8 9
135
void set_hour(void);
void clear_status(void);
void read_time(void);
void update_time(void);
void display(void);
//****************************************************************
**
//Chuong trinh chinh
//****************************************************************
**
void main() {
byte u;
Delay_ms(5);
init();
u=read_ds1307(0);
sec=u & 0x7F;// enable RTC
write_ds1307(0,sec);// set second to 00 and enable clock(bit7=0)
//Xoa tat ca cac co khien
key=5;mode=0;blink=0;
blink_sec=0;blink_min=0;blink_hour=0;
count=15;on_off=1;
ampm = bit_test(hour,5);// test AM_PM
if(ampm==0) {RD4 = 0;RD5=1;} //LED AM
if(ampm==1) {RD4 = 1;RD5=0;} //LED PM
while(true)
{
read_time();
display();
keyscan();
}
136
137
}
//****************************************************************
**
void update_1307()
{
write_DS1307(0,sec);
write_DS1307(1,min);
bit_set(hour,6);
if (ampm == 0) {bit_clear(hour,5); write_DS1307(2,hour);} // AM
if (ampm == 1) {bit_set (hour,5); write_DS1307(2,hour);} // PM
}
//****************************************************************
**
void keyscan() {
RD0=1;RD1=1;RD2=1;RD3=1;
if(SW1 != 1) { key=0;SW1=1;delay_ms(150);}
if(SW2 != 1) { key=1;SW2=1;delay_ms(150);}
if(SW3 != 1) { key=2;SW3=1;delay_ms(150);}
if(key != 5)
{
switch (key)
{
case 0: {mode++;key = 5;blink=1;set_blink();}
break;
case 1: {change_time();key = 5;update_1307();}
break;
case 2: {clear_status();key = 5;}
break;
}
}
138
}
//****************************************************************
**
void set_sec()
{
sec=read_ds1307(0);
if (sec>=0x30) {sec=0; min++; write_ds1307(1,min);}
else sec=0;
write_ds1307(0,sec);
}
//****************************************************************
**
void set_min()
{
byte j;
min=read_ds1307(1);
min++;
j=min & 0x0F;
if (j>=0x0A) min=min+0x06;
if (min>=0x60) min=0;
write_ds1307(1,min);
}
//****************************************************************
**
void set_hour()
{
hour= hour & 0x1F;
hour++;
if(hour== 0x0a) hour = hour+0x06;
if(hour == 0x13)
{ hour = 0x00;
if (ampm == 0) ampm = 1;
139
else ampm = 0;
}
}
//****************************************************************
**
void clear_status() {
mode=4; set_blink();
}
//****************************************************************
**
void read_time()
{ sec = read_DS1307(0);
min = read_DS1307(1);
hour = read_DS1307(2);
update_time();
}
//****************************************************************
**
void update_time()
{
ampm = bit_test(hour,5); //test AM PM
if(ampm == 0) {RD4 = 0;RD5=1;} //AM
if(ampm == 1) {RD4 = 1;RD5=0;} // PM
DIS1= sec & 0x0F;
DIS2=(sec & 0xF0)>>4; //convert to BCD SEC
DIS3= min & 0x0F;
DIS4=(min & 0xF0)>>4; //convert to BCD MIN
DIS5= hour & 0x0F;
DIS6=(hour & 0x10)>>4; //convert to BCD HOUR
}
//****************************************************************
**
140
void display() {
TRISB=0x00;TRISA=0x00;
if(blink==0) goto norm;
if(on_off==0) goto led_blink;
norm:
//----------------------------------------------------------------// sec - min - hour
PortB=MAP[DIS1]; RA5=0;//DIS1
delay_ms(1);
RA5=1;
RA4=1;
PortB=MAP[DIS3];output_low(PIN_B7);RA3=0;//DIS3
delay_ms(1);
RA3=1;
PortB=MAP[DIS4]; RA2=0;//DIS4
delay_ms(1);
RA2=1;
PortB=MAP[DIS5];output_low(PIN_B7); RA1=0;//DIS5
delay_ms(1);
RA1=1;
RA0=1;//*/
141
if (blink_sec==1) RA5=1;//DIS1
else RA5=0;
delay_ms(3);
RA5=1;
PortB=MAP[DIS2];
if (blink_sec==1) RA4=1;//DIS2
else RA4=0;
delay_ms(3);
RA4=1;
PortB=MAP[DIS3];output_low(PIN_B7);
if(blink_min==1)
RA3=1;//DIS3
else RA3=0;//DIS3
delay_ms(3);
RA3=1;
PortB=MAP[DIS4];
if(blink_min==1)
RA2=1;//DIS4
else RA2=0;//DIS4
delay_ms(3);
RA2=1;
PortB=MAP[DIS5];output_low(PIN_B7);
if(blink_hour==1)
RA1=1;//DIS5
else RA1=0;//DIS5
delay_ms(3);
RA1=1;
PortB=MAP[DIS6];
if(blink_hour==1)
RA0=1;//DIS6
RA0=1;//*/
if(count==0) {count=15;on_off=1;}
//-----------------------------------------------------------------exit:
count--;
}
//*************************************************
void init()
{
142
Trisd = 0x0F;
Trisb = 0x00;//output
Trisa = 0x00;
RD4=1;RD5=1;
init_ds1307();
}
//*************************************************
//END PROGRAM
143
144
146
Simple PLA.
Tip theo l MMI (c mua li bi AMD sau ) tham gia nh ngun th hai
trong mng PLA. Sau trong qu trnh ch to c s thay i nh v ci tin
thnh logic mng kh trnh PAL.
Kin trc mi ny khc vi PLA ch l mt trong cc mng kh trnh c c
nh - mng cng OR. Kin trc PAL nhanh hn, phn mm t phc tp hn,
nhng khng c linh ng nh PLA.
Cc kin trc khc nh PLD. Cc loi thit b c gi l Simple PLD
Kt hp hn ch ca cc cng AND / OR
147
nh tuyn d dng
149
150
Ht mn.
151
153
154
Cc thit b ca Xilinx.
Cc tnh nng sn phm
ph thit k thp.
logic mi phn.
nhiu li ra
155
khc nhau.
Cng sut nh: Bn s dng ngun pin hay ngun cc. Thit k
156
157
158
nhanh, cng sut thp. Kin trc c bn l kin trc CPLD truyn thng,
kt hp cc macrocell thnh nhng khi chc nng c ni vi mt ma
trn nh tuyn kt ni gi l Xilinx Advanced Interconnect Matrix
(AIM). Cc b c trng ny dng cu hnh PLA cho php tt c nhng
product term c nh hng v chia s trong bt k cc macrocell no
ca cc macrocell ca khi chc nng ny.
159
160
1.
Phn mm ny t rt nhiu chc nng c th a vo trong mt
khi chc nng. Khng cn thit t cc chc nng ca macrocell gn
nhau hay c bt k cc hn ch no khc tr vic t n trong cng mt
khi c x l bi phn mm. Cc chc nng khng cn dng chung
xung nhp, chung set/reset hay chung li ra c th c nhng ng dng
y ca PLA. Hn na, mi p- term ti cng thi gian tr nh trc.
Khng c nhng b cng thi gian ni tng t nhiu hn product term
trong khi chc nng. Khi khi chc nng p- term t c, th mt b
nh thi lin kt nh nh tuyn tn hiu ti mt khi chc nng khc
tip tc to mch logic. Phn mm thit k Xilinx iu khin vic ny mt
cch t ng.
II. L thuyt chung v VHDL
Hin nay cc mch tch hp ngy cng thc hin c nhiu chc nng hn, do
chng ngy cng tr nn phc tp hn. Cc phng php thit k mch truyn
thng nh dng ti thiu ho hm Boolean hay dng s cc phn t khng
cn p ng c cc yu cu t ra khi thit k. Hn na cc mch thit k ra
yu cu phi c th nghim k lng trc khi a vo ch to hng lot. Hn
na cn phi xy dng mt b ti liu hng dn vn hnh h thng hon chnh
d hiu v thng nht. V th ngi ta thng s dng cc ngn ng m phng
phn cng lm phng tin thit k, m phng th nghim cc h thng s.
161
162
163
164
Vic thc hin bng HDL, cng vi khong 6000 cng, cn 8 dng lnh v c
th thc hin trong 3 pht. Tp ny cha tt c nhng thng tin cn thit nh
ngha mt b nhn 16x16. Ngoi vic tit kim thi gian ra, phng php HDL
cn c lp hon ton vi nh cung cp, y cng l mt li th ca HDL.
to ra b nhn 32x32 bn n gin ch cn thay i mt cht xu. i vi
phng php v mch, cn phi c 3 bn sao ca thit k 30 trang trc , tc
l 90 trang cn phi v li, sau nh a ch li cho b rng ng bus ln hn.
iu ny c l phi cn n 4 gi ch bn bng phng php ho. Theo cch
m t bng phng php HDL th vn ch l thay i ung bus t 15 thnh
31 dng th 2 v t 31 thnh 63 dng th 3. Vic ny c l ch mt n 6
giy. Sau y l minh ho ca HDL khi thay i 2 b nhn trn. V d thay i
file HDL:
Before (16 x 16 multiplier):
entity MULT is
port(A,B:in std_logic(15 downto 0);
Y:out std_logic(31 downto 0));
end MULT;
architecture BEHAVE of MULT is
begin
Y <= A * B;
end BEHAVE;
After (32 x 32 multiplier):
entity MULT is
port(A,B:in std_logic(31 downto 0);
Y:out std_logic(63 downto 0));
end MULT;
architecture BEHAVE of MULT is
begin
Y <= A * B;
end BEHAVE;
3. Cc qu trnh thc hin thit k s bng HDL trn FPGA
Cc bc chnh thc hin thit k s dng ngn ng m t phn cng trn
FPGA c m t trn hnh v.
165
166
trc s xy dng nn ton b kin trc tng quan cho thit k. Ngha l trong
bc ny ngi thit k kin trc phi m t c nhng vn sau:
- Thit k c nhng khi no?
- Mi khi c chc nng g?
- Hot ng ca thit k v ca mi khi ra sao ?
- Phn tch cc k thut s dng trong thit k v cc cng c, phn
mm h tr thit k.
Mt thit k c th c m t s dng ngn ng m t phn cng, nh
VHDL hay Verilog HDL hoc c th m t qua bn v mch (schematic
capture). Mt thit k c th va bao gm bn v mch m t s khi
chung, va c th dng ngn ng HDL m t chi tit cho cc khi trong
s .
2. M phng chc nng (Function simulation): Sau khi m t thit k, ngi
thit k cn m phng tng th thit k v mt chc nng kim tra thit k
c hot ng ng vi cc chc nng yu cu.
3. Tng hp logic (Logic Synthesis): Tng hp logic l qu trnh tng hp
cc m t thit k thnh s b tr mch (netlist). Qu trnh chia thnh 2
bc: chuyn i cc m RTL, m HDL thnh m t di dng cc biu thc
i s Boolean v da trn cc biu thc ny kt hp vi th vin t bo
chun sn c tng hp nn mt thit k ti u.
Logic Synthesis
VHDL description
Circuit netlist
57
Logic Synthesis.
167
Mapping
LUT0
LUT4
LUT1
FF1
LUT5
LUT2
FF2
LUT3
63
Mapping.
IV.t khi v nh tuyn (Place & Route):
t khi tc l t cc khi nh x vo cc t bo (cell) v tr ti u cho vic
chy dy.
168
Placing
FPGA
CLB SLICES
64
Placing.
nh tuyn tc l thc hin vic ni dy cc t bo.
Routing
FPGA
Programmable Connections
65
Routing.
169
170
cho php thit k bng nhiu phng php nh phng php thit k t
trn xung, hay t di ln da vo cc th vin c sn. VHDL cng h
tr cho nhiu loi cng ngh xy dng mch nh s dng cng ngh ng
b hay khng ng b, s dng ma trn lp trnh c hay s dng mng
logic ngu nhin. Nh vy VHDL c th phc v tt cho nhiu mc ch
thit k khc nhau, t vic thit k cc phn t ph bin n vic thit k
cc IC ng dng c bit (Application Specified IC).
172
LIBRARY IEEE;
USE
IEEE.std_logic_1164.ALL;
ENTITY
nand IS
GENERIC
(delay : = 5 ns);
PORT
(a
: IN
std_logic;
: IN
std_logic;
: OUT std_logic);
END nand;
Khai bo mt thc th NAND.
Cu lnh LIBRARY IEEE v USE IEEE.std_logic_1164.ALL cho php thc th
s dng cc nh ngha trong th vin v cc tiu chun ca IEEE. Khai bo thc
th bao gm tn ca thc th v mt tp cc cng v phn chung. Trong phn
chung GENERIC l cc hng s c truyn cho phn t (h thng). Phn chung
c th coi l cc tham s nh trc ca phn t, chng hn nh tr. Cc cng
l phn giao din vo ra ca phn t. Cc cng c th tng ng vi cc chn IC,
hay cc u ni trn bng mch. Cc cng c khai bo l cng vo, cng ra,
cng hai chiu hay b m.
4.2.2. Kin trc (Architecture)
Mt khai bo thc th u phi i km vi t nht mt kin trc tng ng.
VHDL cho php khai bo nhiu kin trc cho mt thc th. Mt khai bo kin
trc c th bao gm cc khai bo v cc tn hiu bn trong, cc phn t bn trong
h thng, hay cc hm v th tc m t hot ng ca h thng. C hai cch m
t kin trc ca mt phn t (h thng) l m t theo m hnh hot ng hay
m t theo m hnh cu trc. Tuy nhin mt h thng c th bao gm c m t
theo m hnh hot ng v m t theo m hnh cu trc.
a, M t kin trc theo m hnh hot ng
173
behaviour
OF
IS
BEGIN
c
<=
delay;
END behavour;
Ta thy kin trc ca phn t NAND c mt lnh gn tn hiu m t chc nng
ca phn t. Cu lnh ny c thc thi khi mt trong hai cng a,b thay i gi
tr. V cu lnh gn c tr, tc l tn hiu bn v tri s thay i tng ng
sau thi gian tr.
b, M t kin trc theo m hnh cu trc
M hnh cu trc ca mt phn t (h thng) c th bao gm nhiu cp cu trc
bt u t mt cng logic n gin xy dng m t cho mt h thng hon
thin. Thc cht ca vic m t theo m hnh cu trc l m t cc phn t con
bn trong h thng v s kt ni ca cc phn t con . Nh vi v d m t m
hnh cu trc mt flip-flop RS gm hai cng NAND nh sau.
174
4.2.3. Cu hnh
Vic khai bo cu hnh tng t nh vic lit k cc phn ca bn thit k. Khai
bo cu hnh thc cht l ch ra kin trc no c gn vi thc th no. Nh vy
cc kin trc khc nhau c th cng c gc vi mt thc th. iu ny cho
php thay i bn m t thi im m phng hay tng hp h thng. Vic khai
bo cu hnh l tu chn, cng c th s dng cu hnh mc nh do VHDL cung
cp-khi kin trc c khai bo cui cng cho mt thc th s c gn vi
thc th .
4.2.4. Mi trng kim tra
Mt trong cc nhim v rt quan trng l kim tra bn m t thit k. Kim tra
mt m hnh VHDL c thc hin bng cch quan st hot ng ca n trong
khi m phng. Thng thng cc b m phng c cung cp kh nng kim tra,
nhng cng c th xy dng mt mi trng kim tra VHDL. Mi trng kim
tra c th hiu nh mt mch kim tra o. Mi trng kim tra sinh ra cc tc
ng ln bn thit k v cho php quan st hoc so snh kt qu hot ng ca
bn m t thit k.
175
bn.
Click Next.
Click next.
177
Click Next.
Khai bo cc cng.
178
179
180
3. Chn Next
4.
Testbench s m phng module counter do vy n s hi bn s
gn file ngun no cho file ngun ny, chon counter v click next
5.
6.
By gi cng c testbench HDL c trong thit k. Hp Initialize
timing thit lp tn s ca xung nhp h thng, nhng yu cu thit lp v
tr u ra. Board demo CPLD Design Kit c b dao ng 1.842MHz. Do
vy chng ta s nhp vo 540ns cho chu k hay l 270ns cho Clock High
Time v Clock Low Time nh hnh di.
7.
Click Finish
182
8.
9.
m phng trong ISE, Chn behavioral simulation trong menu
th xung ca ca s source.
10.
Kim tra counter vn c chn sng v tap process c la chn,
click p vo simulate behavioral model trong ca s process (phi click
vo du cng bn cnh Xilinx ISE Simulator m n ra).
183
11.
M phng t ng c to ra
12.
Hot ng ca mch ging nh nhng g chng ta mong i, n
tng tn hiu m ln mt sau mi sn ln ca clock, do vy chng ta c
th tip tc xy dng thit k ca chng ta. Trc tin chng ta s thc hin
snapshot chng ta c th quay li thi im ny ca tin trnh thit k khi
cn.
Chn Project Take Snapshot.
184
Trng thi 1: n
2.
3.
4.
b.
c.
185
d.
M state machine wizard bng cch click vo nut
Machine Wizard s xut hin
e.
State
186
f.
Bn s thy mt hp thoi la chn ch khi ng li. Kim
tra thy synchronous c chn, sau chn next.
g.
Tip theo bn s thy hp thoi Setup Transitions. G TIMER vo
trng tip theo.
h.
Click Finish v th lu trng thi ny vo bn v bng cch bm
vo bt c u trn trang bn v.
i.
Click vo trng thi khi ng (hnh ovan mu vng) v i tn
thnh RED.
187
j.
l.
m.
lp GRN l 1 vi u ra ng k.
thit lp u ra AMB l 1.
188
n.
Click vo ng chuyn trng thi gia trng thi RED v
REDAMB.
o.
Hp thoi Edit Condition s xut hin. Ti ca s ny, thit lp s
chuyn trng thi khi b timer bng 1111 bng cch thit TIMER=1111 ti
trng Condition.
p.
q.
189
r.
Th marker vo trang, click p v nhp tn l TIMER v rng
l 4 bit (trong phm vi t 3:0).
s.
t.
ti thanh cng c.
u.
Ca s Results xut hin dng Compliled Perfectly. ng hp
thoi li, ca s HDL Browser hin ra.
190
v.
Khi chn nt lnh Close, mt danh sch VHDL cho lu trng
thi c m trong hp thoi StateCAD HDL Browser.
w.
Lu danh sch v ng ca s.
191
192
193
195
timer => ,
clk => ,
reset => ,
amb => ,
grn => ,
rd =>
);
o
196
197
nh sau:
198
trng s th ny
199
200
201
ECS hint.
I/O Marker.
202
ECS hint
Chng trnh v s mch in ECS c thit k bn c th la chn
nhng hnh ng m bn mun cho php bi nhng i tng m bn mun
thc hin trn . Thng thng i vi nhng ng dng ca s hot ng kiu
la chn i tng sau tc ng trn cc i tng . Hiu c nguyn l
hot ng cn bn s lm cho vic hc ECS s n gin v th v hn.
To thit k s nguyn l mc nh
T trnh n Project, chn lu source -> Schematic v t tn l top_sch.
Schematic Symbol t phn con Design Utilities (bn phi kch vo du cng
thy n). N s to ra mt biu tng s nguyn l v thm vo trong
th vin trong trnh bin tp s nguyn l.
Phng ln ln
204
205
206
207
208
209
210
1. Mc ch
- Lm quen vi CPLD.
- Tm hiu v cu trc phn cng CoolRunner2 Starter Kit X_Board.
2. Thit b s dng
- Kit th nghim: CoolRunner2 Starter Kit X_Board.
- PC.
- Dy cp tn hiu.
3. Ni dung thc hnh
X- Board l mt mch in hon chnh lm nn pht trin cho Xilinx
CoolRunner II CPLD. N cung cp cc mch in h tr cn thit cho Cool
Runnner II, v th ngui s dng c th tp trung vo vic to ra v download cc
thit k mi. Mt cng USB 2 trn mch cung cp ngun cho bo mch v cung
cp cc cng d liu cho vic cu hnh CPLD cng nh l truyn d liu.
Hn 75 tn hiu CPLD c ni ti nhng kt ni m rng, v vy thit k d
dng c m rng. 32 tn hiu c ni ti cc b kt ni 6 chn, v th n c
th cung cp cho cc modul vo ra Pmod ca Diligent.PMod l bo mch nh
vi cc thit b c chi ph thp cung cp cc mch in nh b chuyn i A/D
v D/A, cc cng vo ra khc nhau v cung cp cc dng in ln cho ng
c.
Cc c trng ca X-board gm:
2.
3.
Mt cng USB2 trn mch dnh cho lp trnh JTAG v truyn d
liu ngi s dng.
4.
Mt b bin i A/D 16 bit trn mch cho php o c dng CPLD
trong sut qu trnh hot ng ca board ( d liu qua dy cm USBc
gi ti PC hin th)
5.
Mt b dao ng Silic c th thit lp tn s bi ngi dng
(1000/100/10KHz) thm vo to nn b dao ng thch anh th hai
6.
M t chc nng
212
ti m qut bn phm.
2.
Khi ng li my tnh
213
3.
4.
Khi ng chng trnh ExPort t Start -> Programs-> Digilent ->
Adept -> ExPort
5.
6.
Nhn nt Initialize Chain trong Export v thit b s t ng
c d tm. Nu khng, nhy n phn Trouble Shooting ca hng dn
ny.
7.
Nhn nt Browse v nh v file JED mong mun ( File Jedec c
trn a CD Resource).
8.
Kch phi chut vo biu tng CPLD v la chn Program
Device lp trnh CPLD vi file Jedec (Xo s xut hin mt cch t
ng v khng cn phi thc hin trc khi lp trnh).
Cu hnh
s dng trc khi n thc hin bt k chc nng no. File cu hnh c th
c to ra t s schematic hoc t cc cc file ngun HDL s dng
phn mm ISE WebPack min ph ca Xilinx. Cc file cu hnh c th
c truyn ti cc X-Board s dng dy cp USB v phn mm Adept
Export ca Digilent, hoc s dng cp lp trnh ( khng oc cung cp bi
Xilinx) v phn mm iMPACK ca Xilinx. Khi c cu hnh, CPLD
s t c trng thi ca n mt cch v hn.
214
Meter v m bo rng JP1 c t ti REG. Khi ng ng dng XMeter t menu Window Start, kch chut vo nt Start trn X- Meter.
chu k 2s v truyn d liu n b m d liu trn PC qua cp USB. XMeter v biu d liu bng mt th dng sng ch ra d liu ln nht
v nh nht t c. thay i t l ca dng sng, kch vo s o
dng in mong mun / nt phn chia.
Cc n LED
216
B kt ni tp trung 6 chn
Modul ngoi vi
Thit k Demo.
217
218
219
220
221
Cc bc thc hnh
1. Gn PModAMP1 vo J1 trn X-Board, gn speaker hoc Headphone vo
PModAMP1.
2. Np file X-Board_PModAMP1.jed bng phn mm Digilent Export ca
Adept.
3. Chy ng dng Digilent Transport
La chon Tab Register I/O
nh con s tng ng vi tn s vo bt k mt box thanh ghi a ch no
v con s nh ngha khong thi gian ca tin hiu audio trong mt box thanh ghi
d liu no .
Kch chut vo nt Write bn cnh d liu. Khi tn hiu audio s c
pht ra.
222
223