Chương trình điều khiển các led đơn nối với PORTB nhấp nháy
lượt xem 36
download
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
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương trình điều khiển các led đơn nối với PORTB nhấp nháy
- 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
- set_tris_B(0); while(true) { for(i=0;i
- void hienthi(int8 so) { int8 i, hc,hdv; hc=so/10; hdv=so%10; for(i=0;i
- /*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)
- { set_tris_C(0); //xac lap portc la dau ra output_float(PIN_B0); //xac lap chan RB0 la dau vao enable_interrupts(GLOBAL); //cho phep ngat enable_interrupts(INT_EXT); //cho phep ngat ngoai ext_int_edge(INT_EXT,H_TO_L); while(true) { output_c(i); if (i==100 ) i=0; } } 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 la dau ra set_tris_B(0); output_B(0); /*Su dung timer1: chuc nang counter (TMR1CS=1) Chia tan 1 (T1CKPS1:T1CKPS0=00) Cho phep hoat dong TMR1ON=1*/ setup_timer_1(T1_external|T1_DIV_BY_1); set_timer1(0); //xac lap so dem ban dau cua timer1 while(true) { i=get_timer1(); if(i==200) { set_timer1(0); i=0; } output_B(i); } } 11- Cảnh báo nhiệt độ hiển thị lên led7 đoạn #INCLUDE
- #FUSES NOWDT,NOPROTECT,NOLVP,XT,PUT #DEVICE 16F877*=16 ADC=10 #USE DELAY(CLOCK=4000000) #USE FAST_IO(E) #BYTE PORTE=0X09 #USE FAST_IO(B) #BYTE PORTB=0X06 #BIT RE0=PORTE.0 #BIT RE1=PORTE.1 #use fast_io(d) #byte portd=0x08 #bit rd0=portd.0 INT X,i,CHUC,DONVI; INT A[10]={192,249,164,176,153,146,130,248,128,144}; void DOC_ADC(); void HIENTHI(); //============ VOID MAIN() { SET_TRIS_E(0); SET_TRIS_B(0); SET_TRIS_D(0); WHILE(1) while (1) { DOC_ADC(); X=READ_ADC(); if (X>=40)//nhiet 20 do --> canh bao {X=X*0.4883; HIENTHI(); RD0=1; } else { X=X*0.4883; HIENTHI(); RD0=0; } } } void DOC_ADC() { SETUP_ADC(ADC_CLOCK_DIV_2);// CHON TAN SO CHUYEN DOI SETUP_ADC_PORTS(AN0);//CHON SO NGO VAO
- SET_ADC_CHANNEL(0);// CHON NGO VAO CU THE DELAY_US(800);// TAO TRE } void HIENTHI() { CHUC=X/10; DONVI=X%10; RE0=0; RE1=1; PORTB=A[DONVI]; DELAY_MS(10); RE0=1; RE1=0; PORTB=A[CHUC]; DELAY_MS(10); } 12- Cảnh báo nhiệt độ hiển thị lên LCD >20* đè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 #BIT RW=PORTD.1 #BIT E=PORTD.2 #bit rd3=PORTD.3 INT X,CHUC,DONVI,TRAM,k; INT A[10]={48,49,50,51,52,53,54,55,56,57}; VOID KHOITAO(); VOID HIENTHI(); VOID DOC_ADC(); void bentrong(); VOID MAIN() { SET_TRIS_B(0); 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; 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; } } } //============================== VOID KHOITAO() { E=1; //TAO XUNG KICH RS=0; //BUS NOI THANH GHI IR RW=0; //CHE DO GHI DU LIEU E=0; //TAO XUNG KICH DELAY_MS(3); } //============================== VOID HIENTHI() { E=1; RS=1; //BUS NOI THANH GHI DR RW=0; E=0; DELAY_MS(3); } //============================== void DOC_ADC() { SETUP_ADC(ADC_CLOCK_INTERNAL); SETUP_ADC_PORTS(AN0); SET_ADC_CHANNEL(0); DELAY_US(800); }
- //============================== void bentrong() { TRAM=X/100; 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(); }
- 13-Ngắt ngoài #include #FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD #use delay(clock=40000000) int led7doan[10]={0b11000000,0b11111001,0b10100100,0b10110000,0b10011001,0b10 010010, 0b10000010,0b11111000,0b10000000,0b10010000};// ma led ung voi cac chan theo tuan tu int a=0; #int_ext void ngat_ngoai() { a=a+1; if (a>9) { a=0; } output_C(led7doan[a]); } void main() { ext_int_edge( H_TO_L ); enable_interrupts(INT_EXT); enable_interrupts(GLOBAL); while(true)
- { if (a==0) { output_C(led7doan[0]); output_D(0b10101010); } else if (a==1) { output_C(led7doan[1]); output_D(0b00001111); } else if (a==2) { output_C(led7doan[2]); output_D(0b11110000); } else if (a==3) { output_C(led7doan[3]); output_D(0b10101010); } else if (a==4) { output_C(led7doan[4]); output_D(0b01010101); } else if (a==5) { output_C(led7doan[5]); output_D(0b11100111); } else if(a==6) { output_C(led7doan[6]); output_D(0b11000011); } else if(a==7) { output_C(led7doan[7]); output_D(0b10000001); } else if(a==8) { output_C(led7doan[8]);
- output_D(0b11111111); } else if(a==9) { output_C(led7doan[9]); output_D(0b00110011); } else { output_C(0xFF); output_D(0b00000000); } ; } } 14-Ngắt timer 0 #include #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #use fast_io(b) #byte portb=0x06 #define led pin_B0 int16 count; int8 a; //Chuong trinh ngat TMR0
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Quang báo 8 LED ma trận
15 p | 2447 | 970
-
Quang báo 5 LED ma trận
10 p | 618 | 291
-
Giáo trình vi xử lý - Giao tiếp với các thiết bị dơn giản
18 p | 395 | 167
-
Chương trình điều khiển đèn giao thông
8 p | 359 | 152
-
Sửa chữa điện thoại di động - Chương 3
16 p | 318 | 138
-
Chương 3: Khối Nguồn Nuôi
16 p | 298 | 134
-
Hướng dẫn sử dụng Kit 89 - Bài 8
3 p | 271 | 113
-
Hướng dẫn sử dụng Kit 89 - Bài 3
7 p | 277 | 109
-
Khối nguồn nuôi chương 3
16 p | 295 | 107
-
Hướng dẫn sử dụng Kit 89 - Bài 9
3 p | 226 | 98
-
Hướng dẫn sử dụng Kit 89 - Bài 15
6 p | 219 | 93
-
Hướng dẫn sử dụng Kit 89 - Bài 5
2 p | 221 | 90
-
Hướng dẫn sử dụng Kit 89 - Bài 11
3 p | 239 | 86
-
Quang báo 8 LED ma trận
16 p | 220 | 85
-
Tự động hoá thiết bị điện - Chương 1
20 p | 188 | 81
-
CHƯƠNG I: PHÂN TÍCH CHƯƠNG TRÌNH
16 p | 186 | 51
-
HƯỚNG DẪN TÌM HIỂU CHƯƠNG TRÌNH TDC MCR
70 p | 185 | 43
-
Đề cương chi tiết học phần Vi xử lý
12 p | 65 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn