⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc8009˪

📁 adc8009应用实例--基于51单片机的PWM直流电机调速proteus仿真
💻
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit key2=P3^2;
sbit key1=P3^1;
sbit CLOCK=P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit PWM=P3^7;
uint temp;
uchar start;

void keyscan();
void delay(uint zz);
void main()
{	
	P3=0;P0=0xff;
	TMOD=0x02;
	TH0=0x01;
	TL0=0X00;
	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;
	key1=1;

	if(!key1)
		{
			delay(5);
			if(!key1)
				{
					start=1;
				}
			while(!key1);
			delay(5);
			while(!key1);
		}

	key2=1;
	key1=1;
	if(!key2)
		{
			delay(5);
			if(!key2)
				{
					
					if(!PWM)PWM=1;
						else PWM=0;
					if(start)PWM=0;
					start=0;
				}
			while(!key2);
			delay(5);
			while(!key2);
		}
}

void clockwave() interrupt 1
{	
	CLOCK=!CLOCK;
	TH0=0x01;
	TL0=0X00;
}


void delay(uint zz)
{
	uint x,y;
	for(x=zz;x>0;x--)
		for(y=50;y>0;y--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -