stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED
OLED屏幕應用十分廣泛,我們可以使用STM32單片機對其進行控制,使其顯示我們需要的各種數(shù)字、字母、漢字、圖畫等。我們此次使用下圖這款非常普遍的0.96寸OLED液晶屏。此款OLED屏采用IIC的通訊協(xié)議,與STM32單片機的IIC1模塊連接進行通訊。
IIC接口的0.96OLED屏
首先我們要對單片機進行基本的時鐘、IIC通訊設置。ST推出的STM32CUBEIDE使我們可以通過圖形界面的很方便的設置單片機的時鐘、IIC外設的基本參數(shù)。我們設置的時鐘參數(shù)、IIC外設參數(shù)詳見下圖。
STM32單片機的時鐘配置
STM32單片機中IIC配置
設置完上述基本參數(shù)后我們點擊STM32CUBE中的代碼生成,可以生成基礎代碼。對于OLED驅動代碼,網(wǎng)上有好多例程或者買部件時商家也會提供,這些代碼我們可以加以參考。但這些驅動代碼大多為IO口模擬的IIC操作屏幕,我們使用HAL庫函數(shù)需要對驅動代碼中的命令發(fā)送函數(shù)部分,數(shù)據(jù)發(fā)送函數(shù)部分加以修改。HAL庫中把IIC通訊協(xié)議做了集成封裝,使我們不需要特別了解IIC通訊的具體步驟及具體形式,只要弄清幾個參數(shù)就可以使我們初學者快速上手,實現(xiàn)兩設備之間的IIC的通訊。但是當熟悉后還是建議系統(tǒng)的學習下IIC通訊,這樣我們使用其它單片機時也可輕松應對。下面屏蔽掉的代碼為OLED驅動歷程中的IO口模擬IIC通訊的整個過程,即:發(fā)送開始指令、發(fā)送設備地址、等待應答、發(fā)送設備中內(nèi)存地址、等待應答、發(fā)送具體指令、等待應答、發(fā)送結束指令。庫函數(shù)HAL_I2C_Mem_Write()已經(jīng)封裝了以上IIC通訊間的所有指令,我們直接調(diào)用此函數(shù)即可。修改的驅動代碼具體如下:
void Write_IIC_Command(unsigned char IIC_Command){ /*IIC_Start(); Write_IIC_Byte(0x78); //Slave address,SA0=0IIC_Wait_Ack(); Write_IIC_Byte(0x00);//write commandIIC_Wait_Ack(); Write_IIC_Byte(IIC_Command);IIC_Wait_Ack(); IIC_Stop();*/ HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &IIC_Command, 1, 100);}void Write_IIC_Data(unsigned char IIC_Data){ /*IIC_Start(); Write_IIC_Byte(0x78);//D/C#=0; R/W#=0IIC_Wait_Ack(); Write_IIC_Byte(0x40);//write dataIIC_Wait_Ack(); Write_IIC_Byte(IIC_Data);IIC_Wait_Ack(); IIC_Stop();*/HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &IIC_Data, 1, 100);}修改完上述代碼后單片機就可以與OLED屏進行通訊。但如果想要OLED顯示具體內(nèi)容的話,我們還需向OLED發(fā)送相應內(nèi)容的點陣代碼。點陣代碼可以通過字摸提取軟件進行生成。提取內(nèi)容見下圖:
漢字字模提取
圖片的字模提取
小魚圖片字模提取后生成的點陣代碼
最后我們可以把這些提取的字模代碼寫入單片機的頭文件,就可以使用OLED驅動程序中的字符串發(fā)送函數(shù)、漢字發(fā)送函數(shù)、圖片發(fā)送函數(shù)來控制OLED屏幕。具體可點擊后面鏈接查看實物視頻 STM32單片機HAL庫點亮OLED
顯示數(shù)字、英文、漢字
顯示小魚圖像
總結
以上是生活随笔為你收集整理的stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现3d图片移动_「3D建模」什么是动画
- 下一篇: magisk下载里显示没有模块_重大更新