新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 常用液晶屏LCD1602的使用

        常用液晶屏LCD1602的使用

        作者: 時間:2012-08-15 來源:網絡 收藏

        LCD_1602, 學過單片機的朋友們都知道它了吧,可以說是用的最廣,最簡單,也是學液晶入門級別的一塊液晶了。顧名思義就是兩行顯示的液晶,每行最多顯示16個(里面總共有160個),其中包括阿拉伯數字、英文字母的大小寫,常用符號,及日文的假名!每個對應一個ASCII碼,我們通過向液晶送相應符號的ASCII碼來顯示這個字符。

        總的來說這個用起來很簡單的,到網上下載1602的數據手冊,自己寫寫程序估計也就差不多了,我在這里主要是說說自己的對一些常見問題的經驗,和自定義字符的顯示方法。
        要顯示我們自定義的字符,就要用到LCD中的CGRAM(character generate RAM),而我們之前用的顯示自帶的字符用到的是DDRAM,兩個是不同的。看液晶手冊我們知道,CGRAM的容量是64個字節,而一個字符是8個字節,所以一共能顯示8個自定義的字符。內部常用字符的顯示是從0x20開始的,0x00 ~ 0x0F是專門留給自定義字符顯示用的,0x00~0x07和0x80~0x0F顯示的內容是一樣的,也就是說0x00=0x08,0x01=0x09,以此類推。CGRAM共128個位,地址是0x40~0x7F,128/8=16正好對應的是0x00~0x0F共16個。
        下面說說如何顯示自定義字符吧。
        首先我們要清楚顯示字符的點陣大小,眼力好的可以看出來,LCD1602一個顯示字符的位置是5*8的點陣,也就是說它所能顯示的點陣圖形的大小是5*8的!要顯示一個自定義的字符,首先我們要知道所顯示自定義字符的點陣數據,也就是在一個5*8的點陣上那個點是黑的(將該點點黑,就是高電平 ----1),哪個點是白的(該點不顯示,為低電平----0),但是我們送入到LCD中的是ASCII碼,它是8位的數據,而一個顯示字符的點陣大小只是5*8的,顯然不夠,顯示的辦法是8*8點陣的前三列不用,也就是不顯示,我們只用后面的5列來顯示。看過數據手冊我們知道,第一行第一個位置的地址是 0x80,第二行一個位置的地址是0xC0。最后就是要顯示我們定義的第幾個字符其對應CGRAM地址的關系式是:
        0x00:第一個(0x40)                       0x01:第二個(0x48)   0x02:第三個(0x50)                       0x03:第四個(0x58)0x04:第五個(0x60)                       0x05:第六個(0x68)    0x06:第七個(0x70)                       0x07:第八個(0x78)

        具體的流程是這樣的:“顯示字符的數組數據”--->"定義第幾個自定義字符"--->“像地址中發送數組數據”--->“規定顯示位置”--->“顯示第幾個自定義字符”--->OK!

        自己想顯示什么字符或圖像可以自己計算一下對應的數組數據,最好自己弄一個取模軟件比較好,我一開始都是自己算的,感覺好麻煩。

        /***** 下面我寫一個用51驅動LCD1602的程序 *****/

        接口方面根據自己的實際電路決定。程序的完整版本下載: http://www.51hei.com/f/1602cc.rar

        /* 這里是我自己的經驗:在數據手冊中說下降沿寫入命令,但是我用上升沿寫入也是好使的,這里我還是用下降沿吧;下面這條是重點,自習看下你板子上的晶振大小,最好是在下程序的時候看下具體大小事多少,如果你的晶振>11.5M的話最好在下面我標注的地方加延時,不然很可能什么都不顯示,而且找不到錯誤。 */


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 红河县| 凤凰县| 遂宁市| 社旗县| 长垣县| 临潭县| 浠水县| 新巴尔虎右旗| 华安县| 雅安市| 巴马| 滦南县| 邮箱| 丹东市| 土默特右旗| 梧州市| 内乡县| 巩义市| 吉水县| 德清县| 朝阳市| 阿巴嘎旗| 岢岚县| 阿克苏市| 合川市| 万载县| 克东县| 科技| 云浮市| 巴林左旗| 元谋县| 永州市| 黄龙县| 新干县| 安龙县| 蒙城县| 获嘉县| 内江市| 环江| 青龙| 壶关县|