一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

敏矽微電子Cortex-M0學(xué)習(xí)筆記06——段式LCD液晶實例

jf_pJlTbmA9 ? 來源:敏矽MCU ? 作者:敏矽MCU ? 2023-09-26 17:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、LCD顯示驅(qū)動概述

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

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

主要特征有:

? 多達(dá) 96 個點(6x16)

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

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

? 支持靜態(tài),1/2 偏壓和 1/3 偏壓電壓

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

? 可配置的幀頻率

? 在數(shù)字模式下,支持 8 個 7 段 LED

其對應(yīng)的復(fù)用管腳映射圖如下:

wKgZomUD0tWAIVTLAAFlaGVSYuA981.png

圖1 LCD寄存器0

2、LCD驅(qū)動寄存器

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

wKgZomUD0tiAbBgoAAN01xwx838093.png

圖2 LCD寄存器0

2-1 LCD控制寄存器0

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

wKgaomUD0tmAFe3TAAHUFVchdHQ005.pngwKgaomUD0tqAMXBCAABBVD_kM3A697.png

圖3 LCD寄存器0

2-2 LCD控制寄存器1

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

wKgZomUD0tyAIOM4AAMg0RB4UlI860.png

圖4 LCD控制寄存器1

2-3 數(shù)據(jù)映射寄存器

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

2-4 LCD驅(qū)動使能控制器0

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

wKgZomUD0t2APt_mAAEeI5uKgyI583.png

圖5 LCD使能寄存器0

2-5 LCD驅(qū)動使能控制器1

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

wKgaomUD0t-AURKKAAEWYFwb400721.png

圖6 LCD使能寄存器1

3、LCD驅(qū)動函數(shù)

在例程LIB->common->Drivers->Source文件夾內(nèi)有l(wèi)cd.c文件,這個就是提供的LCD驅(qū)動文件,里面包含了一些基本的驅(qū)動函數(shù),使用起來十分方便。下面會對每個函數(shù)進(jìn)行講解。

3-1 LCD初始化

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

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

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

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

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復(fù)位操作
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電壓發(fā)生器上電
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電壓發(fā)生器掉電
LCD->LCDCTRL0_b.LEDINV=biasanode;//LED共正極/共負(fù)極選擇
LCD->LCDCTRL0_b.LEDEN=1;//選擇為LED輸出模式
LCD->LCDCTRL0_b.LCDEN=0;
}
return;
}

3-2 LCD輸出使能

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

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

3-3 LCD功能關(guān)閉

這段函數(shù)的作用是關(guān)閉LCD外設(shè)功能,通過LCD電壓發(fā)生器,并且關(guān)閉其時鐘。

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

3-4 LCD全顯

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

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

3-5 LCD清屏

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

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

4、端口中斷例程

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

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驅(qū)動初始化
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);
}
}

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

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

全0顯示:

wKgZomUD0uGAQX3NABakM8PBhu4831.png

圖7 LCD顯示全0

全9顯示:

wKgaomUD0uOAfPM3ABiAonAfAYk736.png

圖8 LCD顯示全9

來源:敏矽MCU

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

    關(guān)注

    146

    文章

    17985

    瀏覽量

    367353
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4520

    瀏覽量

    171671
  • 液晶
    +關(guān)注

    關(guān)注

    6

    文章

    621

    瀏覽量

    70386
  • Cortex-M0
    +關(guān)注

    關(guān)注

    4

    文章

    126

    瀏覽量

    39533
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    cortex-m0學(xué)習(xí)資料

    本帖最后由 jheng 于 2015-4-9 21:54 編輯 cortex-m0學(xué)習(xí)
    發(fā)表于 04-09 21:48

    深入淺出Cortex-M0學(xué)習(xí)資料

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

    Cortex-M0的指令集

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

    cortex-m0加密

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

    MCU學(xué)習(xí)筆記_ARM Cortex M0_簡介

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

    基于ARM Cortex-M0核的MCU設(shè)計及應(yīng)用

    知網(wǎng)鏈接:基于ARM Cortex-M0核的MCU設(shè)計及應(yīng)用
    發(fā)表于 11-05 15:35 ?18次下載
    基于ARM <b class='flag-5'>Cortex-M0</b>核的MCU設(shè)計及應(yīng)用

    全球最強(qiáng)性能Cortex-M0 MCU誕生!

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

    IDT ARM Cortex-M0 用戶指南

    IDT ARM Cortex-M0 用戶指南
    發(fā)表于 03-23 20:12 ?3次下載
    IDT ARM <b class='flag-5'>Cortex-M0</b> 用戶指南

    微電子Cortex-M0學(xué)習(xí)筆記08——基本定時器詳解

    微電子Cortex-M0學(xué)習(xí)筆記08——基本定時器詳解
    的頭像 發(fā)表于 09-26 17:13 ?1351次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>08——基本定時器詳解

    微電子Cortex-M0學(xué)習(xí)筆記07——串口通信詳解

    微電子Cortex-M0學(xué)習(xí)筆記07——串口通信詳解
    的頭像 發(fā)表于 09-26 17:11 ?1521次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>07——串口通信詳解

    微電子Cortex-M0學(xué)習(xí)筆記05——端口外部中斷實例

    微電子Cortex-M0學(xué)習(xí)筆記05——端口外部中斷實例
    的頭像 發(fā)表于 09-26 17:10 ?1175次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>05——端口外部中斷<b class='flag-5'>實例</b>

    微電子Cortex-M0學(xué)習(xí)筆記04——GPIO詳解及應(yīng)用實例

    微電子Cortex-M0學(xué)習(xí)筆記04——GPIO詳解及應(yīng)用
    的頭像 發(fā)表于 09-26 17:07 ?1534次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>04——GPIO詳解及應(yīng)用<b class='flag-5'>實例</b>

    微電子Cortex-M0學(xué)習(xí)筆記03——時鐘系統(tǒng)設(shè)計例程

    微電子Cortex-M0學(xué)習(xí)筆記03——時鐘系統(tǒng)設(shè)計例程
    的頭像 發(fā)表于 09-26 17:06 ?1354次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>03——時鐘系統(tǒng)設(shè)計例程

    微電子Cortex-M0學(xué)習(xí)筆記02——Cortex-M0開發(fā)環(huán)境的建立及調(diào)試

    微電子Cortex-M0學(xué)習(xí)筆記02——Cortex-M
    的頭像 發(fā)表于 09-26 17:05 ?2036次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>02——<b class='flag-5'>Cortex-M0</b>開發(fā)環(huán)境的建立及調(diào)試

    微電子Cortex-M0學(xué)習(xí)筆記01——芯片簡介

    微電子Cortex-M0學(xué)習(xí)筆記01——芯片簡介
    的頭像 發(fā)表于 09-26 17:03 ?1246次閱讀
    <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'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>01——芯片簡介