外观
加入开机显示与提示
功能分析
在前面的屏幕显示实验中,已经将屏幕成功点亮了,这里在长按开关机的时候,并没有任何提示与反应,给人的交互效果就非常不友好,这里加入图片来进行处理,在开机的时候显示开机图片,同时蜂鸣器短暂鸣叫,关机的时候显示文字,蜂鸣器也短暂鸣叫。
功能实现
创建工程
- 点击左上方文件、选择新建,选择新建MounRiver工程。
- 对工程进行修改,修改完成后点击"完成"按键,系统会自动生成好工程;
- 创建自己的工程库文件夹,将之前的库文件包含进来,包括蜂鸣器驱动文件、屏幕驱动显示文件、长按开关机文件;
- 对工程库路径进行包含;
代码实现
- 开机显示需要图片,这里我使用嘉立创EDA的logo作为开机标志,在关机时显示白底黑字。
图片与文字取模教程在厂商资料包中有提供,这里直接将取模好的图片文件命名为TurnOn.h,将原有的pic.h删除掉,减少内存占用。
- 在按键任务中,加入显示图片函数与蜂鸣器鸣叫函数,此时当按键长按松手后,蜂鸣器短暂鸣叫,嘉立创EDALogo图片即可正常显示出来充当开机动画,间隔一段时间后,恢复为正常显示状态。
按键任务
C
/*
* 函数内容:按键检测任务
* 函数参数:无
* 返回值:无
*/
void key_task(void)
{
uint8_t keyvalue = KEY_NO_PRESS;
uint8_t ret = ERROR;
ret = Scanf_Power_Key(&keyvalue);
if(ret == SUCCESS){
if(keyvalue == KEY_STORT_PRESS){
}else if((keyvalue == KEY_LONG_PRESS)&&(first_press_flag == 0)){
Open_BEEP();
Delay_Ms(400);
Close_BEEP();
LCD_ShowPicture(0,0,LCD_W, LCD_H,gImage_TurnOn);
Delay_Ms(2000);
LCD_Fill(0, 0, LCD_W, LCD_H, WHITE);
first_press_flag = 1;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- 关机不需要在按键任务中处理,只需要你再次长按,就会进入关闭函数,若此时没有松手,系统不会断电,一旦松手,系统立刻断电,不会有剩余操作进行,这里要做的就是将“关机”两个字通过取字模软件转换过来,建议32*32,这样看的更加清晰,随后调用即可。
关机代码
C
case STABILIZE_STATE: //稳定状态
if(tempkeyvalue == prekeyvalue) //现在的按键值跟刚才保存的按键值相等,证明不是抖动
{
if(keylong_flag > 1500){
lastkeyvalue = KEY_LONG_PRESS;//按键长按
if(first_press_flag == 0){
Open_Power(); //开机
}
else {
LCD_ShowChinese(48,48,"关机",BLACK,WHITE,32,0);
Close_Power(); //关机
}
}
}
else { //按键弹起了,进入稳定状态
state = CPLT_STATE;
}
break;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TIP
长按开机,进行提示,再次长按显示提示关机
源码&USB下载工具等软件,均在[gitee资料中](https://gitee.com/chen11232/simple-digital-multimeter)