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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15F2K60S2單片機(jī)可調(diào)脈沖數(shù)反應(yīng)式步進(jìn)電機(jī)驅(qū)動器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:168165 發(fā)表于 2019-3-21 21:24 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源碼:

  1. #include <STC15.h>
  2. #include <INTRINS.h>
  3. sbit PWMOUT = P3^7;
  4. sbit CHFWD = P3^6;

  5. unsigned char HighRH = 0; //高電平重載值的高字節(jié)
  6. unsigned char HighRL = 0; //高電平重載值的低字節(jié)
  7. unsigned char LowRH = 0; //低電平重載值的高字節(jié)
  8. unsigned char LowRL = 0; //低電平重載值的低字節(jié)
  9. void Delay500ms();
  10. void ConfigPWM(unsigned int fr, unsigned char dc);
  11. void ClosePWM();
  12. void Delay20ms();                //@6.000MHz
  13. void DigDisplay();
  14. unsigned int i;
  15. typedef unsigned int u16;   
  16. typedef unsigned char u8;
  17. unsigned int cou;
  18. u8 code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽

  19. void delay(u16 i)
  20. {
  21.         while(i--);        
  22. }

  23. void main(){
  24.                                 AUXR &= 0X7f;//12T
  25.                                 P3M1 &= 0x00;
  26.                                 P3M0 |= 0xc0;//強(qiáng)推挽
  27.                                 cou = 1260;
  28.                                 IT0 = 1;
  29.                                 EX0 = 1;
  30.                                 IT1 = 1;
  31.                                 EX1 = 1;        
  32.                                 EA = 1; //開總中斷

  33. while (1){
  34. ConfigPWM(15, 50); //頻率 15Hz,占空比 50%
  35. while(i <= 45){DigDisplay();};
  36. i = 0;
  37. ClosePWM();
  38. ConfigPWM(20, 50); //頻率 20Hz,占空比 50%
  39. while(i <= 60){DigDisplay();};
  40. i = 0;
  41. ClosePWM();
  42. ConfigPWM(36, 50); //頻率 55Hz,占空比 50%
  43. while(i <= cou){DigDisplay();};
  44. i = 0;
  45. ClosePWM(); //關(guān)閉 PWM
  46. ConfigPWM(20, 50); //頻率 20Hz,占空比 50%
  47. while(i <= 60){DigDisplay();};
  48. i = 0;
  49. ClosePWM();
  50. ConfigPWM(15, 50); //頻率 15Hz,占空比50%
  51. while(i <= 45){DigDisplay();};
  52. i = 0;
  53. ClosePWM(); //關(guān)閉 PWM,相當(dāng)于占空比 100%
  54. CHFWD = ~CHFWD;
  55. Delay500ms();
  56. }
  57. }
  58. /* 數(shù)碼管顯示*/
  59. void DigDisplay()
  60. {
  61.         u16 s;
  62.         for(s=0;s<4;s++)
  63.         {
  64.                 switch(s)      
  65.                 {
  66.                         case(0):
  67.                                 P2 = 0xfe;P0 = smgduan[0]; break;
  68.                         case(1):
  69.                                                                                                                                 P2 = 0xfd;P0 = smgduan[(cou/10)%10];  break;
  70.                         case(2):
  71.                                 P2 = 0xfb;P0 = smgduan[(cou/100)%10];  break;
  72.                         case(3):
  73.                                 P2 = 0xf7;P0 = smgduan[(cou/1000)];  break;
  74.                 }
  75.                 delay(3);     
  76.                 P0=0xFF;
  77.         }
  78. }

  79. void Delay27ms()                //@6.000MHz
  80. {
  81.         unsigned char i, j, k;

  82.         _nop_();
  83.         _nop_();
  84.         i = 1;
  85.         j = 158;
  86.         k = 145;
  87.         do
  88.         {
  89.                 do
  90.                 {
  91.                         while (--k);
  92.                 } while (--j);
  93.         } while (--i);
  94. }

  95. void Delay500ms()                //@6.000MHz
  96. {
  97.         unsigned char i, j, k;
  98.         
  99.         _nop_();
  100.         _nop_();
  101.         i = 12;
  102.         j = 103;
  103.         k = 57;
  104.         PWMOUT = 0;
  105.         do
  106.         {        
  107.                 do
  108.                 {        DigDisplay();
  109.                         while (--k);
  110.                 } while (--j);
  111.         } while (--i);
  112. }

  113. /* 配置并啟動 PWM,fr-頻率,dc-占空比 */
  114. void ConfigPWM(unsigned int fr, unsigned char dc){
  115. unsigned int high, low;
  116. unsigned long tmp;

  117. tmp = (6000000/12) / fr; //計(jì)算一個(gè)周期所需的計(jì)數(shù)值
  118. high = (tmp*dc) / 100; //計(jì)算高電平所需的計(jì)數(shù)值
  119. low = tmp - high; //計(jì)算低電平所需的計(jì)數(shù)值
  120. high = 65536 - high + 12; //計(jì)算高電平的重載值并補(bǔ)償中斷延時(shí)
  121. low = 65536 - low + 12;//計(jì)算低電平的重載值并補(bǔ)償中斷延時(shí)

  122. HighRH = (unsigned char)(high>>8); //高電平重載值拆分為高低字節(jié)
  123. HighRL = (unsigned char)high;
  124. LowRH = (unsigned char)(low>>8); //低電平重載值拆分為高低字節(jié)
  125. LowRL = (unsigned char)low;

  126. TMOD &= 0x0F; //清零 T1 的控制位
  127. TMOD |= 0x10; //配置 T1 為模式 1
  128. TH1 = HighRH; //加載 T1 重載值
  129. TL1 = HighRL;
  130. ET1 = 1; //使能 T1 中斷
  131. TR1 = 1; //啟動 T1
  132. PWMOUT = 1; //輸出高電平
  133. }
  134. /* 關(guān)閉 PWM */
  135. void ClosePWM(){
  136. TR1 = 0; //停止定時(shí)器
  137. ET1 = 0; //禁止中斷
  138. PWMOUT = 1; //輸出高電平
  139. }
  140. void Add() interrupt 0
  141. {
  142.         EX0 = 0;
  143.         Delay27ms();
  144.         if(P3^2 == 0){
  145.         cou = cou + 10;
  146.         }
  147.         //while(!P3^2);
  148.         EX0 = 1;
  149. }
  150. void Sub() interrupt 2
  151. {
  152.         EX1 = 0;
  153.         Delay27ms();
  154.         if(P3^3 == 0){
  155.         cou = cou - 10;
  156.         }
  157.         //while(!P3^3);
  158.         EX1 = 1;
  159. }
  160. /* T0 中斷服務(wù)函數(shù),產(chǎn)生 PWM 輸出 */
  161. void InterruptTimer1() interrupt 3{
  162. if (PWMOUT == 1){ //當(dāng)前輸出為高電平時(shí),裝載低電平值并輸出低電平
  163. TH1 = LowRH;
  164. TL1 = LowRL;
  165. i++;
  166. PWMOUT = 0;
  167. //DigDisplay();
  168. }else{ //當(dāng)前輸出為低電平時(shí),裝載高電平值并輸出高電平
  169. TH1 = HighRH;
  170. TL1 = HighRL;
  171. PWMOUT = 1;
  172. //DigDisplay();
  173. }
  174. }
復(fù)制代碼

huasheng_3jieh.rar

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

評分

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

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:465279 發(fā)表于 2020-6-10 22:26 | 只看該作者
來學(xué)習(xí)的
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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