解释void Display_1602(set,DATE) { //设置电压 write_com(0x80+6); write_data(0x30+set/100); write_data('.'); write_data(0x30+set%100/10); write_data(0x30+set%10); //时时电压 write_com(0x80+0x40+6); write_data(0x30+DATE/100); write_data('.'); write_data(0x30+DATE%100/10); write_data(0x30+DATE%10); }
时间: 2024-02-26 22:53:34 浏览: 24
这是一个函数定义,函数名称为 `Display_1602`,该函数有两个参数 `set` 和 `DATE`。函数的作用是在1602液晶屏上显示设置电压和当前电压。
函数内部的操作是将光标移动到特定的位置,然后通过调用 `write_data` 函数向液晶屏写入数据。具体来说,第一行代码将光标移动到第7个位置(即第2行第1个位置)并显示设置电压,第二行代码将光标移动到第23个位置(即第2行第7个位置)并显示当前电压。在显示电压时,数据被分成百位、十位和个位,并转换为 ASCII 码后输出。
相关问题
#define uchar unsigned char #define uint unsigned int sbit RS = P2^5;//数据/命令 sbit RW = P2^6;//读/写 sbit E = P2^7;//使能 uchar num[] = {"0123456789"}; void delayus(uint x) //延时函数 { while(x--); } void write_com(uchar com)//写命令 { RW = 0; RS = 0; E = 1; P0 = com; delayus(100); E = 0; } void write_data(uchar da)//写入数据 { RW = 0; RS = 1; E = 1; P0 = da; delayus(100); E = 0; } void init_1602() //LCD1602 初始化 { write_com(0x3c);//设定数据总线的个数4/8,显示一行/两行 write_com(0x0c);// //光标不显示 write_com(0x06);// //光标随字符右移 } void LCD_clr1602() //LCD1602 清屏 { write_com(0x01); // 对字符串清0 write_com(0x02); //对光标清0 } void goto_xy(uchar y,uchar x) //定位显示位置 { if(y == 1) write_com(x + 0x80); //定位第一行 else write_com(x + 0x80 + 0x40); //定位第二行 } void display_num(unsigned char x) //显示数字 { write_data(num[x / 10%10]); write_data(num[x % 10]); } void display_num1(unsigned int x) //显示数字 { write_data(num[x / 100 % 10]); write_data(num[x / 10 % 10]); write_data(num[x % 10]); } void display_string(uchar *p) //显示字符 { while(*p) { write_data(*p); p++; } } void display_xnum2(float x) //显示数字 { uint y,x1; y = (int)x; write_data(num[y / 10]); write_data(num[y % 10]); x1 = (int)((x -(float)y)*1000); display_string("."); write_data(num[x1 / 100 % 10]); // write_data(num[x1 / 10 % 10]); // write_data(num[x1 % 10]); } void display_xnum1(float x) //显示数字 { uint y,x1; y = (int)x; write_data(num[y / 10%10]); write_data(num[y % 10]); x1 = (int)((x -(float)y)*1000); display_string("."); write_data(num[x1 / 100 % 10]); }
这段代码是关于LCD1602液晶显示屏的控制代码,包括初始化、清屏、定位显示位置、显示数字和字符等函数。其中用到了延时函数和两个定义的宏,分别用于定义无符号字符和无符号整数类型。具体的函数功能如下:
1. delayus() 函数:用于实现微秒级延时,参数为延时的微秒数。
2. write_com() 函数:用于向LCD1602发送命令,参数为命令数据。
3. write_data() 函数:用于向LCD1602发送数据,参数为数据。
4. init_1602() 函数:用于初始化LCD1602,包括设置数据总线个数和显示行数,以及光标的显示。
5. LCD_clr1602() 函数:用于清屏操作。
6. goto_xy() 函数:用于定位显示位置,参数为要显示的行和列。
7. display_num() 函数:用于显示一个数字,参数为要显示的数字。
8. display_num1() 函数:用于显示一个两位数的数字,参数为要显示的数字。
9. display_string() 函数:用于显示一个字符串,参数为要显示的字符串。
10. display_xnum2() 函数:用于显示一个带小数点的数字,参数为要显示的数字。
11. display_xnum1() 函数:用于显示一个带小数点的两位数的数字,参数为要显示的数字。
这些函数可以根据需要自行调整和修改,以满足不同的LCD1602显示屏的控制需求。
void display_time() { Write_com(0x80); // 光标移动到第一行第一列 Write_dat('T'); Write_dat('i'); Write_dat('m'); Write_dat('e'); Write_dat(':'); Write_dat(hour / 10 + '0'); Write_dat(hour % 10 + '0'); Write_dat(':'); Write_dat(min / 10 + '0'); Write_dat(min % 10 + '0'); Write_dat(':'); Write_dat(sec / 10 + '0'); Write_dat(sec % 10 + '0');代码解释
这是一段显示时间的函数,使用了LCD显示屏,具体解释如下:
1. `Write_com(0x80);` 光标移动到LCD显示屏的第一行第一列,因为LCD显示屏是以行列的方式显示字符,0x80是显示屏地址的偏移量,0x80表示第一行第一列的地址。
2. `Write_dat('T'); Write_dat('i'); Write_dat('m'); Write_dat('e'); Write_dat(':');` 在LCD显示屏上依次显示 "Time:",这些字符将会显示在第一行第一列之后。
3. `Write_dat(hour / 10 + '0'); Write_dat(hour % 10 + '0');` 显示小时数,先将小时数除以10取整数部分,再加上字符'0',得到十位数的字符表示;然后将小时数对10取余数,再加上字符'0',得到个位数的字符表示。
4. `Write_dat(min / 10 + '0'); Write_dat(min % 10 + '0');` 显示分钟数,同上。
5. `Write_dat(sec / 10 + '0'); Write_dat(sec % 10 + '0');` 显示秒数,同上。
这样,LCD显示屏上就会按照 "Time:HH:MM:SS" 的格式显示当前时间。