Professional Documents
Culture Documents
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);
}
}