衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

敏矽微電子Cortex-M0學習筆記06——段式LCD液晶實例

jf_pJlTbmA9 ? 來源:敏矽MCU ? 作者:敏矽MCU ? 2023-09-26 17:10 ? 次閱讀

1、LCD顯示驅動概述

在上一章節GPIO中斷的學習中,我們通過LCD液晶來顯示中斷的發生次數,很直觀的知道了程序的運行情況,但這也只是LCD的一個小應用。在以后的學習和開發中,LCD作為顯示單元,會愈發顯示出它的重要性。那么接下來就開始介紹ME32F030的LCD驅動。學習前先對其做個簡單的概述。

ME32F030的LCD 顯示驅動通過自動地創建交流段和公共電壓信號來直接驅動 LCD。它可以支持靜態,1/2,1/3,1/4,1/5 和 1/6 占空比 的 LCD 面板。.最多可以支持 6 個公共電壓端和 16 個段組合(共計 96)的 LCD 顯示面板。

主要特征有:

? 多達 96 個點(6x16)

? 可配置公共電壓信號(Common) 0-5

? 可配置段電壓信號(Segment) 0-16

? 支持靜態,1/2 偏壓和 1/3 偏壓電壓

? 六種顯示模式:靜態,1/2 占空比,1/3 占空比,1/4 占空比,1/5 占空比或 1/6 占空比

? 可配置的幀頻率

? 在數字模式下,支持 8 個 7 段 LED

其對應的復用管腳映射圖如下:

wKgZomUD0tWAIVTLAAFlaGVSYuA981.png

圖1 LCD寄存器0

2、LCD驅動寄存器

液晶顯示的驅動還是比較饒的,因此肯定會有專門的LCD驅動寄存器,來輔助完成LCD液晶的驅動工作。ME32F030的LCD液晶驅動寄存器總覽如圖所示:

wKgZomUD0tiAbBgoAAN01xwx838093.png

圖2 LCD寄存器0

2-1 LCD控制寄存器0

查看LCD控制寄存器的列表,獲知LCD驅動是支持 LCD 輸出和 LED 輸出兩種工作模式的。因此要根據自己的實際情況使能相應的功能。這里需要注意的是,在 LED 模式下,LEDINV位決定著共陰極/共陽極顯示,一定要根據實際電路進行選擇。

wKgaomUD0tmAFe3TAAHUFVchdHQ005.pngwKgaomUD0tqAMXBCAABBVD_kM3A697.png

圖3 LCD寄存器0

2-2 LCD控制寄存器1

在使能了相應的驅動工作方式后,就需要對控制模式以及輸出參數進行設置。有LCD顯示占空比選擇、偏壓選擇、掃描周期頻率需要配置。

wKgZomUD0tyAIOM4AAMg0RB4UlI860.png

圖4 LCD控制寄存器1

2-3 數據映射寄存器

需要讓LCD顯示期望的數據時,只要向數據映射寄存器0~3寫入相應的值即可。隨后就會按預先設定自動輸出到相應的 LCD 管腳上。

2-4 LCD驅動使能控制器0

該寄存器決定著LCD COM0~5的輸出控制,相應的BIT位置1來使能對應的COM。

wKgZomUD0t2APt_mAAEeI5uKgyI583.png

圖5 LCD使能寄存器0

2-5 LCD驅動使能控制器1

該寄存器決定著LCD Segment0~16的輸出控制,相應的BIT位置1來使能對應的 Segment。

wKgaomUD0t-AURKKAAEWYFwb400721.png

圖6 LCD使能寄存器1

3、LCD驅動函數

在例程LIB->common->Drivers->Source文件夾內有lcd.c文件,這個就是提供的LCD驅動文件,里面包含了一些基本的驅動函數,使用起來十分方便。下面會對每個函數進行講解。

3-1 LCD初始化

在每段源代碼的后面,筆者對其進行一下注釋,方便大家快速掌握和使用這個函數。這個函數的4個參數的意義如下:

Mode:LCD的輸出模式,可選LCD_MODE、LED_MODE。

Duty:顯示占空比,可選DUTY_1 ~ DUTY_8.

Biasanod:LCD輸出模式下代表偏置電壓,可選LCD_BIAS_3(1/3偏壓)、LCD_BIAS_2(1/2偏壓)。LED輸出模式下代表共正極/共負極選擇。

Finhz:COM掃描周期頻率,手冊推薦80-100Hz。

voidLCD_Init(uint8_tmode,uint8_tduty,uint8_tbiasanode,uint8_tfinhz)
{
SYSCON->SYSAHBCLKCTRL_b.LCD_CLK=1;//LCD時鐘使能
SYSCON->PRESETCTRL_b.LCD_RST_N=0;//LCD復位操作
SYSCON->PRESETCTRL_b.LCD_RST_N=1;
//disableoutput

LCD->LCDOUTEN0=0;//LCDCOM口初始化(禁止輸出)
LCD->LCDOUTEN1=0;//LCDSEG口初始化(禁止輸出)
//setduty

LCD->LCDCTRL1_b.DUTY=duty;//LCD顯示占空比
if((finhz>0)  (duty>0))
LCD->LCDCTRL1_b.FREQDIV=SystemCoreClock/(duty*finhz);//LCDCOM掃描周期頻率

if(mode==LCD_MODE)
{
SYSCON->PDRUNCFG_b.LCD_PD=0;//LCD電壓發生器上電
LCD->LCDCTRL1_b.BIAS=biasanode;//偏置電壓選擇
LCD->LCDCTRL0_b.LCDEN=1;//選擇為LCD輸出模式
LCD->LCDCTRL0_b.LEDEN=0;
}
elseif(mode==LED_MODE)
{
SYSCON->PDRUNCFG_b.LCD_PD=1;//LCD電壓發生器掉電
LCD->LCDCTRL0_b.LEDINV=biasanode;//LED共正極/共負極選擇
LCD->LCDCTRL0_b.LEDEN=1;//選擇為LED輸出模式
LCD->LCDCTRL0_b.LCDEN=0;
}
return;
}

3-2 LCD輸出使能

這段函數控制著LCD的COM端口和SEGMEN端口的輸出使能,可以根據實際需求來進行配置。比如開發板使用了COM0~COM3,SEG0~SEG7。因此comchannel參數的低4位都是置1的,即輸入參數應該為0xF。同理,segchannel的低8位都是置1的,即輸入參數應該為0xFF。

voidLCD_EnableOutput(uint8_tcomchannel,uint16_tsegchannel)
{
LCD->LCDOUTEN0_b.LCDCOMEN=comchannel;
LCD->LCDOUTEN1_b.LCDSEGEN=segchannel;
return;
}

3-3 LCD功能關閉

這段函數的作用是關閉LCD外設功能,通過LCD電壓發生器,并且關閉其時鐘。

voidLCD_Deinit(void)
{
SYSCON->PDRUNCFG_b.LCD_PD=1;//LCD電壓發生器掉電
SYSCON->SYSAHBCLKCTRL_b.LCD_CLK=0;//LCD時鐘關閉
return;
}

3-4 LCD全顯

這段函數的功能是數據映射寄存器全部置位,從而全部顯示。

voidLCD_LightFullScreen(void)
{
LCD->MEMMAP0=0xFFFFFFFF;
LCD->MEMMAP1=0xFFFFFFFF;
LCD->MEMMAP2=0xFFFFFFFF;
LCD->MEMMAP3=0xFFFFFFFF;
return;
}

3-5 LCD清屏

這段函數的功能是數據映射寄存器全部清0,從而快速清屏。

voidLCD_ClearScreen(void)
{
LCD->MEMMAP0=0;
LCD->MEMMAP1=0;
LCD->MEMMAP2=0;
LCD->MEMMAP3=0;
return;
}

4、端口中斷例程

介紹完LCD常用的驅動函數,接下來用個小例程來演示LCD的驅動。測試程序的代碼如下:

voidlcd_PortInit(void)
{
//initialLCDpin
PB_2_INIT(PB_2_LCD_COM0);//LCD_COM0:PB_2
PB_10_INIT(PB_10_LCD_COM1);//LCD_COM1:PB_10
PB_11_INIT(PB_11_LCD_COM2);//LCD_COM2:PB_11
PB_6_INIT(PB_6_LCD_COM3);//LCD_COM3:PB_6

PB_12_INIT(PB_12_LCD_SEG0);//LCD_SEG0:PB_12
PB_13_INIT(PB_13_LCD_SEG1);//LCD_SEG1:PB_13
PB_14_INIT(PB_14_LCD_SEG2);//LCD_SEG2:PB_14
PB_15_INIT(PB_15_LCD_SEG3);//LCD_SEG3:PB_15
PA_8_INIT(PA_8_LCD_SEG4);//LCD_SEG4:PA_8
PA_9_INIT(PA_9_LCD_SEG5);//LCD_SEG5:PA_9
PA_10_INIT(PA_10_LCD_SEG6);//LCD_SEG6:PA_10
PA_11_INIT(PA_11_LCD_SEG7);//LCD_SEG7:PA_11
}

intmain(void)
{
uint32_tnumber=0;
uint32_tlcd[10]={0xD07,0x500,0xB05,0xF01,0x702,0xE03,0xE07,0x501,0xF07,0x703};//0~9LCD真值表

lcd_PortInit();//LCD端口初始化
LCD_Init(LCD_MODE,DUTY_4,LCD_BIAS_3,100);//LCD驅動初始化
LCD_EnableOutput(0xF,0xFF);//使能LCD輸出

while(1)
{
LCD->MEMMAP0=(lcd[number]<<16)|lcd[number];
LCD->MEMMAP1=(lcd[number]<<16)|lcd[number];
if?(number++==11)
number=0;
SYS_DelaymS(1000);
}
}

程序第一步先執行lcd_PortInit函數來復用LCD端口。端口復用完成后就是LCD_Init函數,這個在前面講解過。我們選擇的是LCD輸出模式,1/4占空比輸出,1/3偏壓,100Hz的COM刷新率。完成初始化的配置后,就可以使能LCD的輸出了。

測試用的顯示程序是讓液晶在0~9之間不停的循環顯示。效果圖如下:

全0顯示:

wKgZomUD0uGAQX3NABakM8PBhu4831.png

圖7 LCD顯示全0

全9顯示:

wKgaomUD0uOAfPM3ABiAonAfAYk736.png

圖8 LCD顯示全9

來源:敏矽MCU

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352656
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4438

    瀏覽量

    168397
  • 液晶
    +關注

    關注

    6

    文章

    606

    瀏覽量

    69742
  • Cortex-M0
    +關注

    關注

    4

    文章

    124

    瀏覽量

    38807
收藏 人收藏

    評論

    相關推薦

    cortex-m0學習資料

    本帖最后由 jheng 于 2015-4-9 21:54 編輯 cortex-m0學習
    發表于 04-09 21:48

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發表于 06-18 10:50 ?0次下載
    深入淺出<b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b>資料

    Cortex-M0的指令集

    Cortex-M0的指令集,有需要的下來看看。
    發表于 01-13 17:17 ?29次下載

    cortex-m0加密

    cortex-m0加密
    發表于 10-13 15:08 ?5次下載
    <b class='flag-5'>cortex-m0</b>加密

    MCU學習筆記_ARM Cortex M0_簡介

    MCU學習筆記ARM Cortex M01. RM的CPU core 的基本概念2. ARM Cortex
    發表于 10-28 11:21 ?15次下載
    MCU<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_ARM <b class='flag-5'>Cortex</b> <b class='flag-5'>M0</b>_簡介

    基于ARM Cortex-M0核的MCU設計及應用

    知網鏈接:基于ARM Cortex-M0核的MCU設計及應用
    發表于 11-05 15:35 ?18次下載
    基于ARM <b class='flag-5'>Cortex-M0</b>核的MCU設計及應用

    全球最強性能Cortex-M0 MCU誕生!

    Arm傳統的、為MCU打造的Cortex-M系列CPU主要有:Cortex-M0, Cortex-M3, Cortex-M4。其中Cortex-M0
    的頭像 發表于 12-20 11:15 ?1324次閱讀

    IDT ARM Cortex-M0 用戶指南

    IDT ARM Cortex-M0 用戶指南
    發表于 07-10 20:05 ?1次下載
    IDT ARM <b class='flag-5'>Cortex-M0</b> 用戶指南

    微電子Cortex-M0學習筆記08——基本定時器詳解

    微電子Cortex-M0學習筆記08——基本定時器詳解
    的頭像 發表于 09-26 17:13 ?965次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>08——基本定時器詳解

    微電子Cortex-M0學習筆記07——串口通信詳解

    微電子Cortex-M0學習筆記07——串口通信詳解
    的頭像 發表于 09-26 17:11 ?1169次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>07——串口通信詳解

    微電子Cortex-M0學習筆記05——端口外部中斷實例

    微電子Cortex-M0學習筆記05——端口外部中斷實例
    的頭像 發表于 09-26 17:10 ?849次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>05——端口外部中斷<b class='flag-5'>實例</b>

    微電子Cortex-M0學習筆記04——GPIO詳解及應用實例

    微電子Cortex-M0學習筆記04——GPIO詳解及應用
    的頭像 發表于 09-26 17:07 ?1145次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04——GPIO詳解及應用<b class='flag-5'>實例</b>

    微電子Cortex-M0學習筆記03——時鐘系統設計例程

    微電子Cortex-M0學習筆記03——時鐘系統設計例程
    的頭像 發表于 09-26 17:06 ?1040次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>03——時鐘系統設計例程

    微電子Cortex-M0學習筆記02——Cortex-M0開發環境的建立及調試

    微電子Cortex-M0學習筆記02——Cortex-M
    的頭像 發表于 09-26 17:05 ?1647次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02——<b class='flag-5'>Cortex-M0</b>開發環境的建立及調試

    微電子Cortex-M0學習筆記01——芯片簡介

    微電子Cortex-M0學習筆記01——芯片簡介
    的頭像 發表于 09-26 17:03 ?963次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>01——芯片簡介
    汇丰百家乐官网的玩法技巧和规则 | 做生意门朝哪个方向好| 利来国际娱乐网| 网上百家乐有人赢过吗| 代理百家乐官网最多占成| 大发888娱乐城dafa888dafa8| 百家乐园zyylc| 澳门赌百家乐官网能赢钱吗| 大发888手机版官网| 澳门百家乐群策略| 百家乐官网在线洗码| 隆尧县| bet365v网卡| 百家乐打揽法| 百家乐官网冼牌机| 百家乐官网电脑游戏高手| 凯斯娱乐城| 大发888缺少 casino| 百家乐游戏补牌规则| 代理百家乐官网试玩| 百家乐官网游戏软件开发| 瑞丰国际娱乐场| 大发888娱乐城健账号| 网上百家乐有哪些玩法| 百家乐官网又称什么| 免费百家乐官网倍投| 百家乐官网庄闲点数| 新锦江娱乐城备用网址| 网络百家乐的玩法技巧和规则| 百家乐庄河闲的赌法| 沙龙百家乐官网代理| 蓝盾百家乐官网赌场娱乐网规则| 百家乐官网代理龙虎| 必博娱乐| 大发888真钱| 大发888网页版免费| 玩百家乐技巧看| 破解百家乐公式| 百家乐平台要多少钱| 百家乐技巧大全| 优博百家乐现金网平台|