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 Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
hôm nay, 18:05 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
hôm nay, 18:04 -
-
bởi bqvietDiễn đàn vốn vắng, muốn vào viết bài trả lời chút nhưng cứ thấy luồng nào thành viên này mở thì cũng đồng thời xuất hiện ở Otofun, thế là chùn tay ... Thôi thì dientuvietnam không thể so sánh được về độ phổ cập, biết thân biết phận vậy.
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 17:49 -
-
bởi chinhnguyen9So sánh sóng 2 mạch nguồn Push-pull
· Sóng vuông giửa 2 cực D của mạch Pushpull trong module inverter 24-220V sine giả của TQ. Mạh điện này khá đặc biêt ở chổ, không thấy mạch snubber mà hiêu quả triêt sóng hài quá tốt dù hoạt...-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 14:27 -
-
bởi chinhnguyen9Mạch điên bếp tù gộm 2 khối:
Khối điêu khiển:
-Thiết lập công suất nấu
-Thiết lập thời gian nấu
-Kiểm tra có đặt nồi hay không, đúng loại hay không?
-Có quá nhiệt không?
Khối công suất:
- Nắn+ lọc điên AC ra 310VDC +loọc nhiểu...-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 14:05 -
-
bởi ittcHi các bác, sau khi được vài lời khuyên thì em có vào lướt web để xem vài mẫu máy, thì ở phần thông số kỹ thuật của máy, thấy họ để vài thông số sau thì em không rành lắm, nhờ các bác giải thích hộ em được không, cụ thể như hình...
-
Channel: Điện tử gia dụng
Hôm qua, 18:34 -

Comment