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

📄 test331.c

📁 微波治疗仪的源程序
💻 C
字号:
#include "weibo0209.h"

uchar status;      //status machine start status
uchar digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar disp_buff[2],stg_buff[2];
uchar setsection;                 //设置分段0,1,2,3
uchar coef[4]={0x0a,0x0a,0x0a,0x0a};//校正系数
uchar delay;                       //蜂鸣器延时
uchar set_power;                       //功率
uchar timeold,timenow,sec,timeover=0;    //时间
uchar settime[2]={0xff,0xff};       //if(settime[0]<=0x0a),则开始进入设置状态
uchar timer1s;                   //1s定时
uchar coftimeris=31;
uchar powerover=0;
uchar adtimenumber=0,addisp;
uchar Set_TH1,Set_TL1;
uchar adjust_power=0;
uint k;
uchar comp8=1;
main()
{
	Ini_sys();
	read_parameter();
	powerover=0;
	while(1)
	{
		clr_wchdog();          //喂狗
		ch451_write(0x403);      //开键盘显示
		ch451_write(0x500);      //设置默认显示方式
	//-------------------------------
	if(set_power<=6)adjust_power=(float)(set_power)*coef[0]/10;
	else if(set_power>6&&set_power<=30)adjust_power=(float)(set_power)*coef[1]/10;
	else if(set_power>30&&set_power<=50)adjust_power=(float)(set_power)*coef[2]/10;
	else adjust_power=(float)(set_power)*coef[3]/10;
		keyprocess();          //键盘处理
		delayms(40);           //延时10ms
		if(status==set){
			dispset();
		}
		else{
			disptimpower();
			if(timeover){
				timeover=0;
				beep(1,2);
			}
			if(powerover){
				beep(1,powerover);
				powerover=0;
			}
		}
	}
}
void int1()interrupt 2 using 1
{
	abnormal();powerover=4;
}


void int0()interrupt 0 using 1   //外部中断0 系统定时器100Hz ,10ms
{
	uint n;
	TH1=0xd8;TL1=0xf0;
//	n=adjust_power*15*2;
//	if(delay!=0)delay--;      //蜂鸣器
	if(coftimeris++>50){
		statusmachin();           //检测状态变化
		coftimeris=0;
		clr_wchdog();          //喂狗
	}

	if(status==zlstart||status==llstart){
		if(adtimenumber++>=10){  //采集100ms
			addisp=0;
			TR0=0;
			k|=TH0;
			k<<=8;
			k|=TL0;
			TL0=0;TH0=0;
			TR0=1;
			adtimenumber=0;

//			if(comp8==9){
//				if(k<150){comp8=5;}
//				else comp8=0;
//				addisp=(uchar)((float)k/7.5);
//			}
//			else{
//				if(k<15){comp8=5;}
//				else comp8=0;
//				addisp=(uchar)((float)k/1.5);
//			}
//
			addisp=(uchar)(k/3);
			k=0;
//			if(addisp>=100){
//				abnormal();powerover=5;
//			}
			    //应该试验确定大约多少瓦时确定多少触发时间
//			if(addisp>adjust_power){  //实际大于设定,则触发需要后移,延时增加,T1初始值减小
//				if(Set_TL1>1+(addisp-adjust_power))
//					Set_TL1-=(addisp-adjust_power);
//				else{
//					if(Set_TH1>0xe4){Set_TL1=0xff;Set_TH1--;}
//					else{    //{Set_TH1=0xe4;Set_TL1=0;}
//						abnormal();  //触发达到最小,但是采集到的功率还是大,则出错,关闭
//						powerover=2;
//					}
//				}
//			}
//			else if(addisp<adjust_power){
//				if(Set_TL1<0xfe-2*(adjust_power-addisp))
//					Set_TL1+=2*(adjust_power-addisp);
//				else{
//					if(Set_TH1<0xf0){
//						Set_TL1=0;
//						Set_TH1++;
//					}
//					else{     //{Set_TL1=0x00;Set_TH1=0xf0;}
//						abnormal();//触发达到最大,但是采集到的功率还是不够,则出错,关闭
//						powerover=3;
//					}
//				}
//			}

//			else{;}
//			TH1=Set_TH1;TL1=Set_TL1;
		}
	}

//---------------处理设置状态的时间
//			if(settime[0]<0x0b&&settime[0]>0){
//				if(settime[1]>=1)settime[1]--;
//				else {
//					if(settime[0]>=1){settime[0]--;settime[1]=100;}
//					else {settime[0]=0;settime[1]=0;}
//				}
//			}

}

void keyprocess(void)
{
	uchar key=0xff;
	if(!pushSW){         //脚踏开关
		switch(status){
			case llstart:    //不是治疗状态,复位为治疗态
			case llprepare:{timeold=0;timenow=0;set_power=0;status=zlprepare;}break;
			case zlprepare:{ //再次踩脚踏开关,如果条件允许,则开始工作
				if(timenow&&set_power)status=zlstart;
				else status=zlprepare;
			}break;
		}
	}
	key=ch451_read();
	key&=0x7f;
	switch(key){
		case llkeypress:{   //理疗
			switch(status){
				case zlstart:   //不是理疗状态,复位为理疗态
				case zlprepare:{timeold=0;timenow=0;set_power=0;status=llprepare;}break;
				case llprepare:{//再次按下理疗键,如果条件允许,则开始工作
					if(timenow&&set_power)status=llstart;
					else status=llprepare;
				}break;
			}
		}
		break;
///////////////////////////////////////
		case resetkeypress:{  //复位按下
			if(status==llstart){timenow=timeold;status=llprepare;}
			if(status==zlprepare){  //假如在治疗准备状态下按下复位键,如果没有开始设置
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//-----
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|set);
					settime[0]=0xff;settime[1]=0xff;
					read_parameter();status=set; //转移为设置状态,读参数
				}
//---
			}
			if (status==set){   //假如再设置状态下按下复位健,则返回
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//---
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|llprepare);
					settime[0]=0xff;settime[1]=0xff;
					save_parameter();status=zlprepare;   //转移为治疗准备状态,写参数
				}
//---
			}
		}break;
		case resetkeyup:{  //复位键抬起
			if(settime[0]!=0x00){  //复位键没有按下10s
				settime[0]=0xff;settime[1]=0xff;
			}
		}break;
////////////////////////////////////////////////////////////
		case timeaddkeypress:{ //时间加
			if(status==set){
				if(setsection==3)setsection=0;
				else setsection++;
			}
			else{
				if(timenow>=99)timenow=0;
				else timenow++;
				timeold=timenow;
			}
		}
		break;
		case timedeckeypress:{ //时间减
			if(status==set){
				if(setsection==0)setsection=3;
				else setsection--;
			}
			else{
				if(timenow==0)timenow=99;
				else timenow--;
				timeold=timenow;
			}
		}
		break;
		case poweraddkeypress:{ //功率加
			if(status==set){
				if(coef[setsection]==15)coef[setsection]=6;
				else coef[setsection]++;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(set_power>=60)set_power=0;
					else set_power++;
				}
				if(status==llstart||status==llprepare){
					if(set_power>=30)set_power=0;
					else set_power++;
				}
			}
		}
		break;
		case powerdeckeypress:{ //功率减
			if(status==set){
				if(coef[setsection]==6)coef[setsection]=15;
				else coef[setsection]--;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(set_power<1)set_power=60;
					else set_power--;
				}
				if(status==llstart||status==llprepare){
					if(set_power<1)set_power=30;
					else set_power--;
				}
			}
		}
		break;
	}
	if(status==set)dispset();
	else disptimpower();
}

⌨️ 快捷键说明

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