Giáo trình môn Vi điều khiển

Mô tả chân

- Cổng P0: Bình thường đây là cổng ra. Để có thể vừa làm đầu ra, vừa làm

đầu vào thì mỗi chân của P0 phải được nối tới một điện trở treo 10 kΩ bên

ngoài. Sở dĩ như vậy là vì cổng P0 có dạng cực máng hở, đây là điểm khác với

các cổng P1, P2 và P3. Khi nối 8051 tới bộ nhớ ngoài, P0 trở thành bus địa chỉ

và bus dữ liệu dồn kênh để tiết kiệm số chân [byte thấp của bus địa chỉ nếu là

địa chỉ].- 5 -

- Cổng P1: P1 chỉ có một công dụng là vào/ra.

- Cổng P2: P2 có 2 công dụng, hoặc làm nhiệm vụ vào/ra hoặc là byte địa

chỉ cao của bus địa chỉ 16-bit cho các thiết kế có bộ nhớ chương trình ngoài

hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài.

- Cổng P3: P3 có 2 công dụng. Khi không hoạt động vào/ra, các chân của

P3 có nhiều chức năng riêng (mỗi chân có chức năng riêng liên quan đến các đặc

trưng cụ thể của 8051).

điều khiển bus. Tín hiệu cho phép bộ nhớ chương trình PSEN (Program

Store Enable) là tín hiệu xuất. Đây là tín hiệu cho phép ta truy xuất bộ nhớ

chương trình ngoài. Chân này thường nối với chân cho phép xuất OE (Output

Enable) của EPROM (hoặc ROM) để cho phép đọc các byte lệnh.

- Chân cho phép chốt địa chỉ ALE: Chân xuất tín hiệu cho phép chốt địa

chỉ ALE (Address Latch Enable) để phân kênh (demultiplexing) bus dữ liệu và

bus địa chỉ.

- Chân truy xuất ngoài EA (External Access): Chân vào này có thể được

nối với 5V (logic 1) hoặc với GND (logic 0).

+ Nếu chân này nối lên 5V, 8051 thực thi chương trình trong ROM

nội (chương trình nhỏ hơn 4K/8K).

+ Nếu chân này nối với GND (và chân PSEN cũng ở logic 0),

chương trình cần thực thi chứa ở bộ nhớ ngoài.

- Chân RESET (RST): Khởi động lại. Đây là chân vào, mức tích cực cao,

bình thường ở mức thấp. Khi có xung cao đặt tới chân này thì bộ vi điều khiển

sẽ kết thúc mọi hoạt động hiện tại và tiến hành khởi động lại. Khi reset, mọi giá

trị trên các thanh ghi sẽ bị xoá. Lưu ý, để reset có hiệu quả, chân RST cần duy

trì trạng thái tích cực mức cao tối thiểu 2 chu kỳ máy.

- Các chân XTAL1 và XTAL2: Mạch dao động bên trong chip 8051 được

ghép nối với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2.

Giáo trình môn Vi điều khiển trang 1

Trang 1

Giáo trình môn Vi điều khiển trang 2

Trang 2

Giáo trình môn Vi điều khiển trang 3

Trang 3

Giáo trình môn Vi điều khiển trang 4

Trang 4

Giáo trình môn Vi điều khiển trang 5

Trang 5

Giáo trình môn Vi điều khiển trang 6

Trang 6

Giáo trình môn Vi điều khiển trang 7

Trang 7

Giáo trình môn Vi điều khiển trang 8

Trang 8

Giáo trình môn Vi điều khiển trang 9

Trang 9

Giáo trình môn Vi điều khiển trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 122 trang duykhanh 7460
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình môn Vi điều khiển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình môn Vi điều khiển

Giáo trình môn Vi điều khiển
ong bµi to¸n nµy cÇn ph¶i sö dông ph­¬ng ph¸p quÐt led 7 thanh.
Code for test 2:
..
// Chuong trinh lap trinh voi bo dem T1 cua vdk voi hien thi 7 thanh bo dem
0000-9999-0000
#include 
long code1, dem;
- 104 -
#define on 1 // muc logic 1 (+5v)
#define off 0 // muc logic 0 (0v)
// ----- khai bao cac bien cuc bo...
 long y1,y2,y3,y4,x,n;
long k1,k1_tg,k2,k3,k4,code_led1;
 int j=1,i=1;
 long n_tg1, n_tg2,bien=0;
/* --- dinh nghia cac bit dung------*/
 sbit led1 = P0^3;
 sbit led2 = P0^2;
 sbit led3 = P0^1;
 sbit led4 = P0^0;
//=------------Chuong trinh con chuyen so thap phan sang ma led 7 thanh-------//
void decode_led7seg1(unsigned char number1)
// chuyen sang ma led ko co dau cham dp.
{
 switch (number1)
 {
 case 0: {code1=0xc0;break;}
 case 1: {code1=0xf9;break;}
 case 2: {code1=0xa4;break;}
 case 3: {code1=0xb0;break;}
 case 4: {code1=0x99;break;}
 case 5: {code1=0x92;break;}
 case 6: {code1=0x82;break;}
 case 7: {code1=0xf8;break;}
 case 8: {code1=0x80;break;}
 case 9: {code1=0x90;break;}
 }
}
 //---------------Chuong trinh tao tre-------------------//
 void delay(long tg) // chuong trinh tre thoi gian.
 {
 long n1; // khai bao bien cuc bo.
 for (n1=0;n1<tg;n1++)// vong lap time lan.
 {
 ; // khong thuc hien gi ca !!!
 }
 }
 //---------------------//
 void nhap(void)
 {
 TH0=0xf0;
- 105 -
 TL0=0x20;
 }
//-----------Chuong trinh phuc vu ngat timer0-------------//
 void timer0(void) interrupt 1 //Ngat timer 0
 { //---------vong quet 1 cho led1.
 switch (j)
{
 case 1:
 {
 j++;
 P1=y1; // dua du lieu ra led1
led1=on;
 led2=off;
 led3=off;
 led4=off;
 nhap();
 break;
 }
//---------Vong quet 2 cho led2.-------//
case 2:
 {
 j++;
 P1=y2; // dua du lieu ra led2
led2=on;
 led1=off;
 led3=off;
 led4=off;
 nhap();
 break;
 }
//--------Vong quet 3 cho led3--------//
case 3:
 {
 j++;
 P1=y3; // dua du lieu ra led3
led3=on;
 led2=off;
 led1=off;
 led4=off;
 nhap();
 break;
 }
//--------Vong quet 4 cho led4---------//
- 106 -
case 4:
 {
 P1=y4; // dua du lieu ra led4
led4=on;
 led2=off;
 led3=off;
 led1=off;
 nhap();
 j=1;
 break;
 }
 } // end of switch
 }
/*
--- Voi kit thi ma led la: tuong ung voi cac so tu 0-->9
 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h
*/
//---------------------------------------------------------------------------//
void main ( void) // chuong trinh chinh
 { // begin of main
 EA= 1; // cho phep ngat toan cuc.
 TMOD=0x51; // Timer 0 che do 16 bit not auto reload
ET0=1; // Cho phep ngat timer 0
TH0=0;
 TL0=0;
 nhap();
 TR0=1;
 // ------
 TL1=0;
 TH1=0;
 TR1=1; // start counter
 for(;;)
 {
 if ( TF1==0)
 {
 n=TH1*255+TL1;
 //-------phan tach n ra thanh k1,k2,k3,k4.
 k1=n/1000;
 decode_led7seg1(k1);
 y1=code1;
 k2=(n-k1*1000)/100;
 decode_led7seg1(k2);
 y2=code1;
 k3=(n-k1*1000-k2*100)/10;
- 107 -
 decode_led7seg1(k3);
y3=code1;
 k4=(n-k1*1000-k2*100-k3*10);
decode_led7seg1(k4);
 y4=code1;
}
else {TF1=0;TH1=0;TL1=0;}
 } // end of while
 } // end of main
==> Ta xÐt bµi to¸n 3: thiÕt lËp bé ®Õm sö dông T0, hiÓn thÞ 7 thanh sử dụng
ngắt timer1 và hiển thị đồng thời trên LCD bé ®Õm sản phẩm trên băng tải tõ
0000 - 9999 - 0000 :
Bài toán này ta xây dựng kế thừa của bài toán 2 ở trên. Các bạn phân tích bài
toán đặt ra cần phải hiển thị cả sản phẩm đếm được từ bộ counter0 trên LCD,
thông qua đây các bạn luyện được nhiều kĩ năng, đặc biệt là phối hợp các công
cụ đã được học từ các bài trên trong một ví dụ nhỏ nhưng tổng hợp.
Các bạn tự xây dựng software. Dưới đây là ví dụ về software cho bài toán.
Cũng như trong tinh thần của giáo trình là các bạn hãy tự xây dựng
cách giải quyết bài toán sau sử dụng các công cụ mô phỏng KIT để kiểm tra
kết quả. Không nên sử dụng ngay code minh hoạ của giáo trình !!!
Code for test 3:
#include 
#include 
#define on 1 // muc logic 1 (+5v)
#define off 0 // muc logic 0 (0v)
// ----- khai bao cac bien cuc bo...
 long code1,code2, dem;
 long y1,y2,y3,y4,x,n;
long k1,k1_tg,k2,k3,k4,code_led1;
 long lc1,lc2,lc3,lc4;
 int j=1;
/* --- dinh nghia cac bit dung------*/
 sbit led1 = P0^3;
 sbit led2 = P0^2;
 sbit led3 = P0^1;
 sbit led4 = P0^0;
sfr LCDdata = 0xA0;// Cong 2 , 8 bit du lieu P0 co dia chi 0x80, P1 0x90 , P2
0xA0
sbit BF = 0xA7; // Co ban bit 7 cua p2
 sbit RS = P3^7;
 sbit RW = P3^6;
- 108 -
 sbit EN = P3^5;
//=------------Chuong trinh con chuyen so thap phan sang ma led 7 thanh-------//
void decode_led7seg1(unsigned char number1)
// chuyen sang ma led ko co dau cham dp.
{
 switch (number1)
 {
 case 0: {code1=0xc0;break;}
 case 1: {code1=0xf9;break;}
 case 2: {code1=0xa4;break;}
 case 3: {code1=0xb0;break;}
 case 4: {code1=0x99;break;}
 case 5: {code1=0x92;break;}
 case 6: {code1=0x82;break;}
 case 7: {code1=0xf8;break;}
 case 8: {code1=0x80;break;}
 case 9: {code1=0x90;break;}
 }
}
/*------chuyen sang ma ASCII cho LCD--------*/
void decode_LCD(unsigned char number2)
{
 switch (number2)
 {
 case 0: {code2='0';break;}
 case 1: {code2='1';break;}
 case 2: {code2='2';break;}
 case 3: {code2='3';break;}
 case 4: {code2='4';break;}
 case 5: {code2='5';break;}
 case 6: {code2='6';break;}
 case 7: {code2='7';break;}
 case 8: {code2='8';break;}
 case 9: {code2='9';break;}
 }
}
/*---------Cac chuong trinh con cua lcd ------*/
//---------------Chuong trinh con kiem tra su san sang cua lcd----------------;
void wait(void)
{
long n = 0;
EN=1;// Dua chan cho fep len cao
RS=0;// Chon thanh ghi lenh
- 109 -
RW=1;// Doc tu LCD
LCDdata=0xff;// Gia tri 0xFF
while(BF){n++; if(n>110) break;}// Kiem tra co ban
// Neu ban dem n den 100 roi thoat khoi while
EN=0;// Dua xung cao xuong thap de chot
RW=0;// Doc tu LCD
}
//------------------Chuong trinh con thiet lap lenh cho LCD----------------------;
void LCDcontrol(unsigned char x)
{
EN=1;// Dua chan cho fep len cao
RS=0;// Chon thanh ghi lenh
RW=0;// Ghi len LCD
LCDdata=x;// Gia tri x
EN=0;// Xung cao xuong thap
wait();// Doi LCD san sang
}
//---------------chuong trinh con thiet lap mot so thong so cua lcd---------------;
void LCDinit(void)
{
LCDcontrol(0x38);// 2 dong va ma tran 5x7
LCDcontrol(0xc0);
LCDcontrol(0x0e);// Bat con tro
LCDcontrol(0x01);// Xoa man hinh
}
//------------------Chuong trinh con thiet lap dulieu cho LCD----------------------;
void LCDwrite(unsigned char c)
{
EN=1;// Cho fep muc cao
RS=1;// Ghi du lieu
RW=0;// Ghi len LCD
LCDdata=c;// Gia tri C
EN=0;// Xung cao xuong thap
wait();// Cho
}
/*--------------------------------------------*/
 void nhap(void)
 {
 TH1=0xf0;
 TL1=0x20;
 }
//-----------Chuong trinh phuc vu ngat timer0-------------//
 void timer1(void) interrupt 3 //Ngat timer 0
 { //---------vong quet 1 cho led1.
- 110 -
 switch (j)
{
 case 1:
 {
 j++;
 P1=y1; // dua du lieu ra led1
led1=on;
 led2=off;
 led3=off;
 led4=off;
 nhap();
 break;
 }
//---------Vong quet 2 cho led2.-------//
case 2:
 {
 j++;
 P1=y2; // dua du lieu ra led2
led2=on;
 led1=off;
 led3=off;
 led4=off;
 nhap();
 break;
 }
//--------Vong quet 3 cho led3--------//
case 3:
 {
 j++;
 P1=y3; // dua du lieu ra led3
led3=on;
 led2=off;
 led1=off;
 led4=off;
 nhap();
 break;
 }
//--------Vong quet 4 cho led4---------//
case 4:
 {
 P1=y4; // dua du lieu ra led4
led4=on;
 led2=off;
 led3=off;
- 111 -
 led1=off;
 nhap();
 j=1;
 break;
 }
 } // end of switch
 }
/*
--- Voi kit thi ma led la: tuong ung voi cac so tu 0-->9
 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h
*/
//---------------------------------------------------------------------------//
void main ( void) // chuong trinh chinh
 { // begin of main
 EA= 1; // cho phep ngat toan cuc.
 TMOD=0x15; // Timer 1 che do 16 bit, t0 counter 16 bit
ET1=1; // Cho phep ngat timer 0
nhap();
 TR1=1;
 // ------
 TL0=0;
 TH0=0;
 TR0=1; // start counter
 /*---------------Doan chuong trinh cho LCD----*/
LCDinit();
LCDwrite('S');
LCDwrite('o');
LCDwrite(' ');
LCDwrite('s');
LCDwrite('a');
LCDwrite('n');
LCDwrite(' ');
LCDwrite('p');
LCDwrite('h');
LCDwrite('a');
LCDwrite('m');
LCDwrite(':');
/*--------------------------------------------*/
 while(1)
 {
if ( TF0==0)
 {
- 112 -
 n=TH0*256+TL0;
 //-------phan tach n ra thanh k1,k2,k3,k4.
 k1=n/1000;
 decode_led7seg1(k1);
y1=code1;
 decode_LCD(k1);
lc1=code2;
 k2=(n-k1*1000)/100;
 decode_led7seg1(k2);
y2=code1;
 decode_LCD(k2);
 lc2=code2;
 k3=(n-k1*1000-k2*100)/10;
 decode_led7seg1(k3);
 y3=code1;
 decode_LCD(k3);
 lc3=code2;
k4=(n-k1*1000-k2*100-k3*10);
 decode_led7seg1(k4);
y4=code1;
 decode_LCD(k4);
lc4=code2;
 LCDcontrol(0x8c);
 LCDwrite(lc1); // hien thi len LCD so hang nghin.
 LCDwrite(lc2); // hien thi len LCD so hang tram.
 LCDwrite(lc3); // hien thi len LCD so hang chuc.
 LCDwrite(lc4); // hien thi len LCD so hang dvi.
}
else {TF0=0;TH0=0;TL0=0;}
 } // end of while
 } // end of main
- 113 -
Bài 8: Điều khiển tốc độ động cơ, điều khiển quá trình với băng tải.
8.1.Điều khiển tốc độ động cơ một chiều
Sö dông bé ®Þnh thêi cïng ng¾t cña nã linh ho¹t c¸c b¹n sÏ cã rÊt nhiÒu
øng dông thùc tÕ cã ý nghÜa nh­ viÖc lËp tr×nh cho hÖ thèng m¹ch cña m¹ch ch÷
ch¹y qu¶ng c¸o sö dông led ma trËn. Hay ®iÒu khiÓn tèc ®é cña ®éng c¬ mét
chiÒu.
Vµ ®©y chÝnh lµ ph­¬ng ph¸p x©y dùng viÖc ®iÒu chÕ ®é réng xung
(PWM) b»ng phÇn mÒm.
Ta cã s¬ ®å m¹ch ®iÒu khiÓn ®éng c¬ nh­ sau:
Trong s¬ ®å trªn xung vu«ng do vi ®iÒu khiÓn t¹o ra sÏ ®i ®iÒu khiÓn ®Ó
më van ( tran) vµ viÖc ®ãng më tran ( b¨m xung) sÏ t¹o ra mét ®iÖn ¸p Utb ®Æt
lªn ®éng c¬. Gi¸ trÞ ®iÖn ¸p nµy sÏ ¶nh h­ëng tíi tèc ®é quay.
Ta cã c«ng thøc gÇn ®óng nh­ sau:
 Utb = Umax( T1/T)
Trong c«ng thøc nµy Umax lµ gi¸ trÞ ®iÖn ¸p ®Æt trªn van, cßn T1 lµ thêi
gian tån t¹i møc 1 cña xung, T lµ chu kú cña xung víi hÇu hÕt c¸c van lµ 1000us
( f=1khz ).
T vµ Umax lµ cè ®Þnh do ®ã khi thay ®æi T1 trong kho¶ng tõ 0 T th× sÏ
lµm cho Utb thay ®æi gi¸ trÞ tõ 0 – Umax vµ Utb cµng lín ®éng c¬ quay cµng
nhanh, ®éng c¬ quay lín nhÊt khi T1 = T vµ khi ®ã Utb = Umax.
chÝnh viÖc thay ®æi T1 sÏ lµm thay ®æi tèc ®é ®éng c¬, vµ ta thay ®æi T1 vµ t¹o ra
xung th«ng qua viÖc sö dông bé ®Þnh thêi vµ ng¾t cña nã.
 §©y lµ ph­¬ng ph¸p ®iÒu chÕ ®é réng xung (PWM)
- 114 -
Tạo xung tần số 1Khz Chu kì = 1/103 = 0,001 giây= 1 mili giây=1000
uS= 1000 chu kì máy. Với 10 cấp tốc độ, tức là bạn phải tạo ra được xung 10%,
20%, 30%, 40%, , 90%, 100%. 1 xung như sau:
5V
0V
T : Chu kì
 1000 miro giây.
Khoảng thời gian xung kéo dài 5V là T1. Xung 10% tức là T1/ T= 10%=1/10.
Xung 20% T2/T=2/10PWM(Thay đổi độ rộng xung)
8.2. Điều khiển tốc độ động cơ theo quá trình.
// Bai toan 2------------------------------------
// bai toan dieu khien dong co theo qua trinh dinh truoc.
S¬ ®å m¹ch ®iÒu khiÓn tèc ®é ®éng c¬ mét chiÒu cã ®¶o chiÒu:
Ta cã b¶ng ch©n lý cña m¹ch ®iÒu khiÓn ®éng c¬
Bit1(Fet) Bit2(r¬le) KÕt qu¶
0 0 Quay ng­îc
- 115 -
0 1 Quay thuËn
1 0 Dõng
1 1 Dõng
Trong bµi to¸n nµy ta xÐt tèc ®é V1= 50% Vmax ( tèc ®é cùc ®¹i ) cßn
V2= 70% Vmax.
XuÊt ph¸t tõ c«ng thøc gÇn ®óng : Utb= Umax(T1/T) Víi T= 1000us ( chän f =1
khz).
Dã ®ã víi V1 = 0.5Umax = Umax(T1_1/T) T1_1= T/2 = 500us.
Víi V2= 0.7Umax = Umax(T1_2/T) T1_2 = 0.7T = 700us.
Tõ ®©y ta sÏ sö dông timer 1 cho viÖc ®iÒu chÕ ®é réng xung.
Nªn ta cã 4 ch­¬ng tr×nh con nhËp gi¸ trÞ cho timer1 nh­ sau:
/*--------------------------------Nhap gia tri voi V1--------*/
void nhapV1-muc1 (void)
 {
 TH1 = 0xfe ;
 TL1 = 0x0c ;
 }
//-----------------------//
void nhapV1-muc0 (void)
 {
TH1 = 0xfe ;
 TL1 = 0x0c ;
 }
//-----------------------//
/*--------------------------------Nhap gia tri voi V2--------*/
void nhapV2_muc1(void)
 {
 TH1 = 0xfd ;
 TL1 = 0x44 ;
 }
//-----------------------//
void nhapV2_muc0(void)
 {
 TH1 = 0xfe ;
 TL1 = 0xd4 ;
 }
//-----------------------//
Code for ex2:
/*----------------
Bai toan dieu khien toc do dong co theo qua trinh
-----------------*/
#include 
#define on 1;
#define off 0;
- 116 -
sbit bit1 =P1^0;
sbit bit2 =P1^1;
sbit sensor1 = P3^0;
sbit sensor3 = P3^1;
sbit sensor_dem = P3^4;
sbit start = P3^5; // ctac start
int check1, y1=0,y2=0;
/*-------------cac chuong trinh tao toc do ----------*/
/*----------------------Nhap gia tri voi V1--------*/
void nhap11 (void) // tao muc logic 1 cho v1
 {
 TH1 = 0xfe ;
 TL1 = 0x0c ;
 }
//-----------------------//
void nhap10 (void) // tao muc logic 0 cho v1
 {
 TH1 = 0xfe ;
 TL1 = 0x0c ;
 }
//-----------------------//
/*----------------------Nhap gia tri voi V2--------*/
void nhap21(void) // tao muc logic 1 cho v2
 {
 TH1 = 0xfd ;
 TL1 = 0x44 ;
 }
//-----------------------//
void nhap20(void) // tao muc logic 0 cho v2
 {
 TH1 = 0xfe ;
 TL1 = 0xd4 ;
 }
void stop (void)
{
TR1=0; // cam t1
 ET1=0;
 bit1= 1 ;
bit2= 1 ;
 }
/*---------------Chuong trinh stop gap--------------------*/
void EX0_int (void) interrupt 0
{
 while (1)
- 117 -
 {
 stop();
 }
}
/*******------ chuong trinh pvu ngat T1-----******/
void timer1 (void) interrupt 3
{ TF1=0; // xoa co tran
 switch(check1)
 {
case 1: // quay thuan... trai -->phai
 {
 /*-----tao muc 1----*/
 if (y1==0)
 {
 y1++;
 bit1=0 ; // dk FET
 bit2=1 ; // dk Role
 nhap11(); // tao tre muc 1voi V1
 break;
 }
 /*-----tao muc 0----*/
 if (y1==1)
 {
 y1=0;
 bit1= 1 ;
 bit2= 1 ;
 nhap10(); // tao tre muc 0 voi V1
 break;
 }
 break;
 }
case 2: // quay nguoc... phai -->trai
 {
 /*-----tao muc 1----*/
 if (y2==0)
 {
 y2++;
 bit1= 0 ;
 bit2= 0 ;
 nhap21(); // tao tre muc 1 voi V2
 break;
 }
 /*-----tao muc 0----*/
 if (y2==1)
- 118 -
 {
 y2=0;
 bit1= 1 ;
 bit2= 0 ;
 nhap20(); // tao tre muc 0 voi V2
 break;
 }
 break;
 }
}// end of switch
} // end of main
/*------------Chuong trinh chinh --------------*/
void main(void)
{
EA=1;
 ET1=1;
 EX0=1 ; // cho phep ngat ngoai 0 dung lam Stop.
 TMOD =0x10; // timer 1 voi ngat 16 bit
 y1=y2=0; // khoi dong cac bien trang thai
// bat dau quay dong co
 if ( start==0)
 { // bat dau dong co quay thuan voi V1
 check1=1; // dong co quay thuan
 TR1= 1;
 while(1)
 {
 if(sensor3==0)
 {
 stop(); // dung dong co lai
 check1=2; // de dong co quay nguoc
 ET1=1;
TR1=1; // dong co bat dau quay nguoc
 }
 if(sensor1==0)
 {
 stop(); // dung dong co lai
 check1=1; // de dong co quay nguoc
 ET1=1;
 TR1=1; // dong co bat dau quay nguoc
 }
}
 }
}
- 119 -
S¬ ®å thuËt to¸n:
Trong bµi to¸n nµy ta sö dông hai sensor1(p3.0) vµ sensor3 (p3.1)
Mét c«ng t¾c start (P3.5) vµ c«ng t¾c stop víi ng¾t ngoµi 0.
Yªu cÇu cña bµi to¸n lµ ®k ®éng c¬ víi hai cÊp tèc ®é trªn theo qu¸ tr×nh trong
h×nh vÏ.
Sau ®©y lµ gi¶i thuËt cña bµi to¸n:
- 120 -
- 121 -
 Hoµn toµn c¸c b¹n cã thÓ ph¸t triÓn bµi to¸n nµy :
§ã lµ thªm c¶ phÇn ®Õm s¶n phÈm ch¹y trªn b¨ng t¶i vµ thÓ hiÖn kÕt qu¶ ®Õm
trªn led 7 thanh hay trªn LCD.

File đính kèm:

  • pdfgiao_trinh_mon_vi_dieu_khien.pdf