【资源下载】下载地址如下1546:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
本设计中,我采用了AT89C51单片机,芯片工作电压约为5V左右,从
左到右我设计的依次是电容滤波的三相桥式不可控整流电路,直流电机H桥驱动电路,中间穿插了电压、电流检测,转速和温度检测。
其中我比较详细的制作了转速检测报警电路,主要通过AD0809进行模数转换显示数码管上,可以设置报警上下限;另外一个就是直流电机PWM调速,通过示波器观察波形和转速变化。
#define uint unsigned int
sbit key2=P2^0; //启动或者停止信号
sbit key1=P2^1; //调速信号
sbit CLOCK=P2^4; //时钟信号
sbit ST=P2^5; //start开始计数信号
sbit EOC=P2^6; //0809的EOC和单片机P2^6相连
sbit OE=P2^7; //0809的OE脚和单片机P2^7相连
sbit PWM=P2^3; //PWM输出且接示波器
uint temp; //定义无符号整形模拟量
uchar start; //定义指针指向start
void keyscan();
void delay(uint z);
void main()
{
P3=0;P0=0xff; //设置串口工作方式
TMOD=0x02; //设置定时器计数模式
TH0=0x01; //设置单片机高8位工作方式
TL0=0X00; //设置单片机低8位工作方式
IE=0x82; //单片机允许开中断
TR0=1; //定时器计数器启动
start=0; //指针
while(1)
{
keyscan();
while(start)
{
ST=0;ST=1;ST=0; //启动ADC0809
while(!EOC); //查询EOC是否为1;
OE=1;
temp=P1; //读取A/D转化的结果
OE=0;
PWM=1; //PWM输出高电平
keyscan();
delay(temp); //正脉冲宽度
PWM=0; //PWM输出低电平
keyscan();
delay(255-temp); //低脉冲宽度
}
}
}
void keyscan()
{
key2=1; //P3^2脚置1 启停
key1=1; //P3^1脚置1 调速