
实验十二 驱显8位并口的彩色LCD
这是一个独立的实验,为了完成LPC824并口处理能力而设计的实验。
在看了手册和MBED工程相关的文档后感觉可以走并行输出的并口LCD应用,先打开BusOut.h,其中的一段开始让人头疼了一下,后来经过实验已经体会了,就是这句:
BusOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC,
PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC);
BusOut(PinName pins[16]);
现在理解是这样的,如果你需要定义一条8位的BUS,那么对象是这样定义的:
BusOut myBus(P0_0,P0_1,P0_2,P0_3,P0_4,P0_5,P0_6,P0_7);
此后,myBus就是你的8位并口数据了,直接赋值即可。
定义16位的[最大就是16位的,如果超出将会报错!],就像如下定义:
BusOut myBus(P0_0,...,P0_28);//里面最多16个P0_xx!!!
需要注意的是有些IO口是不能定义为BUS的,这点需要注意,我在定义过程中就发现P0_10,P0_11就不能作为BUS定义。本实验仅仅是为了学习如何定义并口输出而做的实验,为此先复制一个main.cpp文件,将复制的文件改名为mainBus.cpp。
此款屏是1.5寸的,因此定义15inch.h文档。
此文档的头部定义8位并口和5根信号线:
BusOut myBus(P0_8,P0_9,P0_28,P0_27,P0_26,P0_25,P0_24,P0_23);
myBus就是8位并口的实例名称,直接赋值即可
DigitalOut lrd(P0_6);//读信号^
DigitalOut lwr(P0_5);//写信号v
DigitalOut reg(P0_4);//数据|命令信号1|0
DigitalOut res(P0_3);//复位Reset信号0->1
DigitalOut lcs(P0_2);//片选信号0有效
本实验程序较简单,将串口写LCD改成并口写LCD——原来的并改串语句改成直接向myBus并口赋值即可,程序简单多了,这里就不给源代码了,实际驱动128X128点阵,65536色彩,8位并口1.5寸LCD的效果见图C1和C2。
可能此屏是伪彩的,照片拖影厉害!
可以感觉的到,LPC824的IO口速度不是够快,在黑白刷屏中就能看到清除痕迹,在128X128的彩色中刷屏可以说是0.x秒,大约0.5秒吧——当然是全彩清屏。手册上有Fast BUS,说可以达到访问15MHz的速率,至少目前的状况是达不到的。128X128X65536色,满屏大约需要4M+/秒,因此虚拟并口的速度不尽人意,但是给了一种并口解决方案。否则将自编软串行数据转并行数据的代码的。