LCD_Write_Char(0,1,'Y'); //十位 LCD_Write_Char(1,1,':'); //十位 LCD_Write_Char(2,1,num[bai]); LCD_Write_Char(3,1,num[shi]); LCD_Write_Char(4,1,num[ge]); LCD_Write_Char(6,1,'Y'); //十位 LCD_Write_Char(7,1,'Y'); //十位LCD_Write_Char(8,1,num[y_yanwu/100]); LCD_Write_Char(9,1,num[y_yanwu%100/10]); LCD_Write_Char(10,1,num[y_yanwu%10]); LCD_Write_Char(12,1,num[yudi]); all=bai*100+shi*10+ge; //个十百显示 if(key1==0) { while(key1==0); shouzi++; } if(key2==0) { while(key2==0); chuanghu_flag++; } if(shouzi%2==0) //自动 { LCD_Write_String(14,1,"SD"); if(chuanghu_flag%2==0) { if(chuanghu_flag_flag==0) { chuanghu_flag_flag=1; dianji1=1; dianji2=0; DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000);DelayMs(1000); dianji1=0; dianji2=0; }
时间: 2023-06-16 18:05:47 浏览: 71
这段代码是在控制LCD液晶屏上显示一些信息,并且根据按键的状态来控制一些逻辑。其中LCD_Write_Char函数是用来往液晶屏上写入一个字符,第一个参数是字符所在的列数,第二个参数是字符所在的行数,第三个参数是要写入的字符。num是一个存储数字字符的数组,bai、shi、ge、y_yanwu、yudi都是一些变量,对应不同的数字。key1和key2是两个按键的状态。如果key1被按下,shouzi加1,如果key2被按下,chuanghu_flag加1。最后根据shouzi和chuanghu_flag的状态来控制一些逻辑。
相关问题
void Dis_menu() { if(menu == 0) { LCD_Clear(); LCD_Write_String(0,0,"00:00:00"); LCD_Write_String(0,1,"00-00 Hum: %"); } else if(menu == 1) { LCD_Clear(); LCD_Write_String(0,0," Set time "); LCD_Write_String(0,1,"00-00 00:00:00 "); LCD_Write_Char(0,1,yue/16%16+0x30);LCD_Write_Char(1,1,yue%16+0x30); LCD_Write_Char(3,1,ri/16%16+0x30);LCD_Write_Char(4,1,ri%16+0x30); LCD_Write_Char(6,1,shi/16%16+0x30);LCD_Write_Char(7,1,shi%16+0x30); LCD_Write_Char(9,1,fen/16%16+0x30);LCD_Write_Char(10,1,fen%16+0x30); LCD_Write_Char(12,1,miao/16%16+0x30);LCD_Write_Char(13,1,miao%16+0x30); } else if(menu ==6) { LCD_Clear(); LCD_Write_String(0,0," Set chun "); LCD_Write_String(0,1," 00-00-00 S: "); LCD_Write_Char(1,1,A_shi/16%16+0x30);LCD_Write_Char(2,1,A_shi%16+0x30); LCD_Write_Char(4,1,A_fen/16%16+0x30);LCD_Write_Char(5,1,A_fen%16+0x30); LCD_Write_Char(7,1,A_miao/16%16+0x30);LCD_Write_Char(8,1,A_miao%16+0x30); LCD_Write_Number(13,1,shui1*10,3); } else if(menu ==10) { LCD_Clear(); LCD_Write_String(0,0," Set xia "); LCD_Write_String(0,1," 00-00-00 S: "); LCD_Write_Char(1,1,B_shi/16%16+0x30);LCD_Write_Char(2,1,B_shi%16+0x30); LCD_Write_Char(4,1,B_fen/16%16+0x30);LCD_Write_Char(5,1,B_fen%16+0x30); LCD_Write_Char(7,1,B_miao/16%16+0x30);LCD_Write_Char(8,1,B_miao%16+0x30); LCD_Write_Number(13,1,shui2*10,3); } else if(menu ==14) { LCD_Clear(); LCD_Write_String(0,0," Set qiu "); LCD_Write_String(0,1," 00-00-00 S: "); LCD_Write_Char(1,1,C_shi/16%16+0x30);LCD_Write_Char(2,1,C_shi%16+0x30); LCD_Write_Char(4,1,C_fen/16%16+0x30);LCD_Write_Char(5,1,C_fen%16+0x30); LCD_Write_Char(7,1,C_miao/16%16+0x30);LCD_Write_Char(8,1,C_miao%16+0x30); LCD_Write_Number(13,1,shui3*10,3); } else if(menu ==18) { LCD_Clear(); LCD_Write_String(0,0," Set dong "); LCD_Write_String(0,1," 00-00-00 S: "); LCD_Write_Char(1,1,D_shi/16%16+0x30);LCD_Write_Char(2,1,D_shi%16+0x30); LCD_Write_Char(4,1,D_fen/16%16+0x30);LCD_Write_Char(5,1,D_fen%16+0x30); LCD_Write_Char(7,1,D_miao/16%16+0x30);LCD_Write_Char(8,1,D_miao%16+0x30); LCD_Write_Number(13,1,shui4*10,3); } else if(menu ==22) { LCD_Clear(); LCD_Write_String(0,0,"Hum_L:"); LCD_Write_Number(6,0,hum_l,3); } } 对这段代码进行逐条注释
```c++
void Dis_menu() { //定义函数Dis_menu
if(menu == 0) { //如果当前菜单为0
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0,"00:00:00"); //在第0行第0列写入"00:00:00"
LCD_Write_String(0,1,"00-00 Hum: %"); //在第1行第0列写入"00-00 Hum: %"
} else if(menu == 1) { //如果当前菜单为1
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0," Set time "); //在第0行第0列写入" Set time "
LCD_Write_String(0,1,"00-00 00:00:00 "); //在第1行第0列写入"00-00 00:00:00 "
LCD_Write_Char(0,1,yue/16%16+0x30);LCD_Write_Char(1,1,yue%16+0x30); //在第1行第0列写入月份的十位数和个位数
LCD_Write_Char(3,1,ri/16%16+0x30);LCD_Write_Char(4,1,ri%16+0x30); //在第1行第3列写入日期的十位数和个位数
LCD_Write_Char(6,1,shi/16%16+0x30);LCD_Write_Char(7,1,shi%16+0x30); //在第1行第6列写入小时的十位数和个位数
LCD_Write_Char(9,1,fen/16%16+0x30);LCD_Write_Char(10,1,fen%16+0x30); //在第1行第9列写入分钟的十位数和个位数
LCD_Write_Char(12,1,miao/16%16+0x30);LCD_Write_Char(13,1,miao%16+0x30); //在第1行第12列写入秒钟的十位数和个位数
} else if(menu ==6) { //如果当前菜单为6
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0," Set chun "); //在第0行第0列写入" Set chun "
LCD_Write_String(0,1," 00-00-00 S: "); //在第1行第0列写入" 00-00-00 S: "
LCD_Write_Char(1,1,A_shi/16%16+0x30);LCD_Write_Char(2,1,A_shi%16+0x30); //在第1行第1列写入春季开始时间的小时的十位数和个位数
LCD_Write_Char(4,1,A_fen/16%16+0x30);LCD_Write_Char(5,1,A_fen%16+0x30); //在第1行第4列写入春季开始时间的分钟的十位数和个位数
LCD_Write_Char(7,1,A_miao/16%16+0x30);LCD_Write_Char(8,1,A_miao%16+0x30); //在第1行第7列写入春季开始时间的秒钟的十位数和个位数
LCD_Write_Number(13,1,shui1*10,3); //在第1行第13列写入水位的值
} else if(menu ==10) { //如果当前菜单为10
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0," Set xia "); //在第0行第0列写入" Set xia "
LCD_Write_String(0,1," 00-00-00 S: "); //在第1行第0列写入" 00-00-00 S: "
LCD_Write_Char(1,1,B_shi/16%16+0x30);LCD_Write_Char(2,1,B_shi%16+0x30); //在第1行第1列写入夏季开始时间的小时的十位数和个位数
LCD_Write_Char(4,1,B_fen/16%16+0x30);LCD_Write_Char(5,1,B_fen%16+0x30); //在第1行第4列写入夏季开始时间的分钟的十位数和个位数
LCD_Write_Char(7,1,B_miao/16%16+0x30);LCD_Write_Char(8,1,B_miao%16+0x30); //在第1行第7列写入夏季开始时间的秒钟的十位数和个位数
LCD_Write_Number(13,1,shui2*10,3); //在第1行第13列写入水位的值
} else if(menu ==14) { //如果当前菜单为14
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0," Set qiu "); //在第0行第0列写入" Set qiu "
LCD_Write_String(0,1," 00-00-00 S: "); //在第1行第0列写入" 00-00-00 S: "
LCD_Write_Char(1,1,C_shi/16%16+0x30);LCD_Write_Char(2,1,C_shi%16+0x30); //在第1行第1列写入秋季开始时间的小时的十位数和个位数
LCD_Write_Char(4,1,C_fen/16%16+0x30);LCD_Write_Char(5,1,C_fen%16+0x30); //在第1行第4列写入秋季开始时间的分钟的十位数和个位数
LCD_Write_Char(7,1,C_miao/16%16+0x30);LCD_Write_Char(8,1,C_miao%16+0x30); //在第1行第7列写入秋季开始时间的秒钟的十位数和个位数
LCD_Write_Number(13,1,shui3*10,3); //在第1行第13列写入水位的值
} else if(menu ==18) { //如果当前菜单为18
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0," Set dong "); //在第0行第0列写入" Set dong "
LCD_Write_String(0,1," 00-00-00 S: "); //在第1行第0列写入" 00-00-00 S: "
LCD_Write_Char(1,1,D_shi/16%16+0x30);LCD_Write_Char(2,1,D_shi%16+0x30); //在第1行第1列写入冬季开始时间的小时的十位数和个位数
LCD_Write_Char(4,1,D_fen/16%16+0x30);LCD_Write_Char(5,1,D_fen%16+0x30); //在第1行第4列写入冬季开始时间的分钟的十位数和个位数
LCD_Write_Char(7,1,D_miao/16%16+0x30);LCD_Write_Char(8,1,D_miao%16+0x30); //在第1行第7列写入冬季开始时间的秒钟的十位数和个位数
LCD_Write_Number(13,1,shui4*10,3); //在第1行第13列写入水位的值
} else if(menu ==22) { //如果当前菜单为22
LCD_Clear(); //清空LCD显示
LCD_Write_String(0,0,"Hum_L:"); //在第0行第0列写入"Hum_L:"
LCD_Write_Number(6,0,hum_l,3); //在第0行第6列写入湿度低值的值
}
}
```
lcd_write_char()的代码
以下是一个简单的lcd_write_char()函数的代码示例,用于在16x2的LCD屏幕上显示单个字符。
```c
void lcd_write_char(char c) {
// 写入字符到LCD缓存中
lcd_buffer[current_row][current_col++] = c;
// 如果当前列已满,则换行
if (current_col == 16) {
current_row++;
current_col = 0;
}
// 如果超出了16x2的范围,则回到第一行
if (current_row == 2) {
current_row = 0;
}
// 将光标移动到下一个位置
lcd_set_cursor(current_row, current_col);
}
```
其中,lcd_buffer是一个16x2的字符数组,表示LCD屏幕上的每个位置。current_row和current_col是当前光标的行和列位置。当一个字符被写入时,它被写入到lcd_buffer中的适当位置,然后光标位置被更新,以便下一个字符可以被写入到下一个位置。如果当前列已满,则光标位置将被移到下一行的第一个位置。如果超出了16x2的范围,则光标位置将被移到第一行的第一个位置。最后,lcd_set_cursor()函数被调用以将光标移动到下一个位置。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)