当前位置:首页 > 基于51单片机课程设计报告 - 图文
for(j=120;j>0;j--);
}
/******************************************************/ /* 温度调节函数 /
/*****************************************************/ int temp_change(int count,bit f) //上下限温度调整 {
if(key2==0)
//判断K2是否按下
{ if(v2==0)beer=0; keyscan_delay(10); if(key2==0)
{ beer=1; if(f==0)
//v2=0开按键音,否则消按键音 //延时10ms
//再次判断K2是否按下(实现按按键时消抖) //K2按下关按键音 //若温度为正
{
count++; //每按一下K2温度上调1
if(a==1){if(count>125) count=125;}//当温度值大于125时不上调 if(a==2){if(count>125) count=125;} }
if(f!=0) //若温度为负
{ count++; //每按一下K2温度下调1 if(a==1){if(count>55) count=55;}//当温度值小于-55时不再下调 if(a==2){if(count>55) count=55;} } }
while(key2==0); //K2松开按键时消抖
keyscan_delay(10); }
if(key3==0) {
if(v2==0)beer=0; keyscan_delay(10); if(key3==0)
//K3按按键时消抖
{
beer=1; count--; //每按一下K3温度为正时下调1,为负时上调1 if(a==1){if(count<0) count=0;}//当温度值达到0时不再调 if(a==2){if(count<0) count=0;} }
while(key3==0);
keyscan_delay(10); //K3松开按键时消抖
}
return count;
}
/******************************************************/ /* 读键盘函数 /
/*****************************************************/ void keyscan() {
if(key1==0) {
if(v2==0)beer=0; keyscan_delay(10); if(key1==0)
//K1按按键时消抖
{ beer=1; TR1=1; //开定时器1,通过s标志位的变化,实现在上下限温度调整时温度显示时闪烁的功能 k4=1; //在上下温度调节功能模式下选择K4的调整上下限温度正负的功能 v=1; //在上下温度调节功能模式下选择K2、K3的温度加减功能 i++; //K1按一下i加1,i=‘0’进入正常模式,i=‘1’进入调上限模式,i=‘2’进入调下限模式 if(i>2) //K1按下三次后退出调节模式
{
i=0;
//进入正常模式
TR1=0;
//关定时器1
//在正常模式下选择K4的消按键音功能 //在正常模式下选择K2、K3的查看上下限
k4=0; v=0; 报警温度功能 store_t();
} switch(i)
//存储调整后的上下限报警温度 //显示选择
{
case 0:a=0;break; //a=0选择显示测得的温度 case 1:a=1;break; //a=1选择显示上限温度 case 2:a=2;break; //a=2选择显示下限温度 default:break; } }
while(key1==0);
//K1松按键时消抖
keyscan_delay(10);
}
if(a==1&&v==1) //a=1选择显示上限温度且v=1时选择上下限温度加功能
{led=0;max=temp_change(max,f_max);}//显示上限温度 else if(a==2&&v==1) //a=2选择显示下限温度且v=1时选择上下限温度减功能
{led=1;min=temp_change(min,f_min);} else;
if(k4==1) //k4=1时K4按键选择正负温度设定功能 {
if(key4==0)
{
if(v2==0)beer=0; keyscan_delay(5); if(key4==0) { beer=1; if(a==1) {if(max>55) f_max=0;else f_max=~f_max;}//当温度大于55度时,
只能设定为正温度
if(a==2) {if(min>55) f_max=0;else f_min=~f_min;}//当温度大于55度时,只能设定为正温度 } while(key4==0); keyscan_delay(10); } }
if(v==0) { if(key2==0) {
if(v2==0)beer=0; keyscan_delay(10); if(key2==0) { beer=1;
a=1; TR1=1;
s1=1;
出 } while(key2==0); keyscan_delay(10); }
if(key3==0) {
if(v2==0)beer=0; keyscan_delay(10); if(key3==0) { beer=1; a=2; TR1=1;
s1=1; //v=0时选择上下限查看功能 //选择上限显示
//开定时器1开始定时一分钟左右
//上限显示不闪烁,显示一分钟左右自动退
//选择下限显示 //开定时器1开始定时1s //下限显示不闪烁,显示1s自动退出
共分享92篇相关文档