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

📄 tiaoshu.c

📁 可用于电机类调速 共分为6档调节电压从220V~80V
💻 C
字号:
/***********************************************************/
/*********调速器***1~6档** 1档为最高档 6档为最低档 *********/
/***********************************************************/
#include<reg52.h>
#include<mylib.h>
#include<delay.h>
#include<display.h>
#include<yaokong.h>
#include<keychuli.h>
/*************************************************************************************/
/**************************初始化子程序*********************************************/
/**************************************************************************************/
void intin(void)
{
	TMOD=0x11;
	IT0=1;//INT0为下降沿触发
	IE=0x8b;//允许INT0,T0,T1,T2中断
	IT0=1;           //外部中断0触发方式控制位,下降沿触发
	EX0=1;           //外部中断0(INT0)中断允许位
	IP=0x01;         //定义外部中断0优先于定时器中断的优先级
	dm=0;
	PWM_data=0x01;
	TH0=tableH[PWM_data];
	TL0=tableL[PWM_data];
	TH1=(65536-10000)/256;//PWM输出周期为10ms
	TL1=(65536-10000)%256;
	dianyuan=0;			//置电源位为开启状态
	PWM_OUT=0;
}
/************************************************************************************/
/***********************************电源***开/关***********************************1*/
/************************************************************************************/
void dianyuanchuli(void)
{
dianyuan=~dianyuan;
if(dianyuan==1){PWM_data=0x01;numb=0x0f;TR1=1;KEY_OK=1; }
   else {PWM_OUT=0;numb=0x0d;TR0=0;TR1=1;KEY_OK=1;}
}
/************************************************************************************/
/********************************主程序**********************************************/
/************************************************************************************/
void main()
{
	intin();
	while(1)
	{	
		if(dianyuan==1)
			{	
			if(KEY_OK==0)numb=PWM_data;
			display();
			}
			keyscan();				//按键扫描
			if(KTF==1){key_chuli();}//按键处理
		if(KEY_OK==1)display();
	}
}


/************************************************************************************/
/****************************T0中断服务程序*********T=10ms***************************/
/************************************************************************************/
void time1() interrupt 3 
{  	TR0=0;
	if(KEY_OK==0)TR1=0;
	if(KEY_OK==1){jishuqi++;}
	if(jishuqi==200){jishuqi=0;KEY_OK=0;TR1=0;}
	TH1=(65536-10000)/256;					//PWM输出周期为10ms
	TL1=(65536-10000)%256;
	TH0=tableH[PWM_data];					//装入高电平保持时间初值
	TL0=tableL[PWM_data];
	if(dianyuan==1)
		{
		PWM_OUT=1;
		TR0=1;
		TR1=1;
		}
}
/************************************************************************************/
/****************************T0中断服务程序******************************************/
/************************************************************************************/
void time0() interrupt 1  //50ms定时器
{
PWM_OUT=0;TR0=0;
}
/*************************************************************************************/
/**************************over***over***over***************************************/
/**************************************************************************************/

⌨️ 快捷键说明

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