欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STC8H2K12U單片機(jī)制作電風(fēng)扇遙控器 [打印本頁(yè)]

作者: lclbf    時(shí)間: 2024-9-22 11:33
標(biāo)題: STC8H2K12U單片機(jī)制作電風(fēng)扇遙控器
利用STC8H2K12U單片機(jī)制作電風(fēng)扇遙控器,遇到問(wèn)題求助大家?guī)椭?br />
1、遙控不能控制,遙控頭輸入口P32口和P10口共用,要把P10口設(shè)置為高阻輸入。
2、遙控定時(shí)功能不正常,
原理圖和PCB圖如下:


問(wèn)題2,遙控定時(shí)關(guān)機(jī)問(wèn)題,現(xiàn)在遙控定時(shí)按鍵按下,到時(shí)不能關(guān)機(jī),要再次按下關(guān)機(jī)鍵才能關(guān)機(jī)。
程序代碼如下:
中斷定時(shí)處理程序如下:
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++
                }
        }
}

遙控對(duì)應(yīng)按鍵處理程序如下:
else if((ircode[2] == 0x02)&&(1==LEDflag)) //+ 遙控定時(shí)關(guān)機(jī)按鍵
                        {
//                                if(flag1s>=10)
//                                {
                                        LEDflag = 0;
                                        LEDSta = 1;               
//                                }                                       
                        }     

作者: yejin007    時(shí)間: 2024-9-22 17:17
學(xué)習(xí)了
作者: lkc8210    時(shí)間: 2024-9-22 21:07
代碼不全
定時(shí)關(guān)機(jī)按鍵使能定時(shí)關(guān)機(jī)標(biāo)志位
定時(shí)關(guān)機(jī)標(biāo)志位使能后才開(kāi)始計(jì)時(shí)
時(shí)間到,關(guān)機(jī),清零計(jì)時(shí)及定時(shí)關(guān)機(jī)標(biāo)志位
作者: lclbf    時(shí)間: 2024-9-23 07:44
lkc8210 發(fā)表于 2024-9-22 21:07
代碼不全
定時(shí)關(guān)機(jī)按鍵使能定時(shí)關(guān)機(jī)標(biāo)志位
定時(shí)關(guān)機(jī)標(biāo)志位使能后才開(kāi)始計(jì)時(shí)

謝謝你的回答,我直接先試試,再把全部代碼傳上來(lái)。
作者: lclbf    時(shí)間: 2024-9-23 07:49
lkc8210 發(fā)表于 2024-9-22 21:07
代碼不全
定時(shí)關(guān)機(jī)按鍵使能定時(shí)關(guān)機(jī)標(biāo)志位
定時(shí)關(guān)機(jī)標(biāo)志位使能后才開(kāi)始計(jì)時(shí)
  1. /***********************
  2. OUT(低電平可控硅導(dǎo)通) 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關(guān)閉風(fēng)扇,1打開(kāi)風(fēng)扇
  32. unsigned  char LEDSta = 1; //1,關(guān)閉風(fēng)扇
  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;      //開(kāi)總中斷       
  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)  //接收到紅外數(shù)據(jù)時(shí)刷新顯示
  98.                 {
  99.                         irflag = 0;
  100.                         if (ircode[2] == 0x01)  //0x01為+鍵碼ON,開(kāi)風(fēng)扇
  101.                         {
  102.                                 LEDflag = 1;
  103.                                 LEDSta = 0;
  104.                         }

  105.                         else if (ircode[2] == 0x09)  //0x09為-鍵碼OFF,關(guān)風(fēng)扇
  106.                         {
  107.                                 LEDflag = 0;
  108.                                 LEDSta = 1;
  109.                         }
  110.                         else if ((ircode[2] == 0x40)&&(1==LEDflag))  //0x40為-鍵碼3H,風(fēng)扇1檔風(fēng),最大
  111.                         {
  112.                                 LEDflag = 1;
  113.                                 LEDSta = 2;
  114.                         }
  115.                         else if ((ircode[2] == 0x48)&&(1==LEDflag))  //0x48為-鍵碼5H,風(fēng)扇2檔風(fēng),最次大
  116.                         {
  117.                                 LEDflag = 1;
  118.                                 LEDSta = 3;
  119.                         }
  120.                         else if ((ircode[2] == 0x44)&&(1==LEDflag))  //0x44為-鍵碼8H,風(fēng)扇3檔風(fēng),最小
  121.                         {
  122.                                 LEDflag = 1;
  123.                                 LEDSta = 4;                                                                                               
  124.                         }
  125.                         else if((ircode[2] == 0x02)&&(1==LEDflag)) //+ 遙控定時(shí)關(guān)機(jī)按鍵
  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. }

復(fù)制代碼

作者: lkc8210    時(shí)間: 2024-9-23 09:35


作者: lclbf    時(shí)間: 2024-9-23 19:19
lkc8210 發(fā)表于 2024-9-23 09:35

謝謝你的幫助,可以實(shí)現(xiàn)定時(shí)了。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1