cho em đoạn code của đọc mã remote tivi sử dụng C nha? nhớ là phải C đấy? as thì em có cả mớ rùi! thanks các bác nhiều!
Thông báo
Collapse
No announcement yet.
Làm ơn hướng dẫn em cách đọc mã của remote tivi sử dụng C?
Collapse
X
-
#include<AT89S53.h>
sbit IR = 0x90; // IR = P1_0
sbit RS = 0x91; // RS = P1_1
sbit E = 0x92; // E = P1_2
unsigned char a=0xFF;
unsigned char b=0xFF;
unsigned char c=0;
void delay_ms( unsigned int ms )
{ unsigned int i,j;
for (i=0;i<ms;i++)
for (j=0;j<120;j++){};
}
void delay_900us(void)
{ TMOD= 0x01;
TL0 = 0xB7; //830
TH0 = 0xFC;
TR0 = 1;
while(!TF0) continue;
TR0 = TF0 = 0 ;
}
void delay_20us(void)
{ TMOD= 0x01;
TH0 = 0xFF;
TL0 = 0xEB;
TR0 = 1;
while(!TF0) continue;
TR0 = TF0 = 0 ;
}
void LCD_PulseEnable ( void )
{E=1;delay_ms(1);
E=0;delay_ms(3);
}
void LCD_PutCmd(unsigned char k)
{ RS =0;
transdata(k);LCD_PulseEnable();
for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
LCD_PulseEnable();
}
void LCD_PutChar(unsigned char k)
{ RS =1;
transdata(k);LCD_PulseEnable();
for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
LCD_PulseEnable();
}
void LCD_Init ( void )
{ delay_ms(50);
LCD_PutCmd(0x03);delay_ms(5);
LCD_PutCmd(0x03);delay_ms(1);
LCD_PutCmd(0x03);delay_ms(1);
LCD_PutCmd(0x06); // dich con tro sang phai
LCD_PutCmd(0x0C); // bat hien thi ,tat con tro
LCD_PutCmd(0x28); // 4 bit , 5x8
LCD_PutCmd(0x01); // xoa man hinh
LCD_PutCmd(0x02); // ve dau dong
}
void scanIR()
{ delay_900us(); //0
if(IR) {a= a&0xFE;};
delay_900us(); //1
if(IR) {a= a&0xFD;};
delay_900us(); //2
if(IR) {a= a&0xFB;};
delay_900us(); //3
if(IR) {a= a&0xF7;};
delay_900us(); //4
if(IR) {a= a&0xEF;};
delay_900us(); //5
if(IR) {a= a&0xDF;};
delay_900us(); //6
if(IR) {a= a&0xBF;};
delay_900us(); //7 bit 0 ma dia chi
if(IR) {a= a&0x7F;};
delay_900us(); // bit 1 ma dia chi
if(IR) {b= b&0xFE;};
delay_900us(); // bit 2 ma dia chi
if(IR) {b= b&0xFD;};
delay_900us(); // bit 3 ma dia chi
if(IR) {b= b&0xFB;};
delay_900us(); // bit 4 ma dia chi
if(IR) {b= b&0xF7;};
delay_900us(); //4
if(IR) {b= b&0xEF;};
delay_900us(); //5
if(IR) {b= b&0xDF;};
delay_900us(); //6
if(IR) {b= b&0xBF;};
delay_900us(); //7 bit 0 ma dia chi
if(IR) {b= b&0x7F;};
}
void giaima(unsigned char i,unsigned char j )
{ if((i==0x56&&j==0xBD)||(i==0x56&&j==0xB9)){ LCD_PutChar('O');LCD_PutChar('N');};
if(j==0xB6) { LCD_PutChar('1');};
if(j==0x49) { LCD_PutChar('2');};
if(i==0x4E&&j==0x4A) { LCD_PutChar('3');};
if(i==0xBD&&j==0xB5) { LCD_PutChar('4');};
if(i==0x4E&&j==0x4E) { LCD_PutChar('5');};
if((i==0xBD&&j==0xB9)||(i==0xB9&&j==0xB9)){ LCD_PutChar('6');};
if((i==0xB9&&j==0xBA)||(i==0xBD&&j==0xBA)){ LCD_PutChar('7');};
if(i==0x56&&j==0x55) { LCD_PutChar('8');};
if(i==0x4E&&j==0x56) { LCD_PutChar('9');};
if(i==0xBD&&j==0xA9) { LCD_PutChar('0');};
if((i==0xBD&&j==0x56)||(i==0xB9&&j==0x56)){ LCD_PutChar('S');LCD_PutChar('M');};
if((i==0xBD&&j==0xCE)||(i==0xBD&&j==0xCA)){ LCD_PutChar('V');LCD_PutChar('+');};
if(i==0x4E&&j==0x76) { LCD_PutChar('P');LCD_PutChar('+');};
if(i==0x56&&j==0xB5) { LCD_PutChar('V');LCD_PutChar('-');};
if((i==0xB9&&j==0xC9)||(i==0xBD&&j==0xC9)){ LCD_PutChar('P');LCD_PutChar('-');};
}
main()
{
LCD_Init();
while(1)
{
HERE : while(IR) continue ;
delay_ms(1);
if(IR) goto HERE;
while(!IR) continue;
while(IR) continue ;
scanIR();
P2=a;
P3=b;
LCD_PutCmd(0x01);
LCD_PutCmd(0x84);
giaima(b,a);
delay_ms(1000);
a=b=0xFF;
P2=P3=0x00;
};
}
Lấy từ nguồn http://dientuvietnam.net/forums/show...275#post179275Last edited by vdh246; 17-04-2009, 04:12. Lý do: Bài này lấy của bác ZZ..zz để châm cứu đã! có lẽ đây là cái em cần!
-
#include <at89x51.h>
sbit signal=P3^2;
sbit chanel1=P3^3;
sbit chanel2=P3^4;
sbit chanel3=P3^5;
unsigned char datasignal[6];
void delay(unsigned char time)
{
if(time==8) //tre 900us
{
TH0=0xFC;
TL0=0xC2;
}
if(time==2) //tre 200us
{
TH0=0xFF;
TL0=0x47;
}
TR0=1;
while(!TF0);
TR0=0;
TF0=0;
}
bit check()// ham con kiem tra bit cua remote (do dai cua remot 14 bit)
{
unsigned char i;
i=1;
while(!signal)
{
delay(2);
i++;
}
if((i<10)|(i>14))i=0;
return i;
}
void control(unsigned char k)//kich hoat so
{
switch(k)
{
case (0):
chanel1=chanel1?0:1;
break;
case (1):
chanel2=chanel2?0:1;
break;
case (2):
chanel3=chanel3?0:1;
break;
}
}
void process()//xu ly ma phim da bam
{
char so;
so=-1;
if(datasignal[0]==0x01)so=0;
if(datasignal[0]==0x81)so=1;
if(datasignal[0]==0x41)so=2;
control(so);
}
void isr (void) interrupt 0 //ngat int0 P3.2.. Nhan tin hieu tu IR dieu khien
{
bit databit;
unsigned char dem,tre,k,mang;
EX0=0;
dem=12;
mang=7;
k=0;
if (check())
{
while(dem--)
{
while(signal);
delay(8);
databit=~signal;
if(databit)
{
datasignal[k]|=0x01;
while(!signal);
}
else
datasignal[k]&=0xFE;
if((mang--)==0)
{
mang=7;
k++;
}
else
datasignal[k]<<=1;
}
process();
tre=250;
while(tre--)
{
delay(2);
if(!signal) tre=250;
}
}
EX0=1;
}
void main()
{
TMOD = 0x11; //su dung timer,che do 16 bit
EA = 1; //Cho phep ngat chung.
EX0 = 1;//cho phep ngat ngoai 0
P3|=0x38;
while(1);
}
Comment
-
chủ yếu là thuâti toán thôi: chứ 89xx với PIC có khác gì nhau
tôi viết chương trình này rồi.ngắn lắm: khoang 20 dòng thôi
vừa làm cái mạch này chạy ầm ầm. remote tv sony
mail: dongsongbang_dld@yahoo.comNhận làm mạch vi điều khiển, ghép nối máy tính, mạch xung số
mail:
dd: 0973423905
Thương trường là chiến trường. tiến lên để kiếm tiền
Comment
-
anh gui cho em diiiiii nhen em dang tim hieu can lam: thank anh truoc nhak phananhvu_92@yahoo.com.vn
Comment
Bài viết mới nhất
Collapse
-
bởi chinhnguyen9
Xem hình có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ....-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 01:15 -
-
Trả lời cho CODE/ROM-dvb-vcd-dvd-mindikaraoke- Máy nạp Rombởi ThaPhong20Mình cần giúp đõ đầu California MIDI-800K
Ngày trc có nghe tin đồn đầu này có thể chạy đĩa DH-3600 nên mua Vol 26 về chạy thử và nó báo góc trái dòng code rồi tự thay nền DH-3600S luôn. Sau khi tự thay nền thì nó tiếp tục báo dòng Code...-
Channel: Thiết bị thu phát MEDIA dân dụng
Hôm qua, 19:24 -
-
Trả lời cho Xin tư vấn về mạch cầu H cho inverter 1000wbởi N.T.HIRF460 có chịu được tải 1000W công suất thực không ạ....
-
Channel: Điện tử công suất
Hôm qua, 16:05 -
-
bởi chinhnguyen9Trước đây có thế hệ mạch cân bằng chủ động hoạt động theo nguyên lý so áp giữa 2 cell (hoặc 2 chuỗi) liền kề nếu điện áp này >100mV mach cận bằng sẽ được kích hoạt và sẽ dừng hoạt động cân bằng khi độ chênh điện áp giảm xuống còn 30 mV
Hiện nay có dòng sản phẩm mới gọi là...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 07:26 -
-
Trả lời cho Hỏi về mạch công suất bị dò DCbởi vandoanĐiện áp ở A và C được ghim bởi Transistor Q8. chuyện áp ra loa + hay - là do các trans khác bị chập chập bên nào thì thay bên đó.
-
Channel: Điện thanh
20-04-2024, 12:00 -
-
bởi jigokushoujoCó anh chị nào có thể cho em 1 mạch chống ngược cực, chập mạch, khi bị chạm mạch hay ngược cực thì nó sẽ tự động ngắt nguồn,khi không còn chạm thì nó sẽ đóng nguồn lại bình thường. Em có dùng nguồn 12V 75A từ ắc quy . Em cần chụi...
-
Channel: Điện tử dành cho người mới bắt đầu
18-04-2024, 18:24 -
Comment