做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE MCU!";
uchar code table1[]="www.TXMCU.COM";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;z>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;P0=com; delay(5);
lcden=1;delay(5);lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;P0=date;delay(5);
lcden=1;delay(5);lcden=0;
}
void init()
{
dula=0;wela=0;lcden=0;
write_com(0x38);write_com(0x0c);
write_com(0x06);write_com(0x01);
}
void main()
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(5);
}
while(1);
}
……自己已经找到了,大晚上的眼睛不好使

程序只是没有逻辑错误和语法错误,但液晶的控制貌似有些问题。给你一段1602的驱动程序做参考。
#define LCD1602_FLAG
#define LCD1602_PORT P1
#include<reg52.h>
#include<stddef.h>
#include"dtype.h"
sbit lcd1602_rs=P3^7;
sbit lcd1602_e=P3^5;
sbit lcd1602_rw=P3^6;
sbit lcd1602_busy=P1^7;
/*
************************************
* 函数名称:lcd1602_CheckBusy()
* 函数功能:状态查询
************************************
*/
void lcd1602_CheckBusy()
{
do
{
lcd1602_busy=1;
lcd1602_rs=0;
lcd1602_rw=1;
lcd1602_e=0;
lcd1602_e=1;
}
while(lcd1602_busy);
}
/*
***************************************
* 函数名称: lcd1602_WriteCmd()
* 函数功能:写命令
* 入口参数:命令字
* 出口参数:无
***************************************
*/
void lcd1602_WriteCmd(const INT8U cmd)
{
lcd1602_CheckBusy();
lcd1602_rs=0;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=cmd;
lcd1602_e=0;
}
/*
*******************************************
* 函数名称:lcd1602_WriteData()
* 函数功能:写数据
* 入口参数:c--待写数据
* 出口参数:无
*********************************************
*/
void lcd1602_WriteData(const INT8U c)
{
lcd1602_CheckBusy();
lcd1602_rs=1;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=c;
lcd1602_e=0;
}
/*
***********************************************
* 函数名称:lcd1602_Init()
* 函数功能:初始化LCD
* 入口参数:无
* 出口参数:无
***********************************************
*/
void lcd1602_Init()
{
lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵
lcd1602_WriteCmd(0x0f); //display enable,flag enable,flash enable,
lcd1602_WriteCmd(0x06); //flag move to right,screen don't move
lcd1602_WriteCmd(0x01); //clear screen
}
/*
************************************************
* 函数名称:lcd1602_Display()
* 函数功能: 字符显示
* 入口参数:ptr--字符或字符串指针
* 出口参数:无
* 说 明:用户可通过以下方式来调用:
* 1)lcd1602_Display("Hello,world!");
* 2) INT8U 存储类型 txt[]="要显示的字符串";
* 或者 INT8U 存储类型 txt[]={'t','x','t',..,'\0'};
* INT8U *ptr;
* ptr=&txt;
* lcd1602_Display(ptr);
* 或 lcd1602_Display(txt);
* 或 lcd1602_Display(&txt);
************************************************
*/
void lcd1602_Display(const INT8U *ptr)
{
INT8U data i=0;
INT8U *data q;
q=ptr;
lcd1602_WriteCmd(0x80);
while(q!=NULL && (*q!='\0') && i<16)
{
lcd1602_WriteData(*q);
q++;
i++;
}
lcd1602_WriteCmd(0xc0);
while(q!=NULL && (*q!='\0') && i>=16 && i<32)
{
lcd1602_WriteData(*q);
q++;
i++;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么我用单片机做显示屏没显示?
这屏幕只要加上电源就会亮的,不等于电路就对了。14脚的电位器的1脚要接到电源端VCC上,如下图所示。如果这样接还不显示,要调节电位器,直到显示出字符,或小黑块。当然不排除,你的程序不对,也不会显示出字符的,这时,就是调节电位器也不会显示的。但可以显示出小黑块了,再反回去调一点,小黑...

c51单片机数字时钟LCD显示时有时候切换到设置时间,屏幕卡住不显示是怎...
很可能程序编写的地方出现乱序或死循环,应该好好检查一下切换设置时间的子程序那一段。

单片机中 LCD1602不能显示字符
有光标闪烁表明显示正常阿,你想想,光标要闪烁,显示器初始化没问题,传输的数据也就没问题,显示也就没有问题了。因为其闪烁是由命令控制的。现在你可以根据闪烁光标查下看是不是对比度或亮度问题。先从硬件上查,不行就量下两块板的接口电压,对比找 ...

1602液晶显示的单片机为什么屏幕亮但不显示数字
delay();E = 0;} void L1602_init(void){ wcmd(0x38);\/\/设置16*2显示,5*7点阵,8位数据口 wcmd(0x0c);wcmd(0x06);wcmd(0x01);} void L1602_char(uchar hang,uchar lie,char sign){ uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;...

...STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了,可屏...
void main(){ \/\/led_init();\/\/液晶初始化 ledled_init();\/\/这才是初始化的函数 while(1){ display("你好",1); \/\/液晶屏上显示“你好”2s 钟后,改为显示“好的”delayms(2000);display("好的",1);delayms(2000);} } 试试看吧,其实最好初始化下端口好一点 ...

单片机液晶12864的程序问题。程序里的液晶不能显示,但数码管能显示0
据我推断,如果函数是对的,可能是接线问题。先跑个历程吧,每个屏幕都有历程程序。看看行不行,在看看屏幕的电压多少。

51单片机模拟串口控制lcd12864,显示不完全求解
第1种代码:单片机运行到while(1);这条语句后就不会往下走了,一直在这里死循环,运行空语句。就不会给液晶送数据了。第2种代码:单片机运行到while(1)后会往下执行,进入while循环,循环的给液晶送数据。循环的输出。就是有分号和没分号的区别。如果没有把while(1);语句放在末尾还是会循环...

用单片机写了一段在LCD上输出的程序,结果屏幕暗淡,过一会儿就熄了
这有点象是硬件方面的毛病。软件上不会出现这种现象的,不过你可以看看初始化是否正确。

用51单片机控制1602液晶显示10进制数字~~
WriteAddress(0x03); \/\/写地址,从第1行第4列开始显示 i=0; \/\/从字符数组的第1个元素开始显示 while(string[i]!='\\0') \/\/只要没有显示到字符串的结束标志'\\0',就继续 {WriteData(string[i]); \/\/将第i个字符数组元素写入LCDi++; \/\/指向下一个数组元素 }WriteAddress(0x46); \/\/写地址,将第二...

TFT显示屏只有背光不显示字符是什么原因?
(武汉谷鑫科技)专业研发生产单片机驱动TFT彩色液晶显示模块。你说的这个情况只能说明你的屏幕的电源接通了,信号线可能没有联通,或者是说链接错误,导致TFT显示屏只是亮了,但是不能显示其他的内容。

相似回答