WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30);具体解释下
时间: 2024-01-24 12:18:09 浏览: 69
这段代码是在使用1602液晶屏时,向其发送数据的部分。其中,WriteAddress(0x48)是向液晶屏发送指令,将光标移动到第二行的起始位置。delay_1602(5)是延时函数,等待一段时间,以确保液晶屏能够正常接收数据。WriteData(mSet/10+0x30)是向液晶屏发送数据,其中mSet/10是将变量mSet除以10,表示将要显示的数字的十位数;而+0x30是将其转换为ASCII码,以便液晶屏能够正确显示。例如,若mSet为23,则WriteData发送的数据为0x32和0x33,分别对应ASCII码中的数字2和3,液晶屏将在第二行显示数字23。
相关问题
if(keyAdd==0) { mSet++; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); while(!keyAdd); } if(keyDec==0) { mSet--; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); delay_1602(5); while(!keyDec); } 具体解释下
这段代码是一个简单的计数器程序,用于通过按键增加或减少一个变量mSet的值,并将其显示在LCD屏幕上。其中,keyAdd和keyDec分别是两个按键的输入信号,当按键被按下时,相应的输入信号会变为0。具体解释如下:
- if(keyAdd==0):如果按键keyAdd被按下,则执行以下代码块。
- mSet++:将变量mSet的值增加1。
- WriteAddress(0x48):设置LCD屏幕的光标位置为第一行第8列,用于显示计数器的数值。
- WriteData(mSet/10+0x30):将mSet的十位数转换为ASCII码,并写入LCD屏幕。
- WriteData(mSet%10+0x30):将mSet的个位数转换为ASCII码,并写入LCD屏幕。
- while(!keyAdd):等待按键keyAdd释放,即等待按键被松开。
类似地,if(keyDec==0)则表示如果按键keyDec被按下,则执行以下代码块,其中mSet--表示将变量mSet的值减少1。其余部分与if(keyAdd==0)的代码块相同。
#include "reg52.h" #include "LCD1602.h" #include "LCD1602.c" #include "ADC0832.h" #define uchar unsigned char #define uint unsigned int sbit relay=P1^6; sbit keyAdd=P3^2; sbit keyDec=P3^3; uchar str[]="Curret:00%"; uchar strV[]=" Set:50%"; void delay_ms(uint xms); void main() { uchar i; uchar mCurrent; uchar mSet=50; LcdInt(); Write_com(0x01); //ÇåÆÁ delay_1602(5); WriteAddress(0x03); delay_1602(5); for(i=0;i<11;i++) { WriteData(str[i]); delay_1602(5); } WriteAddress(0x40); delay_1602(5); for(i=0;i<11;i++) { WriteData(strV[i]); delay_1602(5); } while(1) { if(keyAdd==0) { mSet++; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); while(!keyAdd); } if(keyDec==0) { mSet--; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); delay_1602(5); while(!keyDec); } mCurrent=ADC0832()*99/255; WriteAddress(0x08); WriteData(mCurrent/10+0x30); WriteData(mCurrent%10+0x30); if(mCurrent<mSet) relay=0; else relay=1; delay_ms(200); } } void delay_ms(uint xms) { uint i,j; for(i=0;i<xms;i++) for(j=0;j<121;j++); }怎么改写显示屏上的数字
要改写显示屏上的数字,需要先确定要改写的数字所在的位置。这个代码中,当前电流值和设定电流值分别在第一行第四个字符和第二行第七个字符的位置。我们可以通过修改这些位置来改写数字。
比如,如果要改写第一行的电流值为“99”,可以将下面这行代码:
```
WriteAddress(0x08);
```
改为:
```
WriteAddress(0x09); // 第一行第五个字符
```
然后在接下来的两行代码中添加:
```
WriteData('9');
WriteData('9');
```
这样就可以将电流值改为“99”了。其他数字同理,只需要修改对应的位置和数字即可。
阅读全文