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

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

QQ登錄

只需一步,快速開始

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

51單片機(jī)的直流電機(jī)PWM調(diào)速系統(tǒng)源碼(加速、減速、正反轉(zhuǎn))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:316731 發(fā)表于 2018-4-25 23:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于STC89C51單片機(jī)的直流電機(jī)PWM調(diào)速,通過(guò)按鍵實(shí)現(xiàn)電機(jī)的加速、減速、正反轉(zhuǎn)等功能。

單片機(jī)源程序如下:
  1. #include <reg51.h>

  2. static char pwmdir,pwmdirold;

  3. sbit P1_0=P1^0;
  4. sbit P1_1=P1^1;
  5. sbit P1_2=P1^2;
  6. sbit P1_3=P1^3;

  7. //sbit P0_4=P0^4;
  8. //sbit P0_6=P0^6;

  9. sbit P2_0=P2^0;
  10. sbit P2_1=P2^1;
  11. sbit P2_2=P2^2;
  12. sbit P2_3=P2^3;
  13. sbit P2_4=P2^4;
  14. sbit P2_5=P2^5;
  15. sbit P2_6=P2^6;
  16. sbit P2_7=P2^7;        

  17. static unsigned char pwm_f;
  18. static unsigned char H_MAX;
  19. static unsigned char keyval,keyold,pwm_pulse;

  20. void Delay(unsigned char ms);
  21. unsigned char GetKey();
  22. void LedShow(unsigned char value);
  23. void Timer0_init();
  24. void main()
  25. {         
  26.         keyval=keyold=0;
  27.         pwmdir=pwmdirold=2;
  28.         H_MAX=150;
  29.         pwm_pulse=0;
  30.         pwm_f=0;
  31.         P1=0x80;
  32.         
  33.         Timer0_init();
  34.         
  35.         while(1)
  36.         {
  37.                 keyval=GetKey();
  38.                 LedShow(keyval);
  39.                 if(0==keyval)
  40.                 {
  41.                         continue;
  42.                 }
  43.                 else
  44.                 {
  45.                         if(5==keyval)
  46.                         {
  47.                                 pwmdir=pwmdirold=2;
  48.                                 P1=0x80;
  49.                                 break;
  50.                         }
  51.                         else if(1==keyval)
  52.                         {
  53.                                 pwmdir=1;
  54.                         }
  55.                         else if(2==keyval)
  56.                         {
  57.                                 pwmdir=0;
  58.                         }
  59.                         else if(3==keyval)
  60.                         {
  61.                                 H_MAX=150;
  62.                         }
  63.                         else if(4==keyval)
  64.                         {        
  65.                                 H_MAX=80;
  66.                         }
  67.                  }
  68.         }        
  69. }

  70. void Timer0_init()
  71. {
  72.         TMOD=0x02;
  73.         TH0=0x48;
  74.         TL0=TH0;

  75.         ET0=1;
  76.         TR0=1;
  77.         EA=1;
  78. }
  79. void Timer0_inter() interrupt 1
  80. {
  81.         pwm_f++;
  82.         pwm_f%=200;
  83.         if(2!=pwmdir)
  84.         {
  85.                 if(pwmdirold!=pwmdir)
  86.                 {
  87.                         pwmdirold=pwmdir;
  88.                         P1_2=0;
  89.                         P1_3=0;
  90.                         Delay(100);//
  91.                         if(1==pwmdir)
  92.                         {
  93.                                 P1_2=0;               
  94.                                 
  95.                                 if(0==pwm_f)
  96.                                 {
  97.                                         P1_3=1;
  98.                                 }               
  99.                                 else if(H_MAX==pwm_f)
  100.                                 {
  101.                                         P1_3=0;
  102.                                 }
  103.                         }
  104.                         else
  105.                         {
  106.                                 P1_3=0;
  107.                
  108.                                 if(0==pwm_f)
  109.                                 {
  110.                                         P1_2=1;
  111.                                 }               
  112.                                 else if(H_MAX==pwm_f)
  113.                                 {
  114.                                         P1_2=0;
  115.                                 }
  116.                         }
  117.                 }
  118.                 else
  119.                 {
  120.                         if(1==pwmdir)
  121.                         {
  122.                                 P1_2=0;               
  123.                                 
  124.                                 if(0==pwm_f)
  125.                                 {
  126.                                         P1_3=1;
  127.                                 }               
  128.                                 else if(H_MAX==pwm_f)
  129.                                 {
  130.                                         P1_3=0;
  131.                                 }
  132.                         }
  133.                         else
  134.                         {
  135.                                 P1_3=0;
  136.                
  137.                                 if(0==pwm_f)
  138.                                 {
  139.                                         P1_2=1;
  140.                                 }               
  141.                                 else if(H_MAX==pwm_f)
  142.                                 {
  143.                                         P1_2=0;
  144.                                 }
  145.                         }
  146.                 }
  147.         }
  148. }

  149. unsigned char GetKey()
  150. {         
  151.         P2_0=0;
  152.         if(0==P2_4)
  153.         {
  154.                 P2_0=1;
  155.                 return 7;
  156.         }
  157.         else if(0==P2_5)
  158.         {
  159.                 P2_0=1;
  160.                 return 8;
  161.         }

  162.         P2_0=1;
  163.         P2_1=0;
  164.         if(0==P2_4)
  165.         {
  166.                 P2_1=1;
  167.                 return 5;
  168.         }
  169.         else if(0==P2_5)
  170.         {
  171.                 P2_1=1;
  172.                 return 6;
  173.         }

  174.         P2_1=1;
  175.         P2_2=0;
  176.         if(0==P2_4)
  177.         {
  178.                 P2_2=1;
  179.                 return 3;
  180.         }
  181.         else if(0==P2_5)
  182.         {
  183.                 P2_2=1;
  184.                 return 4;
  185.         }

  186.         P2_2=1;
  187.         P2_3=0;
  188.         if(0==P2_4)
  189.         {
  190.                 P2_3=1;
  191.                 return 1;
  192.         }
  193.         else if(0==P2_5)
  194.         {
  195.                 P2_3=1;
  196.                 return 2;
  197.         }
  198.         else
  199.         {
  200.                 P2_3=1;
  201.                 return 0;
  202.         }
  203. }

  204. void LedShow(unsigned char value)
  205. {
  206.         switch(value)
  207.         {        
  208.                 case 1:
  209.                         P0=0xF9;
  210.                         P1_0=0;
  211.                         break;
  212.                 case 2:
  213.                         P0=0xA4;
  214.                         P1_0=0;
  215.                         break;
  216.                 case 3:
  217.                         P0=0xB0;
  218.                         P1_0=0;
  219.                         break;
  220.                 case 4:
  221.                         P0=0x99;
  222.                         P1_0=0;
  223.                         break;
  224.                 case 5:
  225.                         P0=0x92;
  226.                         P1_0=0;
  227.                         break;
  228.                 case 6:
  229.                         P0=0x82;
  230.                         P1_0=0;
  231.                         break;
  232.                 case 7:
  233.                         P0=0xF8;
  234.                 P1_0=0;
  235.                         break;
  236.                         case 8:
  237.                         P0=0x80;
  238.                         P1=0xFE;
  239.                         break;
  240.                 default:
  241.                         break;
  242.         }
  243. }

  244. void Delay(unsigned char ms)
  245. {
  246.         unsigned int i=100*ms;
  247.         while(i--) ;
  248. }
復(fù)制代碼

所有資料51hei提供下載:
基于STC89C51單片機(jī)的直流電機(jī)PWM調(diào)速,通過(guò)按鍵實(shí)現(xiàn)電機(jī)的加速、減速、正反轉(zhuǎn)等功能。.rar (18.69 KB, 下載次數(shù): 97)


評(píng)分

參與人數(shù) 2黑幣 +10 收起 理由
supermcu8 + 5 贊一個(gè)!
DIY電子 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:100826 發(fā)表于 2018-4-26 09:31 | 只看該作者
學(xué)習(xí)了  謝謝分享...
回復(fù)

使用道具 舉報(bào)

板凳
ID:316877 發(fā)表于 2018-4-26 11:34 | 只看該作者

學(xué)習(xí)了  謝謝分享...
回復(fù)

使用道具 舉報(bào)

地板
ID:330009 發(fā)表于 2018-5-14 22:44 | 只看該作者
按鍵是怎么設(shè)置的,沒看懂
回復(fù)

使用道具 舉報(bào)

5#
ID:1099698 發(fā)表于 2024-4-8 16:51 | 只看該作者
你好,請(qǐng)問有仿真電路圖嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色毛片网站在线观看 | 日一区二区 | 黄色片免费在线观看 | 久久综合久 | 99精品99 | 国产精品美女久久久av超清 | 成人午夜在线 | 日韩在线一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 美女黄网站视频免费 | 国产高清精品一区二区三区 | 在线激情视频 | 亚洲精品一区二区三区 | 四虎影院在线观看av | 成人h电影在线观看 | 国产一级一级 | 日韩欧美在线播放 | 亚洲精品一二区 | 97人人澡人人爽91综合色 | 成人一区二区三区 | 黄色精品 | 亚洲精品区 | 日韩在线欧美 | 国产成人精品区一区二区不卡 | 精品一区二区在线视频 | 国产成人小视频 | av黄色在线 | 久久久久久精 | 一区二区蜜桃 | 视频二区在线观看 | 免费精品一区 | 人人干人人草 | 中文字幕在线观看视频网站 | 国产精品久久亚洲7777 | 国产一区二区三区视频 | 欧美亚洲成人网 | 亚洲精品久久久9婷婷中文字幕 | 亚洲高清视频一区 | 免费人成在线观看网站 | 亚洲视频1区 | 免费黄色录像片 |