Professional Documents
Culture Documents
BÁO CÁO THỰC TẬP V3
BÁO CÁO THỰC TẬP V3
BÁO CÁO THỰC TẬP V3
Khoa DTVT
BO CO THC TP XNG V3
Cc Thnh vin
Nguyn Sn Lm
Nghim xun Hng
Phan Hong Linh
Bi Trung Hiu
Mt s c im Vi iu Khin:
-
b. H Vi iu khin Atmel
-
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
iu khin LED n
1.2 Yu cu
-
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
1.3 S nguyn l
Begin
P1_0 = 0
Khi to gi tr ban
u cho P1_0 , led tt
Bt led
Vng lp v hn
P1_0 = 1;
Delay(30);
P1_0 = 0;
Delay(30);
Gi tr, mt cm
nhn thi gian sng
Tt led
Gi tr, mt cm
nhn thi gian ti
#include <REGX52.H>
void delay(int time)
{
int i,j;
for(i=0;i<time;i++)
for(j=0;j<100;j++) {};
}
///////////////////////////////
void nhayled(void)
{
int i;
P1= 0x00; delay(300);
P1= 0xff;
delay(300);
/////
P1 = 0x00; delay(300);
P1 = 0xff; delay(300);
////
P1 =0x00; delay(300);
P1 = 0xff; delay(300);
////////
P1 = 0x01;
for(i=0;i<8;i++)
{ P1=P1<<1; delay(300);
}
P1 =0xf0;
for(i=0;i<8;i++)
{ P1 = P1>>1; delay(300);
}
///nhay tu 2 ben vao giua
P1 = 0x7e;delay(300);
P1 = 0xbd;delay(300);
P1 = 0xdb;delay(300);
P1 = 0xe7;delay(300);
///////////
P1 = 0x00;
//nhay tu giua ra 2 ben
for(i=0;i<3;i++)
{P1= 0xe7; delay(300);
P1= 0xdb;delay(300);
P1 = 0xbd; delay(300);
P1 = 0x7e; delay(300);
}
}
///////////////
void main(void)
{ while (1)
{ nhayled();
}
}
Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo
kit thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o 8 LED chy sng dn t tri sang phi
o 8 LED chy sng dn t phi sang tri
o 8 LED chy sng t gia ra hai bn
o 8 LED chy sng hai bn vo gia
1.6 . Lu :
Cch mc LED
- LED (Light-emitting diodes) cn gi l Diode pht quang, c kh nng chuyn in
thnh nh sng. Khi pht sng s gy ra st p trn n vo khong 1.7 2.5V (tu mu
LED), v dng nh mc ln nht qua n khong 20mA (i vi led indoor thng
thng). iu khin Led ta c mt s cch mc sau
Bi 2 - LED 7 THANH
2.1 Mc ch
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh chc nng vo/ra ca 8051.
Tm hiu giao tip ca 89S52 vi led 7 thanh.
Vit cc chng trnh con to thi gian tr.
2.2 Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho led
7 thanh.
Lp trnh iu khin c led 7 thanh hin th theo yu cu .
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
2.3. S nguyn l
nguyn
mch
0999999
hin
th
trn
LED
7thanh.
M t module:
Bc 3:Chng trnh:
#include <REGX52.H>
///////////////
long k;
int sl,chon=0,gi=0,p=0;
int a=0,b=0,c=0,d=0,e=0,f=0,a1,b1,c1,d1,e1,f1;
unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
////////////////
void delay(int time)
{ int i;
for(i=0;i<time;i++)
{};
}
///////////////////////////////
void hienthi(unsigned int k)
{
a=k/100000; a1=k%100000;
//chuc nghin
//don vi
d = c1/100; d1 = c1%100;
e = d1/10; f = d1%10;
for(sl=0;sl<10;sl++)
{
//////////////////////////////
P0=display[b]; //display chuc nghin
P1_1=0;delay(50);P1_1=1;
////////////////////////
P0=display[c]; //display nghin
P1_2=0;delay(50);P1_2=1;
/////////////////////
P0=display[d];//display tram
P1_3=0;delay(50); P1_3=1;
//////////////////////////////
P0=display[e]; //display chuc
P1_4=0;delay(50);P1_4=1;
////////////////////////////////////
P0=display[f]; //display don vi
P1_5=0;delay(50);P1_5=1;
}
}
void main(void)
{
k=0;
while (1)
{
k=k+1;hienthi(k);
} }
Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo kit
thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Cho 6 led 7 thanh hin th s
o Led 1m n 9 thi tr v 0 led 2 m ln 1,tip tc tng t cho cc led tip
theo. Khi 6 led hin th 999999 th reset v 0.
2.6. Lu :
-Khi thc hin lp mch cn ch cc kt ni Jumper chnh xc vi Port
-Tnh cc m hin th cc ch s cho ng
-Port P0 lun dng in tr bang ko ln
3.3. S nguyn l
Hnh 1 S nguyn l ng h s
Nguyn l hot ng: Theo nh s nguyn l trn
- Ta dng Port P0 ca MCU lm port hin th gi tr ca led 7 thanh.
- Dng Port P1 lm cng qut cc led 7 thanh.
- Cc nt bm iu chnh c kt ni vi P3_0P3_2 ca Port P3 MCU.
- Mch dao ng ngoi dng thch anh tn s dao ng 12MHz ni vo chn 18 v 19 cua
89s52.
- Phm RESET ni vo chn reset (chn 9) ca 89s52.
C bn v led 7 thanh.
- Led 7 on bao gm 7 led n phn thnh 7 on v bn phi di cng ca thanh c
mt led th hin du chm.
M t module:
8 nt c lp.
Header 5x2(CN8).
M t module:
Tt c cc phm c t mc in p thp hoc cao bng cch la chn Jumper
J8 khi chng c nhn xung v tr khng cao khi chng c nh ra.
Module ny khng c kt ni n MCU , s dng module ny c th dng
cp 5x2 kt ni n cc port ca MCU.
Bc 3:Chng trnh
#include <REGX52.H>
/////
#define SW1 P2_0
#define SW2 P2_1
#define SW3 P2_2
///////////////
khai bao bien
int k,m;
int sl,chon=0,gi=0,p=0;
int a,b,c,d,e,f;
unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
////delay
void delay(int time)
{
int i;
for(i=0;i<time;i++) {};
}
TF1 =0;
TR1=1;
}
///////////////
chuong trinh chinh
void main(void)
{
khoitaongat();
k=0;
m=0;
while(1)
{
if(SW1==0)
{
do
{
delay(100);
if(SW1==1)
{
chon=chon +1;
}
}while(SW1==0);
}
if(chon==7)chon=0;
//////////////////////////////////////////
switch(chon)
{
case 0://chay binh thuong (khong cai dat)
{
if(k==60)
{
k=0; p=p+1;
}
if(p==60)
{
p=0;gi=gi+1;
}hienthi(k,p,gi);
break;
}
///////////////////////////////////
case 1:
//cai dat don vi cua giay
{
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{
k=k+1;
if(k==10)k=0;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{ delay(100);
if(SW3==1)
{
k=k-1;
if(k<0)k=0;
}
} while(SW3==0);
}hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 2: //cai dat chuc cua giay
{
////////////////////////
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{
k=k+10;
if(k>60)k=k%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{
if(k>10)
{
k=k-10;
}
else
if(k==10)k=k%10;
}
} while(SW3==0);
}hienthi(k,p,gi);
break;
}
///////////////////////////////////////////////////////////////////////
case 3: //cai dat don vi cua phut
{
////////////////////////
if(SW2==0)
//tang
{
do
{
delay(100);
if(SW2==1)
{
p=p+1;
if(p==10)p=0;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{ p=p-1;
if(p<0)p=0;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 4: //cai dat chuc cua phut
{
////////////////////////
if(SW2==0)
//tang
{
do
{
delay(100);
if(SW2==1)
{ p=p+10;
if(p>=60)p=p%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{
if(p>10){ p=p-10;
}
else if(p==10)p=p%10;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
///////////////////////////////////////////////////////////////////////
case 5:
//cai dat don vi cua gio
{
////////////////////////
if(SW2==0)
{
do
{
//tang
delay(100);
if(SW2==1){
gi=gi+1;
if(gi==24)gi=0;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{gi=gi-1;
if(gi<0)gi=0;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 6: //cai dat chuc cua gio
{
////////////////////////
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{gi=gi+10;
if(gi>24)gi=gi%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{do
{delay(100);
if(SW3==1)
{
if(gi>10){gi=gi-10;}
else if(gi==10)gi=gi%10;
}
} while(SW3==0);
}hienthi(k,p,gi);break;
}
}
}
}
Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh
vo kit thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Cho 6 led 7 thanh hin th s
o Led 7thanh 1 m n 9 th quay v 0 m li ,cn led 7 thanh th 2 lc tng
ln 1 (khi hai led ny hin th s 59 th sau quay v 0 m li ,led 7 th 3 tng
ln 1).
o Tng t nh vy vi led 7 th 3 v 4
o Hai con led 5 v 6 khi chng hin th s 24 th tt c cc led 7 tr v 0 m li.
o Cc phm bm th c chc nng nh trnh by trn: c ngha l phi vo c
ch chnh led tng ln hoc gim xung .
3.6. Lu :
-
4.2 Yu cu:
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho
Led 7 on v chun xung o tn s.
Lp trnh hin th c tn s trn Led 7 on.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
4.3 S nguyn l :
}
////////khoi tao ngat
void khoitaongat (void)
{
EA =0; //cam ngat toan cuc
TMOD = 0x10; //Timer 1 che do1 , 16 bit
TH0 = 0xfc; //nap gia tri 252 vao TH0
TL0 = 0x66; //gia tri khoi tao 102 vao TL0
ET1 = 1; //cho phep ngat timer 0
IT0 = 1; //1 ngat theo suon xuong
//tram nghin
a1=k%100000;
b=a1/10000;
//chuc nghin
b1=a1%10000;
c=b1/1000;
// nghin
c1=b1%1000;
d=c1/100;
//tram
d1=c1%100;
e =d1/10; //chuc
f=d1%10;
//don vi
for(sl=0;sl<10;sl++)
{
P0=display[a]; //display tram nghin
P1_0=0;
delay(50);
P1_0=1;
//////////////////////////////////////////////
P0=display[b]; //display chuc nghin
P1_1=0;
delay(50);
P1_1=1;
//////////////////////////////////////////////
P0=display[c]; //display nghin
P1_2=0;
delay(50);
P1_2=1;
//////////////////////////
P0=display[d];//display tram
P1_3=0;
delay(50);
P1_3=1;
/////////////////////////////
P0=display[e]; //display chuc
P1_4=0;
delay(50);
P1_4=1;
///////////////
P0=display[f]; //display don vi
P1_5=0;
delay(50);
P1_5=1;
}
}
////////////// ngat timer 0
void timer1_1ms(void) interrupt 3
{
TR1 =0; //dung chay timer 1
//0xffff-1000 =0xfc66
dem=dem+1;
if(thu==1)
{
w=0; dem=0; thu=0;
}
TH1 = 0xfc;
TL1 = 0x66;
TR1 = 1; //cho chay timer 1
}
//////////////////////////
void main(void)
{
khoitaongat();
while(1)
{
hienthi(w) ;
}
}
////////////ngat ngoai 0
void count0(void) interrupt 0
{
if(dem<1020)//neu thoi gian dem van nho hon 1 giay
{
w=w+1;
}
else
if(dem==1021) //neu bien dem lon hon 1 giay
{
w=w;
}
}
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh giao tip vi cc thit b ngoi vi (nh l my tnh) thng qua giao thc truyn
thng ni tip.
Giao tip cc d liu t cc thit b ngoi vi.
5.2 Yu cu:
5.3 s nguyn l:
/********************************************************
Send string functions
/********************************************************/
void send_str(unsigned char str[])
{
unsigned char i = 0;
while (str[i] != '\0')
{
SBUF = str[i++];
while (!TI)
;
//Wait for data transfer is completed
TI = 0; //Clear interrupt flag
}
}
/*********************************************************
Main function
*********************************************************/
void main(void)
{
unsigned char buff;
P0 = 0xff;
P2 = 0xff;
SCON = 0x50; //Set serial port mode 1, the receive enable
PCON = 0x00; //Baud rate is doubled
TMOD = 0x20; //Timer 1 in 8-bit auto-reload mode, used as a baud
EA = 1;
TL1 = 0xfd;
TH1 = 0xfd; //Baud 9600
TR1 = 1;
delayms(100);
send_str(str1); //Send string str1
delayms(1000);
send_str(str2); //Send string str2
delayms(1000);
txdata('O');
txdata('K');
txdata('\n'); //Line
delayms(1000);
while (1)
{
buff = rxdata(); //Receive data
txdata(buff); //Send data
}
}
/*********************************************************/
Bc 5: Bin dch chng trnh v chy trn kit . Truyn thng thit b ngoi vi
y l my tnh.
Bi 6 - LED MA TRN
6.1 :Mc ch:
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh cc cch qut cc hng hay ct v a ra d liu hin th cc k t m mnh
mong mun trn led ma trn.
To ra cc hiu ng m ta mong mun nh: dch phi , dch tri, nhy ,
6.2 : Yu cu:
u ni cc chn mt cch r rng (khng chng ln nhau) ni chn sao cho d cho
ngi lp trnh nht.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
6.3 S nguyn l:
// Dau trang
case 6: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
}
}
///////////////ham hien thi
void hienthi(void)
{
unsigned char n,m,lap;
unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; // Cac
for(m=0; m<8 ; m++)// Dich hien thi
{
for(lap=0; lap<10; lap ++) // Lap hien thi
{
for(n=0; n<8 ; n++)// Quet cot
{
if((n+m)<9 )// Neu n+m < 9 hien thi ky tu 1
{
mahoa(k); // Nap cac gia tri ma hoa ky tu dua ra cac hang (Cong 2)
P2=cot[n]; // Day gia tri 0V ra cong 0 (cac cot)
P1=kytu1[n+m];// Day cac gia tri cac hang (ma hoa ky tu) ra cong 2(cac
hang)
delay(45);// Tre du de led sang
}
if((n+m) > 7)// Neu n+m >7 hien thi ky tu 2
{
mahoa(k+1);// Nap gia tri ma hoa ky tu tiep de dua ra cac hang(Cong 2)
P2=cot[n];// Day gia tri logic 0V ra cong 0(cac cot)
P1=kytu1[n+m-8];// Day cac gia tri cac hang (ma hoa ky tu) ra cong 2(cac
hang)
delay(45);// Tre du de led sang
}
P2=0xFF;// Day cac cot len cao
P1=0x00;// Dua cac hang xuong thap de tat toan bo cac led.
}
}
}
}
void main(void)
{
while(1)// Vong lap vo han.
{
hienthi(); // Hien thi 2 ky tu dau tien dau trang va chu M
k=k+1; // Tang k de hien thi chu M va chu T lan tiep
if(k==7) k=0;// Quay vong hien thi
}
}
7.3. S nguyn l
p n chn ny LCD cht d liu trn cc chn d liu.Xung ny phi rng ti thiu
450ns.
Chn D0-D7 :y l 8 chn d liu 8 bit ,c dng gi thong tin ln LCD hoc c
ni dung ca cc thanh ghi trong LCD. hin th cc ch ci v cc con s ,chng ta
gi m ASCII ca cc ch ci t AZ v 09 n cc chn ny khi bt RS=1.
M t Module :
LCD1602 ang s dng Port2 l bit iu khin v d liu bit.
Tt c cc chn ca Module c kt ni trc tip vi MCU.
Khi mn hnh LCD l khng s dng ,n c cho rng mn hnh LCD c ly ra
khi socket. Trong khi nu n c s dng ,chng ta nn tt tt c cc Module khc,
hoc ngc li mn hnh LCD s khng hin th.
Board pht trin c th chnh sng Becklight ca mn hnh LCD bng bin tr LCD
ADJ.
V d chng trnh hin th chui d liu trn LCD 1602 4Bit c tham kho ti
: www.tme.com.vn
Thut ton:
Module ny ch yu cho thy cch giao tip cm bin nhit DS18B20 vi MCU.
M t Module :
Ng ra ca DS18B20 i vo jumper JP8 kt ni ti chn P3_3 hoc P1_2ca MCU.
Khi module ny c s dng ,chng ta phi m bo jumper JP8 l trong trng thi kt
ni , khi khng s dng ,chng ta phi m bo rng JP8 l trong trng thi kt ni.
Chng trnh c trong CD-Rom.
7.5. Trnh t thc hin
Bc 3: M chng trnh mu
Chng trnh chnh:
#include <at89X52.h>
#include <string.h>
#include <lcd.h>
#include <adc.h>
unsigned char so[]= {'0','1','2','3','4','5','6','7','8','9'};
int dem=0,nhietdo,chuc,dvi;
////////////////
void hienthi( int nhietdo)
{
if(nhietdo<10)
{
LCD_print("Nhiet do:");
LCD_Wr(so[nhietdo]); // Write to LCD
LCD_print(" Do C");
LCD_Cmd(0x02);
}else
if(nhietdo>=10)
{
chuc=nhietdo/10;
dvi = nhietdo%10;
LCD_print("Nhiet do:");
LCD_Wr(so[chuc]);
LCD_Wr(so[dvi]);
LCD_print(" Do C");
LCD_Cmd(0x02);
}
}
////////////////////////
void main()
{
LCD_Init();
InitSerial();
while(1)
{
// Initialize LCD
// Initialize serial port //khoi tao port noi tiep
P0 = ReadADC(0);
dem =P0;
nhietdo=dem/2;
hienthi(nhietdo);
DelayMs(100);
}
// Stay here
}
-
LCD_clk();
P2=0;
//
//xoa P2
temp=Cmd;
temp=temp<<4;
temp=temp & 0xF0;
P2=temp;
//
LCD_clk();
P2=0;
}
//////ham khoi tao LCD
void LCD_Init(void)
{
P2=0x00;
delay(2000);
P2=LCDEM8;
LCD_clk();
P2 = 0;
delay(2000);
P2=LCDDZ;
LCD_clk();
P2=0;
P2=LCDEM4;
LCD_clk();
P2=0;
LCD_Cmd(LCD2L);
LCD_Cmd(LCDCONT);
LCD_Cmd(LCDSH);
LCD_Cmd(LCDCLR);
}
///////////ham ghi hien thi 1 ky tu
void LCD_Wr(char dataw)
{
unsigned char temp;
temp=dataw & 0xF0;//temp = dataw v voi 4 bit cao (lay 4 bit cao cua ky tu muon hien thi)
temp=dataw | 0x04; //P2.2 =1 cho phep ghi du lieu
P2=temp;
//
gui 4 bit cao cua ky tu
LCD_clk();
P2=0;
temp=dataw; //temp = du lieu ky tu hien thi
temp=temp<<4; //dich trai 4 bit
temp=temp & 0xF0; //va voi 4 bit cao
temp=temp | 0x04; //P2.2 =1 cho phep ghi du lieu . neu P2.2 =0 ghi lenh
P2=temp; //gui 4 bit thap cua ky tu
LCD_clk();
P2=0;
}
//////////ham hien thi chuoi ky tu
void LCD_print(char *string)
{
size_t length;
size_t temp;
length=strlen(string);
for (temp=0;temp<length;temp++){
LCD_Wr(string[temp]);
};
}
- Chng trnh adc.h
#include<stdio.h>
sbit ADC_CS
sbit ADC_CLK
sbit ADC_DO
sbit ADC_DI
=
=
=
=
P3^5; //
P1^7; //
P1^6; //dua du lieu vao
P1^5;
//dua du lieu ra
void InitSerial(void);
void write_adc_byte(char data_byte);
unsigned int ReadADC(unsigned char channel);
void DelayMs(unsigned int count);
// Initialize serial port
//--------------------------------------void InitSerial(void)
{
SCON = 0x52; // setup serial port control '0101 0010'
TMOD = 0x20; // hardware (9600 BAUD @11.05592MHZ)
TH1 = 0xFD; // TH1
TR1
= 1;
// Timer 1 on
}
// delay about 2 uS
// delay about 2 uS
// delay about 2 uS
}
ADC_CS=1;
return(AdcResult);
}
//--------------------------------------// Delay mS function
//--------------------------------------void DelayMs(unsigned int count) { // mSec Delay 11.0592 Mhz
unsigned int i;
// Keil v7.5a
while(count) {
i = 115;
while(i>0) i--;
count--;
}
}
Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo kit
thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Hin th c nhit c trn LCD
o Thay i tang ,gim thong s bng phm bm
Bc 6 : lu :
- Chng ta cng s dng RS =0 kim tra bit c bn xem LCD c sn sang nhn
thong tin .C bn l bit D7 v c th c c khi RW=1 v RS=0 nh sau :
Nu nh RW=1,RS=0 khi D7 =1 th LCD bn bi cc cng vic bn trong v s khng
nhn bt k thng tin no .Khi D7 =0 th LCD sn sang nhn thong tin mi.Lu chng
ta nn kim tra c bn trc khi ghi bt k d liu no ln LCD.
- Bng m lnh ca LCD :
Bi 8 - IU KHIN TC NG C MT CHIU
8.1 Mc ch:
-
8.2 Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho cc
chn iu khin.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
8.3 S nguyn l :
Nguyn l hot ng :
- Vi iu khin s s dng cc ngt v giao tip vi phm bm iu khin ng c. Ty
vo mc ch iu khin m ta c th nhn nt ty . Dng thay i rng xung ,
a vo ng c mt chiu thay i tc quay ca ng c mt chiu.
- C th : xung PWM : a ra m transistor, xung vi rng ln hn transistor s m
lu hn ng c quay nhanh hn , v khng tuyn tnh. Khng c xung ng c s
khng quay , c xung 100% ng c s quay max. Tuy nhin xung phi ln hn 1 mc
no mi khi ng cho ng c. thay i 10 cp tc vi chu k 1000us , ta
khi to ngt timer :100us ngt 1 ln . Trong hm ngt kim tra xem ta cn cp xung bao
nhiu % th ta s gn gi tr cho n. C th nh sau:
Hm khi to ngt : dng timer 0 , 100us ngt 1 ln , dng ch 2, 8 bit t ng np li
ca timer (v ch cn m n 100). TL0 np bng 156 . i vi ch 2 khi trn b m
TL0 s quay vng gi tr bng 0 , nhng sau n c np gi tr lu trong TH0 (gi tr
np li) , do ta ch cn gn gi tr cho TL0 v TH0 trong hm khi to, cn cc ch
khc 16 bit , 2 timer counter 8 bit , khi trn b m TL0 khng c np li m ta
phi t gn li gi tr cho n trong hm ngt.
8.4 Thc hin chng trnh :
Bc 2 : Mch m phng:
Bc 3 : Chng trnh
#include <REGX52.H>
///////////ham delay
void delaylong(long n)
{
long i;
for(i=0;i<n;i++)
{;}
}
void khoitaongat(void)
{
EA = 0; //cam ngat toan cuc
TMOD = 0X02;
TH0 = 0X9B;
TL0 = 0X9B;
ET0 = 1; //cho phep ngat timer 0
EA = 1;//cho phep ngat toan cuc
TR0 = 1; //chay timer 0
}
//////////////
unsigned char dem =0; //khai bao bien dem tu 1->10
unsigned char phantramxung; //bien dem chua phan tram xung (0 ... 10)
////////////ham ngat
void timer0(void) interrupt 1 //ngat timer 0
{
TR0 =0; //dung chay timer 0
TF0 =0;//xoa co tran
dem++;
if(dem<phantramxung)P2_0=1; //neu bien dem < phan tram xung thi dua gia tri 1 ra cha
xung 5v
else P2_0=0; //neu dem=phantramxung
if(dem==10)dem=0;
TR0 =1;//cho chay timer 0
}
/////////////ham chinh
void main(void)
{
khoitaongat();
while(1)
{
phantramxung =9;
delaylong(20000);
phantramxung = 4;
delaylong(20000);
}
}