【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