|
控制多路電機的啟停,用74hc595串轉(zhuǎn)并來控制多路繼電器從而控制電機的啟停,按鍵使用74hc165來實現(xiàn)并轉(zhuǎn)串,以此識別按鍵值,一共搞了12路電機,電機速度也可以調(diào)節(jié),看著圖很大,但功能很基礎(chǔ),實際上做起來并不麻煩。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #include<74HC595.h>
- #include<74HC165.h>
- #include<dianji.h>
- #define uchar unsigned char
- #define uint unsigned int
- /**********函數(shù)聲明********************/
- void init();
- /***********************************/
- uchar time;
- uchar m;
- void main()//主函數(shù)
- {
- init();
- while(1)
- {
- m=CPWM();
- dianji();
- }
- while(1)
- {};
- }
- void init()//初始化函數(shù)
- {
- _74hc165_init();//調(diào)速按鍵檢測初始化
- _74hc165dianji_init();//電機切換檢測初始化
- SendTo595(0x00);//電機停止
- SendTo595(0x00);
- OutFrom595();
- SendTo5952(0xff);//顯示檔位的數(shù)碼管初始化
- OutFrom595led1();
- TMOD=0x01;//定時/計數(shù)器工作方式1
- TH0=(65536-1000)/256;//設(shè)定時間為1ms
- TL0=(65536-1000)%256;
- EA=1;//打開總中斷
- TR0=1;//啟動T0
- ET0=1; //定時/計數(shù)器0允許
- }
- void t0int() interrupt 1//產(chǎn)生PWM波,1000Hz,時鐘周期就是1ms,就是1000us
- {
- TR0=0;
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- TR0=1;
- time++;
- if(time>=100) time=0;
- if(time<=m)
- {
- SendTo595PWM(0x0f);
- SendTo595PWM(0xff);
- OutFrom595PWM();
- }
- else
- {
- SendTo595PWM(0x00);
- SendTo595PWM(0x00);
- OutFrom595PWM();
- };
- }
復(fù)制代碼
所有資料51hei提供下載:
電機控制.zip
(293.12 KB, 下載次數(shù): 29)
2021-1-27 00:07 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|