void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) { if(*p == '\0') break; write(*p); p++; } }
时间: 2024-02-14 18:20:58 浏览: 143
这是一个用于控制LCD1602液晶显示屏的函数。该函数的作用是在指定的行和列上显示一段字符串。
函数接收三个参数:行号、列号和字符串指针。其中,行号可以是1或2,用于指定在哪一行上显示字符串;列号可以是1到16之间的数字,用于指定在哪一列上显示字符串;字符串指针指向要显示的字符串的首地址。
在函数中,首先根据行号计算出LCD的地址,并将该地址作为参数调用enable()函数,以确定写入数据时的位置。然后通过循环将字符串中的每一个字符写入到LCD中,直到遇到字符串结束符'\0'为止。在写入每一个字符时,调用write()函数将字符写入到LCD中。
相关问题
#include "lcd1602.h" void delay_ (uint i) { while(i--); } void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(20); e=1; delay_uint(20); e=0; } void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(20); e=1; delay_uint(20); e=0; } //设置当前行和列 void write_sfm(uchar hang,uchar add) { if(hang==1) //设置当前行 write_com(0x80+add); else write_com(0x80+0x40+add); } void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == '\0') break; write_data(*p); p++; } } void init_1602() { write_com(0x38); write_com(0x0c); write_com(0x06); delay_uint(1000); }
这是一个LCD1602液晶屏的驱动程序,用于控制1602液晶屏的显示。程序中包含以下函数:
1. delay_ (uint i):实现简单的延时功能,i表示延时的时间,通过while循环实现延时。
2. write_com(uchar com):向液晶屏写入指令,com表示指令的值,通过P0口将指令传递给液晶屏,实现对液晶屏的控制。
3. write_data(uchar dat):向液晶屏写入数据,dat表示数据的值,通过P0口将数据传递给液晶屏,实现对液晶屏的显示。
4. write_sfm(uchar hang,uchar add):设置当前行和列,hang表示当前行,add表示当前列,通过调用write_com函数实现设置。
5. write_string(uchar hang,uchar add,uchar *p):向液晶屏写入字符串,hang表示字符串所在的行,add表示字符串所在的列,p表示字符串的地址,通过调用write_data函数实现向液晶屏的写入。
6. init_1602():初始化液晶屏,通过调用write_com函数实现对液晶屏的初始化。
总的来说,这个程序实现了对LCD1602液晶屏的控制和显示。其中,延时函数和向液晶屏写入指令和数据的函数是基础,而设置当前行和列、写入字符串和初始化函数则是对这些基础函数的封装。
#include "lcd1602.h" void delay_ (uint i) { while(i--); } * 名称 : write_com(uchar com) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(20); e=1; delay_uint(20); e=0; } * 名称 : write_data(uchar dat) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(20); e=1; delay_uint(20); e=0; } //设置当前行和列 void write_sfm(uchar hang,uchar add) { if(hang==1) //设置当前行 write_com(0x80+add); else write_com(0x80+0x40+add); } * 名称 : write_string(uchar hang,uchar add,uchar *p) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下 write_string(1,5,"ab cd ef;") * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == '\0') break; write_data(*p); p++; } } * 名称 : init_1602() * 功能 : 初始化1602液晶 * 输入 : 无 * 输出 : 无 void init_1602() { write_com(0x38); //数据总线为8位,显示2行,5x7点阵 write_com(0x0c); //开显示,有光标,光标闪烁 write_com(0x06); //光标自动右移 delay_uint(1000); //等待设置完成 }
这是一段使用8051单片机控制LCD1602液晶显示器的代码。代码中包含了一些函数,如write_com()用于向LCD1602发送命令,write_data()用于向LCD1602写入数据,write_string()用于将字符串写入LCD1602的指定位置,init_1602()用于初始化LCD1602。代码中还有一些延时函数,如delay_(),用于提供延时等待。
在代码中,使用了P0口来控制LCD1602显示器。其中,rs、rw、e分别代表寄存器选择、读写选择、使能信号的引脚,可以通过修改这些引脚的电平来向LCD1602发送命令或数据。
通过调用这些函数,我们可以在LCD1602显示器上显示各种信息,如字符、数字、符号等。例如,我们可以使用write_string()函数将字符串"Hello World!"写入LCD1602的第1行第1列处,代码如下:
```C
init_1602(); //初始化LCD1602
write_string(1, 1, "Hello World!"); //将字符串写入LCD1602的第1行第1列处
```
需要注意,该代码是基于8051单片机的,如果您要在其他平台上使用,需要根据具体的硬件平台和开发环境进行相应的修改。
阅读全文