標(biāo)題: 51單片機(jī)多路直流電機(jī)控制Proteus仿真與源程序 [打印本頁]

作者: hc981111    時(shí)間: 2021-1-27 00:12
標(biāo)題: 51單片機(jī)多路直流電機(jī)控制Proteus仿真與源程序
控制多路電機(jī)的啟停,用74hc595串轉(zhuǎn)并來控制多路繼電器從而控制電機(jī)的啟停,按鍵使用74hc165來實(shí)現(xiàn)并轉(zhuǎn)串,以此識(shí)別按鍵值,一共搞了12路電機(jī),電機(jī)速度也可以調(diào)節(jié),看著圖很大,但功能很基礎(chǔ),實(shí)際上做起來并不麻煩。

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


單片機(jī)源程序如下:
  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. /**********函數(shù)聲明********************/
  9. void init();
  10. /***********************************/
  11. uchar time;
  12. uchar m;

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

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

  40. void t0int() interrupt 1//產(chǎn)生PWM波,1000Hz,時(shí)鐘周期就是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. }
復(fù)制代碼

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


作者: forest-float    時(shí)間: 2021-1-27 10:52
看電路圖感覺還是挺麻煩的,不過代碼和原理都十分簡(jiǎn)單




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1