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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8H2K12U單片機制作電風扇遙控器

[復制鏈接]
跳轉到指定樓層
樓主
利用STC8H2K12U單片機制作電風扇遙控器,遇到問題求助大家幫助。

1、遙控不能控制,遙控頭輸入口P32口和P10口共用,要把P10口設置為高阻輸入。
2、遙控定時功能不正常,
原理圖和PCB圖如下:


問題2,遙控定時關機問題,現在遙控定時按鍵按下,到時不能關機,要再次按下關機鍵才能關機。
程序代碼如下:
中斷定時處理程序如下:
void Intimer1() interrupt 3
{
        static unsigned char cnt = 0;
        static unsigned int cnt1s = 0;
      
        TH1 = 0XFC;  //12MHz 1ms
        TL1 = 0X18;
      
        cnt++;
        if(cnt>=20)
        {
                cnt = 0;
                flag20ms = 1; //20ms
        }
        cnt1s++;
        if(cnt1s>=1000)
        {
                cnt1s = 0;
                if(flag1s<65535)
                {
                        flag1s++;         //1s++
                }
        }
}

遙控對應按鍵處理程序如下:
else if((ircode[2] == 0x02)&&(1==LEDflag)) //+ 遙控定時關機按鍵
                        {
//                                if(flag1s>=10)
//                                {
                                        LEDflag = 0;
                                        LEDSta = 1;               
//                                }                                       
                        }     
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:688428 發表于 2024-9-22 17:17 | 只看該作者
學習了
回復

使用道具 舉報

板凳
ID:161164 發表于 2024-9-22 21:07 | 只看該作者
代碼不全
定時關機按鍵使能定時關機標志位
定時關機標志位使能后才開始計時
時間到,關機,清零計時及定時關機標志位
回復

使用道具 舉報

地板
ID:237797 發表于 2024-9-23 07:44 | 只看該作者
lkc8210 發表于 2024-9-22 21:07
代碼不全
定時關機按鍵使能定時關機標志位
定時關機標志位使能后才開始計時

謝謝你的回答,我直接先試試,再把全部代碼傳上來。
回復

使用道具 舉報

5#
ID:237797 發表于 2024-9-23 07:49 | 只看該作者
lkc8210 發表于 2024-9-22 21:07
代碼不全
定時關機按鍵使能定時關機標志位
定時關機標志位使能后才開始計時
  1. /***********************
  2. OUT(低電平可控硅導通) P54 1     8 P33 P11(蜂鳴器輸出,高電平有效)
  3.                                                                                         VCC 2     7 P32 P10 INTN0(遙控輸入)
  4.                       CAP 3     6 P31
  5.                       GND 4     5 P30(按鍵)

  6. 遙控器鍵碼值
  7.                         01
  8.                        
  9.                         00
  10.                        
  11.                         01                        09
  12.                        
  13.                                         05
  14.                                        
  15.                         02        06        0A
  16.                        
  17.                                         04
  18.                                        
  19.                         03        07        0B
  20.                        
  21.                         40      48
  22.                        
  23.                                         44
  24. ***********************/
  25. #include <STC8h.h>
  26. #include <intrins.h>

  27. /* IO引腳分配定義 */
  28. sbit LED = P5^4;
  29. sbit BUZZ = P3^3;
  30. sbit KEY = P3^0;
  31. bit LEDflag = 0; //0關閉風扇,1打開風扇
  32. unsigned  char LEDSta = 1; //1,關閉風扇
  33. unsigned char i = 0;

  34. bit flag20ms = 0;
  35. unsigned int flag1s;

  36. extern bit irflag;
  37. extern unsigned char ircode[4];
  38. extern void InitInfrared();

  39. void kongzhi();
  40. void Intimer1Init(); //12MHZ12T 1US
  41. void myInit();

  42. void main()
  43. {
  44.         unsigned int cnt = 0;
  45.        
  46.         myInit();
  47.                
  48.         EA = 1;      //開總中斷       
  49.        
  50.         Intimer1Init();
  51.         InitInfrared();   //初始化紅外功能

  52.         LED = 1;
  53.         while (1)
  54.         {
  55.                 if(flag20ms==1)
  56.                 {
  57.                         flag20ms = 0;
  58.                         kongzhi();                       
  59.                 }               
  60.         }
  61. }

  62. void myInit()
  63. {
  64.         P_SW2 |= 0X80;
  65.        
  66.         P0M0 = 0XFF;
  67.         P0M1 = 0X00;
  68.         P1M0 = 0x00;
  69.         P1M1 = 0x03;
  70.         P2M0 = 0XFF;
  71.         P2M1 = 0X00;
  72.         P3M0 = 0XFB;
  73.         P3M1 = 0X00;
  74.         P4M0 = 0XFF;
  75.         P4M1 = 0X00;
  76.         P5M0 = 0XFF;
  77.         P5M1 = 0X00;
  78.        
  79.         LED = 1;
  80. }


  81. void Delay20ms(void)        //@11.0592MHz
  82. {
  83.         unsigned char data i, j, k;

  84.         i = 2;
  85.         j = 32;
  86.         k = 60;
  87.         do
  88.         {
  89.                 do
  90.                 {
  91.                         while (--k);
  92.                 } while (--j);
  93.         } while (--i);
  94. }

  95. void kongzhi()
  96. {       
  97.         if (irflag)  //接收到紅外數據時刷新顯示
  98.                 {
  99.                         irflag = 0;
  100.                         if (ircode[2] == 0x01)  //0x01為+鍵碼ON,開風扇
  101.                         {
  102.                                 LEDflag = 1;
  103.                                 LEDSta = 0;
  104.                         }

  105.                         else if (ircode[2] == 0x09)  //0x09為-鍵碼OFF,關風扇
  106.                         {
  107.                                 LEDflag = 0;
  108.                                 LEDSta = 1;
  109.                         }
  110.                         else if ((ircode[2] == 0x40)&&(1==LEDflag))  //0x40為-鍵碼3H,風扇1檔風,最大
  111.                         {
  112.                                 LEDflag = 1;
  113.                                 LEDSta = 2;
  114.                         }
  115.                         else if ((ircode[2] == 0x48)&&(1==LEDflag))  //0x48為-鍵碼5H,風扇2檔風,最次大
  116.                         {
  117.                                 LEDflag = 1;
  118.                                 LEDSta = 3;
  119.                         }
  120.                         else if ((ircode[2] == 0x44)&&(1==LEDflag))  //0x44為-鍵碼8H,風扇3檔風,最小
  121.                         {
  122.                                 LEDflag = 1;
  123.                                 LEDSta = 4;                                                                                               
  124.                         }
  125.                         else if((ircode[2] == 0x02)&&(1==LEDflag)) //+ 遙控定時關機按鍵
  126.                         {
  127.                                 if(flag1s>=10)
  128.                                 {
  129.                                         LEDflag = 0;
  130.                                         LEDSta = 1;               
  131.                                 }                                       
  132.                         }                                       
  133.         }
  134.        
  135.         switch(LEDSta)
  136.         {

  137.                 case 0:LED = 0;break;
  138.                 case 1:LED = 1;break;
  139.                 case 2:LED = 0;break;
  140.                 case 3:LED = 0;
  141.                                         Delay20ms();Delay20ms();Delay20ms();
  142.                                         Delay20ms();Delay20ms();Delay20ms();
  143.                                         Delay20ms();Delay20ms();Delay20ms();
  144.                                         Delay20ms();Delay20ms();Delay20ms();
  145.                                         Delay20ms();
  146.                                         LED = 1;
  147.                                         Delay20ms();break;
  148.                 case 4:LED = 0;
  149.                                         Delay20ms();Delay20ms();Delay20ms();
  150.                                         Delay20ms();Delay20ms();Delay20ms();
  151.                                         Delay20ms();
  152.                                         LED = 1;                                                       
  153.                                         Delay20ms();
  154.                                         break;
  155.                 default:break;
  156.         }
  157. }

  158. void Intimer1Init() //12MHZ12T 1mS
  159. {
  160.         TMOD &= 0X0F;
  161.         TMOD |= 0X10;
  162.         TH1 = 0XFC;
  163.         TL1 = 0X18;
  164.         ET1 = 1;
  165.         TR1 = 1;
  166. }


  167. void Intimer1() interrupt 3
  168. {
  169.         static unsigned char cnt = 0;
  170.         static unsigned int cnt1s = 0;
  171.        
  172.         TH1 = 0XFC;
  173.         TL1 = 0X18;
  174.        
  175.         cnt++;
  176.         if(cnt>=20)
  177.         {
  178.                 cnt = 0;
  179.                 flag20ms = 1;
  180.         }
  181.         cnt1s++;
  182.         if(cnt1s>=1000)
  183.         {
  184.                 cnt1s = 0;
  185.                 if(flag1s<65535)
  186.                 {
  187.                         flag1s++;       
  188.                 }
  189.         }
  190. }

復制代碼
回復

使用道具 舉報

6#
ID:161164 發表于 2024-9-23 09:35 | 只看該作者

回復

使用道具 舉報

7#
ID:237797 發表于 2024-9-23 19:19 | 只看該作者

謝謝你的幫助,可以實現定時了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品99久久久久久久久 | 日韩一区二区在线视频 | 91精品国产一区二区三区动漫 | 懂色av一区二区三区在线播放 | 久久久91精品国产一区二区三区 | 精品综合| 国产色片在线 | 天天操天天干天天曰 | 天天爽夜夜爽精品视频婷婷 | 精品一区二区在线观看 | 国产精品美女www爽爽爽 | 99re热这里只有精品视频 | 欧美精品影院 | 国产精品久久国产精品 | 九九一级片| 欧美激情精品久久久久久变态 | 精品国产乱码久久久久久丨区2区 | 亚洲天堂av网 | 日韩精品中文字幕一区二区三区 | 国产一区二区三区 | av乱码 | 久久亚洲综合 | 国产欧美日韩一区二区三区在线 | 精品伊人 | 二区三区在线观看 | 可以在线看的黄色网址 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久草福利 | 日韩一二三 | 亚洲国产日韩一区 | 国产激情视频在线 | 乳色吐息在线观看 | 日韩一区二区在线播放 | 亚洲国产精品成人 | 欧美a在线看 | 欧美久久久久 | 国产综合精品一区二区三区 | 亚洲精品电影在线观看 | 日韩毛片在线免费观看 | 精品乱子伦一区二区三区 | 精品亚洲视频在线 |