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
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -
-
Trả lời cho Máy điện châm ?bởi nick22Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
-
Channel: Điện tử y sinh
01-12-2025, 13:23 -
-
Trả lời cho Làm thế nào để check IC LM358bởi thetungĐể check IC sống hay chết thì đơn giản : bạn lắp cái mạch ( khuếch đại hoặc dao động ) chạy bằng con IC đó ,nhưng vị trí IC thì lắp cái đế .... thế là cứ cắm rút thì biết . Còn không thì kiếm cái này : https://shopee.vn/Xu-M%C3%A1y-ki%E1%...di-%C4%91%E1%B...
-
Channel: Hướng dẫn tìm thông tin linh kiện
28-11-2025, 14:34 -
-
bởi ngochung90Tình hình là em có mua mạch 3s về để hàn vào khối pin 12v, hàn xong em đo tại các chân từ B-, B1, B2, B+ thì điện áp pin vẫn đủ 12,6v, nhưng tại 2 chân ra P- P+ thì đo chỉ được 6,3v là bị sao các bác, và chân P- P + này đồng thời là chân sạc xả thì mình cắm sạc xả cùng lúc được ko ạ
...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2025, 10:32 -
-
Trả lời cho Làm thế nào để check IC LM358bởi nguyendinhvanViệc đó tùy thuộc trình độ khoa học kỹ thuật công nghệ ứng dụng hiện tại thôi.
Trong datasheet,họ đưa ra nhiều thông số. Tùy theo khả năng , và những thông số họ cần, họ sẽ kiểm tra casc số đo có khớp với số liệu trong datasheet...-
Channel: Hướng dẫn tìm thông tin linh kiện
27-11-2025, 18:00 -
-
bởi kqbn9091Em có mạch AT89s8253 đang cần sửa số serial no của CHIP mà giờ lâu quá rồi không dùng keil nên không biết phải làm sao, trong khi chỉ còn file hex. Mạch nạp thì progris khi viết không sửa được số serial của IC. Rất cần bác nào còn làm về 89...
-
Channel: Vi điều khiển họ 8051
27-11-2025, 11:13 -

Comment