按键扫描处理程序流程图代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.3.2 按键扫描处理程序流程图

(1)按键扫描处理代码

/* 功能实现参数,参数mode为Key_Menu按键选择的功能模块*/

void Display(unsigned char mode)

{

switch (mode)//显示模式,0为显示实时温度,1为显示温度上限,2为显示温度下限

{

case 0: if (temperature < 0)//温度小于0

{

temperature = -temperature;//换为正温度

DisplaySeg(0x40, temperature % 1000); //0x40为负号

}

else DisplaySeg(codeSeg[temperature % 10000 / 1000], temperature % 1000);

break;

case 1: DisplaySeg(0x76, alarm_temp_H * 10); break;//显示温度上限,0x76为H字符

case 2: DisplaySeg(0x38, alarm_temp_L * 10); break;//显示温度下限,0x38为L字符

default:break;

}

}

/* 按键扫描和处理函数*/

void KeyScan(void)

{

if (Key_Menu == 0)//判断按键是否被按下

{

DelayMs(10);//延时10毫秒,去抖动干扰

if (Key_Menu == 0)//再次确认按键是否被按下

{

while(Key_Menu == 0)Display(menu);//等待按键释放,器件扫描数码管

menu++;//功能键,功能切换

if (menu == 3)menu = 0;//三个功能切换完

}

}

if (Key_Add == 0)

{

DelayMs(10);

if (Key_Add == 0)

{

while(Key_Add == 0)Display(menu);

switch (menu)

{

case 1: if (alarm_temp_H < 50)alarm_temp_H++;break;//加温度上限

case 2: if (alarm_temp_L < 27)alarm_temp_L++;break;//加温度下限

default:break;

}

}

}

if (Key_Dec == 0)

{

DelayMs(10);

if (Key_Dec == 0)

{

while(Key_Dec == 0)Display(menu);

switch (menu)

{

case 1: if (alarm_temp_H > 30)alarm_temp_H--;break;//减温度上限

case 2: if (alarm_temp_L > 7)alarm_temp_L--;break;//减温度下限

default:break;

}

}

相关文档
最新文档