久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5502|回復: 1
打印 上一主題 下一主題
收起左側

使用STC15F104E單片機做的紅外遙控解碼調光程序 PWM輸出頻率65Hz

[復制鏈接]
跳轉到指定樓層
樓主
ID:231904 發表于 2017-9-8 14:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /******************************************************************************************
  2. 遙控調光,PWM輸出頻率65Hz.
  3. ******************************************************************************************/
  4. #include <reg52.h>

  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. #define BAUD     0xfb00          //  原先是0xef00
  8. //#define BAUD     0xFE80
  9. #define IAP_ADDRESS 0x800
  10. //#define ENABLE_IAP  0x82            //if SYSCLK<20MHz

  11. /*Declare SFR associated with the IAP */
  12. sfr IAP_DATA       =   0xC2;       //Flash data register
  13. sfr IAP_ADDRH      =   0xC3;       //Flash address HIGH
  14. sfr IAP_ADDRL      =   0xC4;       //Flash address LOW
  15. sfr IAP_CMD        =   0xC5;       //Flash command register
  16. sfr IAP_TRIG       =   0xC6;       //Flash command trigger
  17. sfr IAP_CONTR      =   0xC7;       //Flash control register

  18. sfr AUXR = 0x8E;
  19. sbit RXB = P3^0;                                  //define UART TX/RX port
  20. sbit TXB = P3^1;
  21. sbit k1=P3^0;

  22. sbit k3=P3^2;

  23. sbit key1=P3^4;
  24. sbit key2=P3^5;
  25. sbit key3=P3^1;
  26. sbit key4=P3^3;
  27. typedef bit BOOL;
  28. typedef unsigned char BYTE;
  29. typedef unsigned int WORD;
  30. BYTE t, r;
  31. BYTE buf[16];
  32. BYTE TBUF,RBUF;
  33. BYTE TDAT,RDAT;
  34. BYTE TCNT,RCNT;
  35. BYTE TBIT,RBIT;
  36. BOOL TING,RING;
  37. BOOL TEND,REND;
  38. //uchar test;
  39. uchar j=0;
  40. uchar last=0;
  41. uchar b=0;

  42. uchar count2=0;
  43. uchar fang=0;
  44. uchar power=0;
  45. uint k;
  46. uchar i;
  47. uchar a,b;
  48. uint  count=0;
  49. uchar count_close=0;
  50. uchar read_buff[6];
  51. //void IapIdle();  //摸擬串口要用到
  52. //-----------------------------------------------------
  53. void delay(unsigned int t)                // 延時函數
  54. {
  55.   for(;t!=0;t--) ;
  56. }
  57. uchar read()
  58. {
  59.                 count=0;
  60.                 j=0;
  61.                    while(k3==0)        //低  9ms
  62.                 {
  63.                         count++;
  64.                 }
  65.                    if(count<850)          //9ms  應該大于6400
  66.                 {
  67.                         goto pp2;
  68.                 }
  69.                 count=0;
  70.                                   
  71.                    while(k3==1)   //高        4.5ms
  72.                 {
  73.                         count++;
  74.                         if(count>4000)
  75.                         {
  76.                                 goto pp2;
  77.                         }
  78.        
  79.                 }
  80.                
  81.                 if(count<2000)
  82.                 {
  83.                         goto pp2;
  84.                 }       
  85.                 for(b=0;b<4;b++)        ////接收來自遙控器的3個碼
  86.                 {       
  87.                        
  88.                         for(a=0;a<8;a++)  
  89.                         {
  90.                                 delay(50);  //低
  91.                                
  92.                                 while(k3==0)
  93.                                 {
  94.                                         count++;
  95.                                         if(count>10000)
  96.                                         {
  97.                                                 goto pp2;
  98.                                         }
  99.                                 }
  100.                                
  101.                                 j>>=1;
  102.                                 count=0;
  103.                                 while(k3==1)//高
  104.                                    {
  105.                                         count++;
  106.                                         if(count>10000)
  107.                                         {
  108.                                                 goto pp2;
  109.                                         }
  110.                                    }
  111.                                
  112.                                 if(count>500)
  113.                                 {
  114.                                         j|=0x80;
  115.                                 }
  116.                         }           
  117.                         read_buff[b]=j;  
  118.                 }
  119.                
  120.         pp1:if(read_buff[2]<28)
  121.                 {
  122.                         j=fang=read_buff[2];
  123.                 }
  124.                 else
  125.                 {
  126.                         j=0xff;
  127.                    }
  128.                 delay(50000);
  129.         pp2:delay(50000);
  130.                 return j;
  131.        
  132.        
  133.                
  134. }

  135. /********************************************************************************/
  136. void tm0() interrupt 1 using 2
  137. {

  138.         count2++;
  139.         if(count2>49)
  140.         count2=0;
  141.         if(count2<count_close)
  142.         {
  143.                 k1=1;
  144. //                k2=1;
  145. //                k4=1;
  146.         }
  147.         else
  148.         {
  149.                 k1=0;
  150.         //        k2=0;
  151.         //        k4=0;
  152.         }
  153.         /*
  154.         if(i==1)//用于識別遙控器是否長按下
  155.         {
  156.                 k++;
  157.                 if(k>15000)
  158.                 {
  159.                         k=15500;
  160.                         i=0;
  161.                 }
  162.         } */
  163.        
  164. }  

  165. /*******************************************************************************/
  166. main()
  167. {
  168.        

  169.        
  170.                  //P3M0=0X08;
  171.                
  172.                 TMOD = 0x00;                            //timer0 in 16-bit auto reload mode
  173.         AUXR = 0x80;                            //timer0 working at 1T mode
  174.         TL0 = BAUD;
  175.         TH0 = BAUD>>8;                          //initial timer0 and set reload value
  176.         TR0 = 1;                                //tiemr0 start running
  177.         ET0 = 1;                                //enable timer0 interrupt
  178.         PT0 = 1;                                //improve timer0 interrupt priority
  179.                TING = 1;
  180.         RING = 0;
  181.         TEND = 0;
  182.         REND = 0;
  183.         TCNT = 0;
  184.         RCNT = 0;
  185.                 EX0=0;
  186.                 PX0=1;   
  187.                 EA = 1;
  188.                 power=1;
  189.                 count_close=0;
  190.                
  191.          while(1)
  192.         {               
  193.                 if(k3==0)
  194.                 {
  195.                         last=read();
  196.                                        
  197.                 }
  198.                         if(last==11)          //亮度增加
  199.                         {
  200.                                 if(power==1)
  201.                                 {
  202.                                         last=0xff;
  203.                                         i=1;
  204.                                         if(count_close>50)          //  原先是40
  205.                                         {
  206.                                                 count_close=50;
  207.                                         }
  208.                                         if(count_close>0)
  209.                                         {
  210.                                                 count_close--;
  211.                                         }
  212.                                         if(count_close<1)
  213.                                         count_close=0;
  214.                                 }
  215.                         }
  216.                         if(last==19)                   //亮度減少
  217.                         {
  218.                                 if(power==1)
  219.                                 {
  220.                                         last=0xff;
  221.                                         i=1;
  222.                                         if(count_close>50)          //  原先是40
  223.                                         {
  224.                                                 count_close=50;
  225.                                         }
  226.                                         count_close++;
  227.                                 }
  228.                         }
  229.                        
  230.                         if(last==23)                //熄滅
  231.                         {
  232.                                 last=0xff;
  233.                                 power=0;
  234.                                 count_close=50;                 //  原先是40
  235.                         }
  236.                         if(last==27)        //開燈       
  237.                         {
  238.                                 last=0xff;
  239.                                 power=1;
  240.                                 count_close=0;
  241.                         }
  242.                          
  243.                         if(last==0x04)               
  244.                         {
  245.                                 if(power==1)
  246.                                 {
  247. ……………………

  248. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
紅外解碼調光.rar (25.58 KB, 下載次數: 99)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:832201 發表于 2024-11-8 10:02 | 只看該作者
感謝了,學習中
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠色网| 国产精品视频一区二区三区 | 欧美一区二区三区四区五区无卡码 | 日韩av手机在线观看 | 91精品久久久久久久久99蜜臂 | 亚洲天堂av网 | 国产精品久久久久久久一区二区 | 97超碰人人 | 日韩一区精品 | 日韩乱码一二三 | 亚洲精品乱码久久久久久蜜桃91 | 狠狠夜夜 | 一区二区三区四区电影 | 日韩视频国产 | 91久久精品视频 | 在线观看免费福利 | 91就要激情 | 成人久久久 | av电影一区 | 91在线第一页 | 99久久免费精品 | 久久久久九九九九 | 国产精品久久久久久52avav | 亚洲手机视频在线 | 午夜一区二区三区 | 欧美福利三区 | 亚洲国产精品久久 | 日韩一级在线 | 国产欧美日韩精品在线观看 | 北条麻妃视频在线观看 | 久久亚洲综合 | 高清欧美性猛交xxxx黑人猛交 | 国产一区二区a | 亚洲国产精品一区二区www | 国产美女一区二区 | 精品视频一区二区三区在线观看 | 亚洲成人高清 | 日本久久久久久 | 北条麻妃一区二区三区在线视频 | 91资源在线 | 91视频网|