为使初学者熟练掌握1602型内部字符块(双行的)和字符库的使用方法,下面进行一些补充说明。
在电子产品开发中,使用过压力,在传感器上加的压力为lOmg—lkg,传感器总面积为4cm2,要求用P(PIC16F873A)对压力传感器输出的模拟量进行转换,再将对应的压力用1602型LCD进行显示.其显示的参数和位置为:
总压力变化为Okg~lkg,用字符F表示,在LCD的第一行显示,其对应的压强用三种单位等值换算表示,一是g/Cm2,二是mmHg(毫米汞柱),均在LCD中的第一行显示,三是kpa(千帕卡),在LCD第二行显示。
对于上述要求,应首先查看1602型LCD字符库(表4)中是否有所需字符,即g、,、c、m、H、g、k、p和a。经查,表4中上述字符均有.所以可用C程序中甬数调用方法.将它们按需要组合并显示出来。为了使初学者对LCD显示方法更直接和直观,将1602型LCD显示器上字符的某一组值实录如下图所示.再看C程序中上述字符的程序代码与下图中的字符是如何对应的。
先看1602型LCD模块的外形图(见上图),该模块的字符点阵分两行,每行16个字符点阵。这里将LCD每行的16个字符点、阵按十六进制从左到右给定其位置代码:O、l、2、3、4、5、6、7、8、9、a、b、c、d、e、f,再用“8”指示16个字符点阵的第一行;用“C”
指示16个字符点阵的第二行,如上图所示。以下是以上所述使用的压力传感器,按上述要求和规范与下图有关的c程序。
程序中定义的显示(display)函数为:
VoidSendlcd(unsignedcharcommand,unsignedchardis-play);该函数中的形式参数有两个,一是“unsignedcharcom-mand”代表“无符号的字符型指令”,其功能是指出1602LCD显示时的行(第一行或第二行)和字符点阵的位置:二是“un-signedchardisplay”,代表“无符号的字符显示”,该字符显示包括下图中可显示的所有字符。
上述函数定义后,在调用该函数时,其给定的形参数列举如下:
以上字符型指令形参数:Ox8a、Ox8b、Ox8e、Ox8d中的‘8’,代表1602型LCD显示的字符点阵的第一行.a、b、c、d则分别代表第一行中字符点阵所在位置的代码在a、b、c、d处,字符显示形参数‘g’,代表在字符点阵第一行的‘a’位置应显示g字符;同理在第一行的‘b’位置应显示“,”字符;第一行的C位置应显示c字符:第一行的d位置应显示m字符等。这就是下图a中第一行g/cm压强的单位在LCD中的显示,每个字符占用一个字符点阵位置,共占四个点阵字符位置。
再有实例:
按照上述方法,说明如下:在调用函数中的形参数,代表1602型LCD显示时,其字符点阵在第二行(C)的a位代码位置(Oxca)显示的字符为k;在第二行(C)的b代码位置(Oxcb)显示的字符为P;在第二行(C)的C位代码位置(OX)显示的字符为a,这正是下图a中1602型LCD第二行中的kpa。
读者可以按照相同方法,自己察看并得出下图b中压强mmHg的调用函数表达式为:
从上述多个调用函数形式参数中看出:字符库中的任意一个字符,要在1602型LCD上显示,只需指定LCD上的行(数)和字符点阵代码位置,然后在单引号‘’中放入要显示的字符(表4中有的各种字符)即可,无需用字符库的地址进行选择,大大简化了1602型LCD的显示程序。当然,必要时还得用本例C程序中的0~99增量(以秒为单位)显示时所用的字符库地址决定显示字符0—99的值。