PIC Vietnam

Go Back   PIC Vietnam > Ban Điều Hành > Đóng góp ý kiến

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Đó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
Prev Previous Post   Next Post Next
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
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:20 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam