仪器社区

LCD1602 从八位数据输出转四位数据输出 要做哪些改变

了_q759312805 2012-07-05
C编写,具体是哪些函数需要改变?我就改了初始化函数和写命令、写数据函数,但是输出屏幕空白代码如下voidLCD_Init(void)//初始化的{LCD_CTRL_DIR=0x00;//LCD控制用寄存器置为输出LCD... C编写,具体是哪些函数需要改变?我就改了初始化函数和写命令、写数据函数,但是输出屏幕空白
代码如下
void LCD_Init(void) //初始化的

{
LCD_CTRL_DIR = 0x00; // LCD控制用寄存器置为输出
LCD_DATA_DIR = 0x00; //LCD数据用寄存器也置为输出

LCD_DATA = 0x00; //清数据寄存器

DelayMS(5); //数据手册要求大于4.1ms

// 开始输出软件复位序列
LCD_Write_CMD(0x28);
DelayMS(1); //数据手册要求等待时间大于100us

LCD_Write_CMD(0x28);
DelayMS(1); //数据手册要求等待时间大于40us

LCD_Write_CMD(0x28);
DelayMS(1); //数据手册要求查忙信号或者等待时间超过40us

LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;

LCD_Write_CMD(0x28); //显示模式设为2行,8位数据模式
DelayMS(1); //数据手册要求查忙信号或者等待时间超过40us

LCD_Write_CMD(DISP_OFF); // 关显示
DelayMS(1); //数据手册要求查忙信号或者等待时间超过40us

LCD_Write_CMD(ENTRY_INC); //设定输入方式为地址增量
DelayMS(1); //数据手册要求查忙信号或者等待时间超过40us

LCD_Write_CMD(CLR_DISP); // 清空屏幕显示
DelayMS(1) ; //数据手册要求查忙信号或者等待时间超过40us
// 复位序列结束

LCD_Write_CMD(DISP_ON); // 开启LCD显示
DelayMS(1);

} //向LCD写指令 void LCD_Write_CMD( unsigned char LCD_CMD) {DelayMS(1);
LCD_RS=0;
LCD_DATA &= 0x0F;
LCD_DATA |= (LCD_CMD&0xF0);
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;

LCD_CMD=LCD_CMD<<4;
LCD_DATA &= 0x0F;
LCD_DATA |= LCD_CMD&0xF0;
LCD_E = 1 ;
NOP();
NOP();
LCD_E = 0 ;
DelayMS(1) ;
} //向LCD写数据 void LCD_Write_Data( unsigned char LCD_CMD) { DelayMS(1); LCD_RS=0; LCD_DATA &= 0x0F; LCD_DATA |= (LCD_CMD&0xF0); LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; LCD_CMD=LCD_CMD<<4; LCD_DATA &= 0x0F; LCD_DATA |= LCD_CMD&0xF0; LCD_E = 1 ; NOP(); NOP(); LCD_E = 0 ; DelayMS(1) ; }
评论
全部评论
天空空留
可以写入COM的函数,要有两个:8位总线、4位总线。
1.硬件连接时选择高4位线。
2.初始化的diyi步,要按照8位线来写入;写入的命令字的高四位,即把LCD初始化成为4位总线。
3.后续的初始化、以及以后再写入数据,都按照4位总线来写入;即:先送原来一个字节的高4位,再送低4位。
工业字符型液晶,能够同时显示16x02即32个字符。注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
12 0 2016-10-08 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论