液晶显示屏LCD1602

news/2024/11/19 7:46:00/

液晶显示屏问题

**

步骤

**
液晶屏显示内部处理问题
读状态(检测是否属于忙碌状态)
写命令(输入给函数想要显示的位置信息)
写数据(输入给函数想要显示的信息内容)
初始化(使用液晶屏之前应先初始化)

读状态(检测是否属于忙碌状态)

void check_busy(void)
{uchar dt;do{dt = 0xff; //dt为变量,并设置初始值为0xffE = 0;//先置零 RS = 0;//按照规定在读写操作时才可以读忙标志,即RS=0,E=1时 RW = 1;E = 1;dt = out;//out为规定的P0口,将P0口的状态送入到dt中 }while(dt&0x80);//此处0X80转换成二进制即为10000000,即屏蔽掉D0到D6这七位的输入状态,//只检测D7口输出的数值,D7与BF相连,即检测BF的数值E = 0;//检测完毕再置零 } 

写命令(输入给函数想要显示的位置信息)

//写命令
void write_command(uchar com)
{check_busy();//除初始化不需要检测是否忙碌,其他任何时间都需首先检测是否忙碌//因写命令是在RS和E为零时才可以进行E = 0;//为写命令做准备 RS = 0;RW = 0;out = com;//将命令com写入P0口E = 1;//写命令时E应为正脉冲,即正跳变,_nop_();//空操作一个机械周期,等待硬件反应E = 0;//E为使能装置,每次使用完应置零delay(1); } 

写数据(输入给函数想要显示的信息内容)

 //写数据
void write_data(uchar dat)
{check_busy;E = 0;//为写入数据时,E变为正脉冲做准备 RS = 1;RW = 0;//按照规定此状态下才可以写入数据out = dat;//将数据dat从P0口输出,即写入到显示屏模块上 E = 1;//跳变为正脉冲_nop_();//空操作,留点时间给硬件反应E = 0//使用完再次置零delay(1); } 

初始化(使用液晶屏之前应先初始化)

void LCD_initial(void)
{
write_common(0x38);//写入0x38:两行显示,5*7点阵,8位数据 
write_common(0x0c);
write_common(0x05);
write_common(0x01);
delay(1);//延时程序 
}

具体内容可参考单片机书133页

//LCD1602液晶显示模块的初始化
#include<reg52.h>
//初始化函数 
void LCD_initial(void)
{
write_common(0x38);//写入0x38:两行显示,5*7点阵,8位数据 
}
//检测忙函数
void check_busy(void)
{uchar dt;do{dt = 0xff; //dt为变量,并设置初始值为0xffE = 0;//先置零 RS = 0;//按照规定在读写操作时才可以读忙标志,即RS=0,E=1时 RW = 1;E = 1;dt = out;//out为规定的P0口,将P0口的状态送入到dt中 }while(dt&0x80);//此处0X80转换成二进制即为10000000,即屏蔽掉D0到D6这七位的输入状态,//只检测D7口输出的数值,D7与BF相连,即检测BF的数值E = 0;//检测完毕再置零 } //写命令
void write_command(uchar com)
{check_busy();//除初始化不需要检测是否忙碌,其他任何时间都需首先检测是否忙碌//因写命令是在RS和E为零时才可以进行E = 0;//为写命令做准备 RS = 0;RW = 0;out = com;//将命令com写入P0口E = 1;//写命令时E应为正脉冲,即正跳变,_nop_();//空操作一个机械周期,等待硬件反应E = 0;//E为使能装置,每次使用完应置零delay(1); } //写数据
void write_data(uchar dat)
{check_busy;E = 0;//为写入数据时,E变为正脉冲做准备 RS = 1;RW = 0;//按照规定此状态下才可以写入数据out = dat;//将数据dat从P0口输出,即写入到显示屏模块上 E = 1;//跳变为正脉冲_nop_();//空操作,留点时间给硬件反应E = 0//使用完再次置零delay(1); } //延时程序void delay(uchar i)//非精确延时 
{uchar j = 250;for(;i>0;i--){while(--j);j = 249;while(--j);j = 250;//延时时间可通过执行的机械周期次数可大致计算出延时时间//本延时可用中断来实现精确延时 }
} 
void main(void)//主函数, 
{lcd_initial();//初始化函数,对于液晶屏,在使用前都应初始化,来确定程序运行的初始位置 while(1){string(0x85,"welcome");//0x85代表着10000101,显示第一行字符串 ,从左边第五个字符处开始显示 string(0xc2,"Harbin CHINA");//0xc2代表着11000010.显示第二行字符串,从左边第二个字符处开始显示 //详情可看单片机书134至135页,对于液晶屏显示位置的不同是根据要求显示 ,按照目标要求来计算出二进制地址 delay(100);//延时程序 write_command(0x01);//清屏命令,其他位置不显示出来,表示着剩下的所用的液晶不用显示,也不用被修改 delay(100);//延时程序 }} 
void string(uchar ad,uchar *s)//第一个用来表示输入的地址信息,第二个用字符串的形式用指针指来显示所想显示的文字 
{write_command(ad);while(*s>0){write_data(*s++);delay(100);}
}

http://www.ppmy.cn/news/161794.html

相关文章

三星S24A350型显示器黑屏解决方法

三星S24A350型显示器黑屏解决方法 今天一早来实验室&#xff0c;还是和往常一样打开电脑&#xff0c;但是有一点不一样的是电脑显示器么有任何反应。我关了显示器然后再打开&#xff0c;屏幕上就显示“HDMI“&#xff0c;然后就没有其他信息了。我把后面视频输入的线拔掉以后&a…

夏普屏、三星屏、台湾屏、IPS硬屏 各类液晶屏详解

夏普屏、三星屏、台湾屏、IPS硬屏 各类液晶屏详解 液晶电视的屏幕称之为液晶面板&#xff0c;现在市面上的液晶屏分为三大阵营&#xff1a; 一、夏普屏&#xff1b; 二、日韩厂商的液晶屏&#xff0c;如三星索尼&#xff08;S-LCD&#xff09;液晶屏和LGD液晶屏(原为LPL&…

微信号公众号嵌入H5

订阅号只能把H5的链接放入图文消息里面&#xff0c;只有服务号才能把链接放在菜单栏&#xff0c;使用微信JSSDK调用微信接口&#xff0c;文档地址

H5播放器

该贴为H5网页的播放器的收集贴&#xff0c;以后会持续更新&#xff1a; 1.西瓜视频播放器&#xff1a;感觉是比较专业的一款视频播放器&#xff08;推荐使用&#xff09;&#xff1a; http://h5player.bytedance.com/examples/ https://github.com/bytedance/xgplayer-vue …

微信支付开通H5支付

H5支付功能介绍 H5支付是指商户在微信客户端外的移动端网页展示商品或服务&#xff0c;用户在前述页面确认使用微信支付时&#xff0c;商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。 开通步骤…

hybrid 和 h5 的区别

优点 体验更好&#xff0c;跟 NA体验基本一致可快速迭代&#xff0c;无需 app 审核【关键】 ** 缺点** 开发成本高。联调、测试、查 bug 都比较麻烦运维成本高。参考此前讲过的更新上线的流程 ** 适用的场景** hybrid &#xff1a; 产品的稳定功能&#xff0c;体验要求高&…

h5微信支付功能

在微信内置浏览器中打开链接&#xff0c;调起微信支付 第一种需要openid的情况 <button class"but" click"gobuy">微信支付</button>import { setCookie, getCookie, isWeixin } from ../../utils/common // 引用方法async jsapi() {var param…

微信支付h5模式

简介 H5支付是指商户在微信客户端外的移动端网页展示商品或服务&#xff0c;用户在前述页面确认使用微信支付时&#xff0c;商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。 支付条件 H5支付后…