|
前段時間,朋友做了一個遙控臺燈,我用了一個遙控器好用,但是為啥用另外一個海信電視機上的遙控就不好用呢,遙控器是好的,上網看說是有紅外遙控器按編碼格式分兩種。我的那種是日本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)
- {
-
- ……余下詳見附件(下載附件不要黑幣的)
復制代碼 |
|