#申请原创#
以前我的测试过程都是使用LCD单色液晶显示屏,本次则换了一块1.8寸的TFT彩色液晶显示屏,屏幕的外形如下:
购买屏幕时商家提供了C51和SMT32的范例代码,需要移植到PIC18单片机中来。根据资料介绍,此屏采用SPI通讯协议,开始我就在MCC中配置了SPI,可在配置管脚时,我准备将SPI的MISO引脚改作彩屏的D/C引脚,即由原来的数据输入改为数据输出,却发现无法在MCC中修改,若在程序代码中修改的话又担心影响SPI通讯,于是只好放弃硬件SPI,改为代码模拟SPI操作。岂料取消硬件SPI后,项目编译出错,提示缺少SPI.h文件:
反复通过MCC配置多次都没有解决问题,只好重新建立一个新项目来解决。测试了几天,在一次修改主频后,新项目也出现了相同的编译错误,难道又得新建项目不成!于是我尝试将一个SPI.h文件复制到项目中来“欺骗”编译器,竟然获得了成功,编译不再出错了。
软件模拟SPI通讯,首先需要了解彩屏的SPI通讯参数,于是在相关的数据手册中找到时序图并进行分析,将时序要求标注好(见下图),准备调试时使用:
花费了几天的时间将商家的示例移植好并编译通过后,发现之前的时序分析有点多余,出乎我的预料,显示屏居然正确显示出了字符,令我高兴万分,用不着拿出逻辑分析仪来抓取时序进行分析和调整了。
不过其中的清屏函数有问题,屏幕背景成了大花脸,反复修改代码都没有解决问题,最后只好暂时用画线的代码来代替。
下图为屏幕显示的特写:
参照以前的实验,我添加了单双字节混合的字符串显示函数,得到比较理想的结果:
我开始设置的时钟频率为16M,清屏和显示的过程其慢无比,于是乎只好将时钟频率配置为最高的64M,显示效果才稍有好转。但就是这一改动却引来了前面所述的编译出错,尚不清楚为何如此。
目前已经完成字符显示,图形显示的代码尚未测试完成,清屏的代码也没有调试成功,有待于后续测试。
下面是本次测试的项目文件压缩包:
Text2.X.rar
(1.57 MB)
|