|
a0a.1 32b0c
近日买了一块 12864 的液晶模块,模块上所使用的芯片是 ST7565R,在 MBED 官网上搜寻了相关的例程,MBED 环境下编程的优势是网上有丰富的例程可供参考,并且也支持了多家厂家的开发板,而目前看起来 ST 的板子支持度似乎是最高的,貌似有新的板子推出不久后 MBED 官网上就有相关的支持了,这当然也包括了 NUCLEO-L476RG 这块板子。
MBED 官网上找到了这个例程:
将例程 Import 进来:
底下的 Update 选项一定要勾选,否则编译时会出现这样的错误信息:
这个错误信息是表示 CMSIS 版本太旧了,Update 勾选后就不会出现这个信息。
再一次编译,又出现了一个错误信息:
line3d() 函数竟然会有错误?原来参数里面有 2 个 z0!正确的写法后面那一个应该是 z1 才对。原作者没有发现吗?在错误的信息上双击后跳到错误的地方将错误修正。
再一次编译,出现了更多的错误信息:
错误的地方在这里:
这是因为这个例程原先是使用在 NXP 的板子上运行的,而 ST 与 NXP 在管脚上的名称定义是不一样的,在 ST 的 SPI 例程中对于 SPI 的宣告是这样的:
- SPI device(SPI_MOSI, SPI_MISO, SPI_SCK);
复制代码
我们将这 2 行程序管脚的名称修改成 ST 所使用的名称,其他的控制管脚依 NUCLEO 板扩充接头上的管脚顺序排列如下:
- SPI spi(SPI_MOSI, NC, SPI_SCK);
- DogLCD dog(spi, PA_8, PB_6, PA_9, PC_7); // spi, power, cs, a0, reset
复制代码
再一次编译,成功了。
下载到板上运行,有显示内容,不过看起来不太对!
这应该是显示初始行设置不正确,在 DogLCD::init() 函数里面参考了我使用的液晶屏的参数将初始行设置由 0x40 改成 0x60 之后显示就正常了。
运行结果:
实验所使用的液晶模块资料:
2014722145234.pdf
(577.08 KB, 下载次数: 17)
|
评分
-
查看全部评分
|