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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10844|回復(fù): 8
收起左側(cè)

用電位器通過STC12C2052AD單片機片內(nèi)AD和PWM控制電機無極變速

  [復(fù)制鏈接]
ID:79544 發(fā)表于 2015-12-4 12:43 | 顯示全部樓層 |閱讀模式
  1. /********************************************************
  2.         功能  :用電位器通過STC12C2052AD片內(nèi)AD和PWM控制電機轉(zhuǎn)速
  3.         單片機;STC12C2052AD
  4.         晶振  :12M
  5.         作者  :蘇義江
  6.         時間  :2015-12-4
  7. ********************************************************/
  8. #include<STC12C2052AD.H> //頭文件
  9. #include <intrins.h>    //51基本運算(包括_nop_空函數(shù))
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. uint M;

  13. /****************************************************
  14. 函數(shù)名:PWM初始化函數(shù)
  15. 調(diào)  用:PWM_init();
  16. 參  數(shù):無
  17. 返回值:無
  18. 結(jié)  果:將PCA初始化為PWM模式,初始占空比為0
  19. 備  注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可
  20. /********************************************************/
  21. void PWM_init (void)
  22. {
  23.         CMOD=0x02; //設(shè)置PCA定時器
  24.           CL=0x00;
  25.           CH=0x00;
  26.         CCAPM0=0x42; //PWM0設(shè)置PCA工作方式為PWM方式(0100 0010)
  27.         CCAP0L=0x00; //設(shè)置PWM0初始值與CCAP0H相同
  28.           CCAP0H=0x00; // PWM0初始時為0
  29.         CCAPM1=0x42; //PWM1設(shè)置PCA工作方式為PWM方式(使用時刪除//)
  30.         CCAP1L=0x00; //設(shè)置PWM1初始值與CCAP0H相同
  31.           CCAP1H=0x00; // PWM1初始時為0
  32.         //CCAPM2=0x42; //PWM2設(shè)置PCA工作方式為PWM方式
  33.         //CCAP2L=0x00; //設(shè)置PWM2初始值與CCAP0H相同
  34.           //CCAP2H=0x00; // PWM2初始時為0
  35.         //CCAPM3=0x42; //PWM3設(shè)置PCA工作方式為PWM方式
  36.         //CCAP3L=0x00; //設(shè)置PWM3初始值與CCAP0H相同
  37.           //CCAP3H=0x00; // PWM3初始時為0
  38.           CR=1; //啟動PCA定時器
  39. }
  40. /**********************************************************/
  41. void delay(uint z)
  42. {
  43.         uint x,y;
  44.         for(x=z;x>0;x--)
  45.         for(y=420;y>0;y--);
  46. }
  47. /******************************************************
  48. 函數(shù)名:PWM0占空比設(shè)置函數(shù)
  49. 調(diào)  用:PWM0_set();
  50. 參  數(shù):0x00~0xFF(亦可用0~255)
  51. 返回值:無
  52. 結(jié)  果:設(shè)置PWM模式占空比,為0時全部高電平,為1時全部低電平
  53. 備  注:如果需要PWM1的設(shè)置函數(shù),只要把CCAP0L和CCAP0H中的0改為1即可
  54. /***********************************************/
  55. void PWM0_set (uchar a)//p3^7輸出PWM
  56. {
  57.         CCAP0L= a; //設(shè)置值直接寫入CCAP0L
  58.           CCAP0H= a; //設(shè)置值直接寫入CCAP0H
  59. }
  60. /***********************************************/
  61. void PWM1_set (uchar a)//P3^5輸出PWM
  62. {
  63.         CCAP1L= a; //設(shè)置值直接寫入CCAP0L
  64.           CCAP1H= a; //設(shè)置值直接寫入CCAP0H
  65. }
  66. /************************AD轉(zhuǎn)換***************************/
  67. uchar Read (uchar CHA)
  68. {  
  69.         uchar AD_FIN=0;   //存儲A/D轉(zhuǎn)換標(biāo)志  
  70. /******以下為ADC初始化程序****************************/      
  71.         CHA &= 0x07;   //選擇ADC的8個接口中的一個
  72. //(0000 0111 清0高5位)     
  73.         ADC_CONTR = 0x40; //ADC轉(zhuǎn)換的速度設(shè)定     
  74.         _nop_(); _nop_(); _nop_(); _nop_();     
  75.         ADC_CONTR |= CHA;   //選擇A/D當(dāng)前通道     
  76.         _nop_();_nop_(); _nop_(); _nop_();      
  77.         ADC_CONTR |= 0x80;  //啟動A/D電源      
  78.         delay(2);        //使輸入電壓達(dá)到穩(wěn)定(1ms即可?  
  79. /******以下為ADC執(zhí)行程序****************************/
  80.         ADC_CONTR |= 0x08; //啟動A/D轉(zhuǎn)換(0000 1000 令A(yù)DCS = 1)     
  81.         _nop_();_nop_(); _nop_(); _nop_();   
  82.         while (AD_FIN ==0)
  83.         {    //等待A/D轉(zhuǎn)換結(jié)束      
  84.                 AD_FIN=(ADC_CONTR & 0x10); //0001 0000測試A/D轉(zhuǎn)換結(jié)束否     
  85.         }      
  86.                 ADC_CONTR &=0xE7; //1111 0111 清ADC_FLAG位, 關(guān)閉A/D轉(zhuǎn)換,
  87.                 return (ADC_DATA);//返回A/D轉(zhuǎn)換結(jié)果(8位)
  88. }
  89. void main (void)
  90. {

  91.         PWM_init(); //PWM初始化
  92.         P1M0 = 0x01;  //P1.0/P1.1:0000 0011(高阻)  
  93.         P1M1 = 0x00;  //P1.0/P1.1:0000 0000 ON=1;
  94. //        PWM0_set(80); //設(shè)置PWM初始占空比
  95. //        PWM1_set (80);
  96.         while(1)
  97.         {         
  98.                 M=Read(0);  //P1.0口模擬量轉(zhuǎn)換  
  99.                 PWM0_set(M); //轉(zhuǎn)換結(jié)果為PWM0賦值 P3^7輸出占空比
  100.                 M=Read(1);  //P1.1口模擬量轉(zhuǎn)換  
  101.                 PWM1_set(M); //轉(zhuǎn)換結(jié)果為PWM0賦值 P3^5輸出占空比  
  102.         }
  103. }
復(fù)制代碼
  1. #ifndef __STC12C2052AD_H_
  2. #define __STC12C2052AD_H_

  3. /////////////////////////////////////////////////

  4. /* The following is STC additional SFR or change */

  5. /* sfr  AUXR  = 0x8e; */
  6. /* sfr  IPH   = 0xb7; */

  7. /* Watchdog Timer Register */
  8. sfr  WDT_CONTR = 0xe1;   

  9. /* ISP_IAP_EEPROM Register */
  10. sfr ISP_DATA  = 0xe2;
  11. sfr ISP_ADDRH = 0xe3;
  12. sfr ISP_ADDRL = 0xe4;
  13. sfr ISP_CMD   = 0xe5;
  14. sfr ISP_TRIG  = 0xe6;
  15. sfr ISP_CONTR = 0xe7;

  16. /* IDLE, Clock Divider */
  17. sfr IDLE_CLK  = 0xc7;

  18. /* I_O Port Mode Set Register */
  19. sfr P0M0  = 0x93;
  20. sfr P0M1  = 0x94;
  21. sfr P1M0  = 0x91;
  22. sfr P1M1  = 0x92;
  23. sfr P2M0  = 0x95;
  24. sfr P2M1  = 0x96;
  25. sfr P3M0  = 0xb1;
  26. sfr P3M1  = 0xb2;

  27. /* SPI Register */
  28. sfr SPSTAT  = 0x84;
  29. sfr SPCTL   = 0x85;
  30. sfr SPDAT   = 0x86;

  31. /* ADC Register */
  32. sfr ADC_CONTR  = 0xc5;
  33. sfr ADC_DATA   = 0xc6;
  34. sfr ADC_LOW2   = 0xbe;
  35. sfr P1ASF=0x9d;
  36. sfr ADC_RES  =0xbd;
  37. sfr ADC_RESL   =0XBE;
  38. //zhuanhuan sulv
  39. #define ADC_SPEEDLL 0X00
  40. #define ADC_SPEEDL  0X20
  41. #define ADC_SPEEDH  0X40//
  42. #define ADC_SPEEDHH 0X60//90

  43. /* PCA SFR */
  44. sfr CCON   = 0xD8;
  45. sfr CMOD   = 0xD9;
  46. sfr CCAPM0 = 0xDA;
  47. sfr CCAPM1 = 0xDB;
  48. sfr CCAPM2 = 0xDC;
  49. sfr CCAPM3 = 0xDD;
  50. sfr CCAPM4 = 0xDE;
  51. sfr CCAPM5 = 0xDF;

  52. sfr CL     = 0xE9;
  53. sfr CCAP0L = 0xEA;
  54. sfr CCAP1L = 0xEB;
  55. sfr CCAP2L = 0xEC;
  56. sfr CCAP3L = 0xED;
  57. sfr CCAP4L = 0xEE;
  58. sfr CCAP5L = 0xEF;

  59. sfr CH     = 0xF9;
  60. sfr CCAP0H = 0xFA;
  61. sfr CCAP1H = 0xFB;
  62. sfr CCAP2H = 0xFC;
  63. sfr CCAP3H = 0xFD;
  64. sfr CCAP4H = 0xFE;
  65. sfr CCAP5H = 0xFF;

  66. sfr PCA_PWM0 = 0xF2;
  67. sfr PCA_PWM1 = 0xF3;
  68. sfr PCA_PWM2 = 0xF4;
  69. sfr PCA_PWM3 = 0xF5;
  70. sfr PCA_PWM4 = 0xF6;
  71. sfr PCA_PWM5 = 0xF7;

  72. /*  CCON  */
  73. sbit CF    = CCON^7;
  74. sbit CR    = CCON^6;
  75. sbit CCF5  = CCON^5;
  76. sbit CCF4  = CCON^4;
  77. sbit CCF3  = CCON^3;
  78. sbit CCF2  = CCON^2;
  79. sbit CCF1  = CCON^1;
  80. sbit CCF0  = CCON^0;

  81. /* Above is STC additional SFR or change */

  82. /*--------------------------------------------------------------------------
  83. REG51F.H

  84. Header file for 8xC31/51, 80C51Fx, 80C51Rx+
  85. Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
  86. All rights reserved.

  87. Modification according to DataSheet from April 1999
  88. - SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives
  89. --------------------------------------------------------------------------*/

  90. /*  BYTE Registers  */
  91. sfr P0   = 0x80;
  92. sfr P1   = 0x90;
  93. sfr P2   = 0xA0;
  94. sfr P3   = 0xB0;
  95. sfr PSW  = 0xD0;
  96. sfr ACC  = 0xE0;
  97. sfr B    = 0xF0;
  98. sfr SP   = 0x81;
  99. sfr DPL  = 0x82;
  100. sfr DPH  = 0x83;
  101. sfr PCON = 0x87;
  102. sfr TCON = 0x88;
  103. sfr TMOD = 0x89;
  104. sfr TL0  = 0x8A;
  105. sfr TL1  = 0x8B;
  106. sfr TH0  = 0x8C;
  107. sfr TH1  = 0x8D;
  108. sfr IE   = 0xA8;
  109. sfr IP   = 0xB8;
  110. sfr SCON = 0x98;
  111. sfr SBUF = 0x99;

  112. /*  80C51Fx/Rx Extensions  */
  113. sfr AUXR   = 0x8E;
  114. /* sfr AUXR1  = 0xA2; */
  115. sfr SADDR  = 0xA9;
  116. sfr IPH    = 0xB7;
  117. sfr SADEN  = 0xB9;
  118. sfr T2CON  = 0xC8;
  119. sfr T2MOD  = 0xC9;
  120. sfr RCAP2L = 0xCA;
  121. sfr RCAP2H = 0xCB;
  122. sfr TL2    = 0xCC;
  123. sfr TH2    = 0xCD;


  124. /*  BIT Registers  */
  125. /*  PSW   */
  126. sbit CY   = PSW^7;
  127. sbit AC   = PSW^6;
  128. sbit F0   = PSW^5;
  129. sbit RS1  = PSW^4;
  130. sbit RS0  = PSW^3;
  131. sbit OV   = PSW^2;
  132. sbit P    = PSW^0;

  133. /*  TCON  */
  134. sbit TF1  = TCON^7;
  135. sbit TR1  = TCON^6;
  136. sbit TF0  = TCON^5;
  137. sbit TR0  = TCON^4;
  138. sbit IE1  = TCON^3;
  139. sbit IT1  = TCON^2;
  140. sbit IE0  = TCON^1;
  141. sbit IT0  = TCON^0;

  142. /*  P3  */
  143. sbit RD   = P3^7;
  144. sbit WR   = P3^6;
  145. sbit T1   = P3^5;
  146. sbit T0   = P3^4;
  147. sbit INT1 = P3^3;
  148. sbit INT0 = P3^2;
  149. sbit TXD  = P3^1;
  150. sbit RXD  = P3^0;

  151. /*  SCON  */
  152. sbit SM0  = SCON^7; // alternatively "FE"
  153. sbit FE   = SCON^7;
  154. sbit SM1  = SCON^6;
  155. sbit SM2  = SCON^5;
  156. sbit REN  = SCON^4;
  157. sbit TB8  = SCON^3;
  158. sbit RB8  = SCON^2;
  159. sbit TI   = SCON^1;
  160. sbit RI   = SCON^0;
  161.             

  162. sbit T2EX = P1^1;
  163. sbit T2   = P1^0;

  164. /*  T2CON  */
  165. sbit TF2   = T2CON^7;
  166. sbit EXF2  = T2CON^6;
  167. sbit RCLK  = T2CON^5;
  168. sbit TCLK  = T2CON^4;
  169. sbit EXEN2 = T2CON^3;
  170. sbit TR2   = T2CON^2;
  171. sbit C_T2  = T2CON^1;
  172. sbit CP_RL2= T2CON^0;

  173. /* PCA Pin */

  174. sbit CEX3 = P2^4;
  175. sbit CEX2 = P2^0;
  176. sbit CEX1 = P3^5;
  177. sbit CEX0 = P3^7;
  178. sbit ECI  = P3^4;

  179. /*  IE   */
  180. sbit EA   = IE^7;
  181. sbit EPCA_LVD  = IE^6;
  182. sbit EADC_SPI  = IE^5;
  183. sbit ES   = IE^4;
  184. sbit ET1  = IE^3;
  185. sbit EX1  = IE^2;
  186. sbit ET0  = IE^1;
  187. sbit EX0  = IE^0;

  188. /*  IP   */
  189. sbit PPCA_LVD  = IP^6;
  190. sbit PADC_SPI  = IP^5;
  191. sbit PS   = IP^4;
  192. sbit PT1  = IP^3;
  193. sbit PX1  = IP^2;
  194. sbit PT0  = IP^1;
  195. sbit PX0  = IP^0;

  196. /////////////////////////////////////////////////

  197. #endif
復(fù)制代碼



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:18570 發(fā)表于 2015-12-6 22:13 | 顯示全部樓層
剛好我有這個項目,謝謝,分享
回復(fù)

使用道具 舉報

ID:59827 發(fā)表于 2015-12-7 13:08 | 顯示全部樓層
有很高的參考價值,謝謝!
回復(fù)

使用道具 舉報

ID:183120 發(fā)表于 2017-6-21 09:38 | 顯示全部樓層
請問有原理圖參考一下么
回復(fù)

使用道具 舉報

ID:281054 發(fā)表于 2018-1-31 09:59 | 顯示全部樓層
請問有相關(guān)原理圖可以參考一下嗎?
回復(fù)

使用道具 舉報

ID:76408 發(fā)表于 2018-2-13 09:28 | 顯示全部樓層
謝謝樓主,要是把原理圖也貼出來就更好了。
回復(fù)

使用道具 舉報

ID:76408 發(fā)表于 2018-3-8 16:53 | 顯示全部樓層
看看我現(xiàn)在能不能下載了,我正需要。
回復(fù)

使用道具 舉報

ID:66287 發(fā)表于 2018-3-11 16:48 | 顯示全部樓層
也就是一個電子電位器的應(yīng)用,頂一個
回復(fù)

使用道具 舉報

ID:687125 發(fā)表于 2020-2-7 14:48 | 顯示全部樓層
有原理圖嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区精品视频 | av三级| 91精品一区二区三区久久久久 | 国产九一精品 | 五月婷婷在线播放 | 久色视频在线观看 | 一区二区三区免费 | 日韩爱爱网 | 日韩一区二区三区视频 | 成人久久久 | 国产网站在线播放 | 精品一区二区在线观看 | 国产精品免费观看 | 黄色国产在线视频 | 日韩中文字幕网 | 久久高清| 国产精品自产av一区二区三区 | 欧美一区二区视频 | 国产一级视频在线播放 | 国产视频亚洲视频 | 久久综合狠狠综合久久综合88 | 国产亚洲精品久久午夜玫瑰园 | 亚洲天堂精品一区 | www.9191.com | 欧美 日韩 国产 成人 在线 91 | 五月综合激情在线 | 91一区二区在线观看 | 少妇午夜一级艳片欧美精品 | 狠狠干狠狠操 | 国产一二三区精品视频 | 欧美国产视频一区二区 | 午夜精品久久久久久久星辰影院 | av手机免费在线观看 | 国产精品一区久久久 | 午夜视频网站 | 久久久精品影院 | 欧美日韩精品久久久免费观看 | 成人精品视频在线观看 | av片在线观看网站 | 91在线一区二区三区 | 91精品国产一区二区三区 |