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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制直流電機程序(注釋詳細)與Proteus仿真

  [復(fù)制鏈接]
ID:507100 發(fā)表于 2019-4-15 15:43 | 顯示全部樓層 |閱讀模式
仿真基本效果
1.       按下正轉(zhuǎn)按鈕,綠燈長亮,電機低速正轉(zhuǎn),檔位為1檔。2.       按下正轉(zhuǎn)按鈕,綠燈長亮,電機低速正轉(zhuǎn),檔位為1檔。3.       在未達到最高檔(3檔)的情況下,按下加速按鈕,電機檔位加一,綠燈閃爍8次,每次閃爍的時間間隔為1秒。如果達到最高檔,按下加速按鈕,電機檔位不變。然后判斷電機的轉(zhuǎn)動方向,如果正轉(zhuǎn),綠燈常亮;如果反轉(zhuǎn),紅燈常亮。4.       在未達到最低檔位(1檔)的情況下,按下減速按鈕,電機檔位減一,紅燈閃爍8秒,每次閃爍的室間隔為1秒。如果達到最低檔,按下減速按鈕,電機檔位不變。然后判斷電機的轉(zhuǎn)動方向,如果正轉(zhuǎn),綠燈常亮;如果反轉(zhuǎn),紅燈常亮。5.       按下停止按鈕,蜂鳴器報警,且所有LED燈滅,電機停止,并使電機檔位置1檔。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png 0.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar m;               //用來標(biāo)志速度檔位
  5. uint t;                           //計數(shù)標(biāo)志
  6. sbit k1=P2^0;     //正轉(zhuǎn)按鈕
  7. sbit k2=P2^1;      //反轉(zhuǎn)按鈕  
  8. sbit k3=P2^2;             //停止按鈕
  9. sbit k4=P2^3;           //加速按鈕
  10. sbit k5=P2^4;           //減速按鈕
  11. sbit k6=P1^0;
  12. sbit k7=P1^1;           //控制電動機的兩個輸入
  13. sbit pwm1=P1^4;           //PWM信號從P1^4輸出
  14. void init() ;      //定義定時器的初始化函數(shù)         
  15. void delay(uint x)        //延時程序,延時x ms
  16. {
  17.       uint i,j;
  18.       for(i=x;i>0;i--)
  19.        for(j=110;j>0;j--);
  20. }

  21. main()
  22. {   
  23.    init();                        //定時器的初始化
  24.    while(1)
  25.    {      
  26.        if(k1==0)           //檢測是否按下正轉(zhuǎn)按鈕
  27.         {
  28.            delay(10);  // 消抖10ms
  29.            if(k1==0)   //如果正轉(zhuǎn)按鈕按下
  30.            {  
  31.             P1=0x01;        //IN1=1,IN2=0;控制電動機正轉(zhuǎn)
  32.             P0=0X00;        //綠燈常亮
  33.            }
  34.            while(!k1);        //判斷按鈕是否松開,不松開一直死循環(huán),松開后跳出循環(huán),繼續(xù)執(zhí)行
  35.         }
  36.       
  37.         if(k2==0)                //檢測是否按下反轉(zhuǎn)按鈕
  38.         {
  39.            delay(10);        //消抖10ms
  40.            if(k2==0)        //如果按下反轉(zhuǎn)按鈕
  41.            {
  42.              P1=0x02;         //IN1=0,IN2=1,控制電動機反轉(zhuǎn)
  43.              P0=0X01;         //紅燈常亮
  44.            }
  45.            while(!k2);           //判斷按鈕是否松開,不松開一直死循環(huán),松開后跳出循環(huán),繼續(xù)執(zhí)行      
  46.         }
  47.         if(k3==0)                  //檢測是否按下停止按鈕
  48.         {
  49.            delay(10);                //消抖10ms
  50.            if(k3==0)                //如果按下停止按鈕
  51.            {
  52.                     m=1;                         //電動機重置為1檔
  53.             P1=0X00;                 //IN1=0.IN2=0,電動機停止
  54.             P0=0x02;                 //蜂鳴器響
  55.             delay(1000);         //延時1秒
  56.                         P0=0XFF;                  //燈全熄滅,蜂鳴器不響
  57.             pwm1=0;                         //PWM輸出低電平
  58.            }
  59.         while(!k3);                         //判斷按鈕是否松開,不松開一直死循環(huán),松開后跳出循環(huán),繼續(xù)執(zhí)行
  60.         }
  61.         if(k4==0)                          //檢測加速按鈕是否按下
  62.         {
  63.            delay(10);                   //消抖10ms
  64.            if(k4==0)                        //如果加速按鈕按下
  65.            {  
  66.              m++;                                 //檔位加一
  67.                          if(m<4){                         //在不超過最高3檔的情況下,按下加速按鈕,執(zhí)行以下
  68.               for(t=8;t>0;t--){         //綠燈閃爍8次
  69.                 P0=0x03;
  70.                 delay(500);
  71.                 P0=0X07;
  72.                 delay(500);} }
  73.                                 if(k6==1&&k7==0)          //如果電動機正轉(zhuǎn),綠燈常亮
  74.                                 P0=0X00;
  75.                                 else if(k6==0&&k7==1)         //如果電動機反轉(zhuǎn),紅燈常亮
  76.                                 P0=0X01;
  77.                                 else P0=0X07;                        //如果電動機停止,燈全熄滅
  78.            }
  79.            while(!k4);                                   //判斷按鈕是否松開,不松開一直死循環(huán),松開后跳出循環(huán),繼續(xù)執(zhí)行
  80.         }
  81.         if(k5==0)                                           //檢測減速按鈕是否按下
  82.         {
  83.             delay(10);                                   //消抖10ms
  84.             if(k5==0)                                   //如果減速按鈕按下
  85.              {  
  86.               m--;                                                //檔位減一
  87.                           if(m>0){                                        //當(dāng)檔位未小于一檔,按下減速按鈕,執(zhí)行以下
  88.                for(t=8;t>0;t--){                 //紅燈閃爍8次
  89.                 P0=0x04;
  90.                 delay(500);
  91.                 P0=0X07;
  92.                 delay(500);}}
  93.                                 if(k6==1&&k7==0)                 //如果電動機正轉(zhuǎn),綠燈常亮
  94.                                 P0=0X00;
  95.                                 else if(k6==0&&k7==1)          //如果電動機反轉(zhuǎn),紅燈常亮
  96.                                 P0=0X01;
  97.                                 else P0=0X07;                          //如果電動機停止,燈全熄滅
  98.              }
  99.              while(!k5);                         //判斷按鈕是否松開,不松開一直死循環(huán),松開后跳出循環(huán),繼續(xù)執(zhí)行
  100.         }
  101.                 if(m>3)m=3;                                          //檔位最大為3檔
  102.                 if(m<1)m=1;                                     //檔位最小為1檔
  103.      }
  104. }
  105. void init()                                                         //定義定時器的初始化
  106. {
  107.    
  108.    TMOD=0X01;                                                 //工作方式寄存器,選用定時器0的工作方式1
  109.    TH0=(65536-50000)/256;
  110.    TL0=(65536-50000)%256;                          //裝載初值
  111.    TR0=1;                                                         //開始計數(shù)
  112.    ET0=1;                                                          //開啟定時器中斷使能
  113.    EA=1;                                                          //開啟總中斷
  114.    P0=0Xff;                                                          //設(shè)定開始時燈全熄滅,蜂鳴器不響
  115.    P1=0X00;                                                     //電動機不運轉(zhuǎn)
  116.    P2=0Xff;                                                     //P2端口全置1
  117.    m=1;                                                                   //開啟電動機為1檔
  118. }
  119. ……………………

  120. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
單片機電機控制.zip (31.46 KB, 下載次數(shù): 355)

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:563002 發(fā)表于 2019-6-20 15:17 | 顯示全部樓層
有問題的好吧
回復(fù)

使用道具 舉報

ID:140931 發(fā)表于 2020-3-6 11:24 | 顯示全部樓層
多謝分享!
回復(fù)

使用道具 舉報

ID:698914 發(fā)表于 2020-3-7 12:42 | 顯示全部樓層
連接單片機與電機之間的那個叫什么,可以介紹一下嗎?
回復(fù)

使用道具 舉報

ID:700777 發(fā)表于 2020-3-14 14:16 | 顯示全部樓層
不對啊  有錯
回復(fù)

使用道具 舉報

ID:542607 發(fā)表于 2020-4-24 11:58 | 顯示全部樓層
電機都不轉(zhuǎn)
回復(fù)

使用道具 舉報

ID:740787 發(fā)表于 2020-4-30 18:28 | 顯示全部樓層
這這有重大錯誤,沒法仿真

回復(fù)

使用道具 舉報

ID:748287 發(fā)表于 2020-6-17 17:35 | 顯示全部樓層

電機都不轉(zhuǎn),有錯誤
回復(fù)

使用道具 舉報

ID:936785 發(fā)表于 2021-6-12 13:38 | 顯示全部樓層
功能很齊全,電機也可以運轉(zhuǎn)
回復(fù)

使用道具 舉報

ID:964699 發(fā)表于 2021-9-7 20:49 | 顯示全部樓層
真的很不多
回復(fù)

使用道具 舉報

ID:1028751 發(fā)表于 2022-5-22 20:57 | 顯示全部樓層
dingxin1 發(fā)表于 2021-6-12 13:38
功能很齊全,電機也可以運轉(zhuǎn)

你的電機是轉(zhuǎn)的啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 射欧美 | 91在线精品视频 | 免费精品| 久久久久中文字幕 | 日韩播放 | 欧美日韩国产一区二区三区 | 日韩第一页 | 欧美精品一区二区三区在线播放 | 久久久噜噜噜www成人网 | 国产乱码精品一区二区三区av | 国产高清视频在线观看 | 久久99深爱久久99精品 | 欧美精品一区二区三区四区 在线 | 国产精品美女久久久久久免费 | 欧美不卡视频一区发布 | 成人a视频片观看免费 | 夜夜爽99久久国产综合精品女不卡 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 91精品国产91综合久久蜜臀 | 久久五月婷 | 欧美成人一区二区 | 嫩草一区二区三区 | 欧美性tv| 日韩在线一区二区三区 | 五月综合激情婷婷 | 亚洲狠狠| 久久激情视频 | 国产91精品久久久久久久网曝门 | 欧美片网站免费 | 一区二区中文字幕 | 亚洲欧美一区二区三区国产精品 | 噜噜噜噜狠狠狠7777视频 | 国产二区视频 | 91精品国产综合久久精品 | 日本中文字幕在线视频 | 国产91网站在线观看 | 日韩一区二区三区av | 免费看的黄网站 | 日韩三级电影一区二区 | 久久久av | 欧美精品一区二区在线观看 |