lcd1602显示问题
如图,我想再1602显示 000,结果他不是按照正常的横着16*2显示,而是竖着显示了,分开竖着两行显示了,是什么问题导致的?
代码如下
#define LCD_OUT DDRC=0xFF //数据端设为输出
#define LCD_C_DRR DDRD |= 0xE0 //控制端设为输出
#define LCD_DATA PORTC //发送数据端
#define LCD_RS_H PORTD |= BIT(5); //操作的是命令
#define LCD_RS_L PORTD &= ~BIT(5); //操作的是数据
#define LCD_RW_H PORTD |= BIT(6); //从1602读
#define LCD_RW_L PORTD &= ~BIT(6); //从1602写
#define LCD_OE_H PORTD |= BIT(7); //1602使能
#define LCD_OE_L PORTD &= ~BIT(7); //1602使能
#define LCDa_CURON 0x0E; //显示光标
#define LCDa_CURFLA 0x0F; //打开光标闪烁
/*********************
函数名称:LCD1602_init
功能:初始化1602液晶
参数:无
返回值:无
********************/
void LCD1602_init(){
LCD_OUT; //pc0-pc7接显示器8个数据位,数据端设为输出
LCD_C_DRR; //pd5接RS,pd6接R/W,pd7接E使能位,控制端设为输出
LCD_OE_L; //1602下降沿使能
LCD1602_write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口
delay(5);
LCD1602_write_com(0X0C); //设置开显示,不显示光标
delay(5);
LCD1602_write_com(0X01); //显示清0,数据指针清0
delay(5);
LCD1602_write_com(0X06); //写一个字符后地址指针加1
delay(5);
}
/*********************
界面显示子程序
函数名称:LCD1602_write_com(unchar com)
功能:向1602液晶写入一个字节指令
参数:com是指令
返回值:无
********************/
void LCD1602_write_com(uchar com){
LCD_RS_L; //操作的是数据
LCD_RW_L; //从1602写
LCD_DATA = com; //发送数据端portc
delay(5);
LCD_OE_H; //1602使能
delay(5);
LCD_OE_L;
}
/*********************
函数名称:LCD1602(unchar dat)
功能:向1602液晶写入一个字节数据
参数:dat是数据
返回值:无
********************/
void LCD1602_write_dat(uchar dat){
LCD_RS_H;
LCD_RW_L;
LCD_DATA = dat;
delay(5);
LCD_OE_H;
delay(5);
LCD_OE_L;
}
/*********************
函数名称:display
功能:1602显示
参数:add:地址 dat:数据
返回值:无
********************/
void display(uchar add,uchar dat){
LCD1602_write_com(add);
delay(2);
LCD1602_write_dat(dat);
delay(2);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论