关于指针和1602液晶屏的知识讲解我们就不赘述了,《手把手教你学51单片机》文档第12,13章有很详细的讲解,我们也不用再自己搞些与众不同的驱动代码,没必要再“重新发明轮子”,只需直接移植使用宋老师为我们写好的代码就好。那么宋老师的液晶屏代码原理他也在文档详细讲解了,大家只需反复细读都会掌握的了的,这里笔者只对部分代码做出一些解释。打开宋老师的代码lesson12_4。
1.显示字符的执行操作
如果我们需要在液晶屏上显示下图的内容
那么在代码上需要一步步地操作来完成。
首先设置好液晶屏的使用指标,比如需要“16*2显示,5*7点阵”、“显示器开,光标关闭”、“文字不动,地址自动+1”,这些叫做液晶屏的初始化,表明液晶屏要正常显示内容就需要提前配置好这些工作。
比如我们要设置液晶屏“显示器开,光标关闭”的功能,需要给液晶屏写入命令的字节为0x0C。在写入之前要读出液晶屏的状态是否在忙,也就是“sta = LCD1602_DB;”读取整个P0端口的8个位的状态,而“while (sta & 0x80);”就是只要P0.7为高电平状态,证明液晶屏在忙,不能写入0x0C这个字节给液晶屏,等到P0.7被液晶屏输出低电平拉低引脚之后,证明液晶屏不忙了,可以允许写入命令字节了,“void LcdWaitReady()”函数分析完毕。
“void LcdWriteCmd(unsigned char cmd)”就是要写入命令的字节,前面的
LCD1602_RS = 0;
LCD1602_RW = 0;
是令液晶屏接收命令做准备,然后使”P0= cmd;”输出相关的高低电平,再让LCD1602_E 完成一个高脉冲,这样当“cmd=0x0C;”时,液晶屏就接收了这个命令,让显示功能为“显示器开,光标关闭”。
然后我们再说说,要显示的内容从哪个格子显示应该怎么去实现代码,如果要在第二行第一个格子显示一个字符,那么光标要设置在这个位置上,也就是写命令给液晶屏的字节为“0x80|0x40”,设置坐标的命令字节最高位要为1。在哪个位置显示就写入哪个地址。
最后就是“void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)”函数的讲解了。
设置地址在哪显示的函数已经讲过。我们看到“LcdWriteDat(*str++);”,这个函数的意思是把一个数组或者一个字符串里的字符数据写进上图的显示位置的地址里让相应的地方显示字符。
在初始化函数里“LcdWriteCmd(0x06);”的设置是令地址自动加1,假如在液晶屏第二行的第一个位置(也就是地址为0x40)不停写数据,那么写完一个数据之后,再写下一个数据,写进去的地址就是0x41的位置了,后面再写就是0x41的位置。
液晶屏的代码我们就简略讲完了,如果理解上还存在疑惑,我们也许掌握的理论知识还有所欠缺,这是需要慢慢消化的。
当然我们也可以不用去深究每一个细节,后面我们教会大家怎么去使用这些函数就可以了。
上一篇:51单片机-串口printf系列函数
下一篇:51单片机-指向数组的指针
推荐阅读最新更新时间:2024-11-22 10:25
推荐帖子
- WinCE上TCP套接字的KeepAlive问题
- 查了一下大家所说的,都是使用WSAIoctl来使用SIO_KEEPALIVE_VALS参数来设置,让TCP自动进行心跳,但是我用的EVC4上这样设置好像不支持,不知道大家是怎样做的。另外还查到一种方法,在注册表里该KeepAlive设置,不知道这样可不可以。我自己也会试一试,但是也希望大家能跟我多交流交流WinCE上TCP套接字的KeepAlive问题
- tudi WindowsCE
- 42“万里”树莓派小车——ROS学习(Android使用ROSBridge控制小乌龟)
- 前面通过网页使用ROSBridge控制小乌龟,这里介绍使用Android手机来控制小乌龟。一、从零开始新建ROSBridge工程从Android源码开始学习并不是最好的方法,由于环境不一样,直接编译不一定能通过,移植到自己工程也不一定能成功,所有这里介绍从零开始新建ROSBridge工程。0.下载源码下载链接在帖子最后。1.新建AS工程本帖采用AndroidStudio4.1,新建一个空白工程,包名为Lb_ROSBridg
- lb8820265 创新实验室
- CC3200烧录问题!
- 本帖最后由uart9600spi于2015-7-3008:45编辑 询问CC3200的SDK里的example的out_of_box如何烧录到板子里面,请问我应该怎么做?我的过程是先用(1)uniflash---设置format---servicepackprogramming(CC31xx_CC32xx_ServicePack_1.0.0.10.0---servicepack_1.0.0.10.0.bin)-
- uart9600spi 无线连接
- 【米尔边缘AI计算盒FZ5测评】EasyDL实现花朵分类识别网络搭建
- 本次将尝试使用百度官方的EasyDL平台训练和部署一个花朵识别网络。首先需要创建一个模型:可以看到官方已经提供了各种各样的网络识别方案,这里我们选择图像分类,进行模型创建,然后可以导入我们本地的数据集:这里我们导入了本地已经标注好的数据集,这里导入了五种花及其对应的标签,平台还提供了在线标注的服务,有兴趣的读者可以尝试一下。然后准备训练模型:这里选择实现平台为Edgeboard(FZ),,然后配置为高精度,其他配置为自动。选择
- zzx1997 嵌入式系统
- 在安卓中使用Socket实现数据传输的问题
- 我在学习安卓,用Socket实现数据传输。我看的Android智能穿戴设备开发从入门到精通。服务器端是java工程,代码如下:publicclassAndroidServerimplementsRunnable{publicvoidrun(){try{ServerSocketserverSocket=newServerSocket(54321);while(true)
- chenbingjy Linux与安卓
- 基于逻辑分析内核的FPGA电路内调试技术
- 随着FPGA融入越来越多的能力,对有效调试工具的需求将变得至关重要。对内部可视能力的事前周密计划将能使研制组采用正确的调试战略,以更快完成他们的设计任务。 “我知道我的设计中存在一个问题,但我没有很快找到问题所需要的内部可视能力。”由于缺乏足够的内部可视能力,调试FPGA基系统可能会受挫。使用通常包含整个系统的较大FPGA时,调试的可视能力成为很大的问题。为获得内部可视能力,设计工程师必须把一些引脚专门用作调试引脚,而不是实际用于设计。哪些工具可用于进行内部FPGA迹线测量?又有哪些
- songbo 测试/测量
设计资源 培训 开发板 精华推荐
- 送个“车”,抽Keysight牌汽车碎片兑好礼
- 【新年活动】2023,兔 do list!
- 有奖活动|泰克半导体材料与器件测试技术【热门应用篇】
- 安世半导体新能源应用探索站,闯关赢好礼!
- 泰克MDO系列:1招搞定6大仪器,轻松穿越模拟、数字、频域测量
- ADI有奖下载活动之19:ADI可编程逻辑控制器(PLC)解决方案(更新版)
- 是德科技有奖问答活动之二,小信号测试的示波器方案,答题闯关赢好礼!
- 有奖直播:使用 NI CompactDAQ 和 LabVIEW构建基于传感器的测试系统
- 推陈出“芯“——TI 带你领略智能手机黑科技在线直播 预报名+看直播 好礼让你嗨翻全场!
- 免费申请评测:欧时电子(RS Components)树莓派3来袭,待你玩耍带你飞