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

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

QQ登錄

只需一步,快速開始

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

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:79544 發(fā)表于 2015-12-4 12:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /********************************************************
  2.         功能  :用電位器通過(guò)STC12C2052AD片內(nèi)AD和PWM控制電機(jī)轉(zhuǎn)速
  3.         單片機(jī);STC12C2052AD
  4.         晶振  :12M
  5.         作者  :蘇義江
  6.         時(shí)間  :2015-12-4
  7. ********************************************************/
  8. #include<STC12C2052AD.H> //頭文件
  9. #include <intrins.h>    //51基本運(yùn)算(包括_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ù):無(wú)
  17. 返回值:無(wú)
  18. 結(jié)  果:將PCA初始化為PWM模式,初始占空比為0
  19. 備  注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可
  20. /********************************************************/
  21. void PWM_init (void)
  22. {
  23.         CMOD=0x02; //設(shè)置PCA定時(shí)器
  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初始時(shí)為0
  29.         CCAPM1=0x42; //PWM1設(shè)置PCA工作方式為PWM方式(使用時(shí)刪除//)
  30.         CCAP1L=0x00; //設(shè)置PWM1初始值與CCAP0H相同
  31.           CCAP1H=0x00; // PWM1初始時(shí)為0
  32.         //CCAPM2=0x42; //PWM2設(shè)置PCA工作方式為PWM方式
  33.         //CCAP2L=0x00; //設(shè)置PWM2初始值與CCAP0H相同
  34.           //CCAP2H=0x00; // PWM2初始時(shí)為0
  35.         //CCAPM3=0x42; //PWM3設(shè)置PCA工作方式為PWM方式
  36.         //CCAP3L=0x00; //設(shè)置PWM3初始值與CCAP0H相同
  37.           //CCAP3H=0x00; // PWM3初始時(shí)為0
  38.           CR=1; //啟動(dòng)PCA定時(shí)器
  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. 返回值:無(wú)
  52. 結(jié)  果:設(shè)置PWM模式占空比,為0時(shí)全部高電平,為1時(shí)全部低電平
  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;   //存儲(chǔ)A/D轉(zhuǎn)換標(biāo)志  
  70. /******以下為ADC初始化程序****************************/      
  71.         CHA &= 0x07;   //選擇ADC的8個(gè)接口中的一個(gè)
  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;  //啟動(dòng)A/D電源      
  78.         delay(2);        //使輸入電壓達(dá)到穩(wěn)定(1ms即可?  
  79. /******以下為ADC執(zhí)行程序****************************/
  80.         ADC_CONTR |= 0x08; //啟動(dòng)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測(cè)試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ù)制代碼



評(píng)分

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

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:18570 發(fā)表于 2015-12-6 22:13 | 只看該作者
剛好我有這個(gè)項(xiàng)目,謝謝,分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:59827 發(fā)表于 2015-12-7 13:08 | 只看該作者
有很高的參考價(jià)值,謝謝!
回復(fù)

使用道具 舉報(bào)

地板
ID:183120 發(fā)表于 2017-6-21 09:38 | 只看該作者
請(qǐng)問有原理圖參考一下么
回復(fù)

使用道具 舉報(bào)

5#
ID:281054 發(fā)表于 2018-1-31 09:59 | 只看該作者
請(qǐng)問有相關(guān)原理圖可以參考一下嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:76408 發(fā)表于 2018-2-13 09:28 | 只看該作者
謝謝樓主,要是把原理圖也貼出來(lái)就更好了。
回復(fù)

使用道具 舉報(bào)

7#
ID:76408 發(fā)表于 2018-3-8 16:53 | 只看該作者
看看我現(xiàn)在能不能下載了,我正需要。
回復(fù)

使用道具 舉報(bào)

8#
ID:66287 發(fā)表于 2018-3-11 16:48 | 只看該作者
也就是一個(gè)電子電位器的應(yīng)用,頂一個(gè)
回復(fù)

使用道具 舉報(bào)

9#
ID:687125 發(fā)表于 2020-2-7 14:48 | 只看該作者
有原理圖嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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