LCD1602调试工具
这一节开始之前先说明一下,模块化编程相关的知识(就是将代码分成多个文件来写,比如函数的定义放在.c文件中,函数的声明写在.h文件中)属于是C语言的内容,学过C语言的伙伴应该都知道。由于这是单片机专栏,所以就不在这单独写一篇博客了,可能之后会补充在我的其他专栏。
进入正题,本节主要讲LCD1602调试工具。
长话短说就是使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。
这里提供的LCD1602代码属于模块化的代码,使用者只需要知道所提供函数的作用和使用方法就可以很容易的使用LCD1602
LCD1602液晶屏就是这个东西
把它插到开发板上的排孔里
插进去之后就会显示东西。
旁边这个东西是定位器,左右拧可以调节它的对比度,如果发现它太暗了,就可以调亮一点,如果全是黑点的话,就把它调暗一点。
注意,我们插上这个LCD之后,数码管就没用了,数码管会显示乱码。
接下来看一下它的原理图:
它连的口就是单片机的P0的8个口,还占用了P2的3个口,分别是P26,P25,P27,一共是11个口。
其实这个P0口也是数码管的段选端所连接的口。
由于P26,P25,P27被这个液晶屏占用了,由于引脚冲突,所以D6,D7,D8号LED就不能再用了,它会乱闪。
正是因为这个液晶屏插上之后,只跟数码管和D6,D7,D8号LED冲突,对其他东西没有冲突,所以使用它来进行调试就很方便了。
接下来新创建一个工程,写好框架后
把这两个LCD1602驱动代码复制到刚刚创建好的工程文件中
这两个程序文件的获取方式我放在评论区了,自取。
然后再在这个右键添加已存在的文件
然后按住Ctrl把这两个文件都添加上
点击Close之后,看见左栏就出现了这两个文件
双击打开就可以看到里面已经是写好的程序,如果是自己写的话就得花一点时间了。
.h文件的函数一一对应这张表里的函数
我们来试试这些函数的功能
注意,在使用之前先调用LCD_Init()初始化
先试试第一个显示字符LCD_ShowChar函数
我们试着来调用一下看看效果
编译后我们看到5个警告
这个5个警告是因为我们定义了别的函数,但是没有调用,这些警告我们可以不去管它。
Keil报警告,如何消除警告?如果嫌警告碍眼,可以进行以下操作,在Disable warning numbers框框中写上报警告的函数,比如第16行报警告,就写上16
再次编译
就没有错误和警告了!
无错误无警告后可以下载下来看看效果
它的确是在LCD的第一个位置上显示“A”这个字符
数码管和左边的两个LED乱闪,这都是正常显现,不用管
然后我们继续试试显示字符串函数的功能
调用它
下载看看
第一行的第三个位置开始显示一个字符串“Hello”
如果字符串过长,超出了屏幕范围,就不会显示后面的了。
再试试显示数字的代码
LCD_ShowNum()的定义如下:
调用它看看效果
显示了123
再试试显示有符号的数字
调用它
显示-66
继续试试显示16进制数
调用
显示A8
试一下显示二进制数
调用
显示10101010
液晶屏的作用就是可以方便我们直观地测试结果
比如你说1+1等于2,怎么证明呢?
我们就可以验证一下,让它的结果显示在LCD液晶屏上
结果显示002
那就证明了1+1=2
所以它的作用就是验证程序的正确性
如果还想更进阶地使用别的函数,比如Delay函数,我们可以把之前经常写的Delay函数的定义写好放进刚刚创建好的工程文件中。(Delay函数的.c和.h文件如果你没有,就在评论区自取)
添加进来
双击打开可以看到Delay函数的定义和声明
写程序来验证一下:
我们想要的效果是result每过一秒就加1,那么我们写的程序正不正确呢?所以就需要打印在液晶屏上看看结果正不正确。
可以看到它真的是每过一秒就加1,证明我们的程序是正确的!
以上这就是本节的内容!