View Single Post
Old 07-05-2016, 12:33 AM   #1
phatnt
Nhập môn đệ tử
 
Tham gia ngày: May 2016
Bài gửi: 1
:
Angry [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;
}
}
phatnt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn