|
Tài trợ cho PIC Vietnam |
Đóng góp ý kiến Nơi tiếp nhận những ý kiến đóng góp của thành viên |
|
Ðiều Chỉnh | Xếp Bài |
07-05-2016, 12:33 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: May 2016
Bài gửi: 1
: |
[help]:giẢi mà hiỂn thỊ remote tv dÙng pic16f877a
e đã hoàn thành code,mô phỏng cũng được,nhưng sao lắp mạch thì nó không hiển thị
///// INRF.C #bit TRIS_DATA_INFR =0x85.0 #bit DATA_INFR =0x05.0 unsigned char check_start() { unsigned char i; if(DATA_INFR==0) // Neu co canh xuong cua tin hieu { delay_us(10); // Delay de chong nhieu if(DATA_INFR==0) // Neu dung la co canh xuong cua tin hieu { for(i=0;i<7;i++) // Chia nho xung START thanh 7 doan, moi doan dai 300us { delay_us(300); if(DATA_INFR==1) return 0; // Neu tin hieu len muc cao (1) --> khong phai xung START } while(DATA_INFR==0); return 1; // Dung la xung start } } } unsigned int infr_sensor() { unsigned char i; unsigned int data; data=0; if(check_start()) // Neu dung xung START { while(DATA_INFR==1); // Cho het bit 1 tiep theo for(i=0;i<12;i++) // Lay 12 bit data { //while(DATA_INFR==0); delay_us(1000); // Delay 1000us de kiem tra bit data=data<<1; if(DATA_INFR==0) data|=1; //bit 1 while(DATA_INFR==1); // cho canh xuong while(DATA_INFR==0); // cho canh len } delay_ms(400); // Cho het tin hieu (chong nhieu) } return data; // Gia tri ma kenh tra ve } void infr_init() { TRIS_DATA_INFR=1; } /////LCD.C #define LCD_RS PIN_E0 #define LCD_EN PIN_E2 #define LCD_D4 PIN_D4 #define LCD_D5 PIN_D5 #define LCD_D6 PIN_D6 #define LCD_D7 PIN_D7 /*hai bao mang unsigned char string[16]; LCD_Init(); Khoi tao LCD, goi ham nay trong void main(), truoc lenh while(true) LCD_Gotoxy([vi tri tu 0-15], [hang tren 0, duoi 1]); sprintf(string,"chuoi"); Khong su dung bien sprintf(string,"chuoi %kieu bien", bien); Co su dung bien LCD_Puts(string); LCD_Clear(); Xoa man hinh */ //Tao Xung void LCD_Enable() { output_high(LCD_EN); delay_us(3); output_low(LCD_EN); delay_us(50); } //Ham Gui 4 Bit Du Lieu Ra LCD void LCD_Send4Bit( unsigned char Data ) { output_bit(LCD_D4, Data&1); output_bit(LCD_D5,(Data>>1)&1); output_bit(LCD_D6,(Data>>2)&1); output_bit(LCD_D7,(Data>>3)&1); } // Ham Gui 1 Lenh Cho LCD void LCD_SendCommand (unsigned char command) { LCD_Send4Bit(command>>4); LCD_Enable(); LCD_Send4Bit(command); LCD_Enable(); } void LCD_Init() { output_drive(LCD_D4); output_drive(LCD_D5); output_drive(LCD_D6); output_drive(LCD_D7); output_drive(LCD_EN); output_drive(LCD_RS); LCD_Send4Bit(0x00); delay_ms(500); output_low(LCD_RS); LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(500); LCD_Enable(); delay_us(500); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand(0x28); LCD_SendCommand(0x0c); LCD_SendCommand(0x06); LCD_SendCommand(0x01); delay_ms(100); } void LCD_Gotoxy(unsigned char x, int1 y) { if(!y) LCD_SendCommand(0x80+x); else LCD_SendCommand(0xC0+x); delay_us(1000); } void LCD_Puts (char *s) { while(*s) { output_high(LCD_RS); LCD_SendCommand(*s); output_low(LCD_RS); s++; } } void LCD_Clear_All() { LCD_SendCommand(0x01); delay_ms(10); } void LCD_Clear_Row(unsigned char row) { for(int i=0;i<16;i++) { LCD_Gotoxy(i,row); output_high(LCD_RS); LCD_SendCommand(0x20); output_low(LCD_RS); } } ////// MAIN.C #include <16F877a.h> #fuses HS, NOWDT, NOBROWNOUT, PROTECT #use delay(clock=12M) #include "lcd.c" #include "infr.c" //Dinh nghia cac constan #define OF_QUAT 33071 #define QUAY_QUAT 33063 #define QUAY_QUAT1 33083 //Dinh nghia IO #bit TRIS_RELAY_1 =0x86.0 #bit RELAY_1 =0x06.0 //B0 #bit TRIS_RELAY_2 =0x86.1 #bit RELAY_2 =0x06.1 //B1 void main() { unsigned int8 str[16]; unsigned long int data=0,data1,data2,data3; infr_init(); TRIS_RELAY_1=0; TRIS_RELAY_2=0; RELAY_1=0; RELAY_2=0; LCD_Init(); LCD_Gotoxy(3,0); sprintf(str,"TEST INRF"); LCD_Puts(str); while (true) { data = infr_sensor(); // Gan ma cua kenh vao bien Data if(data!=0) { sprintf(str,"%lu",data1); LCD_Gotoxy(0,1); LCD_Puts(str); delay_ms(250); } if(data!=0) // Neu co kenh tren remote duoc an { if(data == OF_QUAT) // Thuc hien lenh dieu khien ung voi moi phim { relay_1=~relay_1; } if((data == QUAY_QUAT)|(Data == QUAY_QUAT1)) { RELAY_2=~RELAY_2 ; } } if(data!=0) relay_1=~relay_1; } } |
|
|