case 4: { SelectPosition(0,11) ; write_com(0x0d); if(key==KEY_ADD) { if(yushe_guangzhao>=255) yushe_guangzhao=254; yushe_guangzhao++; LCD_Write_Char(0,12,yushe_guangzhao,3) ; } if(key==KEY_MINUS) { if(yushe_guangzhao<=1) yushe_guangzhao=1; yushe_guangzhao--; LCD_Write_Char(0,12,yushe_guangzhao,3) ; } } break; default : { write_com(0x38); write_com(0x0c); Mode=0; shezhi_flag = 0; shezhi_flag_1=0; times = 0; break; } } } }
时间: 2023-06-20 16:09:53 浏览: 36
这段代码是一个 switch-case 语句,根据不同的情况执行不同的代码块。当 case 4 时,会调用 SelectPosition 函数选择 LCD 显示屏上的位置,并写入一个回车符。然后根据按键值判断是否进行光照强度调节,如果按下加号键,则将光照强度加一,并在 LCD 上显示,如果按下减号键,则将光照强度减一,并在 LCD 上显示。如果不是以上情况,则会执行一个默认的代码块,将 LCD 屏幕清空,并将一些标志位和计数器归零。
相关问题
解释代码的设计思路:case 4: { SelectPosition(0,11) ; write_com(0x0d); if(key==KEY_ADD) { if(yushe_guangzhao>=255) yushe_guangzhao=254; yushe_guangzhao++; LCD_Write_Char(0,12,yushe_guangzhao,3) ; } if(key==KEY_MINUS) { if(yushe_guangzhao<=1) yushe_guangzhao=1; yushe_guangzhao--; LCD_Write_Char(0,12,yushe_guangzhao,3) ; } } break; default : { write_com(0x38); write_com(0x0c); Mode=0; shezhi_flag = 0; shezhi_flag_1=0; times = 0; break; } } } }
这段代码是一个 switch-case 语句块,根据用户选择的菜单项执行相应的操作。其中 case 4 表示用户选择了第四个菜单项,即设置光照强度,该菜单项对应的操作为调节光照强度。具体的设计思路如下:
1. 首先调用 SelectPosition(0,11) 函数将光标定位到 LCD1602 显示屏的第一行第12列,即光照强度的显示位置。
2. 然后调用 write_com(0x0d) 函数将光标移动到下一格,为后面的数字输入做准备。
3. 根据用户的按键操作,如果是 KEY_ADD,表示用户要增加光照强度,则先判断当前光照强度是否已经达到最大值 255,如果是则将光照强度设为 254,否则将光照强度加一,并将新的光照强度数值显示在 LCD1602 显示屏上。
4. 如果用户的按键操作是 KEY_MINUS,表示用户要减小光照强度,则先判断当前光照强度是否已经达到最小值 1,如果是则将光照强度设为 1,否则将光照强度减一,并将新的光照强度数值显示在 LCD1602 显示屏上。
5. 最后使用 break 语句跳出 switch-case 语句块,完成光照强度设置操作。
6. 如果用户选择的是其他菜单项,则执行 default 语句块中的操作,即将 LCD1602 显示屏清屏并初始化相关变量,以便下一次操作的进行。
case 2: { SelectPosition(0,12) ; write_com(0x0d); if(key==KEY_ADD) { yushe_shidu++; if(yushe_shidu>=90) yushe_shidu=90; LCD_Write_Char(0,13,yushe_shidu,2) ; } if(key==KEY_MINUS) { yushe_shidu--; if(yushe_shidu<=20) yushe_shidu=20; LCD_Write_Char(0,13,yushe_shidu,2) ; } break; } case 3: { if(shezhi_flag == 0 ) { LCD_Write_String(0,0,"SET Y:000 L:000"); LCD_Write_String(1,0,"NOW Y:000 L:000"); shezhi_flag = 1; LCD_Write_Char(0,6,yushe_yanwu,3); LCD_Write_Char(0,12,yushe_guangzhao,3); } SelectPosition(0,5) ; write_com(0x0d); if(key==KEY_ADD) { if(yushe_yanwu>=255) yushe_yanwu=254; yushe_yanwu++; LCD_Write_Char(0,6,yushe_yanwu,3) ; } if(key==KEY_MINUS) { if(yushe_yanwu<=1) yushe_yanwu=1; yushe_yanwu--; LCD_Write_Char(0,6,yushe_yanwu,3) ; } break; }
这段代码是一个 switch case 语句,根据不同的 case 执行不同的操作。在 case 2 中,当按下加号键时,变量 yushe_shidu 增加,但不能超过 90,当按下减号键时,变量 yushe_shidu 减少,但不能小于 20。在 case 3 中,如果 shezhi_flag 为 0,则显示一些设置信息,包括 yushe_yanwu 和 yushe_guangzhao 的值。在按下加号键时,yushe_yanwu 增加,但不能超过 255,按下减号键时,yushe_yanwu 减少,但不能小于 1。