在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于華大Cortex-M0+內核芯片實現段碼式LCD液晶顯示屏的設計

電子設計 ? 來源:網絡整理 ? 作者:佚名 ? 2019-11-28 08:00 ? 次閱讀

1.項目介紹

不管是LED數碼管,還是段碼式LCD液晶顯示屏,在顯示上都是由各個段位組合顯示成我們想要的字符的。本項目中采用的是4位段碼式LCD顯示屏,每一位由A~G共7個段位組成,另外還有P1~P4共4個點段位。為了實現在顯示程序上的可移植性和通用性,本項目通過數據結構的設計形式結合驅動LCD顯示芯片內部RAM的操作方法,給出一種既適合LED數碼管,也適合段碼式LCD液晶顯示屏的程序設計方法。

2.開發環境

軟件開發環境:Keil MDK 5.25,HC32005_SDK

硬件設計軟件:立創EDA

3.硬件設計

3.1.原理圖設計

硬件設計上使用了華大的Cortex-M0+內核的HC32F005C6PA作為主控芯片,整個系統電壓工作在3.3V~5V之間,簡單的電源設計和復位電路,使用內部24MHz晶振,通用的SWD在線調試和下載接口,在硬件外圍電路上省了不少的空間。4個用戶自定義按鍵、2個串口全部引出,一個連接SP232芯片進行RS-232通訊,另一個直接引出TTL作調試監控用、還有一個4位的LCD段碼式液晶屏,使用TM1621驅動芯片,作為顯示接口。

3.2.PCB設計

3.3.焊接調試

3.4.華大MCU初次使用,調試體會

基于華大Cortex-M0+內核芯片實現段碼式LCD液晶顯示屏的設計

4.程序設計

4.1.TM1621驅動設計

TM1621芯片內部帶有靜態顯示內存(RAM),RAM以32*4位格式存儲所顯示的數據。RAM的數據直接映像到LCD驅動器,也就是說可以通過修改RAM的數據內容,來修改液晶屏顯示的內容。對應的COM和SEG所對應的RAM映像圖可以參考TM1621的數據手冊。對于TM1621我們有4個基礎的主要函數,分別如下所述:

4.1.1.void TM1621_Write(uint16_t value, uint8_t length),這是TM1621最底層的函數, 是將value這個數據的高length個bit位寫入到TM1621芯片內部,例如:

TM1621_Write(0x8020/*0b 1000 0000 0010 0000*/, 0x0C); // SYS_EN,將0x8020這個數值的高12位寫入到TM1621芯片

4.1.2.void TM1621_UpdateRAM(void),更新TM1621顯示RAM,將全局數組暫存儲的RAM數據統一一次性的更新到TM1621芯片內,使用的是TM1621的WRITE命令,命令概述詳見TM1621數據手冊。

4.1.3.void TM1621_ModifyRAM(uint8_t index, uint8_t bit, uint8_t flag),修改TM1621顯示RAM,根據數據結構及算法確認修改的TM1621顯示RAM的下標和位下標,flag是置位和清除的操作標志。統一修改完成后,需要調用TM1621_UpdateRAM函數更新TM1621的顯示RAM,更新液晶屏顯示。

4.1.4.void TM1621_Init(void),TM1621芯片初始化配置操作,詳見程序設計說明。

4.2.顯示設計

4.2.1.定義顯示字符和段位的映射表,如下代碼給出了38個常用的顯示字符:

typedef struct

{

char ch; /*字符索引*/

uint8_t segment[8]; /*字符對應的段編碼*/

} DIGITRON_STRUCT;

const DIGITRON_STRUCT DIGITRON_TABLE[38] =

{

{‘ ’, {0, 0, 0, 0, 0, 0, 0, 0}},

{‘0’, {1, 1, 1, 1, 1, 1, 0, 0}},

{‘1’, {0, 1, 1, 0, 0, 0, 0, 0}},

{‘2’, {1, 1, 0, 1, 1, 0, 1, 0}},

{‘3’, {1, 1, 1, 1, 0, 0, 1, 0}},

{‘4’, {0, 1, 1, 0, 0, 1, 1, 0}},

{‘5’, {1, 0, 1, 1, 0, 1, 1, 0}},

{‘6’, {1, 0, 1, 1, 1, 1, 1, 0}},

{‘7’, {1, 1, 1, 0, 0, 0, 0, 0}},

{‘8’, {1, 1, 1, 1, 1, 1, 1, 0}},

{‘9’, {1, 1, 1, 1, 0, 1, 1, 0}},

{‘A’, {1, 1, 1, 0, 1, 1, 1, 0}},

{‘b’, {0, 0, 1, 1, 1, 1, 1, 0}},

{‘c’, {0, 0, 0, 1, 1, 0, 1, 0}},

{‘C’, {1, 0, 0, 1, 1, 1, 0, 0}},

{‘d’, {0, 1, 1, 1, 1, 0, 1, 0}},

{‘E’, {1, 0, 0, 1, 1, 1, 1, 0}},

{‘F’, {1, 0, 0, 0, 1, 1, 1, 0}},

{‘g’, {1, 1, 1, 1, 0, 1, 1, 0}},

{‘H’, {0, 1, 1, 0, 1, 1, 1, 0}},

{‘h’, {0, 0, 1, 0, 1, 1, 1, 0}},

{‘i’, {0, 0, 1, 0, 0, 0, 0, 0}},

{‘I’, {0, 0, 0, 0, 1, 1, 0, 0}},

{‘J’, {0, 1, 1, 1, 1, 0, 0, 0}},

{‘l’, {0, 0, 0, 0, 1, 1, 0, 0}},

{‘L’, {0, 0, 0, 1, 1, 1, 0, 0}},

{‘n’, {0, 0, 1, 0, 1, 0, 1, 0}},

{‘o’, {0, 0, 1, 1, 1, 0, 1, 0}},

{‘O’, {1, 1, 1, 1, 1, 1, 0, 0}},

{‘P’, {1, 1, 0, 0, 1, 1, 1, 0}},

{‘q’, {1, 1, 1, 0, 0, 1, 1, 0}},

{‘r’, {0, 0, 0, 0, 1, 0, 1, 0}},

{‘S’, {1, 0, 1, 1, 0, 1, 1, 0}},

{‘t’, {0, 0, 0, 1, 1, 1, 1, 0}},

{‘u’, {0, 0, 1, 1, 1, 0, 0, 0}},

{‘U’, {0, 1, 1, 1, 1, 1, 0, 0}},

{‘y’, {0, 1, 1, 1, 0, 1, 1, 0}},

{‘-’, {0, 0, 0, 0, 0, 0, 1, 0}},

};

4.2.2.定義段位的組成關系,如下給出了顯示一位字符所需要的一個段組合,這些定義可以參照段碼式LCD液晶屏的PIN引腳關系定義:

const char DISPLAY_DIGIT_TABLE[4][7][3] =

{

{“1A”, “1B”, “1C”, “1D”, “1E”, “1F”, “1G”},

{“2A”, “2B”, “2C”, “2D”, “2E”, “2F”, “2G”},

{“3A”, “3B”, “3C”, “3D”, “3E”, “3F”, “3G”},

{“4A”, “4B”, “4C”, “4D”, “4E”, “4F”, “4G”},

};

const char DISPLAY_POINT_TABLE[4][3] =

{

“P1”, “P2”, “P3”, “P4”

};

直白了說,就是我要在第一位上顯示一個‘8’這個字符,那這個字符肯定是由“1A”, “1B”, “1C”, “1D”, “1E”, “1F”, “1G”這7個段位組合顯示而成的。

4.2.3.定義段碼式LCD液晶屏PIN引腳關系與TM1621驅動芯片顯示RAM的對應關系表,如下代碼所示:

const char LCD_CS_TABLE[4][32][3] =

{

{“1F”,“1A”,“2F”,“2A”,“3F”,“3A”,“4F”,“4A”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”},

{“1G”,“1B”,“2G”,“2B”,“3G”,“3B”,“4G”,“4B”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”},

{“1E”,“1C”,“2E”,“2C”,“3E”,“3C”,“4E”,“4C”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”},

{“P1”,“1D”,“P2”,“2D”,“P3”,“3D”,“P4”,“4D”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”,“ ”},

};

這個數組的每一行對應著一個COM,每一列對應著一個SEG,這樣一個數據就直接映射成TM1621顯示RAM中的每一個BIT位;但需要注意的是,這個數據是需要根據原理圖的COM和SEG引腳的設計而定的;本項目在硬件設計上段碼式LCD液晶的COM0~COM3分別對應的也是TM1621驅動芯片的COM0~COM3,所以在行的對應關系上與段碼式LCD液晶屏PIN引腳關系保持一致,如果順序不一致,那在數組的行順序要也要做相應的對應排序;SEG段的數組對應關系設計和COM段的思想是一樣的。

4.2.4.void DISPLAY_SearchCS(const char *str, uint8_t *com, uint8_t *seg),這是最關鍵的一個函數,結合硬件電路設計,查找某個顯示字符對應的每一個段編碼在TM1621顯示RAM的下標和位下標。

4.2.5.void DISPLAY_Digit(uint8_t index, char ch, uint8_t blink, uint8_t flag),這是位顯示函數,index是位下標,ch是需要顯示字符,blink是閃爍標志,flag是刷新標志;通過這個函數,我們可以調用DISPLAY_Digit(0, ‘8’, 0, 1);在第一個位置上顯一個不閃爍的8字。

5.程序移植性和通用性

在相同硬件驅動的情況下,對應不同設計的段碼式LCD,我們只需要根據段碼式LCD液晶屏PIN引腳關系,再結合硬件原理圖電路設計,修改LCD_CS_TABLE數組即可實現如上顯示功能。


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

    關注

    34

    文章

    4437

    瀏覽量

    167955
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    114823
  • 液晶顯示屏
    +關注

    關注

    1

    文章

    208

    瀏覽量

    27630
收藏 人收藏

    評論

    相關推薦

    LCD1602液晶顯示屏的驅動設計與實現

    LCD1602是一種工業字符型液晶,能夠同時顯示16x02即32個字符。LCD1602液晶顯示的原理是利用
    的頭像 發表于 12-08 11:24 ?1w次閱讀
    <b class='flag-5'>LCD</b>1602<b class='flag-5'>液晶顯示屏</b>的驅動設計與<b class='flag-5'>實現</b>

    LCD液晶顯示屏實現多級嵌套菜單

    摘要: 介紹了在C 語言環境下,在LCD 液晶顯示屏實現多級嵌套菜單的一種簡便方法,提出了一個結構緊湊、實用的程序模型。關鍵詞: 液晶顯示屏; 多級菜單; 單片機; C 語言;
    發表于 07-14 08:41

    請問如何驅動LCD1602液晶顯示屏

    LCD1602液晶顯示屏的原理是什么?如何驅動LCD1602液晶顯示屏
    發表于 01-17 08:29

    什么是SuperFine LCD/超炫麗液晶顯示屏

    什么是SuperFine LCD/超炫麗液晶顯示屏  超炫麗液晶顯示屏(SuperFine LCD)就是在一般液晶屏幕亮度的涂層之外,再附
    發表于 01-23 09:58 ?650次閱讀

    LCD液晶顯示

    LCD液晶顯示,用于測試單片機液晶顯示屏顯示正確與否
    發表于 11-19 17:30 ?11次下載

    基于MSP430控制的液晶顯示屏設計與實現

    基于MSP430控制的液晶顯示屏設計與實現
    發表于 10-13 08:48 ?32次下載

    字符型點陣式 LCD液晶顯示屏液晶顯示技術的詳述

    一:字符型點陣式 LCD 液晶顯示屏LCD 的應用很廣泛,簡單如手表上的液晶顯示屏,儀表儀器上的液晶顯示器或者是電腦筆記本上的
    發表于 11-22 10:36 ?21次下載
    字符型點陣式 <b class='flag-5'>LCD</b><b class='flag-5'>液晶顯示屏</b>及<b class='flag-5'>液晶顯示</b>技術的詳述

    如何清潔TFT液晶顯示屏

    TFT液晶顯示屏使用一時間后,你會發現顯示屏上常會吸附一層灰塵(關掉LCD后側看更明顯),有時還會不小心粘上各種水漬,這肯定將大大影響視覺效果,該如何清潔呢?
    發表于 05-14 15:32 ?1565次閱讀

    如何選擇LCD液晶顯示屏廠家

    LCD液晶顯示屏制作的廠家很多,但是在選擇專業定制LCD液晶屏廠家時,應該選擇哪一家液晶顯示屏的生產廠家來進行制作,才能保證
    發表于 06-26 16:40 ?1257次閱讀

    lcd液晶顯示屏的兩種驅動方法

    lcd液晶顯示屏的驅動就是用來調整施加在液晶器件電極上的電位信號的相位、峰值、頻率等,建立驅動電場,以實現液晶顯示器件的
    發表于 06-24 10:41 ?1.9w次閱讀

    LCD液晶顯示屏如何有效進行防靜電

    嚴寒的冬季除了氣溫很低,還有就是非常的干燥的。這對于LCD顯示屏是不利的。那LCD液晶顯示屏具體應該如何有效的防靜電呢?
    發表于 12-09 08:00 ?27次下載

    如何提高液晶顯示屏呢?

    可以通過改進液晶顯示屏的面板技術來提高液晶顯示屏的對比度,采用TN面板的顯示屏對比度都比較低,可以通過IPS和VA技術,即使用IPS型面板和VA型面板的液晶顯示屏,這兩種面板的
    發表于 04-21 12:36 ?770次閱讀

    LCD液晶顯示屏的閃問題

    LCD液晶顯示屏的閃問題是電子產品生產設計中經常遇到的事情,TOPWAY技術支持團隊,憑借多年積累的技術經驗,成功協助客戶解決了可編程電子負載的LCD
    發表于 07-08 11:11 ?1731次閱讀

    液晶顯示屏與led顯示屏的區別

    所不同。 一、顯示原理 1.1 液晶顯示屏LCD液晶顯示屏(Liquid Crystal Display,簡稱LCD)是一種利用
    的頭像 發表于 10-12 10:39 ?1569次閱讀

    液晶顯示屏是什么材料做的

    液晶顯示屏(Liquid Crystal Display,簡稱LCD)是一種廣泛使用的顯示技術,它利用液晶材料的光學特性來控制光線的通過,從而實現
    的頭像 發表于 10-12 10:41 ?1244次閱讀
    主站蜘蛛池模板: 成人午夜毛片| 国产你懂的视频| 特级aaa毛片| 五月激情综合丁香色婷婷| 天堂资源在线官网bt| 四虎影院永久地址| 色综合天天综一个色天天综合网| 国模精品一区二区| 国产三级在线看| 国产成人精品曰本亚洲| 一丝不遮视频免费观看| 欧美一级在线免费观看| 免费一级毛片无毒不卡| 四虎永久在线精品| 日本拍拍| 国产一级特黄毛片| 夜夜操网| 国产在线操| 91男人| 1024免费永久福利视频| 美女大黄三级视频在线观看| 在线网站 看片 网站| 天天插天天| 在线 色| 亚洲成人免费在线观看| 精品三级在线观看| 欧美性生活网址| 激情文学综合丁香| 免费的毛片| 丁香伊人五月综合激激激| 天天天综合| 亚洲bt欧美bt高清bt777| 男女视频在线| 四虎影院永久免费| 黄色视屏免费在线观看| 午夜精品久久久久久影视riav | zzji国产精品视频| 亚洲欧美强伦一区二区另类| 亚洲一区不卡视频| 亚洲29p| 久久青草精品免费资源站|