Tải bản đầy đủ (.pdf) (40 trang)

thưc hành vi điều khiển protues

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (269.87 KB, 40 trang )

MỤC LỤC

I

MỤC LỤC
MỤC LỤC ................................................................................................................... 1
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN .................................................................. 2
BÀI 2: TIMER VÀ NGẮT ............................................................................................. 35
BÀI 3: ADC VÀ PWM .................................................................................................. 40


2

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT
BỊ CƠ BẢN
Bài 1.3. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
void main (void)
{
While (1)
{
Output_c(0x0F);
Delay_ms(1000);
Output_c(0x00);
Delay_ms(1000);
}
}



Bài 1.4. Chương trình:
#include <16F877A.h>
#fuses hs
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

int s;
unsigned int8 a;
a=0x00;
{
while (true)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);
delay_ms(300);
}
delay_ms(300);
a=0x00;
output_c(a);
}
}

}

Bài 1.5. Chương trình:
#include <16F877A.h>
#fuses hs,,put,noprotect,nolvp,nowdt
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
int s,i;

3


4

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

unsigned int8 a;
a=0x00;
{
for (i=0;i<30;i++)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);
delay_ms(300);
}

a=0x00;
output_c(a);
}
}
}
Bài 1.6. Chương trình:
#include <16F877A.h>
#fuses hs,,put,noprotect,nolvp,nowdt
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
int s,i;
unsigned int8 a;


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

a=0x00;
{
for (i=0;i<1;i++)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);
delay_ms(300);
}
a=0x00;

output_c(a);
}
int s,i,n;
unsigned int8 a,y;
for (n=0;n<1;n++)
{
a=(a<<1)+0x01;
y=0xFF;
output_c(y);
delay_ms(300);
for(i=0;i<8;i++)
{
y= (y<<1);
output_c(y);
delay_ms(300);

5


6

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

}
{

a=0x00;

output_c(a);}
}

}
}
Bài 1.7. Chương trình:
#include <16F877A.h>
#fuses hs,,put,noprotect,nolvp,nowdt
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
int s,i,m;
unsigned int8 a;
a=0x00;
{
for( m=0;m<40;m++)
{
for (i=0;i<30;i++)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

delay_ms(300);
}
a=0x00;
output_c(a);

}
int s,i,n;
unsigned int8 a,y;
for (n=0;n<257;n++)
{
a=(a<<1)+0x01;
y=0xFF;
output_c(y);
delay_ms(300);
for(i=0;i<8;i++)
{
y= (y<<1);
output_c(y);
delay_ms(300);
}
{

a=0x00;

output_c(a);}
}
}
}
}
Bài 1.8. Sơ đồ mạch:

7


8


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

Chương trình:
#include <16F877A.h>
#fuses hs,,put,noprotect,nolvp,nowdt
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
int s,i,m;
unsigned int8 a;
a=0x00;


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

{
for( m=0;m<40;m++)
{
for (i=0;i<30;i++)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);
delay_ms(300);
}
a=0x00;

output_c(a);
}
int s,i,n;
unsigned int8 a,y;
for (n=0;n<257;n++)
{
a=(a<<1)+0x01;
y=0xFF;
output_c(y);
delay_ms(300);
for(i=0;i<8;i++)
{
y= (y<<1);
output_c(y);

9


10

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

delay_ms(300);
}
{

a=0x00;

output_c(a);}
}

}
}
}
Bài 1.9. Sơ đồ mạch:


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

Chương trình:
#include <16F877A.h>
#fuses hs,,put,noprotect,nolvp,nowdt
#use delay(clock=20m)
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
int s,i,m;
unsigned int8 a;
a=0x00;
{
for( m=0;m<40;m++)
{
for (i=0;i<30;i++)
{
for (s=0;s<8;s++)
{
a=(a<<1)+0x01;
output_c(a);
delay_ms(300);
}

a=0x00;
output_c(a);
}
int s,i,n;

11


12

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

unsigned int8 a,y;
for (n=0;n<257;n++)
{
a=(a<<1)+0x01;
y=0xFF;
output_c(y);
delay_ms(300);
for(i=0;i<8;i++)
{
y= (y<<1);
output_c(y);
delay_ms(300);
}
{

a=0x00;

output_c(a);}

}
}
}
}
Bài 1.11. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8M)
int chuc,donvi; //2 bien toan cuc
int dem;// dem:130


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

CONST

13

unsigned

char

led7s[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
CONSTunsigned

char

={0x01,0x03,0x07,0xf,0x1f,0x3f,0x7f,0xff,0x00};
void hienthi()

{
chuc=dem/10;
donvi=dem%10;
output_d(0xff);
output_b(led7s[chuc]);
output_d(0xf7);
delay_ms(4);
output_d(0xff);//tat
output_b(led7s[donvi]);
output_d(0xfb);
delay_ms(4);
}
void delay_400ms()
{ for(int k=0;k<9;k++)
{hienthi();
}
}
void sangdan()
{
Output_c(0x01);
Delay_400ms();

densangdan[9]


14

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

Output_c(0x03);

Delay_400ms();
Output_c(0x07);
Delay_400ms();
Output_c(0xF);
Delay_400ms();
Output_c(0x1F);
Delay_400ms();
Output_c(0x3F);
Delay_400ms();
Output_c(0x7F);
Delay_400ms();
Output_c(0xFF);
Delay_400ms();
Output_c(0x00);
Delay_400ms();
}
void main ()
{
dem=1;
for(int i =0;i<9;i++)
{
sangdan();
if(dem < 30)
{dem=dem+1;}
if(dem==31)


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

15


{dem=1;}
}
}
Bài 1.12. Chương trình:
#include <16f877A.h >
# FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT,
NOLVP
# use delay (clock=8M)
Unsigned char led7s [4] = {0x9F,0x24,0xD,0x99};
Unsigned char chandk [4] = {0xf7,0xfb,0xfd,0xfe};
Void main ()
{While (1)
{For (int8 i=0; i<4; i++) {output_d (0xff); output_b (led7s [i]); output_d
(chandk [i]); delay_ms(3);}}}
Bài 1.13. Chương trình:
#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8000000)
CONST unsigned char LEDstar[4] = {0x49,0xe1,0x11,0xf5};
CONST unsigned char LEDstop[4] = {0x49,0xe1,0x03,0x31};
CONST unsigned char dk[4] = {0xf7, 0xfb, 0xfd,0xfe};

void stop ()
{ for (int j = 0; j < 4; j++)
{
output_d(0xff);


16


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

output_b(LEDstop[j]);
output_d(dk[j]);
delay_ms(3);
}
}
Void main (void)
{ output_d(0xff);
While (1)
{
for ( int16 h =0 ; h<416 ; h++ )
{ stop();
}
}
}
Bài 1.14. Chương trình:
#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8000000)
CONST unsigned char LEDstar[4] = {0x49,0xe1,0x11,0xf5};
CONST unsigned char LEDstop[4] = {0x49,0xe1,0x03,0x31};
CONST unsigned char dk[4] = {0xf7, 0xfb, 0xfd,0xfe};
void star ()
{ for (int8 i = 0; i < 4; i++)
{
output_d(0xff);
output_b(LEDstar[i]);



BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

output_d(dk[i]);
delay_ms(3);
}
}
void stop ()
{ for (int j = 0; j < 4; j++)
{
output_d(0xff);
output_b(LEDstop[j]);
output_d(dk[j]);
delay_ms(3);
}
}
Void main (void)
{ output_d(0xff);
While (1)
{
for (int16 k=0 ; k<416; k++ )
{ star ();
}
for ( int16 h =0 ; h<416 ; h++ )
{ stop();
}
}
}
Bài 1.15. Chương trình:


17


18

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8M)
CONST

unsigned

char

LED[10]

={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
CONST

unsigned

char

={0x01,0x03,0x07,0xf,0x1f,0x3f,0x7f,0xff,0x00};
void sangdan()
{
Output_c(0x01);

Delay_ms(300);
Output_c(0x03);
Delay_ms(300);
Output_c(0x07);
Delay_ms(300);
Output_c(0xF);
Delay_ms(300);
Output_c(0x1F);
Delay_ms(300);
Output_c(0x3F);
Delay_ms(300);
Output_c(0x7F);
Delay_ms(300);
Output_c(0xFF);
Delay_ms(300);

densangdan[9]


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

19

Output_c(0x00);
Delay_ms(300);
}
void main ()
{
for(int i =0;i<9;i++)
{output_b(LED[i+1]);

output_d(0xf7);//mo led 4
sangdan();
//delay_ms(100);
}
}
Bài 1.16. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8M)
int chuc,donvi; //2 bien toan cuc
int dem;// dem:130
CONST

unsigned

char

led7s[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
CONST

unsigned

char

={0x01,0x03,0x07,0xf,0x1f,0x3f,0x7f,0xff,0x00};
void hienthi()
{
chuc=dem/10;


densangdan[9]


20

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

donvi=dem%10;
output_d(0xff);
output_b(led7s[chuc]);
output_d(0xf7);
delay_ms(3);
output_d(0xff);//tat
output_b(led7s[donvi]);
output_d(0xfb);
delay_ms(3);
}
void delay_100ms()
{ for(int k=0;k<17;k++)
{hienthi();
}
}
void sangdan()
{
Output_c(0x01);
Delay_100ms();
Output_c(0x03);
Delay_100ms();
Output_c(0x07);
Delay_100ms();

Output_c(0xF);
Delay_100ms();
Output_c(0x1F);


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

21

Delay_100ms();
Output_c(0x3F);
Delay_100ms();
Output_c(0x7F);
Delay_100ms();
Output_c(0xFF);
Delay_100ms();
Output_c(0x00);
Delay_100ms();
}
void main ()
{
dem=1;
for(int i =0;i<30;i++)
{
sangdan();
if(dem < 30)
{dem=dem+1;}
if(dem==31)
{dem=1;}
}

}
Bài 1.18. Chương trình:
include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP


22

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

#use delay(clock=8M)
#define D5

PIN_C4

#define D6

PIN_C5

#define SW1

PIN_B4

#define SW2

PIN_B5

void main (void)
{

while(1)
{
if(!input(SW1))
{output_low(D5);
while(1)
{output_toggle(D6);
for(int i=0;i<20;i++)
{if(!input(SW2))
{break;}
delay_ms(10);}
if(!input(SW2))
{break;}
}
}

if(!input(SW2))
{output_low(D6);
while(1)
{


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

23

output_toggle(D5);
for(int j=0;j<20;j++)
{if(!input(SW1))
{break;}
delay_ms(25);}

If(!input(SW1))
{break;}
}
}
}
}
Bài 1.19. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8M)
#define D5

PIN_C4

#define D6

PIN_C5

#define SW1

PIN_B4

#define SW2

PIN_B5

int dem;
void main (void)
{

dem=0;
while(1)
{


24

BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

if(!input(SW1))
{
output_low(D5);
while(1)
{
output_toggle(D6);
for(int i=0;i<20;i++)
{
if(!input(SW2))
{break;}
delay_ms(10);
}
if(!input(SW2))
{break;}
}
}
if(!input(SW2))
{
dem= dem+1;
delay_ms(200);// chong doi phim
if(dem==3)

{
dem=0;
output_low(D6);
while(1)
{


BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN

25

output_toggle(D5);
for(int j=0;j<20;j++)
{
if(!input(SW1))
{break;}
delay_ms(10);
}
If(!input(SW1))
{break;}
}
}
}
}
}
Bài 1.21. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8M)

#include <lcd.c>
void main ()
{
int8 sodem;
lcd_init();
set_tris_d(0x00);
output_d(0x00);


×