BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC CÔNG NGHỆ TP.HCM
BÁO CÁO THỰC HÀNH VI
ĐIỀU KHIỂN
Họ và tên:
www.hutech.edu.vn
TRANG 2| BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN
BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN
Ấn bản 2018
MỤC LỤC
MỤC LỤC
III
4
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:
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8Mhz)
void main()
{
Set_tris_c (0xFF);
while(TRUE)
{
output_c (0b00000001);
delay_ms(100);
output_c (0b00000010);
delay_ms(100);
output_c (0b00000100);
delay_ms(100);
output_c (0b00001000);
delay_ms(100);
output_c (0b00010000);
delay_ms(100);
output_c (0b00100000);
delay_ms(100);
output_c (0b01000000);
delay_ms(100);
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
output_c (0b01000000);
delay_ms(100);
output_c (0b10000000);
delay_ms(100);
}
}
Bài 1.4. Chương trình:
Bài 1.5. Chương trình:
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8Mhz)
void main()
{
Set_tris_c (0xFF);
for (int i=0; i<30; i++)
{
output_c (0b00000001);
delay_ms(100);
output_c (0b00000010);
delay_ms(100);
output_c (0b00000100);
delay_ms(100);
output_c (0b00001000);
delay_ms(100);
output_c (0b00010000);
delay_ms(100);
output_c (0b00100000);
5
6
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
delay_ms(100);
output_c (0b01000000);
delay_ms(100);
output_c (0b01000000);
delay_ms(100);
output_c (0b10000000);
delay_ms(100);
}
}
Bài 1.6. Chương trình:
#include<16F877A.h>
#fuses NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP
#use delay(clock=8000000)
int dem; //dem=995
//0000 0000
//0000 0001
//0000 0011
//0000 0111
//0000 1111
//1111 1111
//0111 1111
//0011 1111
//0001 1111
CONST unsigned char LED1[9]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
CONST unsigned char LED2[9]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
void sang_dan()
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
{
for(int8 e=0;e<9;e++)
{
output_c(LED1[e]);
delay_ms(300);
}
}//sang dan
void tat_dan()
{
for(int8 l=0;l<9;l++)
{
output_c(LED2[l]);
delay_ms(300);
}
}//tat dan
void main()
{
while (dem <5)
{
sang_dan();
tat_dan();
dem=dem+1;
}//while
}//main
7
8
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
Bài 1.7. Chương trình:
Bài 1.8. Sơ đồ mạch:
Chương trình:
Bài 1.9. Sơ đồ mạch:
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
9
Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
const int8 ma_led[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
void main (void)
{
int8 i=0;
for(i=0; i<10; i++)
{ output_d(0xff);
output_b(ma_led[i]);
output_low(PIN_D3);
delay_ms(400);
}
10
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
while (1);
}
Bài 1.11. Chương trình:
Bài 1.12. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
const int8 led[4]={0x9f,0x24,0x0d,0x99};
const int8 le[4]={0xf7,0xfb,0xfd,0xfe};
void quet_led ()
{
for(int8 i=0; i<4;i++)
{
output_d(0xff);
output_b(led[i]);
output_d(le[i]);
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
delay_ms(3);
}}
void main (void )
{
output_d(0xff);
while(true)
{ quet_led();
}
}
Bài 1.13. 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_d(0xff);
output_b(0x49);
output_low(PIN_D3);
delay_ms(3);
output_d(0xff);
output_b(0xe1);
output_low(PIN_D2);
delay_ms(3);
output_d(0xff);
output_b(0x03);
11
12
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
output_low(PIN_D1);
delay_ms(3);
output_d(0xff);
output_b(0x31);
output_low(PIN_D0);
delay_ms(3);
}
}
Bài 1.14. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
const int8 stop[4]={0x49,0xe1,0x03,0x31};
const int8 star[4]={0x49,0xe1,0x11,0xf5};
const int8 le[4]={0xf7,0xfb,0xfd,0xfe};
void show_stop (void)
{
for(int8 i=0; i<4;i++)
{
output_d(0xff);
output_b(stop[i]);
output_d(le[i]);
delay_ms(3);
}}
void show_star (void)
{
for(int8 i=0; i<4;i++)
{
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
output_d(0xff);
output_b(star[i]);
output_d(le[i]);
delay_ms(3);
}}
void main (void )
{
while(1)
{
output_d(0xff);
{ show_stop();
delay_ms(5);
output_d(0xff);
show_star();
delay_ms(5);
}
}
Bài 1.15. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
const int8 ma_led[9]= {0x00, 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff} ;
const int8 dem[8]={ 0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01} ;
void main (void)
{
13
14
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
int8 i,j =0;
for (j=0; j<8; j++)
{
for (i=0; i<9; i++)
{
output_c(ma_led[i]);
delay_ms(300);
output_d(0xff);
output_low(PIN_D1);
output_b(dem[j]);
}
}
while (1);
}
Bài 1.16. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
const int8 ma_led[9]= {0xff, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00} ;
const int8 dem[8]={ 0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01} ;
void main (void)
{
int8 i,j =0;
for (j=0; j<8; j++)
{
for (i=0; i<9; i++)
{
output_c(ma_led[i]);
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
delay_ms(300);
output_d(0xff);
output_low(PIN_D1);
output_b(dem[j]);
}
}
while (1);
}
Bài 1.17. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
voi delay400ms()
{
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
FOR (int8 i = 0;i < 10:i++)
{
set_timer1(25536);
while (get_timer1()>25536);
}
}
void main (void)
{
while (1)
{
output_c(0x01);
delay400ms();
output_c(0x00);
delay400ms();
15
16
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
}
}
Bài 1.18. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
#define D1 PIN_B4
#define D2 PIN_B5
#defile SW2 Pin_C1
void main()
{
int8 SW = 0;
while(true)
{
if(!input(sw1) = 1;
if(!input(sw2)= 2;
switch(sw)
{
case 1:
{
output_low(D5);
output_toggle(D6);
delay_ms(200);
break;
}
case 2:
{
output_low(D6);
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
output_toggle(D2);
delay_ms(500);
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
void main(void)
{
int8 SW = 0;
while ( 1)
{
if(!input(SW1)) SW= 1;
if(!input(SW2)) SW= 2;
switch(SW)
{
case 1:
{
output_low(D5);
output_toggle(D6);
delay_ms(20);
17
18
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
break;
}
case 2:
{
output_low(D6);
output_toggle(D5);
delay_ms(500);
break;
}
if(!input(SW2)==3) ;
{
output_toggle(D6);
output_toggle(D5);
delay_ms(5);
break;
}
}
}
}
Bài 1.20. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
#include<lcd.c>
void main (void)
{
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"Welcome to");
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
delay_ms(3);
lcd_gotoxy(1,2);
printf(lcd_putc,"*****HUTECH*****");
delay_ms(3);
while(1);
}
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>
#define SW1 PIN_C3
#define SW2 PIN_C2
void main (void)
{
int8 SW=0;
lcd_init();
while(true)
{
if(!input(SW1)) SW=1;
if(!input(SW2)) SW=2;
switch(SW)
{
case 1 :
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Welcome to");
19
20
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
delay_ms(3);
break;
}
case 2 :
{
lcd_gotoxy(1,2);
printf(lcd_putc,"99");
delay_ms(3);
break;
}
}
}}
Bài 1.22. Chương trình:
#include <Bai2.2222.h>
#include <lcd.c>
# define SW1 PIN_C3
# define SW2 PIN_C4
void main()
{
lcd_init();
set_tris_d(0x00);
while(TRUE)
{if(!input(SW1))
{
lcd_gotoxy(1,1);
printf(lcd_putc,"xinchaocacban");
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
}
if(!input(SW2))
(lcd_gotoxy(10,2);
printf(lcd_putc,"HUTECH");
delay_ms(300);}
}
}
Bài 1.23. Chương trình:
: #include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
#include <lcd.c>
#define SW1 PIN_C3
#define SW2 PIN_C4
unsigned set_val=0;
void main (void)
{
lcd_init();
while(1)
{
lcd_gotoxy(5,1);
printf(lcd_putc,"Set Value");
delay_ms(5);
lcd_gotoxy(8,2);
printf(lcd_putc,"%02u",set_val);
21
22
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
if((!input(SW1))&&(set_val<200));
set_val=set_val+5;
delay_ms(50);
if((!input(SW2)) &&(set_val>0));
set_val=set_val-1;
delay_ms(50);
}
}
Bài 1.24. Chương trình:
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
#define SW1 PIN_C3
#define SW2 PIN_C4
#include <lcd.c>
void main()
{
int8 giay,phantramgiay;
phantramgiay=0;
lcd_init();
set_tris_d(0x00);
output_d(0x00);
while(TRUE)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"DONG HO DEM GIAY");
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
if(!input(SW1))
while(1)
{
phantramgiay++;
if(phantramgiay==100)
{giay=giay+1; phantramgiay=0;}
if(giay==100)
giay=0;
delay_ms(5);
lcd_gotoxy(4,2);
printf(lcd_putc, "%2u:%2u", giay,phantramgiay );
delay_ms(3);
if(!input(SW2))
{ delay_ms(3000);
While(1)
{
if(!input(SW2))
{
for( int8 dem=0; dem<50; dem++)
{
if(!input(SW2))
delay_ms(10);
}
giay=0;
phantramgiay=0; phantramgiay--;
break;
23
24
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
}
if(!input(SW1))
break;
}
}
}
}
}
Bài 1.25. Chương trình:
#include <16F877A.h>
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8M)
#include <lcd.c>
#define SW1 PIN_C3
#define SW2 PIN_C4
unsigned gio=0;
unsigned phut=0;
unsigned giay=0;
void main ()
{
lcd_init();
while(1)
{
BÀI 1: ĐIỀU KHIỂN CÁC THIẾT BỊ CƠ BẢN
lcd_gotoxy(4,1);
printf(lcd_putc,"DONG HO");
delay_ms(5);
lcd_gotoxy(6,2);
printf(lcd_putc,"%02u:%02u:%02u",gio,phut,giay);
if(!input(SW1))
delay_ms(10);
giay++;
if(giay == 99)
{
giay=0;phut++;
lcd_gotoxy(6,2);
printf(lcd_putc,"%02u:%02u:%02u",gio,phut,giay);
}
if(phut == 59)
{
phut=0;gio++;
lcd_gotoxy(6,2);
printf(lcd_putc,"%02u:%02u:%02u",gio,phut,giay);
}
while(!input(SW1))
{
delay_ms(500);
gio++;giay=0;
lcd_gotoxy(6,2);
printf(lcd_putc,"%02u:%02u:%02u",gio,phut,giay);
25