cczero

【资源下载】下载地址如下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   调速

分类:

技术点:

相关文章: