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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 12060|回復(fù): 23
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的紅外智能風(fēng)扇程序+電路 超簡(jiǎn)單

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
實(shí)用STC12C5A60S2型號(hào)的單片機(jī),實(shí)現(xiàn)三檔風(fēng)速,利用單片機(jī)內(nèi)部定時(shí)器智能定時(shí),可切換自然風(fēng)和正常風(fēng),使用市場(chǎng)上常見(jiàn)的小遙控器。

電路原理圖如下:

制作出來(lái)的實(shí)物圖如下:



單片機(jī)源程序如下:
  1. #include<STC12C5A60S2.H> //頭文件
  2. #include <stc_pwm.H>  
  3. /*====================================
  4. 自定義類型名
  5. ====================================*/
  6. typedef unsigned char INT8U;
  7. typedef unsigned char uchar;

  8. typedef unsigned int INT16U;
  9. typedef unsigned int uint;

  10. sbit PWM_1                =        P1^4;       //PWM1_Boost/Buck   
  11. sbit enlarge        =        P3^0;    //增大
  12. sbit reduce                =        P3^1;       //減小



  13. /*====================================
  14. 硬件接口位聲明
  15. ====================================*/
  16. sbit IR  = P3^2;     //定義紅外脈沖數(shù)據(jù)接口        外部中斷O輸入口
  17. sbit beep = P2^3;                //蜂鳴器的位置
  18. sbit NPN1 = P1^1;      //電機(jī) 低檔
  19. sbit NPN2 = P1^2;      //電機(jī) 中檔
  20. sbit NPN3 = P1^3;      //電機(jī) 高檔

  21. sbit NPNhuxi = P1^5;      //電機(jī) 呼吸風(fēng)

  22. /**************************************
  23. 1602液晶
  24. **************************************/
  25. sbit RS = P2^5;                 
  26. sbit RW =  P2^6;
  27. sbit E  =  P2^4;

  28. uchar IRtime;                 //檢測(cè)紅外高電平持續(xù)時(shí)間(脈寬)
  29. uchar IRcord[4];    //此數(shù)組用于儲(chǔ)存分離出來(lái)的4個(gè)字節(jié)的數(shù)據(jù)(用戶碼2個(gè)字節(jié)+鍵值碼2個(gè)字節(jié))
  30. uchar IRdata[33];   //此數(shù)組用于儲(chǔ)存紅外的33位數(shù)據(jù)(第一位為引導(dǎo)碼用戶碼16+鍵值碼16)
  31. bit IRpro_ok, IRok;  //第一個(gè)用于紅外接收4個(gè)字節(jié)完畢。IRok用為檢測(cè)脈寬完畢


  32. void delay4(uchar t)
  33. {
  34.         uint j;
  35.         uchar i;
  36.         for(i=0;i<t;i++)
  37.                 for(j=0;j<1000;j++);
  38. }
  39. //毫秒級(jí)延時(shí)
  40. void delay(unsigned int z)
  41. {
  42.         unsigned int x,y;
  43.         for(x = z; x > 0; x--)
  44.                 for(y = 114; y > 0 ; y--);
  45. }

  46. void time0() interrupt 1   //定義定時(shí)器0
  47. {
  48.         IRtime++;                            //檢測(cè)脈寬,1次為278us
  49. }
  50. void int0() interrupt 0                          //定義外部中斷0
  51. {
  52.         static uchar i;                                 //        聲明靜態(tài)變量(在跳出函數(shù)后在回來(lái)執(zhí)行的時(shí)候不會(huì)丟失數(shù)值)i用于把33次高電平的持續(xù)時(shí)間存入IRdata
  53.         static bit startflag;                //開(kāi)始儲(chǔ)存脈寬標(biāo)志位
  54.         if(startflag)                                 //開(kāi)始接收脈寬檢測(cè)
  55.         {
  56.                 if( (IRtime < 53) && (IRtime >= 32) ) /*判斷是否是引導(dǎo)碼,底電平9000us+高4500us        
  57.                 這個(gè)自己可以算我以11.0592來(lái)算了NEC協(xié)議的引導(dǎo)碼低8000-10000+高4000-5000
  58.                 如果已經(jīng)接收了引導(dǎo)碼那么i不會(huì)被置0就會(huì)開(kāi)始依次存入脈寬*/
  59.                         i = 0;                                 //如果是引導(dǎo)碼那么執(zhí)行i=0把他存到IRdata的第一個(gè)位
  60.                 IRdata[i] = IRtime;                   //以T0的溢出次數(shù)來(lái)計(jì)算脈寬,把這個(gè)時(shí)間存到數(shù)組里面到后面判斷
  61.                 IRtime = 0;                                 //計(jì)數(shù)清零,下一個(gè)下降沿的時(shí)候在存入脈寬
  62.                 i++;                                          //計(jì)數(shù)脈寬存入的次數(shù)
  63.                 if(i == 33)                                  //如果存入34次 數(shù)組的下標(biāo)是從0開(kāi)始i等于33表示執(zhí)行了34次
  64.                 {
  65.                          IRok = 1;                                 //那么表示脈寬檢測(cè)完畢
  66.                         i = 0;                                  //把脈寬計(jì)數(shù)清零準(zhǔn)備下次存入
  67.                 }
  68.         }
  69.         else                  
  70.         {
  71.                 IRtime = 0;                                  //引導(dǎo)碼開(kāi)始進(jìn)入把脈寬計(jì)數(shù)清零開(kāi)始計(jì)數(shù)
  72.                 startflag = 1;                         //開(kāi)始處理標(biāo)志位置1
  73.         }
  74. }
  75. void IRcordpro()                                    //提取它的33次脈寬進(jìn)行數(shù)據(jù)解碼
  76. {
  77.         uchar i, j, k, cord, value;        /*i用于處理4個(gè)字節(jié),j用于處理一個(gè)字節(jié)中每一位,k用于33次脈寬中的哪一位
  78.         cord用于取出脈寬的時(shí)間判斷是否符合1的脈寬時(shí)間*/
  79.         k = 1;                                                 //從第一位脈寬開(kāi)始取,丟棄引導(dǎo)碼脈寬
  80.         for(i = 0; i < 4; i++)
  81.         {
  82.                 for(j = 0; j < 8; j++)
  83.                 {
  84.                         cord = IRdata[k];            //把脈寬存入cord
  85.                         if(cord > 5)                         //如果脈寬大于我11.0592的t0溢出率為約278us*5=1390那么判斷為1
  86.                         value = value | 0x80;        /*接收的時(shí)候是先接收最低位,
  87.                         把最低位先放到value的最高位在和0x08按位或一下
  88.                         這樣不會(huì)改變valua的其他位的數(shù)值只會(huì)讓他最高位為1*/
  89.                         if(j < 7)
  90.                         {
  91.                                 value = value >> 1;        //value位左移依次接收8位數(shù)據(jù)。
  92.                         }
  93.                         k++;                                //每執(zhí)行一次脈寬位加1
  94.                 }
  95.                 IRcord[i] = value;           //每處理完一個(gè)字節(jié)把它放入IRcord數(shù)組中。
  96.                 value = 0;                            //清零value方便下次在存入數(shù)據(jù)
  97.         }
  98.         IRpro_ok = 1;                                   //接收完4個(gè)字節(jié)后IRpro ok置1表示紅外解碼完成        
  99. }



  100. void init_pwm()
  101. {
  102.   CCON = 0;
  103.         CL = 0;
  104.         CH = 0;
  105.         CMOD = 0X08; //0X08:43KHZ // 0X02,22KHZ // 0X0A,10KHZ //
  106.         CCAPM1        =0x42;//8位PWM輸出,無(wú)中斷
  107.         CCAP1H=255;//占空比控制
  108.         CCAP1L=255;
  109.         CR=1;
  110. }
  111. //呼吸風(fēng)

  112. /**************************************
  113. 短延時(shí)
  114. **************************************/
  115. void delay5ms()   
  116. {
  117.     uchar i,v,k;
  118.     for(i=1;i>0;i--)
  119.         for(v=168;v>0;v--)
  120.             for(k=22;k>0;k--);
  121. }
  122. /**************************************
  123. 寫(xiě)指令
  124. **************************************/
  125. void lcd_Write_com(uchar com)         
  126. {
  127.         RS=0;                        //定義指令寄存器
  128.         RW=0;                                  //寫(xiě)允許
  129.         P0=com;                                          //寫(xiě)指令
  130.         delay5ms();        E=1;                //片選端上拉
  131.         delay5ms();        E=0;                //下降沿鎖存
  132. }
  133. /**************************************
  134. 寫(xiě)數(shù)據(jù)
  135. **************************************/
  136. void lcd_write_date(uchar date)        
  137. {
  138.         RS=1;                                        //定義數(shù)據(jù)寄存器
  139.         RW=0;                                        //寫(xiě)允許
  140.         P0=date;                                //寫(xiě)數(shù)據(jù)
  141.         delay5ms();        E=1;                //片選端上拉
  142.         delay5ms();        E=0;                //下降沿鎖存
  143. }
  144. /**************************************
  145. 顯示程序
  146. **************************************/
  147. void dis_lcd1602(uchar x,uchar y,uchar dat)
  148. {
  149.         uchar add;
  150.         if(y==1)         add=(0x80+x);
  151.         if(y==2)         add=(0xc0+x);
  152.         lcd_Write_com(add);                //寫(xiě)指令
  153.         lcd_write_date(dat);        //寫(xiě)數(shù)據(jù)
  154. }  
  155. /**************************************
  156. 液晶初始化
  157. **************************************/
  158. void lcd1602_init()
  159. {
  160.         lcd_Write_com(0x38);        //設(shè)置8位格式,2行,5*7
  161.         lcd_Write_com(0x01);        //清屏
  162.         lcd_Write_com(0x0c);        //整體顯示,關(guān)光標(biāo),不閃爍
  163.         lcd_Write_com(0x06);        //設(shè)定輸入方式,增量不移位
  164.         lcd_Write_com(0x80);        //初始坐標(biāo)
  165. }
  166. /**************************************
  167. 液晶顯示漢字程序
  168. **************************************/
  169. void hz_lcdDis(uchar x,uchar y,uchar *p) //漢字顯示
  170. {
  171.    uchar i=0,temp;
  172.    if(x)temp = 0x40;   else temp = 0;
  173.    for(i=y;*p!='\0';i++,p++)
  174.    {
  175.                 lcd_Write_com(i|0x80+temp);
  176.                 lcd_write_date(*p);
  177.                 delay5ms();                          
  178.    }
  179. }
  180. /**************************************
  181. 液晶顯示數(shù)字程序
  182. **************************************/
  183. void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)        
  184. {
  185.         uint i=0,temp,hang;   
  186.         n +=1;
  187.            if(X)hang = 0x40;else hang = 0;
  188.            for(i=(n-1);i>0;i--)
  189.     {           
  190.                   lcd_Write_com((i+Y-1)|0x80+hang);          //從個(gè)位開(kāi)始顯示
  191.                   temp = num%10+0x30;
  192.                   lcd_write_date(temp);        
  193.                  
  194.                   num/=10;                                         
  195.         }        
  196. }

  197. void  displayTime30(unsigned int z){
  198.         uchar a=0; //50次數(shù)計(jì)數(shù)
  199.         uchar b=0;//秒計(jì)數(shù)
  200.         TR1 = 1;//啟動(dòng)T1
  201.         beep = 0; delay(15); beep = 1;
  202. while(1)
  203.                 {
  204.                         if(TF1 == 1)//判斷T1是否溢出
  205.                         {
  206.                                 TH1 = 0x4b;
  207.                                 TL1 = 0xfc;//0x4bfc        定時(shí)50ms
  208.                                 TF1 = 0;//清零便于下次判斷
  209.                                 a++;//50毫秒計(jì)數(shù)加1        
  210.                         }
  211.                         if(a == 20)//判斷是否到1秒
  212.                         {
  213.                                 a = 0;//清零便于下次記錄50ms的次數(shù)
  214.                                 b++;//秒加1
  215.                         }
  216.                                 num_lcdDis(1,12,b,3);
  217.                 //        display(b);//顯示秒的值

  218.                         if(b == z)//檢查是否到20秒
  219.                         {
  220.                                 TR1 = 0;//時(shí)間到關(guān)閉定時(shí)器1
  221.                            NPN1=0; NPN2=0;  NPN3=0;;  //引腳高電平
  222.                                            CCAP1H=255;//占空比控制
  223.                                          CCAP1L=255;
  224.                                 delay(10);
  225.                             break ;
  226.                         }
  227.                            if(IRok)    //判斷脈寬是否檢測(cè)完畢                    
  228.                 {   
  229.                         IRcordpro();//根據(jù)脈寬解碼出4個(gè)字節(jié)的數(shù)據(jù)
  230.                         IRok = 0;        //重新等待脈寬檢測(cè)
  231.                         if(IRpro_ok) //判斷是否解碼完畢  
  232.                         {
  233.                        if(IRcord[2]==0x18)
  234.                                    {
  235.                                     
  236.                                        
  237.                                  NPN1=0; NPN2=0;  NPN3=0;
  238.                                  CCAP1H=255;//占空比控制
  239.                                  CCAP1L=255;
  240.                                         hz_lcdDis(0,0,"Close");
  241.                                         beep = 0; delay(15); beep = 1;        //按鍵 上 按鍵返回
  242.                                     break;

  243.                                    }
  244.                                 IRpro_ok = 0;
  245.                         }
  246.                 }        
  247.                         
  248.                 }
  249. }


  250. void  displayTime30huxi(unsigned int z){
  251.         uchar a=0; //50次數(shù)計(jì)數(shù)
  252.         uchar b=0;//秒計(jì)數(shù)
  253.         TR1 = 1;//啟動(dòng)T1
  254.         beep = 0; delay(15); beep = 1;
  255.     while(1)
  256.                 {
  257.                         if(TF1 == 1)//判斷T1是否溢出
  258.                         {
  259.                                 TH1 = 0x4b;
  260.                                 TL1 = 0xfc;//0x4bfc        定時(shí)50ms
  261.                                 TF1 = 0;//清零便于下次判斷
  262.                                 a++;//50毫秒計(jì)數(shù)加1        
  263.                                 NPN1=1; NPN2=0;  NPN3=0;
  264.                                 delay(100);
  265.                                 NPN1=0; NPN2=1;  NPN3=0;
  266.                                 delay(100);
  267.                                 NPN1=0; NPN2=0;  NPN3=1;
  268.                                 delay(100);
  269.                                 
  270.                         }
  271.                         if(a == 20)//判斷是否到1秒
  272.                         {
  273.                             NPN1=0; NPN2=0;  NPN3=1;
  274.                                 delay(100);
  275.                                 NPN1=0; NPN2=1;  NPN3=0;
  276.                                 delay(100);
  277.                                 NPN1=1; NPN2=0;  NPN3=0;
  278.                                 delay(100);
  279.                                 a = 0;//清零便于下次記錄50ms的次數(shù)
  280.                                 b++;//秒加1
  281.                         }
  282.                         num_lcdDis(1,12,b,3);
  283.                 //        display(b);//顯示秒的值

  284.                         if(b == z)//檢查是否到20秒
  285.                         {
  286.                                 TR1 = 0;//時(shí)間到關(guān)閉定時(shí)器1
  287.                              NPN1=0; NPN2=0;  NPN3=0; NPNhuxi=0;
  288.                                  CCAP1H=255;//占空比控制
  289.                                          CCAP1L=255;
  290.                                 delay(10);
  291.                             break ;
  292.                         }
  293.                            if(IRok)    //判斷脈寬是否檢測(cè)完畢                    
  294.                 {   
  295.                         IRcordpro();//根據(jù)脈寬解碼出4個(gè)字節(jié)的數(shù)據(jù)
  296.                         IRok = 0;        //重新等待脈寬檢測(cè)
  297.                         if(IRpro_ok) //判斷是否解碼完畢  
  298.                         {
  299.                        if(IRcord[2]==0x18)
  300.                                    {
  301.                                     
  302.                                        
  303.                                   NPN1=0; NPN2=0;  NPN3=0; NPNhuxi=0;
  304.                                   CCAP1H=255;//占空比控制
  305.                                  CCAP1L=255;
  306.                                         hz_lcdDis(0,0,"Close");
  307.                                         beep = 0; delay(15); beep = 1;        //按鍵 上 按鍵返回
  308.                                     break;

  309.                                    }
  310.                                 IRpro_ok = 0;
  311.                         }
  312.                 }        
  313.                         
  314.                 }
  315. }
  316. void huxi(){
  317. NPN1=0; NPN2=0;  NPN3=0;

  318. beep = 0; delay(15); beep = 1;
  319. while(1){
  320. NPN1=1; NPN2=0;  NPN3=0;
  321. CCAP1H=254;//占空比控制
  322. CCAP1L=254;
  323. delay(1000);
  324. NPN1=0; NPN2=1;  NPN3=0;
  325. CCAP1H=200;//占空比控制
  326. CCAP1L=200;
  327. delay(1000);
  328. NPN1=0; NPN2=0;  NPN3=1;
  329. CCAP1H=70;//占空比控制
  330. CCAP1L=70;
  331. delay(1000);
  332. NPN1=0; NPN2=0;  NPN3=1;
  333. CCAP1H=70;//占空比控制
  334. CCAP1L=70;
  335. delay(1000);
  336. NPN1=0; NPN2=1;  NPN3=0;
  337. CCAP1H=200;//占空比控制
  338. CCAP1L=200;
  339. delay(1000);
  340. NPN1=1; NPN2=0;  NPN3=0;
  341. CCAP1H=254;//占空比控制
  342. CCAP1L=254;
  343. delay(1000);

  344.                    if(IRok)    //判斷脈寬是否檢測(cè)完畢                    
  345.                 {   
  346.                         IRcordpro();//根據(jù)脈寬解碼出4個(gè)字節(jié)的數(shù)據(jù)
  347.                         IRok = 0;        //重新等待脈寬檢測(cè)
  348.                         if(IRpro_ok) //判斷是否解碼完畢  
  349.                         {
  350.                        if(IRcord[2]==0x18)
  351.                                    {
  352.                                     
  353.                                        
  354.                                   NPN1=0; NPN2=0;  NPN3=0; NPNhuxi=0;
  355.                                         hz_lcdDis(0,0,"Close");
  356.                                         beep = 0; delay(15); beep = 1;        //按鍵 上 按鍵返回
  357.                                     break;

  358.                                    }
  359.                                  if(IRcord[2]==0x45){
  360.                                  beep = 0; delay(15); beep = 1;
  361.                                  displayTime30huxi(5);
  362.                                  beep = 0; delay(15); beep = 1;
  363.                                    break;
  364.                                  }
  365.                                   if(IRcord[2]==0x46){
  366.                                  beep = 0; delay(15); beep = 1;
  367.                                  displayTime30huxi(10);
  368.                                  beep = 0; delay(15); beep = 1;
  369.                                    break;
  370.                                  }
  371.                                   if(IRcord[2]==0x47){
  372.                                  beep = 0; delay(15); beep = 1;
  373.                                  displayTime30huxi(15);
  374.                                  beep = 0; delay(15); beep = 1;
  375.                                    break;
  376.                                  }
  377.                                 IRpro_ok = 0;
  378.                         }
  379.                 }        
  380. }
  381. }


  382. void main()
  383. {        
  384.         init_pwm();
  385.         lcd1602_init();

  386.         NPN1=0; NPN2=0;  NPN3=0;NPNhuxi=0;
  387.         delay(750);
  388.         lcd_Write_com(0x01);        //清屏

  389.         hz_lcdDis(0,0,"Close Timer    Z");
  390.         hz_lcdDis(1,0,"LV=0   Long=000s");

  391.         TR1 = 0;//時(shí)間到關(guān)閉定時(shí)器1
  392.         TR1 = 1;//啟動(dòng)T1
  393.         TMOD |= 0x10;//T1為定時(shí)器,工作模式1 16位計(jì)數(shù)器
  394.         TH1 = 0x4b;
  395.         TL1 = 0xfc;//0x4bfc        定時(shí)50ms
  396.         EA        = 1;//總中斷允許

  397.         TMOD |= 0x02; //定時(shí)器0工作方式2,8位自動(dòng)重裝
  398.         TH0 = 0x00;  //高8位裝入0那么定時(shí)器溢出一次的時(shí)間是256個(gè)機(jī)器周期
  399.         TL0 = 0x00;
  400.         ET0 = 1;           //定時(shí)器0中斷
  401.         TR0 = 1;     //啟動(dòng)定時(shí)器0
  402.         IT0 = 1;           //設(shè)置外部中斷0為跳沿觸發(fā)方式,來(lái)一個(gè)下降沿觸發(fā)一次
  403.         EX0 = 1;           //啟動(dòng)外部中斷0

  404.         //delay(2000);
  405.         while(1)
  406.         {
  407.                
  408.                 if(IRok)    //判斷脈寬是否檢測(cè)完畢                    
  409.                 {   
  410.                         IRcordpro();//根據(jù)脈寬解碼出4個(gè)字節(jié)的數(shù)據(jù)
  411.                         IRok = 0;        //重新等待脈寬檢測(cè)
  412.                         if(IRpro_ok) //判斷是否解碼完畢  
  413.                         {
  414.                         switch(IRcord[2])
  415.                                    {
  416.                                      case 0x45:    //按鍵1         定時(shí)30分鐘
  417.                                          displayTime30(5);
  418.                                          beep = 0; delay(15); beep = 1;
  419.                                      break;

  420.                                      case 0x46:    //按鍵2        定時(shí)1小時(shí)
  421.                                          displayTime30(10);
  422.                                          beep = 0; delay(15); beep = 1;
  423.                                          break;

  424.                                           case 0x47:   //按鍵3        定時(shí)1.5小時(shí)
  425.                                          displayTime30(15);
  426.                                          beep = 0; delay(15); beep = 1;
  427.                                          break;
  428.                                        
  429.                                          case 0x18:           NPN1=0; NPN2=0;  NPN3=0;        NPNhuxi=0;
  430.                                          CCAP1H=255;//占空比控制
  431.                                          CCAP1L=255;
  432.                                          hz_lcdDis(0,0,"Close Timer    Z");
  433.                                          hz_lcdDis(1,0,"LV=0   Long=000s");
  434.                                          beep = 0; delay(15); beep = 1;        //按鍵 上 關(guān)機(jī)按鍵        
  435.                                      break;

  436.                                          case 0x08:           NPN1=1; NPN2=0;  NPN3=0; NPNhuxi=0;
  437.                                          CCAP1H=140;//占空比控制
  438.                                          CCAP1L=140;
  439.                                          hz_lcdDis(0,0,"Open ");
  440.                                          hz_lcdDis(1,3,"1");
  441.                                          beep = 0; delay(15); beep = 1;        //按鍵 左 抵擋速度
  442.                                      break;

  443.                                          case 0x1C:      NPN1=0; NPN2=1;  NPN3=0; NPNhuxi=0;
  444.                                           CCAP1H=190;//占空比控制
  445.                                          CCAP1L=190;
  446.                                           hz_lcdDis(0,0,"Open ");
  447.                                          hz_lcdDis(1,3,"2");
  448.                                          beep = 0; delay(15); beep = 1;  //按鍵 中 中擋速度        
  449.                                      break;

  450.                                          case 0x5A:             NPN1=0; NPN2=0;  NPN3=1; NPNhuxi=0;
  451.                                          CCAP1H=254;//占空比控制
  452.                                          CCAP1L=254;
  453.                                           hz_lcdDis(0,0,"Open ");
  454.                                          hz_lcdDis(1,3,"3");
  455.                                          beep = 0; delay(15); beep = 1;        //按鍵 右 高檔速度        
  456.                                      break;
  457.                                           case 0x52:
  458.                                           hz_lcdDis(0,0,"Open ");         
  459.                                           hz_lcdDis(0,15,"H");
  460.                                          hz_lcdDis(1,3,"S");
  461.                                          huxi();
  462.                                          beep = 0; delay(15); beep = 1;        //按鍵 右 呼吸        
  463.                                      break;
  464.                                    }
  465.                                 IRpro_ok = 0;
  466.                         }
  467.                 }        
  468.         
  469.         }
  470. }
復(fù)制代碼

所有資料51hei提供下載:
stc12c5a60s2紅外PWM可調(diào)占空比.zip (52.18 KB, 下載次數(shù): 125)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏19 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:128463 發(fā)表于 2019-5-24 20:01 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:490458 發(fā)表于 2019-5-24 21:56 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

地板
ID:454039 發(fā)表于 2019-11-12 16:15 | 只看該作者
你好,這個(gè)有定時(shí)功能嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:639912 發(fā)表于 2019-11-12 17:10 | 只看該作者
超級(jí)好用
回復(fù)

使用道具 舉報(bào)

6#
ID:546335 發(fā)表于 2019-11-13 16:27 | 只看該作者
很實(shí)用的一個(gè)設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

7#
ID:785221 發(fā)表于 2020-6-20 18:25 | 只看該作者
很有實(shí)用意義的一個(gè)設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

8#
ID:71535 發(fā)表于 2020-8-25 19:14 | 只看該作者
炎熱的夏天這個(gè)設(shè)計(jì)很實(shí)用、
回復(fù)

使用道具 舉報(bào)

9#
ID:808399 發(fā)表于 2020-8-26 08:27 | 只看該作者
compiling main.c...
main.c(1): warning C318: can't open file 'STC12C5A60S2.H'
main.c(2): warning C318: can't open file 'stc_pwm.H'
main.c(12): error C202: 'P1': undefined identifier
main.c(13): error C202: 'P3': undefined identifier
main.c(14): error C202: 'P3': undefined identifier
main.c(21): error C202: 'P3': undefined identifier
main.c(22): error C202: 'P2': undefined identifier
main.c(23): error C202: 'P1': undefined identifier
main.c(24): error C202: 'P1': undefined identifier
main.c(25): error C202: 'P1': undefined identifier 打開(kāi)源碼進(jìn)行編譯,  這么多變量沒(méi)有定義,如何解決。。。。。。
回復(fù)

使用道具 舉報(bào)

10#
ID:63400 發(fā)表于 2020-8-26 10:51 | 只看該作者
sunboy888888 發(fā)表于 2020-8-26 08:27
compiling main.c...
main.c(1): warning C318: can't open file 'STC12C5A60S2.H'
main.c(2): warning C ...

要添加這個(gè)芯片的頭文件
回復(fù)

使用道具 舉報(bào)

11#
ID:808399 發(fā)表于 2020-8-26 13:42 | 只看該作者
在keil中,把#include<STC12C5A60S2.H>頭文件改成   #include<reg51.H>后,兩百多個(gè)提示錯(cuò)誤,變成了36個(gè),但main.c(2): warning C318: can't open file 'stc_pwm.H'
main.c(116): error C202: 'CCON': undefined identifier
main.c(117): error C202: 'CL': undefined identifier
main.c(118): error C202: 'CH': undefined identifier
main.c(119): error C202: 'CMOD': undefined identifier
main.c(120): error C202: 'CCAPM1': undefined identifier
main.c(121): error C202: 'CCAP1H': undefined identifier
main.c(122): error C202: 'CCAP1L': undefined identifier
main.c(123): error C202: 'CR': undefined identifier
main.c(239): error C202: 'CCAP1H': undefined identifier
main.c(240): error C202: 'CCAP1L': undefined identifier
main.c(255): error C202: 'CCAP1H': undefined identifier
main.c(256): error C202: 'CCAP1L': undefined identifier
main.c(309): error C202: 'CCAP1H': undefined identifier
main.c(310): error C202: 'CCAP1L': undefined identifier
main.c(325): error C202: 'CCAP1H': undefined identifier
main.c(326): error C202: 'CCAP1L': undefined identifier
main.c(344): error C202: 'CCAP1H': undefined identifier
main.c(345): error C202: 'CCAP1L': undefined identifier
main.c(348): error C202: 'CCAP1H': undefined identifier
main.c(349): error C202: 'CCAP1L': undefined identifier
main.c(352): error C202: 'CCAP1H': undefined identifier
main.c(353): error C202: 'CCAP1L': undefined identifier
main.c(356): error C202: 'CCAP1H': undefined identifier
main.c(357): error C202: 'CCAP1L': undefined identifier
main.c(360): error C202: 'CCAP1H': undefined identifier
main.c(361): error C202: 'CCAP1L': undefined identifier
main.c(364): error C202: 'CCAP1H': undefined identifier
main.c(365): error C202: 'CCAP1L': undefined identifier
main.c(464): error C202: 'CCAP1H': undefined identifier
main.c(465): error C202: 'CCAP1L': undefined identifier
main.c(472): error C202: 'CCAP1H': undefined identifier
main.c(473): error C202: 'CCAP1L': undefined identifier
main.c(480): error C202: 'CCAP1H': undefined identifier
main.c(481): error C202: 'CCAP1L': undefined identifier
main.c(488): error C202: 'CCAP1H': undefined identifier
main.c(489): error C202: 'CCAP1L': undefined identifier
main.c - 36 Error(s), 1 Warning(s).這些如何解決?請(qǐng)高人指點(diǎn)下。。。
回復(fù)

使用道具 舉報(bào)

12#
ID:808399 發(fā)表于 2020-8-26 13:56 | 只看該作者
我把stc12c5A60s2.H的頭文件改成了      reg51.H      編譯時(shí)從200個(gè)錯(cuò)誤,變成了main.c - 36 Error(s), 1 Warning(s).    這個(gè)頭文件如何處里?如下main.c(2): warning C318: can't open file 'stc_pwm.H'
回復(fù)

使用道具 舉報(bào)

13#
ID:814885 發(fā)表于 2020-8-28 10:49 | 只看該作者
能否請(qǐng)教下 PWM 調(diào)速, PWM 的頻率是多少?
回復(fù)

使用道具 舉報(bào)

14#
ID:595237 發(fā)表于 2020-8-28 16:53 | 只看該作者
sunboy888888 發(fā)表于 2020-8-26 13:56
我把stc12c5A60s2.H的頭文件改成了      reg51.H      編譯時(shí)從200個(gè)錯(cuò)誤,變成了main.c - 36 Error(s), 1  ...

用這個(gè)可以的

STC12C5A60S2.rar

4.14 KB, 下載次數(shù): 21, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

15#
ID:595237 發(fā)表于 2020-8-28 16:54 | 只看該作者
小穎! 發(fā)表于 2020-8-26 10:51
要添加這個(gè)芯片的頭文件

用這個(gè)可以的

STC12C5A60S2.rar

4.14 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

16#
ID:899605 發(fā)表于 2021-4-1 17:31 | 只看該作者
can't open file 'stc_pwm.H'怎么解決?
回復(fù)

使用道具 舉報(bào)

17#
ID:328014 發(fā)表于 2021-4-1 17:45 | 只看該作者
言笑晏晏 發(fā)表于 2021-4-1 17:31
can't open file 'stc_pwm.H'怎么解決?

把14,15樓發(fā)的頭文件加進(jìn)入就編譯ok了

51hei.png (29.95 KB, 下載次數(shù): 135)

51hei.png

stc12c5a60s2紅外PWM可調(diào)占空比.7z

34.58 KB, 下載次數(shù): 15, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

18#
ID:899605 發(fā)表于 2021-4-1 18:23 | 只看該作者
51hei團(tuán)團(tuán) 發(fā)表于 2021-4-1 17:45
把14,15樓發(fā)的頭文件加進(jìn)入就編譯ok了

14 15樓發(fā)的是同一個(gè)頭文件吧  已經(jīng)加進(jìn)去了啊  還是報(bào)錯(cuò)  還是同樣的不能打開(kāi)stc_pwm.h
C:\Users\Administrator\Desktop
回復(fù)

使用道具 舉報(bào)

19#
ID:731755 發(fā)表于 2021-4-3 18:20 | 只看該作者
樓主真的是個(gè)有心人,結(jié)構(gòu)清晰,標(biāo)注詳細(xì)
回復(fù)

使用道具 舉報(bào)

20#
ID:899605 發(fā)表于 2021-4-6 13:57 | 只看該作者
這個(gè)用什么板子可以燒錄出來(lái)。
是要用自己做的板子還是可以網(wǎng)上買啊?
回復(fù)

使用道具 舉報(bào)

21#
ID:915425 發(fā)表于 2021-5-7 22:26 來(lái)自觸屏版 | 只看該作者
謝謝分享,51黑有你更精彩!
回復(fù)

使用道具 舉報(bào)

22#
ID:917603 發(fā)表于 2021-5-8 15:29 | 只看該作者
謝謝分享,51黑有你更精彩!
回復(fù)

使用道具 舉報(bào)

23#
ID:832201 發(fā)表于 2021-5-11 12:27 | 只看該作者
不錯(cuò)的創(chuàng)意,牛啊
回復(fù)

使用道具 舉報(bào)

24#
ID:981872 發(fā)表于 2021-11-17 16:18 | 只看該作者

謝謝解決問(wèn)題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人av在线大片 | 亚洲 欧美 激情 另类 校园 | 亚洲精品第一 | 韩国精品一区 | 在线看av网址 | 日韩久草| 在线久草| 久久国产精品一区二区 | 免费在线性爱视频 | 成人在线精品视频 | 日韩av美女电影 | 国产精品一区二区在线 | 国产一区久久久 | 精品国产三级 | 日韩一区二区成人 | 国产精品欧美日韩 | 国产精品久久久久久久免费观看 | 久久国产综合 | 国产精品久久久久不卡 | 韩日在线| 中文字幕在线观 | 午夜视频在线 | 国产精品久久久久久久久久久免费看 | 亚洲一区av | 91精品国产综合久久福利软件 | 一级毛片在线播放 | 伊人狠狠 | 在线观看黄免费 | 红桃视频一区二区三区免费 | www.夜夜骑| www.玖玖玖 | 中文字幕一区二区三区在线观看 | 欧美999 | 成人国产一区二区三区精品麻豆 | 精品国产乱码久久久久久蜜退臀 | 日韩欧美在线观看视频网站 | 色婷婷一区二区三区四区 | 久久99国产精品久久99果冻传媒 | 国产精品成人一区 | 国内精品久久久久久久 | jizz亚洲人|