在线时间1465 小时
UID2037623
注册时间2013-8-30
NXP金币0
TA的每日心情 | 开心 2021-12-10 16:14 |
---|
签到天数: 1442 天 连续签到: 1 天 [LV.10]以坛为家III
金牌会员
 
- 积分
- 8291
- 最后登录
- 2021-12-10
|
上一篇我们用 FRDM-KL05Z 的 SPI 口驱动 8x8 点阵板,这一次我们想帮 FRDM-KL05Z 板加上一个 LCD 屏,Nokia 5110 液晶屏是目前很容易买的到的 LCD 屏,价格也不贵,相关的资料在网上也是很容易获取,只是不同公司做的模块外接的管脚不一定相同,我手上这一片的接脚如下:
原理图:
模块与 FRDM-KL05Z 板之间的连接:
RST -> PTB11
CE -> PTB10
DC -> PTA5
Din -> PTA7(MOSI)
Clk -> PTB0(SCK)
Vcc -> +5V
BL -> +3v3
Gnd -> GND
Din 与 Clk 是连接 SPI 口因此管脚是固定的,而其他的控制管脚就依拉线的方便配置了, BL 是背光二极管的驱动电压,由于 FRDM-KL05Z 板只有一个 +5V 的输出,因此我将 BL 脚接 +3.3V,假如觉得不够亮可以将 BL 直接跟 Vcc 短路。
我们先在 MBED 网站上用 5110 这个关键字搜寻就可以找到很多相关的例程,但是这些例程基本上是没有办法直接使用的,除非你找到的就是针对你手上板子的例程,因为 MBED 一开始主要是在 NXP 的板子上发展,因此大部份的例程都是给 NXP 芯片使用,但是我们还是可以将例程里面关于 MCU 管脚的定义做修改,修改之后还是可以在自己的板子上运行的。
先开一个空白工程文件 frdm_LCD5110
在工程文件名按右键建立一个空白的 main.cpp 档案
在工程文件名按右键准备加入 mbed 库
使用关键字 mbed 搜寻会得到很多结果
我们选择第一个官方的 mbed 库
加入一个 LCD5110 的库,使用关键字 5110 搜寻
我们选择最后一个 SX5110
汇入之后发现里面有中文注释 
看看 Lcd5110 类里面有什么功能可以使用
- class Lcd5110
- {
- public:
- Lcd5110(LcdPins lcd_pinout);
- ~Lcd5110();
-
- public:
- void InitLcd();
- void clear();
- void ShutdownLcd();
- void SendCmd(char cmd);
- void SendData(char data);
- void TestLcd(char test_pattern);
-
- public:
- void SetXY(char x, char y);
- void write_char(char c);
- void set_xy(unsigned char x,unsigned char y);
- void write_stringxy(unsigned char x,unsigned char y,char *p);
- void write_string(char *p);
- char* NumToStr(int num);
复制代码
管脚结构定义
- struct LcdPins
- {
- PinName mosi; // PTA7(MOSI)
- PinName sclk; // PTB0(SCK)
- PinName dc; // PTA5
- PinName sce; // PTB10
- PinName rst; // PTB11
- };
复制代码
在 main.cpp 里面编写测试程序
- #include "mbed.h"
- #include "SX5110.h"
- int main() {
- LcdPins myLcdPins = { PTA7, PTB0, PTA5, PTB10, PTB11 };
-
- Lcd5110 myLcd( myLcdPins ); // SPI is started here (8-bits, mode 1)
- myLcd.InitLcd(); // LCD is reset and DDRAM is cleared
- myLcd.set_xy(0, 0);
- myLcd.write_char('0');
- myLcd.set_xy(6*13, 0);
- myLcd.write_char('1');
- myLcd.set_xy(0, 5);
- myLcd.write_char('2');
-
- myLcd.set_xy(6*13, 5);
- myLcd.write_char('3');
-
- myLcd.set_xy(0, 2);
- myLcd.write_string("https://www.nxpic.org.cn/");
-
- myLcd.write_stringxy(12, 0, "FRDM-KL05Z");
- myLcd.write_stringxy(6*5, 5, "mbed");
-
- // myLcd.TestLcd( 0xaa ); // Draws a vertical pattern where every other pixel is on
- // wait(10);
- // myLcd.ShutdownLcd(); // Clears the LCD's DDRAM and powers it down via CMD_FS_POWER_DOWN_MODE, H=0
- while(1)
- { };
- }
复制代码
运行结果
FRDM-KL05Z 与 MBED 心动的感觉 (SPI)
https://www.nxpic.org.cn/module/forum/thread-598709-1-1.html
建立 FRDM-KL05Z 在 MBED 环境下开发的过程
https://www.nxpic.org.cn/module/forum/thread-598659-1-1.html
|
|