找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11357|回复: 8
收起左侧

51单片机lcd1602按键切屏

  [复制链接]
ID:243791 发表于 2018-1-8 18:01 | 显示全部楼层 |阅读模式
大家好,我又来了,这次是基础切屏(我也只会这基础。。),我用的是stc15w4k56s4的单片机,作用是,可以使用和51一样的操作。

切屏
切屏:
例如我想在两个屏幕之间切换:
1、先把每个屏幕应该显示的效果给存起来
存入的数据.png

2、再把两个屏幕的显示操作写成函数形式(也可以直接写在主函数中,但是这样的话,主函数里就很臃肿,所以为了美观和方便操作,一般写成函数形式,直接调用函数就好,但是注意,没有使用的函数,系统会给警告)
lcd显示操作.png

3、写按键扫描函数
按键扫描.png
我使用两个按键,一个按键代表一个屏幕,这里要注意的是,我使用了清屏指令,我们可以先从显示操作函数的形象版看看:
m跑显示.png
我是用一个变量m来依次显示字符,如果要切换屏幕的话,就让m返回起点“m=0”,让它重新“跑”(m还挺辛苦的),切屏后,让它返回起点,那么如果之前跑过了lcd1字符串,那么它从起点开始跑,是用“替换”的方法跑,如果它没跑完之前lcd1的长字符串,那也就是说它只替换了之前的那一部分,后面还留有一部分没有替换,所以就得出了个道理:m它不能自动清掉它之前跑过的地方。那么我们只能再找个工人:指令设置函数(写指令函数)我用wcmd命名,01H是清屏指令。
还有要注意的就是按键抬起,如果没有按键抬起,那么如果我的按键是“按一下就+1”那么单片机就会一直循环+1,
4、主函数:
主函数.png
可以看到,由于我都是把操作指令给写成函数,所以主函数就直接调用,是不是很美观,除了美观还有个神奇功能!你可以右键某个函数,有项Go to definition of”xx”然后就可以直接飞到那个函数去!
I/O口初始化可以不用看,我用的是stc15w4kxxs4系列。
需要看的是while(1)这部分,这部分我花了好长时间才懂:
while(1)是等待
为啥是等待?因为它一直为1(1就是真),当它为真时,不跳出循环,为0(假)才能出来;
为啥加这个东西?这就要另外个知识点,我们使用的是C语言,是机器语言,所以我们要学会C语言,就只需要读懂C语言这个机器语言而已,C语言是按照主函数中的顺序读下来的,当读到某个调用函数,就Go to调用的函数,读里面的数据,再返回主函数继续,while(1)是为真就不跳出,这么一个死循环(它别称死循环),当主函数读到while(1)时,就一直等它跳出,(main:大哥咋那么久啊啊);
那我不加行不行?我之前说主函数是一直读它里面的程序,如果不加的话它就会一直这样读下去,大家可以看看不加回是什么样的情况,数据就会一闪一闪的(因为m在一直跑啊!),所以要加等待让主函数停住(在这停顿!)。
关于while(1)之前说了,它为真时,不跳出,为假时才跳出,那么什么时候为假呢,这就要看它肚子里的货了,如果肚子里没货,那就要一直等,这时就为1;当有1和2两个货时,1货突然报警了,这时1货就为真,它就优先处理1货,就等1货被干掉;当2货报警了,那它又去处理2货,这时2货就为真,它又要去处理2货,又要等它被干掉。
以上,我是这么理解的,专业的我不懂,大家听专业的也可能听不懂,所以就先给大家一个形象的认识,今后再接触专业的知识就能事半功倍了。

评分

参与人数 3黑币 +58 收起 理由
erdan同学 + 3
zqy181818 + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:130231 发表于 2018-1-8 22:35 | 显示全部楼层
实用,不错!多谢分享!
回复

使用道具 举报

ID:507959 发表于 2019-4-11 11:14 | 显示全部楼层
为什么 我切屏的时候,还保留没切屏的时候的数据
回复

使用道具 举报

ID:535834 发表于 2019-8-2 19:26 | 显示全部楼层
erdan同学 发表于 2019-4-11 11:14
为什么 我切屏的时候,还保留没切屏的时候的数据

要刷屏!
回复

使用道具 举报

ID:59423 发表于 2019-10-19 14:10 | 显示全部楼层
解释的很通透,理解起来简单。
回复

使用道具 举报

ID:675814 发表于 2019-12-28 00:36 | 显示全部楼层
请问如果想要用一个按键来控制切屏的话应该怎样做?
回复

使用道具 举报

ID:502152 发表于 2020-5-3 21:20 | 显示全部楼层
想知道,可以不用通过复位键直接按两个按键切换显示内容吗?
回复

使用道具 举报

ID:502460 发表于 2020-5-3 23:44 | 显示全部楼层
erdan同学 发表于 2019-4-11 11:14
为什么 我切屏的时候,还保留没切屏的时候的数据

估计是没有清屏,把清屏函数调用一下。
回复

使用道具 举报

ID:862380 发表于 2020-12-22 20:46 | 显示全部楼层
niuquanwang 发表于 2020-5-3 23:44
估计是没有清屏,把清屏函数调用一下。

这个你有完整程序吗,实在不会
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表