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

做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看,第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++;

}

}

#include "reg52h"

sbit LED=P1^0;//LED锁存器

sbit SEG=P1^1;//数码管段选锁存器

sbit DIG=P1^2;//数码管位选锁存器

unsigned char t;

sbit LCDRS=P2^7;//数据指令控制

sbit LCDRW=P2^6;//读写控制

sbit LCDEN=P2^5;//液晶屏使能控制

//延时函数,延时n1ms

void delay(unsigned char n)

{

int i,j;

for (i=0; i<n; i++)

for (j=0; j<100; j++)

;

}

//写命令

void Write_Cmd(unsigned char C)

{

LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令

LCDRS=0;//指令寄存器选择

P0=C;

delay(5);

LCDEN=0;

}

//写数据

void Write_Data(unsigned char D)

{

LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令

LCDRS=1;//选择数据寄存器

P0=D;

delay(5);

LCDEN=0;

}

//LCD初始化

void LCD_Init()

{

LCDRS=0;//指令寄存器选择

Write_Cmd(0x01);//清屏

Write_Cmd(0x38);//功能设置8位双行显示57点阵

Write_Cmd(0x0F);//开关显示设置

Write_Cmd(0x06);//输入方式设置,光标从左向右移动,内容不移动

}

void main()

{

unsigned char Code1[]="I LOVE MCU!";

unsigned char m;

//LED,数码管锁存器片选设置

LED=0;

DUAN=0;

WEI=0;

LCDRW=0;//写选择

LCD_Init();

Write_Cmd(0x80+0x01);//写入显示缓冲区起始地址为1行2列

for(m=0;m<11;m++)

{

Write_Data(Code1[m]);

delay(3);

}

while (1)

;

}//end of main

光看代码你是不能了解它的使用历程的,最好看看使用手册,下面的代码是用1602液晶

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]="I LIKE MCU!";

uchar code table1[]=">

以上就是关于做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看全部的内容,包括:做一个单片机液晶显示数字的程序,程序没错,但是就是屏幕就是没有显示,麻烦大佬们看一看、编写51单片机实现液晶上字的循环显示和移动程序、最简单c51单片机液晶显示程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9659897.html

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

发表评论

登录后才能评论

评论列表(0条)

保存