【Proteus仿真】51单片机+ADC0808直流电机调速
【Proteus仿真】51单片机+ADC0808直流电机调速
📑程序说明
🖍通过读取ADC0808数值,来调节对应的输出引脚高低电平时间。从而实现电机调速效果。这里将ADC0808数值进行了除2处理,减小调速等级,避免在仿真时,调节数值出现2个区域内不同转动的状态。
📝程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <REGX52.H> #include "intrins.h"
sbit CLOCK = P2 ^ 4; sbit ST = P2 ^ 5; sbit EOC = P2 ^ 6; sbit OE = P2 ^ 7; sbit PWM = P3 ^ 7;
unsigned int ADC;
void delay(char x); void Timer0\_INT() interrupt 1 { CLOCK = !CLOCK; }
void main() { unsigned char temp; TMOD = 0x02; TH0 = 0x20; TL0 = 0x00; IE = 0x82; EA = 1; // 总中断开关 ET0 = 1; // T0定时器总中断开关 TR0 = 1;
while(1) { ST = 0;//产生启动转换的正脉冲信号 \_nop\_(); ST = 1; \_nop\_(); ST = 0; while(EOC == 0);//正在转换 OE = 1; ADC = P1; ADC /= 2; //将ADC值除2 OE = 0; PWM = 1; delay(ADC); PWM = 0; temp = 255 - ADC; delay(temp); } }
void delay(char x) { int i, k; for(i = 0; i < x; i++) for(k = 0; k < 120; k++); }
|
📚程序源码和仿真资源
1 2 3
| 链接:https://pan.baidu.com/s/1I2C2sf\_TnlagjnPocB1hRA 提取码:kzyo
|
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!