|
本文例子用到: 1. STM32F072 Nucleo开发板 2. 12864液晶 3 . STM32CubeMX软件 Version4.3.0 4. Keil MDK 软件Version5.12.0.0 下面开始讲解: 首先讲一下思路。本文将MSP430单片机(16位)控制12864的程序移植到STM32F072控制12864。其实控制12864实际上就是对IO口进行写0或者写1的操作,不同单片机控制IO口输出0或1方法不同,比如MSP430将IO口置一为P1DIR|=BIT0;将IO口清零则为P1DIR~=BIT0;(此处是将MSP430的P10进行置一与清零);而STM32利用库函数将IO口置一为HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET);将IO清零则为HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,GPIO_PIN_RESET);(此处是将STM32的PB13置一与清零);只需要将MSP430控制IO口的程序改为STM32控制IO口的程序就行,另外,由于不同单片机时钟频率不一样,运行速度不一样,因此可能需要改一下移植程序中的延时。(另外,IO口配置输入输出的方式也需要改) 12864液晶有并行和串行两种接线方式,本文采用串行控制。串行控制至少需要将液晶的三个IO口连到STM32的IO口。分别是片选信号CS(RS),数据信号SID(RW),时钟信号SCLK(E),PSB直接接到GND,RST可以不接。 接下来开始讲讲实际怎么操作。 1. 通过STM32CubeMX软件配置IO口。本文IO口接法: PB13------------------CS(RS) PB14------------------SID(RW) PB15------------------SCLK(E) GND-------------------PSB GND-------------------VSS +5V--------------------VDD GND-------------------LEDK +5V--------------------LEDA STM32Cube配置如下:
2. STM32Cube其他配置默认,生成Keil工程。 3. 首先看看要移植的lcd12864程序:
4. 上面的程序写的比较规范,IO口控制都是通过宏定义,我们只需要将
改为
由于在STM32Cube中我们已经将对于IO口配置为输出,故 #define LCD12864_CS_OUT P1DIR|=BIT4可以不用理会。 其他IO配置相同。总的配置如下:
再看看lcd12864初始化函数:
由于我们在STM32Cube中已经将IO口设置为输出,故可以将
这三句删除。 5. 由于12864液晶对延时要求不是很严格,故此处不用改延时,如果出现问题,可以尝试改改延时程序。 6. 将修改好的程序放入生成的keil工程中,放在 /* USER CODE BEGIN 0 */与/* USER CODE END 0*/之间 7. 最后,写个小程序测试一下。 main函数如下:
显示效果如下:
参考程序:
Lcd12864.zip
(2.85 MB, 下载次数: 123)
|
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
谢谢支持
谢谢支持