|
|
控制多路電機(jī)的啟停,用74hc595串轉(zhuǎn)并來控制多路繼電器從而控制電機(jī)的啟停,按鍵使用74hc165來實(shí)現(xiàn)并轉(zhuǎn)串,以此識(shí)別按鍵值,一共搞了12路電機(jī),電機(jī)速度也可以調(diào)節(jié),看著圖很大,但功能很基礎(chǔ),實(shí)際上做起來并不麻煩。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
P1%2_M41LE8A3)NATXJDG.png (132.62 KB, 下載次數(shù): 44)
下載附件
2021-1-27 00:12 上傳
GB7}7~L[RB%R}R5@I41K(O7.png (224.68 KB, 下載次數(shù): 52)
下載附件
2021-1-27 00:12 上傳
單片機(jī)源程序如下:
- #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)速按鍵檢測(cè)初始化
- _74hc165dianji_init();//電機(jī)切換檢測(cè)初始化
- SendTo595(0x00);//電機(jī)停止
- SendTo595(0x00);
- OutFrom595();
- SendTo5952(0xff);//顯示檔位的數(shù)碼管初始化
- OutFrom595led1();
- TMOD=0x01;//定時(shí)/計(jì)數(shù)器工作方式1
- TH0=(65536-1000)/256;//設(shè)定時(shí)間為1ms
- TL0=(65536-1000)%256;
- EA=1;//打開總中斷
- TR0=1;//啟動(dòng)T0
- ET0=1; //定時(shí)/計(jì)數(shù)器0允許
- }
- void t0int() interrupt 1//產(chǎn)生PWM波,1000Hz,時(shí)鐘周期就是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提供下載:
電機(jī)控制.zip
(293.12 KB, 下載次數(shù): 29)
2021-1-27 00:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|