Chương trình điều khiển các led đơn nối với PORTB nhấp nháy ppt

22 1.8K 22
Chương trình điều khiển các led đơn nối với PORTB nhấp nháy ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1. Chương trình điều khiển các led đơn nối với PORTB nhấp nháy //Chuong trinh dieu khien cac led don noi voi PORTB nhap nhay #include "16f877a.h" //file dinh nghia cac thanh ghi, cac hang so cua PIC #fuses NOLVP, NOWDT //ko nap chuong trinh o dien the thap, khong su dung #use delay(clock=4Mhz) //khai bao su dung tan so thach anh 4Mhz void main(void) //bat dau chuong trinh chinh { set_tris_B(0x0); //xac lap PORT B la dau ra (thanh ghi TRISB) //TRISB=0x0: dau ra, TRISB=0b11111111 dau vao while(true) { output_B(0); //xuat ra cac chan cua PORTB muc 0 delay_ms(100); //tre mot khoang thoi gian de quan sat output_B(0xff); //xuat muc 1 ra cac chan cua PORTB delay_ms(100); //tre mot khoang thoi gian de quan sat } } 2.Chương trình điều khiển các led đơn nối với PORTB sáng dần //sang dan bat dau tu RB0 den RB7 #include "16F877A.h" #FUSES HS, NOWDT, NOLVP //HS: su dung thach anh tan so cao >4Mhz //NOWDT: khong su dung Watchdog //NOLVP: khong su dung nap dien ap thap #use delay(clock=4Mhz) //su dung thach anh tan so 12Mhz void main(void) { unsigned int8 x=0; //khai bao bien x 8bit, khong dau set_tris_B(0); //xac lap PORTB la dau ra while(true) { x=0; output_B(0); //tat het cac led noi voi PORTB delay_ms(200); //tre mot khoang thoi gian de quan sat lap: x<<=1; //dich trai bien x mot bit x|=1; //hoac muc bit bien x voi gia tri 1 (dua bit so 0 len //muc 1 output_B(x); //xuat gia tri cua x ra portb delay_ms(200); if(x!=0xff) goto lap; //kiem tra neu x<>=0xff thi lap lai } } 3. Chương trình điều khiển led 7 đoạn nối với PORTB hiển thị số từ 0-9 #include "16f877a.h" #fuses HS,NOLVP, NOWDT #use delay(clock=4Mhz) const char ma7d[10]={0xc0, 0xf9, 0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void main() { char i=0; set_tris_B(0); while(true) { for(i=0;i<10;i++) { output_B(ma7d[i]); delay_ms(200); } } } 4. Chương trình điều khiển 2 led 7 đoạn nối song song với PORTB hiển thị số từ 0- 99 #include <16f877A.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=4Mhz) #use fast_io(b) const int8 ma7doan[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void hienthi(int8 so) { int8 i, hc,hdv; hc=so/10; hdv=so%10; for(i=0;i<50;i++) { //hien thi so hang don vi output_high(pin_a1); output_b(ma7doan[hdv]); output_low(pin_a0); delay_ms(10); //hien thi so hang chuc output_high(pin_a0); output_b(ma7doan[hc]); output_low(pin_a1); delay_ms(10); } } void main() { int8 count=0; set_tris_b(0x00); //xac lap PORTB la dau ra set_tris_a(0x0); //xac lap PORTA la dau ra while(true) { hienthi(count); count++; if(count==100) count=0; } } 5. Chương trình đếm xung ngoài đưa tới chân RA4 hiển thị số đếm từ 0-200 trên các led đơn nối với PORTC sử dụng timer0 với chức năng counter /*chuong trinh dem xung ngoai dua toi chan RA4 hien thi so dem tren cac led don noi voi PORTC*/ #include "16F877A.h" #fuses NOWDT, NOLVP, HS #bit TRISA4 =0x85.4 void main(void) { char x=0; set_tris_C(0); //xac lap PORTC la dau ra TRISA4=1; //xac lap RA4 la dau vao output_C(0xff); /*xac lap timer0 lam chuc nang counter, dem xung tai suon xuong, khong su dung bo chia tan*/ setup_timer_0(T0_EXT_H_TO_L|T0_DIV_1); set_timer0(0); //xac lap so dem ban dau //cho counter while(true) { x=get_timer0(); //doc so dem cua counter output_C(x); //xuat gia tri doc duoc ra PORTC if(x>=201) set_timer0(0); } } 6. Chương trình đếm xung ngoài đưa tới chân RA4 hiển thị số đếm từ 0-99 trên 2 led 7 đoạn (anode chung) nối song song với PORTB. Chân RA0 và RA1 lần lượt quét led hàng đơn vị và hàng chục /*chuong trinh dem xung ngoai dua toi chan RA4 su dung counter0 cac chan a,b, ,f cua 2 led 7 doan (anode chung)noi song song voi RB0,RB1 RB6 chan RA0 quet led hang don vi, RA1 quet led hang chuc xung dua vao chan RA4*/ #include "16F877A.h" #fuses NOWDT, NOLVP, XT #use delay(clock=4Mhz) //tich cuc muc thap const char ma7doan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void hienthi(int8 chuc,int8 dv); void main(void) { int8 x=0,chuc,dv; set_tris_B(0); //xac lap PORTB la dau ra output_drive(pin_A0); //xac lap RA0 la dau ra output_drive(pin_A1); //xac lap RA1 la dau ra output_float (pin_A4); //xac lap RA4 la dau vao output_B(0xff); //tat het cac led (led anode chung) setup_timer_0(T0_EXT_H_TO_L|T0_DIV_1); //xac lap cho timer0 la bo dem xung ngoai set_timer0(0); //xac lap cho timer0 dem xung tu 0 while(true) { x=get_timer0(); //doc gia tri hien tai cua timer0 chuc=x/10; dv=x%10; hienthi(chuc,dv); if(x>=100) set_timer0(0); } } void hienthi(int8 chuc,int8 dv) { output_B(ma7doan[chuc]); //giai ma hang chuc va xuat ra portB output_low(pin_A1); //cho led hang chuc dan delay_ms(2); output_high(pin_A1); //cam led hang chuc output_B(ma7doan[dv]); //giai ma hang don vi va xuat ra portc output_low(pin_A0); //cho led hang don vi dan delay_ms(2); output_high(pin_A0); //cam led hang don vi dan } 7 Chương trình tạo xung vuông có chu kỳ T=0.01 giây, độ rỗng 50%, sử dụng thạch anh tần số 4Mhz //Chu thich: //Chuong trinh su dung timer0 //De tao thoi gian 0.05 giay timer can dem duoc (4*10^6/4)*0.05=5*10^4 so dem //Goi so dem trong 1 lan tran la x //So lan tran la y //Chia tan z thi x*y*z=50.000 //Chon z=16, x=125 thi y=25 //============================================================ #include "16f877a.h" #fuses NOWDT, NOLVP, XT, NOPROTECT #bit TMR0IF = 0x0b.2 void main(void) { unsigned int8 y=0; output_drive(PIN_B0); //xac lap RB0 la dau ra setup_timer_0(T0_internal|T0_DIV_16);//timer0 chuc nang timer, chia tan 16 set_timer0(-125); //xac lap so dem ban dau cua timer while(true) { if(TMR0IF==1) { TMR0IF=0; set_timer0(-125); y++; if(y==25) { y=0; output_toggle(PIN_B0); } } } } 8 Chương trình đếm giây từ 0-59 hiển thị trên 2 led 7 đoạn nối song song với PORTC, chân RB0 và RB1 quét led. Tần số thạch anh sử dụng 4Mhz //Chu thich: // Chuong trinh su dung timer0 // De tao thoi gian 1 giay timer tuong duong voi 10^6 chu ky may // Goi so dem trong 1 lan tran la x // So lan tran la y // Chia tan z thi x*y*z=1.000.000 chu ky may // Chon z=64, x=125 thi y=125 //============================================================ #include "16f877a.h" #use delay(clock=4Mhz) //khai bao bang ma const char ma7doan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//tich cuc muc thap char lantran=0,giay=0; //chuong trinh phuc vu ngat timer0 #int_TIMER0 void ngat_timer0(void) { lantran++; set_timer0(-125); if(lantran==125) { lantran=0; giay++; if(giay==60) giay=0; } } //chuong trinh chinh void main(void) { //xac lap timer0 setup_timer_0(T0_internal|T0_DIV_64); set_timer0(-125); //cho phep ngat timer0 dem tran enable_interrupts(Global); enable_interrupts(int_timer0); clear_interrupt(int_timer0); //xac lap cho PORTC va PIN_B0,PIN_B1 la dau ra set_tris_c(0); output_drive(pin_B0); output_drive(pin_B1); while(true) { output_C(ma7doan[giay/10]); output_high(PIN_B0); output_low(PIN_B1); delay_ms(20); output_high(PIN_B1); output_C(ma7doan[giay%10]); output_low(PIN_B0); delay_ms(20); output_high(PIN_B0); } } 9 Chương trình đếm xung ngoài đưa tới chân RB0 (chân ngắt ngoài) hiển thị số đếm từ 0-99 trên các led đơn nối với PORTC /*Chuong trinh dem xung ngoai dua toi chan RB0(chan ngat ngoai). Hien thi so dem tu 0-99 tren cac led don noi voi cong C*/ #include "16f877a.h" #include "def_16F877a.h" static char i=0; /*chuong trinh con phuc vu ngat ngoai*/ #int_EXT void EXT_isr(void) { i++; } /*chuong trinh chinh*/ void main(void) [...]... CHUC=X%100/10; DONVI=X%10; PORTB= 0XC0; KHOITAO(); PORTB= 0X4E; HIENTHI(); PORTB= 0X48; HIENTHI(); PORTB= 0X49; HIENTHI(); PORTB= 0X45; HIENTHI(); PORTB= 0X54; HIENTHI(); PORTB= 0X20; HIENTHI(); PORTB= 0X44; HIENTHI(); PORTB= 0X4F; HIENTHI(); PORTB= 0X3A; HIENTHI(); PORTB= 0X20; HIENTHI(); PORTB= A[TRAM]; HIENTHI(); PORTB= A[CHUC]; HIENTHI(); PORTB= A[DONVI]; HIENTHI(); PORTB= 223; HIENTHI(); PORTB= 0X43; HIENTHI(); }... SET_TRIS_D(0B000); PORTB= 0X01; KHOITAO(); PORTB= 0X0C; KHOITAO(); PORTB= 0X38; KHOITAO(); PORTB= 'T';// neu viet chu thi de? chu~ o trong da'u '' //vd : 'T' HIENTHI(); PORTB= 0X52;// su dung bang ma ascii 52_hex tuong duong voi chu~ "R" HIENTHI(); PORTB= 0X41; HIENTHI(); PORTB= 0X4E; HIENTHI(); PORTB= 0X20; HIENTHI(); PORTB= 0X43; HIENTHI(); PORTB= 0X4F; HIENTHI(); PORTB= 0X4E; HIENTHI(); PORTB= 0X47; HIENTHI(); PORTB= 0X20;... 10 Chương trình đếm xung ngoài đưa tới chân RC0/T1CKI (chân đầu vào timer1) hiển thị số đếm từ 0-200 trên các led đơn nối với PORTB sử dụng timer1 với chức năng counter //Chu thich: //chuong trinh su dung timer1 voi chuc nang counter dem xung ngoai //============================================================ #include "16f877a.h" #fuses NOWDT, NOLVP, HS void main(void) { int16 i=0; //xac lap cho PORTB. .. output_C (led7 doan[1]); output_D(0b00001111); } else if (a==2) { output_C (led7 doan[2]); output_D(0b11110000); } else if (a==3) { output_C (led7 doan[3]); output_D(0b10101010); } else if (a==4) { output_C (led7 doan[4]); output_D(0b01010101); } else if (a==5) { output_C (led7 doan[5]); output_D(0b11100111); } else if(a==6) { output_C (led7 doan[6]); output_D(0b11000011); } else if(a==7) { output_C (led7 doan[7]);... bit, led2 _RB1 sang count=0; a=a20* đèn sáng #INCLUDE #FUSES NOWDT,NOPROTECT,NOLVP,XT,PUT #DEVICE 16F877A*=16 ADC=10 #USE DELAY(CLOCK=4000000) #USE FAST_IO(A) #BYTE PORTA=0x05 #USE FAST_IO(B) #BYTE PORTB= 0x06 #USE FAST_IO(D) #BYTE PORTD=0x08 #BIT RS=PORTD.0... PORTB= 0X41; HIENTHI(); PORTB= 0X4E; HIENTHI(); PORTB= 0X20; HIENTHI(); PORTB= 0X43; HIENTHI(); PORTB= 0X4F; HIENTHI(); PORTB= 0X4E; HIENTHI(); PORTB= 0X47; HIENTHI(); PORTB= 0X20; HIENTHI(); PORTB= 0X4C; HIENTHI(); PORTB= 0X4F; HIENTHI(); PORTB= 0X43; HIENTHI(); WHILE(1) { DOC_ADC(); X=READ_ADC(); if(X>40) { X=X*0.4883; bentrong(); rd3=1; } else { X=X*0.4883; bentrong(); rd3=0; } } } //============================== . 1. Chương trình điều khiển các led đơn nối với PORTB nhấp nháy //Chuong trinh dieu khien cac led don noi voi PORTB nhap nhay #include. delay_ms(100); //tre mot khoang thoi gian de quan sat } } 2 .Chương trình điều khiển các led đơn nối với PORTB sáng dần //sang dan bat dau tu RB0 den RB7 #include

Ngày đăng: 10/03/2014, 17:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan