wan网站建设,wordpress 代码 翻译,工业和信息网站备案管理系统,网站建设全包 广州一、数据手册解读
通过看数据手册我们需要知道#xff0c;这个屏幕每个引脚的定义以及如何进行发送和接收。通过下面这张图我们就可以知道#xff0c;这些引脚和我们的编程是有关的#xff0c;需要注意的是#xff0c;这里我们在接线的时候#xff0c;一定要把DB0-DB7接到…一、数据手册解读
通过看数据手册我们需要知道这个屏幕每个引脚的定义以及如何进行发送和接收。通过下面这张图我们就可以知道这些引脚和我们的编程是有关的需要注意的是这里我们在接线的时候一定要把DB0-DB7接到同一个端口意思就是要接P0就都接P0。这样方便我们直接去处理。我们这里使用的是并行数据传输也就是说并不像我们之前学习的I2C和SPI接口需要一位一位的接收和发送。这里的8位数据是同时进行传输的。因此时序上也会有一些区别。 根据上面这张图片我们需要知道我们要那些底层的函数我们只想在LCD1602上进行显示因此我们这次不需要读的一些函数只需要一个写指令和一个写数据函数。因此具体的函数实现如下
void lcd1602_write_cmd(uchar cmd)
{LCD1602_DABUS cmd;LCD1602_EN 1;LCD1602_WR 0;LCD1602_RS 0;LCD1602_EN 0;delay40us();
}void lcd1602_write_date(uchar date)
{LCD1602_DABUS date;LCD1602_EN 1;LCD1602_WR 0;LCD1602_RS 1;LCD1602_EN 0;delay40us();
}
相信大家看到了每个函数结束会有一个延时函数这是因为不论是写指令还是写数据LCD1602内部的芯片都需要一定的时间来进行处理这里我们的延时就是让CPU等一等内部的芯片。
二、LCD1602常用指令集 我们需要注意的是最后一个指令判断忙碌信号我的LCD1602忙信号老是过不去因此我在前面使用了延时而不是用这种检测方式。对于上面的指令你可以将它想象成为你要使用一个东西之前你需要先对他进行一些设置也就是进行初始化。
三、LCD1602初始化及显示函数
void lcd1602_init(void)
{lcd1602_write_cmd(0x01); //发送清屏指令delay2ms(); //等待指令执行lcd1602_write_cmd(0x06); //模式设置 写入数据后光标右移写入数据后显示屏不移动lcd1602_write_cmd(0x0f); //显示功能开 有光标 光标不闪烁lcd1602_write_cmd(0x14); //设定显示屏或光标移动方向 设置为光标右移1格且AC值加1lcd1602_write_cmd(0x38); //数据总线位数为8位 显示2行 5*7点阵
}
//设置需要显示字符的坐标
//x取值0-15 y取值0-1
void lcd1602_setcoord(uchar x, uchar y)
{uchar addr 0;if (y 0){addr 0x80 x;}else{addr 0xc0 x;}lcd1602_write_cmd(addr);
}
//在LCD1602上显示字符串而且这个函数还可以实现自动换行显示
void lcd1602_display_str(uchar x, uchar y, uchar *str)
{uchar i 0;lcd1602_setcoord(x, y);while (str[i] ! \0){lcd1602_write_date(str[i]);if (((i x) 15) y 0){lcd1602_setcoord(0, 1);}else if (((i x) 15) y 1){lcd1602_setcoord(0, 0);}i;}
} 这张图片就是DDRAM内存里面的地址如果我们想要显示一个字符我们首先需要发送一个地址也就是说我们需要告诉LCD1602在那个地方进行显示然后发送我们需要显示的数据。因此在每次显示前都需要设置地址。但是我们需要注意的是同一个地址只能显示一个字符不然的话就会进行覆盖。上面代码里面的第二个函数就是用来设置地址的这个函数会将我们想要显示的坐标位置转换成内部内存的地址我们只需要告诉函数x,y的坐标函数就会自己转换。上面代码里面的最后一个函数就是用来显示字符串的。只需要给他传入起始坐标和字符串的头指针就可以完成显示。