51单片机1602显示程序,无错误,但是硬件仿真没显示呢?(单片机 1602显示代码没错误。但是不显示字)
- 单片机 1602显示代码没错误。但是不显示字
- 单片机LCD1602液晶程序问题,仿真没问题,实物不显示
- 单片机51液晶1602的显示程序,没错怎么不能用?
- 单片机程序完成了 电路连好了 仿真时候 LCD1602只是亮 但是什么显示没有 怎么看程序运行没有啊
单片机 1602显示代码没错误。但是不显示字
检查一下硬件连线是否正确,灰度电位器(或者定值电阻)连接是否正确。
还有,检查一下程序里定义的管脚和实际的管脚是否一致。看看RS,RW和E是否接在程序中定义的那几个管脚上。
以及,你的P0口有没有接上拉电阻?P0口和1602的并行数据线高低位顺序又没有弄错?
单片机LCD1602液晶程序问题,仿真没问题,实物不显示
空无一物?1602里就是没程序,也应该在第一行出现16个5X8点阵黑块。
单片机51液晶1602的显示程序,没错怎么不能用?
先检查一下你的硬件接法有没有问题,然后再来检查软件问题·~
单片机程序完成了 电路连好了 仿真时候 LCD1602只是亮 但是什么显示没有 怎么看程序运行没有啊
程序问题的,我给你分享一个测试可以用的吧!显示字符串:
#include <reg52.h>//51单片机相关库
typedef unsigned int uint;//数据类型重新定义
typedef unsigned char uchar;
sbit LCD_RS=P2^0;//数据/命令选择位
sbit LCD_RW=P2^1;//读/写选择位
sbit LCD_EN=P2^2;//使能信号
uchar lcd_tab[]={"89S52"};//第一行显示的字符串
uchar lcd_tab1[]={"I LOVE MCU"};//第二行显示的字符串
/**********************************************************************
*函数名称:_delay_ms
*输 入:uint x
*输 出:无
*功 能:延时函数
**********************************************************************/
void _delay_ms(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
/**********************************************************************
*函数名称:LCD_Write_Command
*输 入:uchar cmd
*输 出:无
*功 能:向LCD1602写指令
**********************************************************************/
void LCD_Write_Command(uchar cmd)
{
LCD_RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=cmd;//将数据送入P2口,即写入指令或地址
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:LCD_Write_Data
*输 入:uchar dat
*输 出:无
*功 能:向LCD1602写数据
**********************************************************************/
void LCD_Write_Data(uchar dat)
{
LCD_RS=1;//RS为高电平,RW为低电平时,可以写入数据
LCD_RW=0;
LCD_EN=0;//EN置低电平
P0=dat;//将数据送入P0口,即将数据写入液晶模块
LCD_EN=1;//EN置高电平
_delay_ms(1);//稍延时,给硬件反应时间
LCD_EN=0;//当EN由高电平跳变成低电平时,液晶模块开始执行命令
}
/**********************************************************************
*函数名称:Init_LCD
*输 入:无
*输 出:无
*功 能:初始化LCD1602
**********************************************************************/
void Init_LCD(void)
{
LCD_Write_Command(0x38);//显示模式设置:16×2显示,5×7点阵,8位数据接口
_delay_ms(1);
LCD_Write_Command(0x06);//显示模式设置:光标右移,字符不移
_delay_ms(1);
LCD_Write_Command(0x0c);//显示模式设置:显示开,无光标,光标不闪烁
_delay_ms(1);
LCD_Write_Command(0x01);//清屏幕指令,将以前的显示内容清除
_delay_ms(1);
}
/**********************************************************************
*函数名称:LCD_POS
*输 入:uchar pos
*输 出:无
*功 能:字符显示位置
**********************************************************************/
void LCD_POS(uchar pos)
{
LCD_Write_Command(0x80|pos);//显示位置的确定方法规定为"80H+地址码x"
}
/**********************************************************************
*函数名称:Show_String
*输 入:uchar *str
*输 出:无
*功 能:LCD1602显示字符串处理函数
**********************************************************************/
void Show_String(uchar *str)
{
while(*str!='\0')//只要没有写到结束标志,就继续写
LCD_Write_Data(*str++);//将字符常量写入LCD,并指向下一个字符
}
/**********************************************************************
*函数名称:main
*输 入:无
*输 出:无
*功 能:函数主体
**********************************************************************/
void main(void)
{
Init_LCD();
while(1)
{
LCD_POS(0);//第一行第一列开始显示
Show_String(lcd_tab);//将lcd_tab数组字符串写入LCD显示出
LCD_POS(0x40);//第二行第一列开始显示
Show_String(lcd_tab1);//将lcd_tab1数组字符串写入LCD显示
}
}