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

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

程序只是没有逻辑错误和语法错误,但液晶的控制貌似有些问题。给你一段1602的驱动程序做参考。

#define LCD1602_FLAG

#define LCD1602_PORT P1

#include<reg52h>

#include<stddefh>

#include"dtypeh"

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行57点阵

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++;

}

}

需要将LCD接口编程成数码管接口,并使用相应的编程语言来实现。

一般可以把LCD接口上的引脚连接到对应的数码管接口上的引脚,并且实现相应的控制命令来控制数码管显示内容。

1602液晶的程序我有,要做数字锁的话其实用到液晶也不多。

因为你显示密码是时候不应该都是现实吗?

你只需把键盘写入的数据存在一个数组中,然后跟密码数组对比就好了。

还有就是值得注意的是数据类型问题。

输入的键值看你处理的方式而定,密码存放的格式,还有输出显示的是ascll码。注意转换。

下面附带一段51的1602LCD的C程序,自己仔细琢磨。

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar table[16]="abcdefghijklmnyz";

uchar table1[16]="0123456789abcdef";

sbit lcden=P2^0;

sbit lcdrs=P2^1;

sbit dula=P2^6;

sbit wela=P2^7;

uchar num;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)

{ wela=0;

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_data(uchar date)

{ wela=0;

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init()

{

lcden=0;

write_com(0x38);

write_com(0x0e);

write_com(0x06);

write_com(0x01);

write_com(0x80);

}

void main()

{

init();

for(num=0;num<16;num++)

{

write_data(table[num]);

delay(20);

}

write_com(1);

write_com(0x80+0x40);

for(num=0;num<16;num++)

{

write_data(table1[num]);

delay(20);

}

while(1);

}

用单片机让LCD显示,一要保证电路正确,二是程序必须与电路相符,程序中的LCD的控制脚必须与实物相符。否则,液晶屏只亮并不显示字符。你主程序中的液晶屏初始化语句应放在第一行。你现在是放在最后了,假如前面语句显示了,可初始化后就全没了。

以上就是关于做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看全部的内容,包括:做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看、单片机把lcd改成数码管代码、1602液晶显示屏显示程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9706506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存