<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 光電顯示 > 設(shè)計應(yīng)用 > 通用型LCD1602自定義字符的顯示

          通用型LCD1602自定義字符的顯示

          作者: 時間:2017-10-21 來源:網(wǎng)絡(luò) 收藏

            主要用來顯示數(shù)字、字母、圖形以及少量自定義字符。由于其顯示控制簡單,性價比高,廣泛用于電子表、冰箱、空調(diào)、汽車電子儀表等裝置。本文主要研究一下如何在顯示自定義字符。雖然技術(shù)含量不高,但是注意編程的細(xì)節(jié)還是很有必要去探討一番。

          本文引用地址:http://www.ex-cimer.com/article/201710/367196.htm

            1.引言

            液晶顯示器的英文名是Liquid CrystalDisplay,簡稱LCD.液晶顯示器作為顯示器件具有體積小、重量輕、功耗低,性價比高等優(yōu)點,所以LCD日漸成為各種便攜式電子產(chǎn)品的理想顯示器,1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,它有若干個5X7或5X11點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此,所以它不能像12864一樣顯示圖形,但是有時候很想要用圖形表示,那么提供了8個空間的自定義字符,如圖1所示,顯示的年月日,.C就是自定義字符。

            

            2.通用型LCD1602操作方法

            LCD1602是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。

            目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。

            如圖2所示,字符型LCD1602通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳),從左到右分別是1引腳到16引腳在這里要說明的是:

            (1)要用1602型LCD顯示字符必須解決3個問題:a.待顯示字符ASCII標(biāo)準(zhǔn)碼產(chǎn)生;b.液晶顯示模式的設(shè)置;c.字符顯示位置的指定。

            (2)若想在00H處顯示數(shù)據(jù)的話,則必須將00H加上80H,即0x00H+0x80H,若要在01H處顯示數(shù)據(jù),也必須加0x80H,例如要將某字符顯示在第2行第5列,則確定地址的指令代碼應(yīng)為80H+44H=C4H.依次類推。

           ?。?)CGRAM是用戶自定義的字符圖形,可以定義8個。

            (4)LCD1602只有11條指令,學(xué)會使用這11條指令,就可以輕松控制。

           ?。?)要讓液晶顯示字符,必須對有無光標(biāo)、光標(biāo)的移動方向、光標(biāo)是否閃爍及字符的移動方向等進(jìn)行設(shè)置,才能獲得所需的顯示效果。

            1602液晶顯示模式的設(shè)置是通過控制指令對內(nèi)部的控制器控制而實現(xiàn)的,常用的控制指令見表8-5.例如,要將顯示模式設(shè)置為“16X2顯示,5X7點陣,8位數(shù)據(jù)接口”,只要向液晶模塊寫二進(jìn)制指令代碼00111 000B,即16進(jìn)制代碼38H就可以了。

            (6)LCD是一個慢顯示器件,所以在寫每條指令前一定要先讀LCD的忙碌狀態(tài),如果LCD正忙于處理其他指令,就等待;如果不忙,再執(zhí)行寫指令。為此,1602型LCD專門設(shè)了一個忙碌標(biāo)志位BF,該位鏈接在8位雙向數(shù)據(jù)線的DB7位上。如果BF為低電平“0”,表示LCD不忙;如果BF為高電平“1”,則表示LCD處于忙碌狀態(tài),需要等待。假定1602型LCD的8位雙向數(shù)據(jù)線(DB0~DB7)是通過單片機的P0口進(jìn)行數(shù)據(jù)傳遞的,那么只要檢測P0口的P0.7引腳電平(DB連P0.7)就可以知道忙碌標(biāo)志位BF的狀態(tài)。

            3.LCD1602的硬件連接及顯示

            LCD1602的顯示主要根據(jù)硬件原理圖焊接好,學(xué)會使用11條指令,再根據(jù)時序圖(如圖3所示)寫出寫指令函數(shù),寫數(shù)據(jù)函數(shù),以及讀忙標(biāo)志函數(shù),那么就可以輕松去調(diào)用。

            (1)1602和單片機的連接圖

            

            其中途中的JPBG直接接電源,第3引腳的可調(diào)電位器的兩端一定要連接電源和地。

            P2.0,P2.1,P2.2分別是RS,R/W和E三個控制位,P0.0-P0.7是8位數(shù)據(jù)線。三個控制位詳見說明,RS=0表示寫或讀指令,RS=1表示寫數(shù)據(jù)。R/W是讀寫指令,R/W=1是讀,R/W=0是寫。E是使能端,要根據(jù)時序圖去寫對應(yīng)的程序,具體時序圖如圖3所示。

            (2)讀操作時序(用的不多)

            

           ?。?)寫操作時序

            

            分析時序圖可知操作1602液晶的流程如下:

            a.通過RS確定是寫數(shù)據(jù)還是寫命令,寫命令包括使液晶的光標(biāo)顯示/不顯示,光標(biāo)閃爍/不閃爍,需不需要移頻,在液晶的什么位置顯示等。寫數(shù)據(jù)時要顯示什么內(nèi)容;

            b.R/W為讀寫控制端,一般設(shè)置為寫模式,即低電平;c.將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上;

            d.給E一個高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。

            4.1602LCD的自定義字符:

            從CGRAM表上可以看到,在表的最左邊是一列可以允許用戶自定義的CGRAM,從上往下看是16個,實際只有8個字節(jié)可用。首先設(shè)置CGRAM地址的指令如下:

            

            也就是說要想寫自定義字符,從這個指令可以看出指令數(shù)據(jù)的高2位已固定是01,只有后面的6位是地址數(shù)據(jù),而這6位中的高3位就表示這八個自定義字符,最后的3位就是字模數(shù)據(jù)的八個地址了。例如第一個自定義字符的字模地址為 01000000-01000111八個地址。

            向這8個字節(jié)寫入字模數(shù)據(jù),讓它能顯示出“℃”具體自定義字符的字模數(shù)據(jù)如下圖:

            

            針對上圖所示的字模數(shù)據(jù),具體模塊化程序如下:

            writezl(0&TImes;40);//寫指令告訴是寫自定義字符

            for(j=0;j《8;j++)//把年的8個字節(jié)寫進(jìn)去

            {writesj(wendu[j]);}

            writedz(0x4c);//具體在1602中顯示的位置,如本文圖1所示

            writesj(0&TImes;00);//向DDRAM寫入00H.、

            根據(jù)以上程序,要顯示第二個字符,那么首先必須寫指令writezl(0&TImes;48);然后把自定義字符的8個字模數(shù)據(jù)寫入字模數(shù)據(jù),然后再定義具體在什么位置顯示,然后必須要向DDRAM中寫入01H,以此類推,如果要寫入第8個自定義字符就寫入 00000111(07H),這點特別要注意。

            5.小結(jié)

            LCD1602的顯示簡單易行,自定義字符也是LCD1602中的一個小亮點,適當(dāng)?shù)募舆@么幾個漢字或者加一個小圖標(biāo),給LCD1602的顯示更形象生動化。



          關(guān)鍵詞: LCD1602

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();