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

          新聞中心

          EEPW首頁 > 光電顯示 > 設(shè)計應(yīng)用 > 帶以太網(wǎng)口的中西文VFD字符顯示器

          帶以太網(wǎng)口的中西文VFD字符顯示器

          作者: 時間:2004-12-08 來源:網(wǎng)絡(luò) 收藏

          摘要:介紹一種帶口的,根據(jù)口的實現(xiàn)方法、的控制要點以及字庫的植入和程序的流程。該為單位內(nèi)部、公共場所的監(jiān)控系統(tǒng)發(fā)布信息提供了完整的方案。

          關(guān)鍵詞:字庫 Rabbit2000微處理器

          在一些單位內(nèi)部、醫(yī)院和公共場所的監(jiān)控系統(tǒng)中,常要發(fā)布流動的信息?,F(xiàn)采用Rabbit半導(dǎo)體公司Rabbit2000微處理器為主控制器,植入二級漢字字庫和ASCII碼字庫,驅(qū)動Noritake公司(伊勢電子工業(yè)株式會社)生產(chǎn)的真空熒光顯示器(VFD)模塊,只要通過10M以及網(wǎng)口或串行口輸入要顯示的信息內(nèi)容,要發(fā)布的信息就可以顯示在VFD上。

          1 10M以太網(wǎng)口的實現(xiàn)

          圖1所示為字符顯示器模塊組成框圖。

          Rabbit2000微處理器是Rabbit半導(dǎo)體公司生產(chǎn)的8位微處理器。它和Z80系列微處理器有相似的結(jié)構(gòu)和高度的兼容性,但性能有很大的提高。要使以太網(wǎng)控制器RTL8019AS正常工作,Rabbit2000微處理器必須進行以下初始化。

          *CR=0X60:選擇頁1寄存器,使控制器處于離線狀態(tài);

          *設(shè)置以太網(wǎng)卡地址PAR0~PAR5;

          *CR=0x21:選擇頁0寄存器,使控制器處于離線狀態(tài),中止遠程DMA;

          *RBCR0=0,RBCR1=0:遠程DMA的接收計數(shù)寄存器清零;

          *CRDA0=0,CRDA1=0x40:遠程DMA起始地址為4000h;

          *RCR=0X20:接收監(jiān)控模式;

          *TCR=0X02:環(huán)路測試模式;

          *PSTART=0x46,BNRY=0x46:設(shè)置接收緩沖起始地址、接收和發(fā)送緩沖邊界;

          *PSTOP=0x80:設(shè)置接收緩沖的末地址;

          *ISR=0xff:屏蔽所有中斷;

          *TPSR=0x40:發(fā)送緩沖從4000h開始;

          *CR=0X61:選擇頁1寄存器;

          *CURR=0x46:設(shè)置當前接收緩沖指針;

          *CR=0x22:選擇頁0,正常工作模式;

          *TCR=0:發(fā)送器正常工作狀態(tài);

          *RCR=0x04:允許接收廣播包;

          *ISR=0xff:清除所有中斷。

          Rabbit2000微處理器的軟件開發(fā)平臺Dynamic C集編程、編譯、鏈接、調(diào)試、下載于一體,并有完善的TCP/IP協(xié)議棧,配備各種I/O驅(qū)動函數(shù)庫。建立SOCKET后,直接調(diào)用sock_init()函數(shù)可實現(xiàn)TCP包的初始化。根據(jù)需要,調(diào)用int sock_read(void *s,byte *dp,int len)等函數(shù)可實現(xiàn)TCP包的接收;調(diào)用int sock_write(void *s,byte *dp,int len)等函數(shù)可實現(xiàn)TCP包的發(fā)送。

          2 VFD模塊的控制

          VFD模塊包括顯示器、顯示驅(qū)動、存儲顯示內(nèi)容的RAM、微處理器以及控制接口。模塊控制接口的引腳和功能如表1所列。

          表1 VFD顯示模塊引腳功能

          引 腳

          功 能

          D0D7數(shù)據(jù)線(輸入/輸出)
          WR寫信號(輸入)
          RD讀信號(輸入)
          CS片選信號(輸入)
          C/D命令/數(shù)據(jù)選擇信號(輸入)
          C/D="1"命令
          C/D="0"數(shù)據(jù)
          FPR幀信號(輸出)(一個顯示幀輸出個脈沖)
          BL顯示空白信號(輸入)

          VFD顯示模塊共有23條指令,通過C/D引腳來區(qū)別命令和數(shù)據(jù)。以下就是一個向顯示模塊發(fā)出命令或?qū)懭霐?shù)據(jù)的子函數(shù):當flag=1時,ldata為對顯示模塊發(fā)出的命令;當flag=0時,ldata為對顯示模塊寫入的數(shù)據(jù)。子函數(shù)用匯編語言寫成,主要目的是為了節(jié)約機器的運行時間。

          root void VFD_C_D(char flag,char ldata){

          #asm

          pop h1 ;彈出跳入地址

          ex de,h1 ;保存

          pop h1 ;彈出flag

          ioi ld a,(PEDR)

          bit 0,1

          jr Z,VFD_C_D0 ;判斷flag的值

          set V_CD,a ;準備發(fā)命令

          jp VFD_C_D1

          VFD_C_D0:res V_CD,a ;準備寫入數(shù)據(jù)

          VFD_C_D1:res V_CS,a

          ioi ld(PEDR),a ;C/D信號發(fā)出

          pop h1 ;彈出ldata

          ld,b,1

          ld hl,WR_ADD ;讀顯示模塊的外部地址

          ioe ld(h1),b ;將ldata發(fā)出

          set V_CS,a

          set V_CD,a

          ioi ld(PEDR)a ;一個完整的時序完成

          push de

          push de

          push de ;恢復(fù)堆?,F(xiàn)場,準備退出子函數(shù)

          #endasm

          }

          3 字庫的植入和程序的流程

          一個標準的二極漢字字庫(1616點陣)約有256KB,標準的ASCII碼字符庫(168點陣)約有4KB,可以與編譯好的程序bin文件整合在一起,并用Dynamic C提供的RFU下載工具寫入目標板。經(jīng)整合后的內(nèi)存空間分為以下幾個區(qū)間:程序區(qū)、字庫區(qū)、信息斷電保存區(qū)。當然,字庫的格式和VFD顯示器所要求的格式有所不同,還要進行格式轉(zhuǎn)換。限于篇幅此處不再描述。

          costate指令是Dynamic C對標準C的擴展功能。每一個costate實體就是一個任務(wù)。每一個costate實體都可以自愿地懸掛起來,等待一段時間后繼續(xù)運行。本機的主程序就采用了costate結(jié)構(gòu)。圖2是主程序的流程圖。

          結(jié)語

          綜上所述,本機的最大特點就是帶有漢字和ASCII碼字庫,配備以太網(wǎng)和串口兩種物理接口,可以通過指令方便地修改和顯示信息,真正實現(xiàn)了信息發(fā)布的無紙化。



          評論


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