版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务4.3具备交互功能的人机界面应用开发案例引导OLED显示屏案例引导当操作者按下按键、转动旋钮时,设备的操作结果需要展示给操作者;设备收到其他终端传输的信息、获得传感器信息时也需要展示给设备使用者。在嵌入式产品中,通常采用数码管、OLED屏、LCD屏作为显示输出。常见显示器如图4-23所示。图4-23常见显示器本任务以屏”为例,简要介绍显示屏的类别、显示芯片、借助STM32微控制器驱动OLED屏、TFT-LCD显示屏,实现数字、字符、图形、图片的显示任务。任务描述1任务目标(1)能根据数据手册,利用STM32CubeMX软件,准确配置OLED显示模组。(2)能根据实际硬件绘制显示屏与控制器连接图,适配OLED驱动函数,并能使用函数显示字符、数字。任务1OLED显示屏32(1)能够根据OLED模块数据手册绘制连接关系,并能正确连接开发板和OLED模块。(2)能够根据OLED模块数据手册和连接关系,通过STM32CubeMX软件对OLED模块进行配置。(3)能够调用OLED相关函数显示字符、数字。任务要求OLED显示屏系统与DHT11温湿度传感器、BH1750环境光照强度传感器和OLED显示模块连接,上电后默认每隔一段时间采集一次环境参数,将其显示在OLED显示模块上。任务分析任务1OLED显示屏OLED显示屏本任务使用STM32最小系统连接OLED模块,编写程序使其显示字符、数字。需要用到STM32开发板和OLED模块,通过杜邦线进行两者间的连接。显示模组与控制器的连接如图4-24。首先需要了解OLED模块基本原理,阅读OLED模块说明书以配置合适的接口和数据协议;然后根据说明书的例程代码进行程序编写。图4-24系统连接图任务分析OLED显示屏知识链接OLED显示屏OLED(OrganicLight-EmittingDiode),即有机发光二极管。在嵌入式开发领域,常用OLED模组分辨率为128×64或128×32,单色或双色显示,外型示例如图4-23(b),屏幕大小一般为1.54英寸或0.96英寸。OLED模组最常采用的控制芯片是SSD1306,SSD1306详细资料请参考SSD1306数据手册。OLED模组交付形式如图4-25(a)(b)所示。图4-25OLED模组表4-12OLED模块引脚定义序号引脚名称用途1GND电源地2VCC电源正(3~5.5V)3D0OLED的D0脚,在SPI和I2C通信中为时钟引脚4D1OLED的D1脚,在SPI和I2C通信中为数据引脚5RSTOLED的RST脚,用来复位(低电平复位)6D/COLED的D/C脚,数据(Data)和指令(Com)选择引脚7CSOLED的CS脚,片选引脚,低电平表示选中
[ɔːrˈɡænɪk][laɪtɪˈmɪtɪŋˈdaɪəʊd]任务分析OLED显示屏知识链接2.SPI接口概述SPI(SerialPeripheralInterface,串行外围设备接口),是由摩托罗拉公司提出的一种高速全双工串行同步通信接口,首先出现在其M68HC系列处理器中。由于其传输速度快、简单方便、成本低,因此被广泛使用,从而成为事实上的标准。
目前,许多微控制器、存储器和外设模块都集成SPI接口,如STM32F1/F4/F7系列微控制器、Flash存储器W25X16、双路16位ADC模块AD7705、MicroSD卡模块、TFTLCD模块、三轴加速度传感器模块ADXL345、音频编解码器模块VS1003、13.56MHz非接触式IC卡读卡模块RC522等。基于SPI接口的通信系统使用4条信号引脚,分别是:SCK(SerialClock)MOSI(MasterOutput,SlaveInput)MISO(MasterInput,SlaveOutput)NSS(SlaveSelect,N-Negative负电压)任务分析OLED显示屏知识链接3.SPI接口规范SPI接口的通信时序①起始信号②触发③采样④数据有效⑤停止信号CPHA=0时的SPI通信时序“时钟极性CPOL”用于指示SPI通信设备处于空闲状态(即NSS线为高电平)时,SCK信号线的电平状态。当CPOL=0时,空闲状态的SCK为低电平;当CPOL=1时,空闲状态的SCK为高电平。“时钟相位CPHA”用于配置数据采样的时刻。当CPHA=0时,MOSI和MISO信号线上的信号将会在SCK时钟线的“奇数边沿”被采样;当CPHA=1时,MOSI和MISO信号线上的信号将会在SCK时钟线的“偶数边沿”被采样任务分析OLED显示屏知识链接3.SPI接口规范SPI接口的通信时序任务分析OLED显示屏知识链接3.SPI接口规范SPI接口的通信时序CPHA=1时的SPI通信时序任务分析OLED显示屏知识链接3.SPI接口规范SPI通信的模式
SPI通信的四种模式SPI协议层SPI数据格式SPI时序为CPOL=0、CPHA=0且数据格式为8位数据帧、低位在前高位在后传输:SPISPI通信模式0SPI协议层(时序)SPI协议层SPI数据格式SPI时序为CPOL=0、CPHA=1且数据格式为8位数据帧、高位在前低位在后传输:SPISPI通信模式1SPI协议层(时序)SPI协议层SPI数据格式SPI时序为CPOL=1、CPHA=0且数据格式为8位数据帧、低位在前高位在后传输:SPISPI通信模式2SPI协议层(时序)SPI协议层SPI数据格式SPI时序为CPOL=1、CPHA=1且数据格式为8位数据帧、高位在前低位在后传输:SPISPI通信模式3SPI协议层(时序)任务分析OLED显示屏知识链接2.SPI原理和特性STM32F407微控制器的SPI模块允许微控制器与外部设备以半双工∕全双工、同步和串行方式通信。通常,它被配置为主模式,并为各个从设备提供通信时钟SCK。而且,它可以以多主配置方式工作。不仅如此,STM32F407微控制器的SPI模块还有多种用途,如使用一条双向数据线的双线单工同步传输、使用CRC(CyclicRedundancyCheck,循环冗余校验)检验的可靠通信等。1、STM32SPI的特性SPI1、SPI4、SPI5、SPI6是APB2上的设备,最高通信速率为42Mbit/s,SPI2、SPI3位于APB1总线上,最高通信速率为21Mbit/s。其他功能上没有差异。SPI既可以作为主设备,也可以作为从设备。主模式和从模式下均可由软件或硬件进行NSS管理,动态改变主∕从操作模式。可编程的SPI时序:由时钟极性和时钟相位决定。可编程的SPI数据格式:8位或16位数据帧;LSB在前或MSB在前的数据顺序。STM32F4xxx的SPI引脚如表4-14所示。表4-14STM32F4xxSPI引脚分配
SPI1SPI2SPI3SPI4SPI5SPI6MOSIPA7/PB5PB15/PC3/PI3PB5/PC12/PD6PE6/PE14PF9/PF11PG14MISOPA6/PB4PB14/PC2/PI2PB4/PC11PE5/PE13PF8/PH7PG12SCKPA5/PB3PB10/PB13/PD3PB3/PC10PE2/PE12PF7/PH6PG13NSSPA4/PA15PB9/PB12/PI0PA4/PA15PE4/PE11PF6/PH5PG8任务分析OLED显示屏知识链接2.SPI原理和特性任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数SPI初始化结构体typedef
struct{uint32_tMode;//指定SPI操作模式uint32_tDirection;//指定SPI双向模式状态uint32_tDataSize;//指定SPI数据大小uint32_tCLKPolarity;//指定串行时钟极性uint32_tCLKPhase;//指定时钟相位uint32_tNSS;//指定NSS(片选引脚)是否由硬件或者由软件通过SSI位管理
uint32_tBaudRatePrescaler;//指定了比特率预分频器值
uint32_tFirstBit;//指定数据传输是从MSB向LSB开始
uint32_tTIMode;//指定是否启用TI模式
uint32_tCRCCalculation;//指定是否启用CRC计算
uint32_tCRCPolynomial;//指定用于CRC计算的多项式,该参数必须为奇数
}SPI_InitTypeDef;[pəˈlærəti][feɪz][ˌpɑːliˈnoʊmiəl]任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数(2)SPI常用HAL库函数函数名HAL_SPI_Init()函数原型HAL_StatusTypeDefHAL_SPI_Init(SPI_HandleTypeDef*hspi)功能描述依照SPI_InitTypeDef中指定的参数初始化SPI并且初始化相关处理输入参数hspi:指向SPI_InitTypeDef结构体的指针先决条件无注意事项无返回值HAL状态HAL_SPI_Init()表4-15HAL_SPI_Init()函数任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数(2)SPI常用HAL库函数HAL_SPI_MspInit()表4-16HAL_SPI_MspInit()函数函数名HAL_SPI_MspInit()函数原型HAL_StatusTypeDefHAL_SPI_Init(SPI_HandleTypeDef*hspi)功能描述主要用于完成SPI(SerialPeripheralInterface)的底层硬件初始化,包括相关的GPIO(General-PurposeInput/Output)引脚、时钟等资源的配置。输入参数hspi:指向SPI_InitTypeDef结构体的指针,包含SPI模块的配置信息先决条件无注意事项无返回值无任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数(2)SPI常用HAL库函数HAL_SPI_Transmit()表4-17HAL_SPI_Transmit()函数函数名HAL_SPI_Transmit()函数原型HAL_StatusTypeDefHAL_SPI_Transmit(SPI_HandleTypeDef*hspi,uint8_t*pData,uint16_tSize,uint32_tTimeout)功能描述在阻塞模式下传输一定量的数据输入参数1Hspi:指向SPI_InitTypeDef结构体的指针,包含SPI模块的配置信息输入参数2pData:数据缓冲区指针输入参数3Size:要发送的数据总量输入参数4Timeout:超时持续时间先决条件无注意事项无返回值HAL状态(如HAL_OK、HAL_ERROR、HAL_BUSY等)任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数(2)SPI常用HAL库函数HAL_SPI_Receive()表4-18HAL_SPI_Receive()函数函数名HAL_SPI_Receive()函数原型HAL_StatusTypeDefHAL_SPI_Receive(SPI_HandleTypeDef*hspi,uint8_t*pData,uint16_tSize,uint32_tTimeout)功能描述在阻塞模式下接收一定量的数据输入参数1hspi:指向SPI_InitTypeDef结构体的指针,包含SPI模块的配置信息输入参数2pData:数据缓冲区指针输入参数3Size:要发送的数据总量输入参数4Timeout:超时持续时间先决条件无注意事项无返回值HAL状态任务分析OLED显示屏知识链接3)STM32SPI主要数据结构及HAL库函数(2)SPI常用HAL库函数HAL_SPI_TransmitReceive()表4-19HAL_SPI_TransmitReceive()函数函数名HAL_SPI_TransmitReceive()函数原型HAL_StatusTypeDefHAL_SPI_TransmitReceive(SPI_HandleTypeDef*hspi,uint8_t*pTxData,uint8_t*pRxData,uint16_tSize,uint32_tTimeout)功能描述在阻塞模式下发送和接收一定量的数据输入参数1hspi:指向SPI_InitTypeDef结构体的指针,包含SPI模块的配置信息输入参数2pTxData:发送数据缓冲区指针输入参数3pRxData:接收缓冲区指针输入参数4Size:要发送和接收的数据总量输入参数5Timeout:超时持续时间先决条件无注意事项无返回值HAL状态任务分析OLED显示屏知识链接3.OLED显示的主流设计模式如图4-29所示,建立一个二维坐标系,在单色模式下,我们可以用0表示对应像素点关闭发光,用1表示对应像素点开启发光。以128×64点阵为例,一整屏的像素信息即可使用128×8字节数据来表示。
图4-29①集成了显示驱动芯片(如:SSD1306),该驱动芯片体积很小,一般被封装在显示屏背面的玻璃基板上。②尺寸可选0.96寸、1.3寸、1.54寸等,显示模块整体体积小。③分辨率较高,一般为128×64。④所需供电电压低,一般为3.3V。⑤支持多种接口,如:8位6800/8080并行接口、3线/4线SPI接口和IIC接口等,用户可根据应用需求选择合适的接口方式。SSD1306芯片自身具备显示缓存,可以将需要更改的像素点信息通过芯片提供的命令单独或者批量写入其显示缓存中,随即由其自动更新到OLED屏。任务分析OLED显示屏知识链接4.OLED显示驱动驱动程序设计以“由点及面”“分层设计”为思路,先实现基础的写数据、写命令函数,再逐一实现画单一像素点、画线、写字符等函数,同时需要实现屏幕初始化、关闭屏幕、开启屏幕、清空缓存、整屏更新等功能函数。GitHub上有大量优秀的OLED显示驱动函数库,OLED模块厂家也会提供相关驱动函数库。开发者需要理解OLED显示原理,并根据硬件实际情况对驱动函数进行改动以适配。序号名称函数原型说明1初始化函数voidssd1306_Init(void);初始化,设置OLED亮度等参数2显示缓存填充函数ssd1306_Fill(SSD1306_COLORcolor)整屏填充、清屏函数,仅改变缓存3显示更新函数voidssd1306_UpdateScreen(void)将显示缓存中的内容发送给OLED显示。执行该函数前,其他画图函数仅改变显示缓存,不直接改变OLED画面。4画像素点函数voidssd1306_DrawPixel(uint8_tx,uint8_ty,SSD1306_COLORcolor)画像素点,所有画图函数的基础函数,参数为点坐标和颜色(0或1)5写单个字符函数charssd1306_WriteChar(charch,FontDefFont,SSD1306_COLORcolor)写单个字符,字符为字符库中预先设定,需先用光标函数指定起始位置表4-20ssd1306.c文件中包含的主要函数列表6写字符串函数charssd1306_WriteString(char*str,FontDefFont,SSD1306_COLORcolor)连续写多个字符,需先用光标函数指定起始位置7设置光标函数ssd1306_SetCursor(uint8_tx,uint8_ty)设定写字符时的起始位置8其他画图函数ssd1306_Line(x1,y1,x2,y2,color)ssd1306_DrawArc(x,y,radius,color)ssd1306_DrawArcWithRadiusLinessd1306_DrawCirclessd1306_FillCirclessd1306_Polylinessd1306_DrawRectanglessd1306_FillRectanglessd1306_DrawBitmap①画线,起始点坐标、结束点坐标、颜色;②画角,圆心坐标、角度、颜色;③画弧,参数略,下同;④画圆;⑤画实心圆;⑥画矩形线;⑦画矩形;⑧画实心矩形;⑨画位图。序号名称函数原型说明任务分析OLED显示屏知识链接显示驱动芯片控制原理SSD1306的GDDRAM存储空间大小为1024字节,该存储空间里的每个bit与OLED显示屏上128×64的像素点阵是一一对应的。这些空间被分成了8页(编号Page0~Page7),每页含128个位段(编号Seg0~Seg127)。SSD1306GDDRAM的分页结构图任务分析OLED显示屏知识链接显示驱动芯片控制原理GDDRAM某分页(Page2)的存储结构,从图中可以看到一个页包含8行、128列(即:每页的存储空间为128字节)。每个字节按竖向排列,低位在上、高位在下。页的存储结构示意图任务分析OLED显示屏知识链接显示驱动芯片控制原理
SSD1306的指令系统解析
按照功能来分,SSD1306的指令可分为五大类,它们分别是:基础指令、显示滚动指令、地址设置指令、硬件配置指令和时序设置指令。这些指令的长短不一,最短的是单字节指令,最长的是6字节指令。
存储器寻址模式介绍 SSD1306有三种不同的存储器寻址模式,它们分别是:页寻址模式、水平寻址模式和垂直寻址模式。页寻址模式任务分析OLED显示屏知识链接显示驱动芯片控制原理水平寻址模式垂直寻址模式任务分析OLED显示屏知识链接显示驱动芯片控制原理SSD1306的典型初始化流程任务分析OLED显示屏任务实施任务实施前必须准备好表4-21所列的设备/资源。表4-21设备/资源清单序号设备/资源数量是否准备到位(√)1STM32F407ZET6最小系统1
2OLED模块1
3OLED模块软件包1
4杜邦线7
任务分析OLED显示屏任务实施0.96英寸OLED模块与STM32F407ZET6核心板的连接,显示模块与核心板的I/O口对应关系如表4-22所示。OLED模块引脚序号OLED模块引脚名称STM32F407ZE芯片引脚备注1GND/电源地2VCC/电源正(3~5.5V)3D0SPI1_SCK(PA5)时钟引脚4D1SPI1_MOSI(PA7)数据引脚5RSTGPIOB.1复位(低电平复位)6D/CGPIOB.0数据(Data)和指令(Com)选择7CSSPI1_CS(PA4)片选引脚,低电平有效任务分析OLED显示屏任务实施CubeMx配置基础工程以STM32F407ZE的SPI1为例,需要依次配置时钟、SPI1参数、SPI1引脚、其他控制引脚。打开STM32CubeMX,选择“NewProject”,进入芯片选择界面。在搜索栏输入“STM32F407ZE”,右侧会出现STM32F407ZE的芯片,选择LQFP封装,双击进入芯片配置界面。依次单击“SystemCore”→“RCC”→“HighSpeedClock(HSE)”,选择“Crystal/CeramicResonator”。依次单击“Sys”→“Debug”选择“SerialWire”。配置时钟树,单击“ClockConfiguration”,选择HSE为8MHz,选择HCLK为168MHz回车,系统自动配置。6、依次单击“Connectivity”→“SPI1”,配置SPI1,Mode选择“TransmitOnlyMaster”,HardwareNSS选择“OutputSignal”,即将SPI1设置为3线仅发送模式,启用片选引脚为输出方向。可以在下方的Configuration窗口选择“GPIOSetting”观察设置完毕的3个引脚状态。Configuration窗口单击“ParameterSettings”继续进行SPI1时序参数设置,根据SSD1306数据手册中的SPI时序图进行设置。ClockPolarity选择为“High”,ClockPhase选择为“2Edge”。任务分析OLED显示屏任务实施CubeMx配置基础工程配置SPI1,配置结果如图4-31所示。123456789任务分析OLED显示屏任务实施CubeMx配置基础工程7、还需要使用杜邦线连接空闲的GPIO自行控制OLED的D/C线和RST线。依次单击“SystemCore”→“GPIO”,在Pinoutview配置界面,分别单击MCU的“PB0”引脚,GPIOmode选“OutputPP”,GPIOPull-up/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第1课时 认识小数
- 2026秋小学冀人版科学五年级上册第一单元 力与运动《2 动起来》教学设计
- 石油重点知识试题及答案
- 2026年一建市政轨道交通实务近三年真题含答案及解析
- 2026年一建民航工程真题突破试卷及答案
- 2026大学考研面试题目及答案
- 2026年一建经济考前必刷重点试卷及答案
- 2026年一建建筑实务考前真题冲刺特训试卷及答案
- 2026工厂司机面试题及答案大全
- 2026管理工程师面试题及答案
- 2026年度全国“安全生产月”知识培训测试及答案
- 2026医药健康产业资本运作模式研究及国际化发展路径分析报告
- 2026年校园安全知识竞赛试题及答案
- 2026年《刑法学》知识考试题库及答案
- 湖北仙桃中学2026届高三年级4月第一次半月考试语文试题(含答案)
- 国网公司职代会工作制度
- 广西三支一扶2026真题答案
- (2026年版)发热伴血小板减少综合征防控方案课件
- 中医适宜技术在中医重症医学科的培训
- 2026国家卫生健康委直属和联系单位招聘68人笔试考试参考试题及答案解析
- 建设监理协会联合发布《建设工程监理服务成本费用测算规则》
评论
0/150
提交评论