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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)和圖形LCD接口技術(shù)的實(shí)現(xiàn)

          51單片機(jī)和圖形LCD接口技術(shù)的實(shí)現(xiàn)

          作者: 時(shí)間:2012-01-16 來源:網(wǎng)絡(luò) 收藏
            LCD 近年來越來越多地應(yīng)用在單片機(jī)控制的儀器儀表中。儀表顯示時(shí)良好的人機(jī)界面始終是人們的追求。近日用單片機(jī)控制成功地在EDM240128 圖形LCD 上顯示出圖片。

          1、液晶模塊的特點(diǎn):

            EDM240128 圖形LCD 是大連神迅信息股份有限公司生產(chǎn)的240*128 點(diǎn)陣式LCD。 內(nèi)置8K 的數(shù)據(jù)存儲(chǔ)器,液晶顯示控制芯片為東芝公司生產(chǎn)的T6963C。它的總線可以直接適配MCS51 總線。允許單片機(jī)隨時(shí)訪問顯示緩沖區(qū),甚至可以進(jìn)行位操作,直接控制某一點(diǎn)。同時(shí)這款液晶還有讀/寫地址自動(dòng)加/減1 的功能,為大量數(shù)據(jù)的傳送編程提供了方便。

          2、硬件實(shí)現(xiàn):

            采用89S52 單片機(jī),其內(nèi)部有8K的FLASH ROM,將需要顯示的圖片數(shù)據(jù)和程序直接存儲(chǔ)在里面,使得此電路功能實(shí)現(xiàn)十分簡單。

            圖1 是89S52 與LCD 顯示器模塊的并口方式下的接口電路。

          51單片機(jī)和圖形LCD接口技術(shù)的實(shí)現(xiàn)

            P1.0 接LCD 的復(fù)位,VEE用來調(diào)節(jié)顯示屏灰度,手冊中給出電壓范圍是 8V~ -23V,在使用中發(fā)現(xiàn)超過 -15V顯示顏色已經(jīng)過深而看不清了。實(shí)際測試得到合適電壓范圍為-13.8V~-14.8V,調(diào)節(jié)該點(diǎn)電壓可改變顯示屏字符圖形顏色的深淺。由于該點(diǎn)電流極小,用一個(gè)普通的電位器調(diào)節(jié)即可。

          3、圖片數(shù)據(jù)的提取

            圖片轉(zhuǎn)化成字節(jié)類型的數(shù)據(jù)可采用專用的程序,文中采用PICtoCODE【圖片數(shù)據(jù)生成器】V1.0,設(shè)計(jì)為 hy_zhangwang,此軟件可從互聯(lián)網(wǎng)上免費(fèi)下載。

            PICtoCODE 可以將黑白單色圖片(支持BMP、JPEG、JPG、GIF 等格式)轉(zhuǎn)換為A51、C51、HEX 等格式的數(shù)據(jù)文件。數(shù)據(jù)生成的順序?yàn)閺纳现料?,從左到右,左上角象素對?yīng)第1 個(gè)字節(jié),右下腳對應(yīng)最后一個(gè)字節(jié)。軟件要求圖片寬度必須為8 的整數(shù)倍,如果待處理的圖片寬度不是8 的整數(shù)倍,需要先用圖形編輯軟件(如windows 系統(tǒng)自帶的畫圖程序)作預(yù)處理。

            如果圖片不是黑白單色圖片,可以用“彩色>>黑白...”功能將圖片轉(zhuǎn)換為黑白圖片,然后再導(dǎo)出數(shù)據(jù)或代碼。

          4、軟件設(shè)計(jì)

            EDM240128 的控制指令可帶兩個(gè)參數(shù)、一個(gè)參數(shù)或者無參數(shù)。每條指令都是先送入?yún)?shù),再送入指令代碼。如果所送參數(shù)多于規(guī)定個(gè)數(shù),最后送入的有效。每次操作前必須檢測其狀態(tài)字。由于狀態(tài)位作用不同,因此執(zhí)行不同的指令應(yīng)檢測不同的狀態(tài)位。顯示器上的240*128 點(diǎn),每8 個(gè)點(diǎn)為一個(gè)字節(jié)的數(shù)據(jù),都 一一對應(yīng)顯示緩沖區(qū)的數(shù)據(jù)。一點(diǎn)對應(yīng)一個(gè)bit ,bit=1 該點(diǎn)顯示黑點(diǎn),bit=0則該點(diǎn)消失。

            LCD 有一條display ON/OFF 指令,display ON 時(shí)顯示緩沖區(qū)的數(shù)據(jù)對應(yīng)顯示畫面,display OFF時(shí)則畫面消失,但緩沖區(qū)的數(shù)據(jù)仍然存在,并沒有丟失。有關(guān)命令請?jiān)敿?xì)查閱T6963C使用手冊。

          51單片機(jī)和圖形LCD接口技術(shù)的實(shí)現(xiàn)

            軟件采用C51 編寫,大大提高了開發(fā)效率

            單片機(jī)程序:

          #define ming 0x4000 //指令口地址
          #define shuju 0x0000 //數(shù)據(jù)口地址
          #includeat89x52.h>
          void delay(unsigned int i) //延時(shí)
          {/*-----------*/}
          void writed(char a) // 寫數(shù)據(jù)子程序
          {/*----------*/}
          void writec(char a) //寫指令子程序
          {/*-----------*/}
          void busy() //判斷標(biāo)志位是否忙
          {*/-----------*/}
          main()
          { unsigned char ji=0;
          code char seg[3840]={/*-----------*/};///要顯示的圖片數(shù)據(jù)
          P1_0=0;
          delay(100);
          P1_0=1;
          busy();
          writed(0x00);
          busy();
          writec(0x24);
          busy();
          writec(0xb0); /////設(shè)置自動(dòng)寫,地址加一
          busy();
          for(ji=0;ji3840;ji++)
          { writed(seg[ji]);
          busy();
          }
          writec(0xb3); // 自動(dòng)寫結(jié)束
          busy();
          writec(0x98); // 開顯示
          //-----------------------------------
          }

          5、結(jié)束語

            T6963C 控制芯片廣泛應(yīng)用在各種圖形點(diǎn)陣LCD 上,除了大連神迅公司的EDM240128和EDM12864 圖形LCD 采用此芯片外,金鵬奧可拉公司的OCM128*64、OCM240*128、深圳松山公司的CA12864A、信利公司的MPG240128A 等均采用這款芯片。我們可以很方便地作出各種友好的人機(jī)界面。



          關(guān)鍵詞: 51單片機(jī) 圖形LCD接口

          評(píng)論


          相關(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); })();