大家好,第一次发帖,本来准备早点发的,但是有个程序bug调了几天都没有解决,因为快毕业啦,手头许多硬件都卖啦。然后无意间在51黑电子论坛看到个带字库的LCD12864,有点感兴趣,顺便用了一款8位的串行接口采用逐次逼近型的A/D转换器TLC549,合在一起做了一个AD实时采样电压并用LCD12864显示的电路,整体图如下图所示,因为缩放的太小啦,LCD12864的字符无法显示,无奈屏幕不够大
,讲究看下把。
下面我简单地来介绍一下,代码部分注释的也比较详细,我只简单地说下原理,具体的还得看datesheet搞懂原理和时序,编写程序才能得心应手。因为时间关系,很多代码也是基于别人基础上改的,我主要解决的问题是让LCD12864能显示数字。大家可能觉得很奇怪,LCD12864本来就可以显示数字啊,但是有时候手头没硬件,又急需测试下自己的LCD12864能否正常工作,proteus没有找到带字库的LCD12864。但是论坛有个人分享了一个LCD12864的库,我按照他的方法真的可以实现在proteus仿真LCD12864,具体操作方法请看帖子:使用proteus中12864液晶再也不用担心没有字库了?,我在这里就不详述了。
大家也像我迫不及待的装好LCD12864的库之后,发现不能显示数字、英文符号和英文标点,同时测试的时候发现,有些复杂的汉字也无法显示。毕竟字符种类太多,也没有办法全部一一封装进去。意外发现有个数字带圈的特殊字符可以显示,然后就到网上收集,发现可以完全支持我的实验需要的字符,分享给大家◎①②③④⑤⑥⑦⑧⑨⊙Ⅴ,值得一题的是,Ⅴ是中文的数字5,不是英文的V,前者是汉字2个字符,后者是英文1个字符。
图2 显示字符
东西都齐啦,就开始编写程序啦,C语言也很久没学啦,对于字符的处理费了很大一部分时间,不过终于写好了,就是程序中的字符转换函数
程序的大致流程是首先我们通过AD采样,将采样的数据进行简单的补偿后储存,然后调用LCD12864显示模块进行显示。期间一直有个问题,调了几天还是没有解决,开始都是分开调的,后面发现联调的时候这个bug又消失啦,所以大家还是有硬件的最好测试喜爱,顺便告诉下我。TLC549的处理模块,比较简单,按照时序进行移位储存即可,bug的原因出现在LCD12864中,就是我加上Ⅴ字符后程序显示有问题,去掉这个字符显示一切正常,问题的截图和去掉当我把b[n]=zf[22];和b[n+1]=zf[23];两条语句去掉后的结果如下图所示。
图3 显示异常结果
图4 去掉Ⅴ之后的显示结果
我初步估计可能有两个原因,一是我的字符转换函数bitchange有问题,但是我VC6.0编译通过才拿来用的,可能还是有什么隐藏的bug;二是那个LCD12864的bug,希望和大家一起讨论,共同进步,教程就到这里,代码如下。
来张成功的图片,老脸一红。
图5 显示结果
还有压缩包的内容,有写好的程序和仿真,还有把LCD12864的程序分割出来啦,bug就出现啦。
443.56 KB, 下载次数: 136, 下载积分: 黑币 -5
全部代码和程序
destiny_xl 发表于 2018-5-4 09:44
哎呀,格式一直用不好,出现各种问题,感觉好无奈。
admin 发表于 2018-5-4 16:48
格式还可以,资料也不错 谢谢分享,编辑一下,有一个未使用附件 使用即可
成森林 发表于 2019-3-13 09:10
谢谢楼主,收藏了。
gongzuoshi 发表于 2019-3-17 11:48
ISIS仿真软件中没有自带的LCD12864怎么办,下载这个文件打开说没有LCD12864这个中文字库
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |