找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2040|回復: 1
打印 上一主題 下一主題
收起左側

51單片機多路直流電機控制Proteus仿真與源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:835138 發(fā)表于 2021-1-27 00:12 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
控制多路電機的啟停,用74hc595串轉并來控制多路繼電器從而控制電機的啟停,按鍵使用74hc165來實現并轉串,以此識別按鍵值,一共搞了12路電機,電機速度也可以調節(jié),看著圖很大,但功能很基礎,實際上做起來并不麻煩。

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


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<74HC595.h>
  4. #include<74HC165.h>
  5. #include<dianji.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. /**********函數聲明********************/
  9. void init();
  10. /***********************************/
  11. uchar time;
  12. uchar m;

  13. void main()//主函數
  14. {         
  15.          init();
  16.          while(1)
  17.     {
  18.                          m=CPWM();
  19.        dianji();
  20.     }
  21.              while(1)
  22.            {};
  23. }

  24. void init()//初始化函數
  25. {
  26.                 _74hc165_init();//調速按鍵檢測初始化
  27.                 _74hc165dianji_init();//電機切換檢測初始化
  28.                 SendTo595(0x00);//電機停止
  29.                 SendTo595(0x00);
  30.                 OutFrom595();
  31.                 SendTo5952(0xff);//顯示檔位的數碼管初始化
  32.                 OutFrom595led1();
  33.                 TMOD=0x01;//定時/計數器工作方式1
  34.                 TH0=(65536-1000)/256;//設定時間為1ms
  35.                 TL0=(65536-1000)%256;
  36.                 EA=1;//打開總中斷
  37.                 TR0=1;//啟動T0
  38.                 ET0=1; //定時/計數器0允許
  39. }

  40. void t0int() interrupt 1//產生PWM波,1000Hz,時鐘周期就是1ms,就是1000us
  41. {
  42.                 TR0=0;
  43.                 TH0=(65536-1000)/256;
  44.                 TL0=(65536-1000)%256;
  45.                 TR0=1;
  46.                         time++;
  47.                 if(time>=100) time=0;
  48.                 if(time<=m)
  49.                 {        
  50.                         SendTo595PWM(0x0f);
  51.                         SendTo595PWM(0xff);
  52.                         OutFrom595PWM();
  53.                 }
  54.                 else
  55.                 {
  56.                         SendTo595PWM(0x00);
  57.                         SendTo595PWM(0x00);
  58.                         OutFrom595PWM();
  59.                 };
  60. }
復制代碼

所有資料51hei提供下載:
電機控制.zip (293.12 KB, 下載次數: 29)

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:877505 發(fā)表于 2021-1-27 10:52 | 只看該作者
看電路圖感覺還是挺麻煩的,不過代碼和原理都十分簡單
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表