|
前段时间,朋友做了一个遥控台灯,我用了一个遥控器好用,但是为啥用另外一个海信电视机上的遥控就不好用呢,遥控器是好的,上网看说是有红外遥控器按编码格式分两种。我的那种是日本NEC的uPD6121G组成的发射电路,大家帮帮忙告诉我一下另外一种遥控的用法,最好能给个程序参考一下,或者我的程序修改哪些地方就可以实现,谢谢
另外我把我现在用的程序发上来,希望能帮助一下新手
- /************************* 说 明 *********************************/
- /* 以一个9ms的低电平和4.5ms的高电平为引导码,后跟32位二进制代码 */
- /* 前16位为8位用户码及其反码,后16位为8位的操作码及其反码 */
- /* 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示"0"; */
- /* 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示"1"。 */
- /* 注意:接收码的脉宽与间隔是对发射码取反的,即间隔是0.565ms */
- /******************************************************************/
- #include<reg52.h>
- #define uchar unsigned char
- uchar data IRcode[4]; //定义一个4字节的数组用来存储代码
- uchar zima[]={"abcd"};
- uchar CodeTemp; //编码字节缓存变量
- uchar i,j,k; //延时用的循环变量
- sbit IRsignal=P3^2; //HS0038接收头OUT端直接连P3.2(INT0)
- sbit p21=P0^1;
- sbit p22=P0^2;
- sbit p23=P0^3;
- sbit p24=P0^4;
- sbit p25=P0^5;
- sbit p26=P0^6;
- sbit p27=P0^7;
- sbit p28=P1^0;
- /**************************延时0.9ms子程序**********************/
- void Delay0_9ms(void)
- {
- uchar j,k;
- for(j=18;j>0;j--)
- for(k=20;k>0;k--) ;
- }
- /****************************************通过串口把代码发送******/
- void send(void)
- {
- // for(i=0;i<4;i++) //通过串口将代码发出
- {
- SBUF=IRcode[2];
- while(!TI); //等待一个字节发送完毕
- TI=0;
- }
- }
- void send1(void)
- {
-
- ……余下详见附件(下载附件不要黑币的)
复制代码 |
|