微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机驱动LCD1602的制作一

单片机驱动LCD1602的制作一

时间:11-22 来源:互联网 点击:

7.设定CGRAM地址指令

功能:设定下一个要存入数据的CGRAM的地址。

8.设定DDRAM地址指令

功能:设定下一个要存入数据的CGRAM的地址。

9.读取忙信号或AC地址指令

功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;
当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
<2> 读取地址计数器(AC)的内容。

10.数据写入DDRAM或CGRAM指令一览

功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
<2> 将使用者自己设计的图形存入CGRAM。

11.从CGRAM或DDRAM读出数据的指令一览

功能:读取DDRAM或CGRAM中的内容。

基本操作时序:

读状态 输入:RS=L,RW=H,E=H 输出:DB0~DB7=状态字
写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码 输出:无
读数据 输入:RS=H,RW=H,E=H 输出:DB0~DB7=数据
写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据 输出:无

看了那么多是不是有些晕?我也是啊,不过慢慢理解还是没问题的。
实际上面说了那么多具体怎么操作我还是没会啊?好!咱就简单点。
举个实例,就在LCD1602屏幕上第一行第一列显示个“A”字。
1.先初始化。(老大!好像上面没初始化这条指令啊!)
先别拿东西扔我,说明书上是这么说的。也就先写入些指令。
//先定义接口
# include

# define LCD_DB P1
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;

# define uchar unsigned char
# define uint unsigned int
void LCD_init(void);//初始化函数
void LCD_write_command(uchar command);//写指令函数
void LCD_write_data(uchar dat);//写数据函数
void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2)
//void LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。
void delay_n40us(uint n);//延时函数
/
//********延时函数***************
void delay_n40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //在这个延时循环函数中我只做了2次循环,
} //实践证明我的LCD1602上普通的指令只需1次循环就能可靠完成。
//*******************************

//*********主函数*****************
void main(void)
{
LCD_init();
LCD_disp_char(0,1,"A");
while(1);
}

//*******************************

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top