LCD实验是非常有意义的,因为在各种测试中除了与LED有关的或打开UART串口的可以通过LED显示或串口打印看到间接的结果以外,其他的实验就像瞎子一样。一次LCD实验实际上就是解决在测试实验过程对个中逻辑量的采样显示以便观察。拷贝一份mainKey.cpp->mainLcd.cpp。修改工程打开文件为mainLcd.cpp. LCD种类十分多,本例先采用小型的128X64点阵的串口LCD,去掉片选信号,只需要4根逻辑线和2根电源线就够了。LCD超片见图61。 接线为PC_8,PC_9,PC_10,PC_11,4个挨着的引脚。在编此程序之前,我们先建一个文件夹:incs——里面存放自己编写的include函数,驱动128X64LCD就需要自己编写驱动LCD的函数,这样在主程序中不会显得太场合太乱。见图62。此外,更改其他的LCD,只需要更改这个Include连接函数即可。 主程序更改后仅仅只加了没有几句就Ok了。 #include "mbed.h" #include "12864.h" //Define GPIOs DigitalOut led1(PB_0);DigitalOut led2(PB_7);DigitalOut led3(PB_14); DigitalIn key1(PC_13);//定义按键对象enable——key1 //Define variable int keyDel; //IO Initial void ioInit(void){ led1=0;led2=1;led1=0; keyDel=0; } //key Test void keyTest(void){ wait(0.02); if(key1) keyDel=1; if(keyDel && key1){ led1=!led1;led2=!led2;led3=!led3; lcdClear(); } } // main() runs in its own thread in the OS// (note the calls to Thread::wait below for delays) int main() { ioInit(); lcdInit(); lcdClear(); dispAsc(); while (true) { if(key1 && !keyDel){keyTest();} if(!key1) keyDel=0; dispAsc(); } } 结果见照片63。由于刷新的速度非常快,因此按下按键后的清屏和重新写屏ASCII码的过程根本看不到。也说明STM32F412芯片的IO口的速度足够快。 |