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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC單片機的PWM,AD采集測試程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:103513 發表于 2016-1-17 04:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. /*******************************************************************
  2. *工程名稱: STC的PWM,AD采集測試
  3. *創建人:  張大偉
  4. *創建時間: 2012年5月19號
  5. *隸屬模塊: STC.C
  6. *產考資料:STC手冊
  7. *模塊說明: STC8位PWM測試,上電以后LED出現呼吸燈效應。 采集一路電壓,設定3個穩壓值分別是1V,3.3V ,4.2V,讓單片機通過AD采集后
  8. 驅動PWM0控制穩壓電路出現一個設定值。穩壓電路用一個采樣電阻連接到AD的采樣端這樣形成一個閉環系統、!
  9. ********************************************************************/
  10. #include <STC12C52.H>
  11. /*******************************************************************
  12. *函數名稱:
  13. *入口參數:
  14. *出口參數:
  15. *函數說明: 全局變量和位定義     
  16. ********************************************************************/
  17. #define unchar unsigned char
  18. #define unint unsigned int
  19. #define DUTYCYCLE(x)   (256-(128*x/50))//占空比計算公式256-(80/x=50/128)=XX,  ** 占空比**
  20. #define PDXBIT(x)           (0x01<<x)
  21. #define REGBIT(x)           (0x01<<x)
  22. unchar  yi=1;
  23. unchar  er=0;

  24. sbit KEY1=P3^4;
  25. unint CYCLE;
  26. /*******************************************************************
  27. *函數名稱: void Delay(unint x)
  28. *入口參數: x:延時長度
  29. *出口參數:
  30. *函數說明: 不精確的延時
  31. ********************************************************************/
  32. void Delay(unint x)    //延時子函數      
  33. {
  34.    unint y;      //定義一個Y變量
  35.    for(;x>0;x--)    //如果X大于0,那么X就減1.
  36.     for(y=500;y>0;y--);//給Y賦值為500,當Y大于0那么Y就減1.  *******注意前面的for的語句后面沒有引號,那么會把后面的FOR語句
  37. //也認為是他的內部語句。也就是說X執行一次那么Y就得執行500次。
  38. }
  39. /*******************************************************************
  40. *函數名稱: void MainInt()      
  41. *入口參數:
  42. *出口參數:
  43. *函數說明: 主函數初始化
  44. ****************************** **************************************/
  45. void MainInt()        //
  46. {      
  47.     //P4SW|==REGBIT(4);//將P4口設置為輸出
  48.         //AUXR1|=REGBIT(6);//將PWM0和PWM1從P1.3/P1.4移到P4.2/P4.3
  49.         P1M1=0x00;
  50.         P1M0|=REGBIT(4)|REGBIT(3);//設置P1.4,3口為強推挽輸出
  51.         CMOD|=REGBIT(1);//選擇SYSCLK為PWM的時鐘源//控制PWM波的頻率
  52.         CCAPM0|=REGBIT(1)|REGBIT(6);//允許比較器功能,開啟PWM0
  53.         CCAPM1|=REGBIT(1)|REGBIT(6);//允許比較器功能,開啟PWM1
  54.         CL=0x00;//計數器清零
  55.         CH=0x00;
  56.         CCAP0L=0x00;//自動裝入初始值,控制PWM占空比靠著兩個,大于這個數輸出1,反之。。
  57.         CCAP0H=0x00; //   CCAPOL  CCAPOH  為PWM0的最高占空比和最低占空比。
  58.         CCAP1L=0x00; //猜也猜到了這個是PWM1的低占空比。
  59.         CCAP1H=0x00; //這個也是我猜的哈哈PWM1的高占空比。
  60.         CCON|=REGBIT(6);//啟動PWM
  61. }
  62. /*******************************************************************
  63. *函數名稱: void KeyScan(void)      
  64. *入口參數:
  65. *出口參數:
  66. *函數說明: 按鍵檢查函數,用來調節PWM的占空比0%-100%
  67. ********************************************************************/
  68. void KeyScan(void)
  69. {
  70.    if(KEY1==0)
  71.     {
  72.           Delay(500);
  73.           if(KEY1==0);   
  74.           CYCLE+=1;
  75.           if(CYCLE>100)
  76.            CYCLE=0;
  77.       CCAP0L=DUTYCYCLE(CYCLE);//自動裝入初始值,控制PWM占空比靠著兩個,大于這個數輸出1,反之。。
  78.       CCAP0H=DUTYCYCLE(CYCLE);//占空比計算公式256-(80/x=50/128)=XX,
  79.       CCAP1L=DUTYCYCLE(CYCLE);
  80.       CCAP1H=DUTYCYCLE(CYCLE);
  81.         }
  82. }
  83. /*******************************************************************
  84. *函數名稱: void main(void)
  85. *入口參數:
  86. *出口參數:
  87. *函數說明: 主函數
  88. ********************************************************************/
  89. void main(void)
  90. {
  91.    MainInt();
  92.     CYCLE=100;
  93.    while(1)
  94.     {
  95. //****************下面語句是不斷加減CYCLE的數值來調節占空比輸出的。
  96.            if(yi==1)
  97.      {
  98.       Delay(30);
  99.    CYCLE--;
  100.    if(CYCLE==1)
  101.    er=1,yi=0;
  102.      }
  103.      if(er==1)
  104.      {
  105.       Delay(50);
  106.    CYCLE++;
  107.    if(CYCLE==100)
  108.    er=0,yi=1;
  109.      }
  110.    
  111.      
  112.          
  113.    CCAP0L=DUTYCYCLE(CYCLE);//自動裝入初始值,控制PWM占空比靠著兩個,大于這個數輸出1,反之。。
  114.       CCAP0H=DUTYCYCLE(CYCLE);//占空比計算公式256-(80/x=50/128)=XX,
  115.       CCAP1L=DUTYCYCLE(CYCLE);
  116.       CCAP1H=DUTYCYCLE(CYCLE);
  117.    
  118.         }
  119. }
復制代碼


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

使用道具 舉報

沙發
ID:65237 發表于 2021-10-4 15:29 | 只看該作者
樓主謝謝你的分享最近在學這個 主要是AD部分能發過完整的嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久| 久久大 | 51ⅴ精品国产91久久久久久 | 精品国产乱码久久久久久88av | av一区二区三区 | 日韩精品视频一区二区三区 | 久久伊人一区 | 黄色片大全在线观看 | 日韩欧美不卡 | 午夜一区二区三区 | 亚洲一区综合 | 成人网址在线观看 | 可以看黄的视频 | 免费看的黄网站 | 国产婷婷精品av在线 | 欧美日韩高清一区二区三区 | 亚洲男人天堂2024 | 国产成人精品综合 | 免费久久久 | 久久精品一区二区三区四区 | 天堂免费 | 日韩av在线免费 | 国产在线视频99 | 久久精品中文字幕 | 亚洲视频三| 中文字幕在线剧情 | 亚洲福利在线视频 | 欧美极品在线观看 | 久国产 | 日韩欧美视频网站 | 99精品在线免费观看 | 国产激情一区二区三区 | 欧美黄在线观看 | 国产精品久久久久久婷婷天堂 | www.日本在线 | 99精品国产一区二区三区 | 日本不卡免费新一二三区 | 精品欧美黑人一区二区三区 | 69电影网 | 一级黄色片在线看 | 亚洲福利精品 |