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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于32位微處理器的液晶顯示系統(tǒng)設(shè)計(jì)

          基于32位微處理器的液晶顯示系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2013-12-05 來(lái)源:網(wǎng)絡(luò) 收藏

          SED1353 初始化程序:
          INCLUDE SED1353. ASM
          INIT MOVE. B # $00 ,AUX00 ;設(shè)置為正常工作模式
          MOVE. B # $44 ,AUX01 ;設(shè)置關(guān)顯示,雙屏結(jié)構(gòu),不屏蔽XSCL ,8 位LCD 數(shù)據(jù), 16 位顯存結(jié)構(gòu)
          MOVE. B # $27 ,AUX02 ;設(shè)置顯示域?qū)挾萀BCB8:0=1×640/ 16-1=39 (十進(jìn)制)
          MOVE. B # $04 ,AUX03 ;設(shè)置正常運(yùn)行方式,單色無(wú)灰度顯示,1位/像素
          MOVE. B # $EF ,AUX04 ;設(shè)置掃描行數(shù), TDLC7:0=480/ 2-1=239(十進(jìn)制)
          MOVE. B # $00 ,AUX05 ;使用默認(rèn)值,每幀WF 翻轉(zhuǎn)一次
          MOVE. B # $00 , AUX06 ; 設(shè)置上半屏顯示首址為$220000
          MOVE. B # $00 ,AUX07
          MOVE. B # $80 ,AUX08 ;設(shè)置下半屏顯示首址為$224B00 (使用連續(xù)地址)
          MOVE. B # $25 ,AUX09
          MOVE. B # $00 ,AUX0C ;使用默認(rèn)非顯示周期
          MOVE. B # $00 ,AUX0D ;不使用虛擬屏
          ORI.B # $90 ,AUX01 ;開顯示和LCDE 使能不需要設(shè)置的寄存器會(huì)被自動(dòng)旁路

          4.2 漢字顯示程序的設(shè)計(jì)

          在對(duì)系統(tǒng)進(jìn)行完正確的初始化后將ROM 中的字模數(shù)據(jù)送到SED1353顯示存儲(chǔ)器,就可以使液晶顯示屏顯示出漢字。顯示漢字需要指定其坐標(biāo)位置,坐標(biāo)對(duì)應(yīng)該漢字模入口地址。在顯示漢字界面前, 首先清屏。由于本文中顯示存儲(chǔ)器結(jié)構(gòu)為16 位,所以X 方向以字為單位(偶數(shù)地址對(duì)齊) 。故規(guī)定顯示區(qū)左上角坐標(biāo)為(0 ,0) ,右下角坐標(biāo)為(39 ,479) 。每個(gè)漢字都有唯一的代碼,所以在調(diào)用字模數(shù)據(jù)前需要對(duì)漢字的代碼進(jìn)行解碼,對(duì)坐標(biāo)進(jìn)行解析。

          字模入口地址=Y坐標(biāo)×80 + X 坐標(biāo)×2 ;字模首地址=漢字代碼×32 + 字庫(kù)首地址以在坐標(biāo)(30 ,148) 處顯示代碼為24 的16×16漢字為例,程序如下:
          (1) 清屏子程序
          MOVE. L # $220000 ,A4; 賦當(dāng)前顯示首址
          BRA CLRLCD ;調(diào)用清屏子程序
          CLRLCD CLR. LD3
          CLR. LD4
          MOVE. W # 480 ,D3;需要清480 行
          LOOP1  MOVE. W # 40 ,D4;每行40個(gè)字
          LOOP2  MOVE. W # $0000 , (A4) + ;清零
          SUB. W # 1,D4
          BNE LOOP2
          SUB. W # 1,D3
          BNE LOOP1
          RTS

          (2) 漢字顯示子程序
          MOVE. L # 0 ,A1 ;清A1 ,A2
          MOVE. L  # 0 ,A2
          CLR. L  D1 ;清D1~D4
          CLR. L  D2
          CLR. L  D3
          CLR. L  D4
          MOVE. B  # 30,D2; 賦坐標(biāo)值
          MOVE. W # 148,D3
          BSR ALXY; 調(diào)坐標(biāo)解析子程序
          MOVE. LD3 ,A1 ;坐標(biāo)的絕對(duì)地址送出
          MOVE. W # 24, D4 ;賦代碼值
          BSR  DECODE;調(diào)解碼子程序
          MOVE. L  D4,A2;字模首址送出
          LOOP  MOVE. W (A2) + , (A1)
          ADD. L  # $50,A1 ;字模數(shù)據(jù)寫入換行
          SUB. B  # 1 ,D1
          BNE LOOP
          END
          DECODE  MULU  # 32,D4
          ADD. W # TAB16,D4
          MOVE. B  # 16,D1 ;循環(huán)16 次
          RTS
          ... .

           
          ALXY MULU  # $50 ,D3
          MULU  # $2 ,D2
          ADD. W D2 ,D3
          ADD. L  # $220000 ,D3
          RTS

          TAB16  ......
          ******設(shè)“馬”漢字代碼為24 ******
          DC. W $0020 , $3FF0 , $0020 , $0820 ;馬
          DC. W $0820 , $0820 , $0820 , $0824
          DC. W $0FFE , $0004 , $0024 , $FFF4
          DC. W $0004 , $0004 , $0028 , $0010
          ...

          5  結(jié)束語(yǔ)

          32 位嵌入式處理器的軟件開發(fā)以C語(yǔ)言為主,通常情況下用匯編語(yǔ)言編寫與硬件有關(guān)的程序,高級(jí)語(yǔ)言C編寫主程序?qū)崿F(xiàn)某些復(fù)雜算法,若再配上實(shí)時(shí)多任務(wù)任務(wù)操作系統(tǒng)更是如虎添翼。本文所述方法可移植性強(qiáng),稍作修改可應(yīng)用于摩托羅拉MC68K系列嵌入式系統(tǒng);選用的SED1353具有直接管理128K大容量顯示緩沖區(qū)的能力,編程簡(jiǎn)單、顯示速度快和執(zhí)行效率高;可支持多種單色/ 彩色液晶顯示屏,可以實(shí)現(xiàn)數(shù)據(jù)顯示、繪制圖表以及翻轉(zhuǎn)等功能,具有良好的顯示界面,提高了系統(tǒng)的可操作性,值得在智能化儀器儀表中推廣。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(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); })();