你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1087|回复: 0

[STM32F412] [NUCLEO-F412ZG试用体验] 六、串口LCD实验

[复制链接]

82

主题

636

回帖

121

蝴蝶豆

版主

最后登录
2020-7-12
发表于 2017-3-30 18:00:00 | 显示全部楼层 |阅读模式
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口的速度足够快。

61-LCD显示屏.jpg
62-项目中增加的文件夹和函数文件.png
63-LCD显示ASCII码.jpg
63-按键改变LED.jpg
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版