lcd开机流程图_LCD1602程序代码及显示流程图

lcd开机流程图_LCD1602程序代码及显示流程图描述lcd1602显示程序代码前些天弄了最小系统板后就想着学习1602的显示程序,可惜坛子里的或网上的,都没有简单的1602显示程序,无柰在网上下载了一段经过反复修改测试,终于有了下面一段代码://————————————————//-…

大家好,又见面了,我是你们的朋友全栈君。

描述

lcd1602显示程序代码

bbc05029ab944fe1c1e8b17a9ffb6e19.png

前些天弄了最小系统板后就想着学习1602的显示程序,可惜坛子里的或网上的,都没有简单的1602显示程序,无柰在网上下载了一段经过反复修改测试,终于有了下面一段代码:

// – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

// – – 初始化接口

# define LCD_DB P0 // – – P0 = DB0~DB7

sbit LCD_RS=P2^0; // – – p2.0 = RS

sbit LCD_RW=P2^1; // – – p2.1 = RW

sbit LCD_E=P2^2; // – – p2.2 = E

// – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

// – – 定义函数

# define uchar unsigned char

# define uint unsigned int

// – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

// – – 定义子程序函数

void LCD_init(void); // – – 初始化LCD1602函数

void LCD_write_command(uchar command); // – – 向LCD1602写指令函数

void LCD_write_data(uchar dat); // – – 向LCD1602写数据函数

void LCD_set_xy(uchar x,uchar y); // – – 设置LCD1602显示位置 X(0-16),y(1-2)

void LCD_disp_char(uchar x,uchar y,uchar dat); // – – 在LCD1602上显示一个字符

void LCD_disp_string(uchar X,uchar Y,uchar *s); // – – 在LCD1602上显示一个字符串

//void LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。

void LCD_delay_10us(uint n); // – – 10微秒的延时子程序

void LCD_delay_50us(uint n); // – – 50微秒的延时子程序

// – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

// – – 初始化LCD1602

void LCD_init(void)

{

LCD_delay_10us(20);

LCD_write_command(0x38); // – – 设置8位格式,2行,5×7

LCD_delay_10us(5);

LCD_write_command(0x0c); // – – 整体显示,关光标,不闪烁

LCD_delay_10us(5);

LCD_write_command(0x06); // – – 设定输入方式,增量不移位

LCD_delay_10us(5);

LCD_write_command(0x01); // – – 清除屏幕显示

LCD_delay_50us(40);

}

//********************************

// – – 向LCD1602写指令

void LCD_write_command(uchar dat)

{

LCD_delay_10us(5);

LCD_RS=0; // – – 指令

LCD_RW=0; // – – 写入

LCD_DB=dat;

LCD_delay_10us(5);

LCD_E=1; // – – 允许

LCD_delay_10us(5);

LCD_E=0;

}

// – – 向LCD1602写数据

void LCD_write_data(uchar dat)

{

LCD_delay_10us(5);

LCD_RS=1;// – – 数据

LCD_RW=0;// – – 写入

LCD_DB=dat;

LCD_delay_10us(5);

LCD_E=1;// – – 允许

LCD_delay_10us(5);

LCD_E=0;

}

// – – 设置显示位置

void LCD_set_xy(uchar x,uchar y)

{

uchar address;

if(y==1)

{

address=0x80+x; // – – 第一行位置

} else {

address=0xc0+x; // – – 第二行位置

}

LCD_delay_10us(5);

LCD_write_command(address);

}

// – – 显示一个字符函数

void LCD_disp_char(uchar x,uchar y,uchar dat) // – – LCD_disp_char(0,1,0x38); // – – 显示8

{

LCD_set_xy(x,y);

LCD_delay_10us(5);

LCD_write_data(dat);

}

// – – 显示一个字符串函数

void LCD_disp_string(uchar x,uchar y,uchar *s)

{

LCD_set_xy(x,y);

LCD_delay_10us(5);

while(*s!=‘\0’)

{

LCD_write_data(*s);

s++;

}

}

//********************************

/*******检查忙函数*************

void LCD_check_busy() //实践证明,在我的LCD1602上,检查忙指令通过率极低,以

{ //至于不能正常使用LCD。因此我没有再用检查忙函数。而使

do //用了延时的方法,延时还是非常好用的。我试了一下,用

{ LCD_E=0; //for循环作延时,普通指令只要1次循就可完成。清屏指令

LCD_RS=0; //要用200次循环便能完成。

LCD_RW=1;

LCD_DB=0xff;

LCD_E=1;

}while(LCD_DB^7==1);

******************************/

void LCD_delay_10us(uint n) // – – 10微秒的延时子程序

{

uint i,j;

for(i=n;i》0;i–)

for(j=2;j》0;j–);

}

void LCD_delay_50us(uint n) // – – 50微秒的延时子程序

{

uint i,j;

for(i=n;i》0;i–)

for(j=22;j》0;j–);

}

LCD1602显示程序流程图及句解

3e97c6dfe3e10f8c0fa0d5abccce67bb.png

让LCD1602显示字符前要输入字符所在的地址,这也是每显示一个字符地址要加一的原因,在下面的一段代码里你会明白怎么设置地址,怎么让地址自动加一,怎么清屏,怎么显示字符,希望你能看懂哦

sbit LCD_E=P2^0; //lcd1602控制置位

sbit LCD_RW=P2^1; //lcd1602控制置位

sbit LCD_RS=P2^2; //lcd1602控制置位

void LCD_command(unsigned char com)

{

LCD_E=0;

LCD_RW=0;

LCD_RS=0;

P1=com;

delay_us(100);

LCD_E=1;

delay_us(100);

LCD_E=0;

}

void LCD_date(unsigned char dat)

{

LCD_E=0;

LCD_RW=0;

LCD_RS=1;

P1=dat;

delay_us(100);

LCD_E=1;

delay_us(100);

LCD_E=0;

}

LCD_command(0x38); //设置LCD为16*2显示,5*7点阵,8位数据接口

LCD_command(0x0c); //设置LCD显示开,光标显示关

LCD_command(0x06); //写一个数据后地址加1

LCD_command(0x01); //显示清屏

LCD_command(0x80); //数据指针设置为第一行第一位

LCD_date(‘pi’);

LCD_date(‘l’);

LCD_date(‘e’);

LCD_date(‘a’);

LCD_date(‘s’);

LCD_date(‘e’);

LCD_date(‘ ’);

LCD_date(‘c’);

LCD_date(‘h’);

LCD_date(‘e’);

LCD_date(‘c’);

LCD_date(‘k’);

LCD_date(‘ ’);

LCD_date(‘t’);

LCD_date(‘h’);

LCD_date(‘e’);

LCD_command(0x80+0x40); //LCD地址指针指向第二行第一个位置

LCD_date(‘c’);

LCD_date(‘o’);

LCD_date(‘n’);

LCD_date(‘n’);

LCD_date(‘e’);

LCD_date(‘c’);

LCD_date(‘t’);

LCD_date(‘i’);

LCD_date(‘o’);

LCD_date(‘n’);

LCD_date(‘!’);

LCD_date(‘!’);

打开APP阅读更多精彩内容

点击阅读全文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160128.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 私域流量辅助工具

    什么是私域流量?私域流量是指从公域、它域(平台、媒体渠道、合作伙伴等)引流到自己私域(官网、用户名单),以及私域本身产生的流量(访客)。私域流量是可以进行二次以上链接、触达、发售等市场营销活动用户数据。  对于企业来说,随着流量红利的耗尽,企业新客增量逐渐达到瓶颈,想要维持业绩增长,挖掘老用户更多价值就成为了很多公司的共识。公域流量获客成本较高,而私域流量则不用付费就能够为品牌带来更多新用户。在私域运营中,品牌往往更注重用户需求,而不是货品,因此,这些新用户在品牌的私域流量用户池中,往往比公域流量的用户更

    2022年4月7日
    60
  • python漫画阅读器 漫画网站只能左右翻页,没法上下滚动连续下拉式观看且广告多体验差?因涉及“版权不明”, 审核未通过

    python漫画阅读器 漫画网站只能左右翻页,没法上下滚动连续下拉式观看且广告多体验差?因涉及“版权不明”, 审核未通过没钱看正版漫画,盗版漫画网站只能左右翻页,没法上下滚动观看且广告多体验差?于是我写了个python爬虫。手机上无论是收费还是免费盗版的漫画都有各种各样的app可供选择,正版的像是腾讯动漫,哔哩哔哩漫画,菠萝包等等,免费的比如动漫之家,免费搜书大全阅读器等等。(说是搜书其实也能看漫画,本质就是一个爬虫);而且阅读的体验也都很不错,且大部分时候也都是在手机上阅读。但当我心血来潮在笔记本上看盗版漫画(穷学生一个)的时候发现很多的盗版漫画网站只有左右翻页观看,翻页很累,而且图片老大一张,网站又没有漫画图片大小调整

    2022年6月16日
    42
  • navcat 15 激活码[在线序列号]「建议收藏」

    navcat 15 激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    53
  • ASP.NET_氚云开发

    ASP.NET_氚云开发氚云平台对接中间件WebService(修订版20200714)1.代码示例C#语言进行编写,运行在.NetFramework4.5环境2.使用VS2015以及以上版本打开.sln解决方案3.第三方WebService结构必须按照氚云规定的格式,方法和参数都不可变动,否则氚云平台无法调用4.所有数据传输均使用标准的Json格式数据5.第三方WebService必须发布至公网,氚云平台才可正常配置地址注意:此示例代码只是演示接口基础调用,没有做安全方面防范措施!!!不可直接使用项目结构:1

    2025年8月12日
    3
  • atm异步传输模式_atm交换机的基本功能

    atm异步传输模式_atm交换机的基本功能ATM(异步传输模式)异步传输模式,又叫信元中继。ATM采用面向连接的交换方式,它以信元为单位。每个信元长53字节。其中报头占了5字节。ATM能够比较理想地实现各种QoS,既能够支持有连接的业务,又能支持无连接的业务。是宽带ISDN(B-ISDN)技术的典范。  异步传输模式(ATM)在ATM参考模式下由一个协议集组成,用来建立一个在固定53字节的数据包(信元)流上传输所有

    2022年9月21日
    3
  • Google 离线地图_谷歌地图离线包下载手机版

    Google 离线地图_谷歌地图离线包下载手机版google离线地图展示和渲染由于项目的需要,在线地图无法满足业务需要,于是要做离线地图。经过一段时间的调研,最后选择了谷歌离线地图原因是通过现成的工具便可完成。感谢前人栽的树,在此整理总结。以下内容和代码是调研时准备的,仅供参考使用。离线地图制作技术:googlemapapi准备:googlemapapiv3离线版,地图切图工具,Google_Maps_API

    2026年1月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号