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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于IPV6 的嵌入式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于IPV6 的嵌入式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2010-01-27 來源:網(wǎng)絡(luò) 收藏

          2.1 主控制器的擴(kuò)展
          中,主控制器采用了 ATMEL 公司生產(chǎn)的AT89C55 微處理器。中把P0
          口用作數(shù)據(jù)16 位地址的低位地址復(fù)用口,P2 口用作16 位地址的高位地址,P1 口的P1. 0
          用作以太網(wǎng)控制芯片RTL8019AS 的復(fù)位信號(hào)輸入端,P1. 1, P1. 2 分別模擬IZC 總線用作
          EEPROM 數(shù)據(jù)存儲(chǔ)器的時(shí)鐘信號(hào)和數(shù)據(jù)輸入輸出線。引腳12(INTO)用來對(duì)以太網(wǎng)控制器
          RTL8019AS 的中斷請(qǐng)求作響應(yīng)。
          74LS373 用作P0 口分時(shí)復(fù)用的16 位低位地址鎖存器。外部數(shù)據(jù)存儲(chǔ)器62256 內(nèi)含32K
          的8 位存儲(chǔ)單元,其片選引腳CS (20)接單片機(jī)的A15。62256 內(nèi)部存儲(chǔ)器尋址通過單片機(jī)
          的低15 位地址線AO^}A14。所以外部數(shù)據(jù)存儲(chǔ)器62256 的單片機(jī)尋址范圍為0000~7FFF。
          AT89C55 沒有I2C 總線接口,所以只能用單片機(jī)虛擬I2C 總線方式工作,由于總線上只
          有一個(gè)單片機(jī)作為主節(jié)點(diǎn),因此為單主方式下的虛擬I2C 總線。在這種方式下,虛
          擬I2C 總線只有主發(fā)送和主接收兩種操作, AT24C02 的寫讀程序如下:
          ① 寫 AT24C02 子程序AT24C02_ W
          NUMBYT:被傳送字節(jié)數(shù)N 的存放單元、NUM:被傳送字節(jié)數(shù)N, SUBADR:AT24C02 中
          要存放的數(shù)據(jù)首地址、VSDA:虛擬總線的數(shù)據(jù)線、VSCL:虛擬總線的時(shí)鐘線、SLAW:寫尋址
          字節(jié)、MTD:發(fā)送數(shù)據(jù)緩沖區(qū)首地址。
          AT24C02_W: NUMBYT. #NUM ;將被傳送的字節(jié)數(shù)N 寫入NUMBYT 中
          MOV SLA. #SLAW ;寫地址送到SLA 中
          LCALL WRNBYT ;調(diào)用N 字節(jié)的寫入子程序
          RET
          ② 讀 AT24C02 子程序AT24C02_ R。
          AT24C02 的指點(diǎn)地址的讀和它的寫有些不同,指點(diǎn)地址的讀是要求在指定的字地址讀
          出一個(gè)字節(jié)數(shù)據(jù)的操作,由于是要在指定的資地址,所以要先寫一個(gè)字地址,然后重復(fù)起始
          狀態(tài),讀入一個(gè)數(shù)據(jù)字節(jié)。
          AT24C02 R:MOV MTD. SUBADR :將數(shù)據(jù)首地址送到發(fā)送數(shù)據(jù)緩沖區(qū)
          MOV SLA. #SLAW :將寫地址送到SLA 中
          MOV NUMBYT,#1
          LCALL WRNBYT ;調(diào)用N 字節(jié)的寫入程序
          MOV SLA,#SLAR ;將讀地址送到SLA 中
          MOV NUMBYT, #NUM ;從AT24C02 中讀出子程序
          RET
          2.2 SAA1064 LED 驅(qū)動(dòng)控制器
          SAA1064 是PHILIPS 公司生產(chǎn)的I2C 總線接口的LED 驅(qū)動(dòng)控制器件,它為雙極型集成
          電路,有2X8 位輸出驅(qū)動(dòng)接口,可靜態(tài)驅(qū)動(dòng)2 位8 段LED 顯示器或動(dòng)態(tài)4 位8 段LED 顯
          示器。AT89C55 的P1 口的P1. 1 和P1. 2 引腳模擬I2C 總線與SAA1064 的SCL 和SDA 連
          接,P1~P8, P9~P16 分別各自連接兩個(gè)數(shù)碼管的abcdefgh 端,CEXT 外接2. 7nF 電容,模擬引
          腳地址端ADR 引腳接地,器件可讀地址為SLAR=71H,可寫地址為SLAW=70H。
          SAA1064 除了具有LED 驅(qū)動(dòng)控制的寫操作外,還有可以反映上電標(biāo)志的讀操作,
          但是,由于在本論文中只需用到SAA1064 的顯示驅(qū)動(dòng)控制功能,所以這里只討論其寫入操
          作。SAA1064 的寫入數(shù)據(jù)操作格式為:
          SLAW +SUBADR +COM +data 1+data2+data3+data4
          其中SUBADR 為SAA1064 片內(nèi)地址單元首地址,COM 為SAA1064 的控制命令,
          datal~data4 為動(dòng)態(tài)顯示方式的4 個(gè)LED 的共陰極段選碼。
          2.3 系統(tǒng)A/D 和D/A 轉(zhuǎn)換
          PCF8591 是PHILIPS 公司生產(chǎn)的具有I2c 總線接口的8 位A/D 和D/A 轉(zhuǎn)換器。器件由
          單一的電源供電,COMS 工藝;有4 路A/D 轉(zhuǎn)換模擬輸入、1 路D/A 轉(zhuǎn)換輸出;A/D 轉(zhuǎn)換為逐
          次比較型;輸入輸出部分有采樣/保持電路;最大的轉(zhuǎn)換速率與I2c 總線傳輸率有關(guān);A/D 和D/A
          轉(zhuǎn)換的基準(zhǔn)電源由外部供給。PCF8591 也是采用典型的I2c 總線接口器件尋址方式。器件的
          地址為1001f 引腳地址為A2AlA0,方向位為R/W,因此它的器件地址及尋址字節(jié)為
          1001A2A1A0R/W。
          AT89C55 的P1 口的P1. 1 和P1. 2 引腳模擬I2c 總線與PCF8591 的SCL 和SDA 連接,
          PCF8591 使用內(nèi)部時(shí)鐘電路,所以EXT 引腳接地,OSC 作為內(nèi)部時(shí)鐘輸出端懸空,將A2, A1
          和AO 三個(gè)引腳接地,所以器件可讀地址為SLAR=91H,可寫地址為SLAW=90H。
          PCF8951 的DAC 數(shù)據(jù)操作程序代碼如下:
          DAC 數(shù)據(jù)操作程序
          PCF8951_ DAC: MOV MTD, #COM ;PCF8951 控制命令COM 入MTD
          MOV R0, #MTD
          INC RO
          MOV @R0, A;D/A 轉(zhuǎn)換數(shù)據(jù)入MTD + 1
          MOV SLA, #SLAW;指向PCF8951 節(jié)點(diǎn)寫地址
          MOV NUMBYT, #2;寫入兩個(gè)字節(jié)COM 和A
          LCALL WRNBYT
          RET

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


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