Professional Documents
Culture Documents
Giao Trinh Thi Nghiem VDK 16f887
Giao Trinh Thi Nghiem VDK 16f887
Hai thanh ghi ny c tng cng 14bit t ANS0 n ANS13 , s quy nh tn hiu lm vic
ca cc chn t AN0 n AN13 l tn hiu s hay tn hiu analog .
ANSX=0 : Cho php chn ANX x l tn hiu s .
ANSX=1 : Cho php chn ANX x l tn hiu tng t .
Trong : X= 0 13
2.Chc nng ca thanh ghi TRIS :
Trong cc chn x l tn hiu s , hot ng ca chn c th l ng ra (lm cho led chp tt,
kch transistor , iu khin hot ng IC....) , hay c th l ng vo (c trng thi nt nhn , c
encoder , c tn hiu t cm bin s....). Nh vy , khi to cho cc chn l ng ra hay ng
vo tn hiu s , chng ta cn ch n thanh ghi TRISX (X=A,B,C,D,E):
RXY
0
1
0
1
x
Kt qu
Ng ra mc thp(0V)
Ng ra mc cao(+5V)
Tng tr cao (R=)
Ng vo , tc ng mc thp
X l tn hiu tng t .
Ngt on-change
Xy ra trn c PORTB
Ch cn tn hiu logic thay i l xy ra ngt,
khng phn bit cnh ln hay cnh xung.
Cc bit khi to :
IOCBx , RBIE , RBIF , GIE
cho ln ngt tip theo c thc hin th
cn phi xa c ngt INTF v c ( hoc ghi)
vo thanh ghi PORTB.
//(------------2-----------)
//(------------3-----------)
//(------------4-----------)
RB_0( );//Chy chng trnh con RB_0
RB_1( ); //Chy chng trnh con RB_1
RB_2( ); //Chy chng trnh con RB_2
}
}
//(-------------5-----------)
void delay(unsigned char counter) //Chng trnh con lm tng thi gian delay
{
unsigned char value=0;
while(counter>value)
{
value++;
_delay(100000);
//tr 1ms vi Fosc = 4MHz
}
}
void RB_0( )
{
RE1^=1;RE2= .RE1;
// led RE1 v led RE2 chp tt xen k
delay(2);
//delay 0.2s
}
void RB_1( )
{
RE1^=1;RE2 .RE1;
// led RE1 v led RE2 cng chp tt
delay(5);
//delay 0.5s
}
void RB_2( )
{
RE1= .;RE2= .;
// led RE1 sng v led RE2 tt
delay(1);
//delay 0.1s
RE1= .;RE2= .;
// led RE1 tat v LED2 sng
delay(7);
//delay 0.7s
}
*Bc 3: Bin dch chng trnh, np xung kt th nghim , tin hnh nhn cc nt nhn v
quan st 2 led.
*Bc 4: Thay i chng trnh nh sau:
Thm vo dng : (-------------1------------) on code sau:
7
//led D7 sng
TRISB3=.;RB3=0;TRISB4=.;RB4=1;
//led D8 sng
TRISB4=.;RB4=1;TRISB5=.;RB5=0;
//led D9 sng
TRISB4=.;RB4=0;TRISB5=.;RB5=1;
//led D10 sng
TRISB5=0;RB5=.;TRISB3=0;RB3=.;
//led D11 sng
TRISB5=0;RB5=.;TRISB3=0;RB3=.;
break;
}
}
*Bc 3: Bin dch chng trnh , np xung kt th nghim , tin hnh nhn nt nhn v quan
st cc led.
*Bc 4:Tr li cu hi :
ra cc phng php x l khi ng vo tc ng mc cao :
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------V.BI TP T GII :
Bi 3.Vit chng trnh c gi tr phm v hin th gi tr ln led 7 on theo s phn
cng sau : (To mt project mi vi tn 01_03_MSSV)
(Phm t 0-9 , led hin th s tng ng , phm * th hin ch S, phm # th hin ch
H, lc khng nhn th hin ch U ).
11
12
BI 2 : ADC MODULE
I.MC CH TH NGHIM :
Kin thc sinh vin cn t c sau khi thc tp :
Gii thch c khi nim v chc nng ca in p tham chiu.
Thit lp c in p tham chiu trong v ngoi cho khi ADC ca vi iu khin.
Lit k c cc bc thit lp o ADC cho mt hoc nhiu knh.
Thit lp c cng thc tnh ADC 8-bit , v ADC 10-bit ch nh dng canh tri v
canh phi .
Tn ton c gi tr tn hiu tng t thu c thng qua gi tr ca thanh ghi ADRESL,
ADRESH.
Thit lp v khi to c mt project c lin quan LCD , thay i file LCD.h ph hp
vi cu hnh phn cng bn ngoi .
II.DNG C TH NGHIM:
Kt th nghim + cp USB.
Vt (vn bin tr).
My tnh .
Ngun 12V/1A.
III.C S L THUYT :
1.Tn hiu tng t v tnh hiu s :
Tn hiu tng t
Tn hiu s
th tn hiu analog v tn hiu s
Trong thc t , tn hiu cn x l xung quanh ta l tn hiu tng t , v d : vn tc , nhit
, m , cng nh sng , p sut v.v...Tuy nhin vi x l ch c th lm vic vi tn hiu
s (ch c hai trng thi 0 v 1) do x l c cc tn hiu tng t , th vi iu khin cn
phi c b chuyn i tn hiu tng t sang s ADC (Analog to Digital Converter).
13
Tn hiu s
255
VREF-
VREF+
Tn hiu tng t
14
15
18
//Cc lnh c s dng cho lcd c th tham kho trong file LCD.c v d :
lcd_gotoxy(x,y); //Lnh ny dng di chuyn con tr i n cc v tr trn mn
hnh lcd, trong x l gi tr ca hng ngang (x=[0,1]) , y l gi tr ca hng
dc(y=[0,15]).
lcd_putc(k t cn in); //Lnh ny dng in k t ln mn hnh lcd ti v tr con
tr .
lcd_puts(chui cn in); //Lnh ny dng in chui ln mn hnh lcd ti v tr con
tr , ch chui cn in nm gia hai du v k t cn in nm gia hai du
.
lcd_putc(\f) ; //xa mn hnh lcd , sau con tr tr v v tr (0,0).
while(1)
{
}
}
*Ngoi ra cn c th s dng hm printf nhng cn khai bo nh sau :
#include<htc.h>
#include<stdio.h> //khai bo th vin cho hm printf
__CONFIG(.);
#include lcd.h
//khai bo th vin hm lcd.h
void main( )
{
lcd_init( );
//lnh khi to lcd
char bien2=6;
float bien1=19.66667 ;
unsigned int bien3=60000;
printf(In ra man hinh );
printf(In ra \n man hinh );
printf(In gia tri :%d , bien2);
printf(In gia tri :%3d , bien2);
printf(In gia tri :%03d , bien2);
printf(In gia tri :%5.3d , bien2);
19
while(1);
}
void putch(char ki_tu)
{
lcd_putc(ki_tu);
}
Ch : Khi vit chng trnh c lin quan lcd m phn cng thc t khng c lcd hay
lcd kt ni khng ng vi th vin lcd.h th con tr chng trnh s dng ngay lnh lcd_init();
IV.BI TP THC HNH :
Bi 1: Vit chng trnh c ADC 8 bit chn AN3 v thc hin theo yu cu sau :
Hin th gi tr thanh ghi ANSEL hng (0,0) ca LCD.
Hin th gi tr in p chn AN3 hng (0,1) ca LCD.
nh thi bng hm delay , in p tham chiu trong , Fosc = 4Mhz , giao tip LCD
bng th vin LCD.h
S phn cng :
20
21
23
24
25
BI 3 :TIMER
I.MC CH TH NGHIM :
Kin thc sinh vin cn t c sau khi thc tp :
Gii thch c nguyn tc hot ng ca timer0 , timer1 , timer 2.
Thit lp cng thc tnh nh thi ca tng timer .
Lit k cc bit iu khin tng hot ng ca timer .
Phn bit s khc nhau v ging nhau gia hai ch timer v counter trong timer 0 ,
timer1.
Gii thch chc nng ca b chia trong timer .
Khi to ngt cho timer0 , timer 1 , timer 2 .
II.DNG C TH NGHIM:
Kt th nghim + cp USB.
My tnh .
Ngun 12V/1A.
Oscilloscope
III.C S L THUYT :
Timer l khi hot ng c lp vi CPU , do nu trong lp trnh chng ta s dng timer
th s lm gim i thi gian x l , gip vi iu khin hot ng nhanh hn . ng dng ch yu
ca timer l nh thi trong khong thi gian ngn , m s lng xung clock bn ngoi cho cc
ng dng nh : m sn phm , c s xung encoder v.v... PIC16f887 c tch hp 3 timer : timer
0(8-bit), timer 1(16-bit), timer 2(8-bit).
26
TMR0=0
+
TMR0=1
+
TMR0=2
+
TMR0=3
+
:
1 1 1 1 1 1 1 1
TMR0=255
+
TMR0
255
Over flow
28
(2550) 4
S ngt timer 0
T0IE : Bit cho php xy ra ngt timer 0 , ngt timer 0 xy ra th bit ny phi bng 1.
T0IF : C ngt timer 0 , khi ngt xy ra bt ny t ng bng 1 , chng ta cn phi xa (=0) bt
ny trong lp trnh .
GIE : GIE bit cho php ngt ton cc , ngt timer 0 xy ra th bit ny phi bng 1.
2.4 : Cc bc khi to timer 0:
2.4.1 : Khi to timer 0 hot ng vi ch nh thi timer:
T0CS=0;
//Clock cp cho timer 0 l Fosc (tn s hot ng ca vi iu khin)
PSA=0 ;
//B chia prescaler c s dng cho timer 0 .
PS<2:0>=....; //Chn t l b chia . Nu PSA=1 th c th b qua dng ny .
//Khi to ngt nu c s dng
INTE=1;
INTF=0;
GIE=1;
29
S khi timer 1
30
T=
Trong :
T thi gian nh thi timer 1
TMR1L , TMR1H : thanh ghi cha gi tr m ca timer 1
FOSC : tn s hot ng ca vi iu khin
Prescaler : t l b chia .
3.2Thanh ghi iu khin timer1 :
S ngt timer 1
3.5 Khi to timer 1 hot ng vi ch m counter :
//Khi to chn T1CKI l ng vo s
T1OSCEN=1;
TMR1CS=1;
T1CKPS1=..;
T1CKPS0=..;
T1SYNC=0;
//Cho php timer 1 on
//Khi to ngt nu c
32
S khi timer 2
Nguyn tc hot ng timer 2 :
Khi c xung clock tn s Fosc/4 qua b chia Prescaler i vo thanh ghi TMR2 , lm thanh
ghi TMR2 tng ln , khi thanh ghi TMR2 bng gi tr thanh ghi t PR2 th s c mt xung clock
i qua b chia Postscaler , ng thi thanh ghi TMR2 tr v v tr ban u , nu t l b chia
Postscaler c chn 1:1 th s xy ra s kin ngt timer 2 .
4.1 Cng thc tn nh thi timer 2 :
T=
Trong
T
PR2
TMR2
Prescaler
Postscaler
Fosc
//Reset c ngt.
}
}
*Bc 3 : Bin dch chng trnh , np xung kt th nghim , quan st trng thi ca led .
*Bc 4:Tng gi tr TMR0 dng (-------1--------) t thp n cao(0-255) , bin dch chng
trnh v np xung kit th nghim , n lc mt khng cn nhn thy led RE1 chp tt , tnh
tn s ng vi gi tr thanh ghi TMR0 va tm c .
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*Bc 5 : S dng oscillocope o tn s va tm c v so snh vi kt qu tnh ton , nhn
xt.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Bi 3:Vit chng trnh hin th ng h ln LCD , s dng timer 1 nh thi , thch anh
ngoi 32.768KHz.
*Bc 1 : To mt project mi vi tn 03_03_ MSSV
*Bc 2: Nhp chng trnh sau vo my tnh v hon thnh vo du .
#include<htc.h>
#include<stdio.h>
__CONFIG(INTIO&WDTDIS&PWRTEN&MCLREN&UNPROTECT&DUNPROTECT&BO
RDIS&IESODIS&LVPDIS&FCMDIS);void insothuc(unsigned char old_ADRESH);
#include "lcd.h"
unsigned char hh,mm,ss;
//Khai bo bin cha gi , pht , giy
void main()
{
lcd_init();
//Khi to cc chn ng vo thch anh 32.768KHz
TRISC0=TRISC1=1;RC0=RC1=0;
T1OSCEN= .;
//Cho php timer 1 hot ng clock ngoi
TMR1CS=
.;
//Clock cp cho timer 1 l clock ngoi
T1CKPS1=T1CKPS0=.;
//T l b chia 1:8(-------1--------)
T1SYNC=
.;
//Qua khi ng b
//Cho php timer hot ng khng cn tc ng bn ngoi
37
.;
.;
.;
.;
.;
.;
}
void putch(char c)
//Chng trnh con cho hm printf( )
{
lcd_putc(c);
}
void interrupt isr( )
{
if(TMR1IE&&TMR1IF)
//Ngt trn timer 1
{
ss++;
if(ss==60)
{
ss=0;
mm++;
if(mm==60)
{
mm=0;
hh++;
}
}
lcd_gotoxy(0,0);
printf("\fBay Gio La :\r\n %02d:%02d:%02d",hh,mm,ss);
TMR1H=239;
//Khi to gi tr m ban u cho timer1 (-------2--------)
TMR1L=255;
//
(-------3--------)
TMR1IF=0;
}
}
*Bc 3 : Np chng trnh xung kit th nghim , jumper J1(XTAL).Quan st lcd , v so snh
kt qu vi ng h thc, nhn xt :
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Da vo cng thc nh thi ca timer 1, chng minh nhng thng s cc dng (1),(2),(3):
38
40
BI 4: KHI CCP
(CAPTURE-COMPARE-PWM)
I.MC CH TH NGHIM :
Kin thc sinh vin cn t c sau khi thc tp:
Gii thch nguyn tc hot ng v khi to ch Capture.
Gii thch nguyn tc hot ng v khi to ch Compare .
Gii thch nguyn tc hot ng v khi to ch PWM.
Phn bit s khc nhau v ging nhau gia hai khi CCP1 v CCP2.
Thit lp c tn s PWM v iu chnh rng xung PWM theo yu cu.
II.DNG C TH NGHIM:
Kt th nghim + cp USB.
ng c DC12V.
Oscillocope.
My tnh .
Ngun 12V/1A.
III.C S L THUYT :
Cc chn c s dng cho khi CCP:
41
43
3.Capture :
S khi ch capture
3.1 Nguyn tc hot ng ca ch capture :
Khi c s kin (cnh ln , cnh xung , 4 cnh ln hoc 16 cnh ln ) chn CCPx (c th l
CCP1 hay CCP2 ty vo ta s dng khi CCP1 hay CCP2) th gi tr thanh ghi m ca timer 1
l TMR1H v TMR1L s c cp nht qua hai thanh ghi CCPRxH v CCPRxL ca khi CCPx.
ng thi c th xy ra ngt ni bng vic cho php c ngt CCPRxIF = 1 .(x=0,1)
3.2 Cc bc khi to ch capture :
Khi to chn CCPx l ng vo : TRISCx=1;RCx=1;
Khi to timer 1 hot ng .
Khi to khi CCPx hot ng vi ch capture :
CCPxCON = ......;
//Chn ch capture .
CCPRxH=CCPRxL=0;
//reset hai thanh ghi ca khi CCPx.
Khi to ngt (nu c s dng):
CCPxIE=1;
//Cho php ngt CCP
CCPxIF=0;
//Reset c ngt
PEIE=1;
//Cho php ngt ngoi vi
GIE=1;
//Cho php ngt ton cc .
44
S khi ch compare
4.1Nguyn tt hot ng ca ch compare :
Khi hai thanh ghi m TMR1H v TMR1L ca timer 1 m n gi tr ca hai thanh ghi
CCPRxH v CCPRxL th s xy ra mt trong cc s kin sau :
o trng thi ng ra ca chn CCPx.
To tn hiu chn CCPx ln bng 1 .
Xa tn hiu chn CCPx xung bng 0 .
To ra ngt .(CCPxIF =1 , chn CCPx khng s dng )
To ra s kin trigger .(CCP1IF=1,CCP1 reset timer 1 hoc timer 2,CCP2IF=1,CCP2
reset timer 1 v ADC bt u chuyn i nu khi ADC c cho php chuyn i , chn
CCP2 khng s dng ).
4.2Cc bc khi to ch compare:
Khi to chn CCPx l ng ra : TRISCx=0;
Khi to timer 1 hot ng .
Khi to khi CCPx hot ng vi ch compare :
CCPxCON = ......;
//Chn ch compare .
CCPRxH=....;CCPRxL=.....; //Chn gi tr t .
Khi to ngt (nu c s dng) :
CCPxIE=1;
//Cho php ngt CCP
CCPxIF=0;
//Reset c ngt
PEIE=1;
//Cho php ngt ngoi vi
GIE=1;
//Cho php ngt ton cc .
5.PWM(Pulse-Width Modulated) :
Ni n PWM th ta phi ni n hai c tnh c bn l : tn s (do timer 2 to ra ) v
rng xung (do thanh ghi CCPRxL:CCPxCON<5:4> to ra ).
S to xung PWM l s kt hp ca khi CCPx vi timer 2 :
45
S iu ch PWM
5.1Nguyn tt hot ng ca ch PWM :
Thanh ghi m ca timer 2 l TMR2 m n gi tr thanh ghi CCPRxL:CCPxCON<5:4>
ca khi CCPx th trng thi logic chn CCPx b o , khi gi tr ca thanh ghi TMR2 n gi tr
PR2 th hon tt mt chu k to xung PWM .
Ch : T s trn ta thy to xung PWM th gi tr CCPRxL::CCPxCON<5:4>
phi nh hn hoc bng gi tr thanh ghi PR2 , v mun thay i rng xung ta ch cn thay
i gi tr thanh ghi CCPRxL::CCPxCON<5:4> trong lp trnh .
Cng thc tnh chu k PWM :
48
50
*Bi 4 : Vit chng trnh to xung PWM 8 bit chn CCP2(RC1) vi tn s 15 KHz theo
yu cu sau (To mt project mi vi tn 04_04_ MSSV)::
Nhn nt nhn (khng gi ) chn RB0 ln 1 : rng xung 15% .
Nhn nt nhn (khng gi ) chn RB0 ln 2 : rng xung 30% .
Nhn nt nhn (khng gi ) chn RB0 ln 3 : rng xung 45% .
Nhn nt nhn (khng gi ) chn RB0 ln 4 : rng xung 60% .
Nhn nt nhn (khng gi ) chn RB0 ln 5 : rng xung 75% .
Nhn nt nhn (khng gi ) chn RB0 ln 6 : rng xung 90% .
Nhn nt nhn (khng gi ) chn RB0 ln 7 : Tr li trng thi nhn ln 1 .
*Bi 5 :Vit chng trnh theo yu cu sau (To mt project mi vi tn 04_05_ MSSV):
Nhn RB0 ng c quay cng chiu kim ng h , PWM 10Khz , rng xung 90%.
Nhn RB1 ng c quay ngc chiu kim ng h , PWM 15Khz , rng xung 70%.
51
52
53
54
57
Trong :
FOSC l tn s hot ng ca vi iu khin .
n=SPBRGH:SPBRG
V d : Tnh tc baund 9600 ,vi iu kin cc bit khi to nh sau :
SYNC=0 ; BRG16=1; BRGH=1; Fosc= 4Mhz
Khi theo bng ta c :
9600= 4(+1)
n=103
59
void send_char(char c)
61
62
63
64
65
Ph Lc
I.Ca s chng trnh :
Thanh Menu
Thanh Cng C
Ca s vit
chng trnh
I.Khi to mt project mi :
1.To mt folder (A) cha tt c cc file chng trnh
2.Khi ng MPLAB : Chn Project , Project Wizard
66
67
10
68
13
12
15
16
69
17
18
70