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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5A60S2片內(nèi)PWM按鍵控制加減

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:79544 發(fā)表于 2015-11-14 17:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /*****************************************************
  2.         功能:通過按鍵控制STC12C5A60S2內(nèi)部PWM通過
  3.                 P1.3和P1.4輸出PWM控制LED并用數(shù)碼管顯示
  4.         單片機(jī):STC12C5A60S2
  5.         晶振:11.0592M
  6.         作者:蘇義江改編自網(wǎng)絡(luò)
  7.         時(shí)間:2015-7-22
  8. ***************************************************/
  9. #include"12C5A.h"

  10. #define uint unsigned int
  11. #define uchar unsigned char  
  12. uchar code table[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  13.                                         0x82,0xf8,0x80,0x90,0x88,0x83,
  14.                                         0xc6,0xa1,0x86,0x8e,0x89,0x8c};

  15. sbit wei=P0^6;
  16. sbit duan=P0^7;
  17. sbit jiaPWM=P1^0;//通過P10低電平(按鍵)加PWM占空比
  18. sbit jianPWM=P1^1; //按鍵P11低電平 減PWM占空比
  19. sbit In1=P0^0;
  20. sbit In2=P0^1;
  21. sbit In3=P0^2;
  22. sbit In4=P0^3;

  23. void DelayMs(uchar ms);  
  24. void init_PWM(); //PWM 初始化
  25. void PWM0_change(uchar type,uchar change);//PWM調(diào)整函數(shù)
  26. void PWM0_set(uchar empty); //直接付PWM的值
  27. //stc10f系列 單周期指令的ms級延時(shí)
  28. void DelayMs(uchar ms) //這個(gè)延時(shí)可能不對,非關(guān)鍵部分,可自己修改
  29. {        
  30.         uint i;  while(ms--)  
  31.         {     
  32.                 for(i = 0; i < 850; i++);
  33.         }
  34. }
  35. void init_PWM()
  36. {     
  37.         CCON=0X00;   
  38.         CH=0;   
  39.         CL=0;
  40. //時(shí)鐘分頻也就是輸出的頻率。 0X00:以系統(tǒng)時(shí)鐘/12 為時(shí)鐘源,0X02:系統(tǒng)時(shí)鐘/2,0x08:系統(tǒng)時(shí)鐘     
  41.         CMOD=0X02;      
  42. //起始占空比,0XC0:占空比為25%,0X80:占空比為50%,0X40:占空比為75%   
  43.         PWM0_set(0X80); //
  44.         PCA_PWM1=0x00;
  45.         PCA_PWM0=0x00; //控制占空比的第九位為0   
  46. //0X42:8位PWM P1.3輸出, P1.4輸出,無中斷;0X53:8位PWM輸出,下降沿產(chǎn)生中斷;
  47. //0X63:上升沿產(chǎn)生中斷;0X73:跳變沿產(chǎn)生中斷
  48.         CCAPM0=0X42;  
  49.         CCAPM1=0X42;
  50.         CR=1;          //計(jì)時(shí)器開始工作
  51. }
  52. void PWM0_set(uchar empty)  //直接設(shè)置占空比
  53. {      
  54.         CCAP0L=empty;   
  55.         CCAP0H=empty;
  56.         CCAP1L=empty;   
  57.         CCAP1H=empty;
  58. }
  59. //占空比調(diào)節(jié)函數(shù)
  60. void PWM0_change(uchar type,uchar change) //type=0減占空比,1增加占空比        
  61. //change: 0X0C 約5%,0X05約2%
  62. {        
  63.         if(type==0)   
  64.         {      
  65.                 if(CCAP0L<0XE6)   //<90%   
  66.                 {      
  67.                         CCAP0L+=change;     
  68.                           CCAP0H+=change;  
  69.                         CCAP1L+=change;     
  70.                           CCAP1H+=change;
  71.                   }          
  72.          }   
  73. else   
  74. {   
  75.           if(CCAP0L>0X19)  //>10%      
  76.         {      
  77.                 CCAP0L-=change;     
  78.                   CCAP0H-=change;  
  79.                 CCAP1L-=change;     
  80.                   CCAP1H-=change;
  81.         }        
  82. }

  83. }
  84. void display()
  85. {       
  86.         uchar bai,shi,ge;
  87.         bai=CCAP0L/100;
  88.         shi=CCAP0L/10%10;
  89.         ge=CCAP0L%10;
  90.         wei=1;
  91.         P2=0xfe;
  92.         wei=0;
  93.         duan=1;
  94.         P2=table[bai];
  95.         DelayMs(500);
  96.          P2=0xff;

  97.         wei=1;
  98.         P2=0xfd;
  99.         wei=0;
  100.         duan=1;
  101.         P2=table[shi];
  102.         DelayMs(500);
  103.          P2=0xff;

  104.         wei=1;
  105.         P2=0xfb;
  106.         wei=0;
  107.         duan=1;
  108.         P2=table[ge];
  109.         DelayMs(500);
  110.          P2=0xff;
  111. }
  112. void main()
  113. {   
  114.         init_PWM();      //初始化,PWM輸出  
  115.           while(1)   
  116.           {  
  117.             if(jiaPWM==0) //按鍵減PWM占空比
  118.                   {   
  119.                             DelayMs(500);  //按鍵消抖   
  120.                            while(jiaPWM==0); //按鍵釋放才跳出執(zhí)行下一步   
  121.                         PWM0_change(1,0X0c); //change: 0X0C 約5%,0X05約2%
  122.                         display();                                
  123.                   }   
  124.                   if(jianPWM==0)//按鍵 增 PWM占空比
  125.                   {   
  126.                            DelayMs(500);  
  127.                      while(jianPWM==0);   
  128.                         PWM0_change(0,0X0c); //change: 0X0C 約5%,0X05約2%  
  129.                         display();
  130.                   }                        
  131.            }
  132. }
  133. //一下程序P13口和P14口直接賦PWM值,控制程序速度,直接給a和b賦值

  134. //      pwm初始化        */
  135. /*void initpwm()   
  136. {
  137.      CCAPM0=0x42;   //使能比較器,啟動(dòng)脈寬調(diào)節(jié)模式  
  138. //控制輸出占空比(與CL比較,當(dāng)CL<CCAP0L時(shí)輸出低電平,反之高電平)
  139.         CCAP0L=0x50;      
  140.         CCAP0H=0x50;
  141.         //CL溢出時(shí),CCAP0H自動(dòng)裝入CCAP0L   
  142.         CCAPM1=0x42;   //PWM1同上
  143.     CCAP1L=0x50;
  144.     CCAP1H=0x50;
  145.     CR=1;      //PCA計(jì)數(shù)啟動(dòng)
  146. }
  147. // --------     調(diào)速     ---------   
  148. void format(uchar a,uchar b)
  149. {
  150.     CCAP0L=a;//控制輸出占空比(與CL比較,當(dāng)CL<CCAP0L時(shí)輸出低電平,反之高電平)   
  151.         CCAP0H=a;//CL溢出時(shí),CCAP0H自動(dòng)裝入CCAP0L
  152.           CCAP1L=b;
  153.           CCAP1H=b;      
  154. }
  155. // --------     后退     ---------      
  156. void turnback(uchar a,uchar b)   
  157. {
  158.      format(a,b);
  159.      In1=0;In2=1;In3=0;In4=1;   
  160. }
  161. // --------     前進(jìn)     ---------      
  162. void run(uchar a,uchar b)   
  163. {
  164.       format(a,b);
  165.      In1=1;In2=0;In3=1;In4=0;   
  166. }
  167. // --------     停止     ---------   
  168. void stop()   
  169. {
  170.      In1=1;In2=1;In3=1;In4=1;   
  171. }*/
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:67336 發(fā)表于 2015-11-14 19:31 | 只看該作者
有難度。看不懂
回復(fù)

使用道具 舉報(bào)

板凳
ID:79544 發(fā)表于 2015-11-15 13:27 | 只看該作者
STC單片機(jī)自帶輸出PWM功能。用PWM可以控制燈的漸亮和漸暗,也可以控制小車電機(jī)轉(zhuǎn)動(dòng)快慢。
回復(fù)

使用道具 舉報(bào)

地板
ID:144550 發(fā)表于 2016-10-26 15:17 | 只看該作者
謝謝樓主,可以用來研究下STC12C5A60S2的pwm。
回復(fù)

使用道具 舉報(bào)

5#
ID:103094 發(fā)表于 2016-10-31 21:43 | 只看該作者
頭文件在KEIL編譯器找不到,這怎么解決呢
回復(fù)

使用道具 舉報(bào)

6#
ID:79544 發(fā)表于 2016-11-5 12:45 | 只看該作者
45555mkkl 發(fā)表于 2016-10-31 21:43
頭文件在KEIL編譯器找不到,這怎么解決呢

論壇里有在keil里面添加STC頭文件。你找一找
回復(fù)

使用道具 舉報(bào)

7#
無效樓層,該帖已經(jīng)被刪除
8#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表