第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計_第1頁
第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計_第2頁
第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計_第3頁
第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計_第4頁
第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第六章 基于pc機(jī)的智能儀器儀表 接口設(shè)計 z主要內(nèi)容 y6.1 ibm pc/at概述 y6.2 pc/at系統(tǒng)總線的擴(kuò)充 () y6.3 gal譯碼技術(shù) () y6.4 pc/at總線驅(qū)動 y6.5 pc機(jī)軟件設(shè)計 y6.6 pc機(jī)串口技術(shù) () y6.7pc機(jī)并行打印口 () y6.8 并行通訊接口(gpib) pc機(jī)機(jī)接口技術(shù)(續(xù)) 6.1 ibm pc/at概述 z主要內(nèi)容 y6.1.1 擴(kuò)充槽 (圖片) y6.1.2 存儲器空間和i/o地址分配 6.1.1 擴(kuò)充槽 (圖片) z pc104 6.1.2 存儲器空間和i/o地址分配 z存儲器空間分配; z系統(tǒng)硬件內(nèi)存分配方法; zme

2、m接口的尋址方法; zi/o地址分配; zi/o接口的尋址方法; z (詳細(xì)) 存儲器空間分配存儲器空間分配 z 640kb 系統(tǒng)板 ram 區(qū) 192kb 顯示緩沖區(qū) 96kb 擴(kuò)充 rom 64k 系統(tǒng)板保留0effffh-0e0000h 0dffffh-0c8000h 0a0000h-0c7fffh 09ffffh-000000h 圖 6.1 系統(tǒng)低 16m 存儲器空間布局 64k bios 15m 系統(tǒng)板 ram 64k 0e0000 開始的副本 64k 0f0000 開始的副本ffffffh-ff0000h feffffh-fe0000h fdffffh-100000h 0fffff

3、h-0f0000h 系統(tǒng)硬件內(nèi)存分配方法系統(tǒng)硬件內(nèi)存分配方法 z若需預(yù)先保留0d0000h0dffffh區(qū)域的內(nèi) 存,方法如下: z1. 使dos不占用 z在系統(tǒng)config.sys文件中加入: zdevice=c:dosemm386.exe x=d000-dfff z2. 使windows不占用 z在windows的system.ini文件中加入: (2k長為一個單元) z386enh zemmexclude=d000-d7ff zemmexclude=d800-dfff memmem接口的尋址方法接口的尋址方法 z1. 在dos下,如需要對0e0001h單元進(jìn)行操作, 則對應(yīng)地址應(yīng)寫成:0

4、xe0000001(e000:0001h) ztemp =(byte far *)0xe0000001; z寫:*temp=data; 讀:data=*temp; z2. 用vc5.0編程 z如需要對0d0000h單元進(jìn)行操作,則對應(yīng)操 作地址為其自身。 z pt=(unsigned short *)0 x000d0000; z寫:*pt=data; 讀:data=*pt; z 3. vb可以通過調(diào)用vc編寫的dll來讀寫mem。 z vb調(diào)用dll有16/32位系統(tǒng)之分。 i/oi/o 地地 址址 分分 配配 地 址 16 進(jìn) 制設(shè) 備 000-01fdma 控 制 器 1( 8237a-5

5、) 020-03f主 中 斷 控 制 器 ( 8259a) 040-05f定 時 器 ( 8254-2) 060-06f鍵 盤 控 制 器 ( 8042) 控 制 /狀 態(tài) 口 070-07fnmi 控 制 寄 存 器 實 時 時 鐘 080-09fdma 頁 面 寄 存 器 0a0-0bf從 中 斷 控 制 器 ( 8259a) 0c0-0dfdma 控 制 器 2( 8237a-5) 0e0-0ff數(shù) 學(xué) 協(xié) 處 理 器 ( 80287) 100-1f0用 戶 可 用 空 間 1f0-1f8硬 磁 盤 1f9-1ff用 戶 可 用 空 間 200-207游 戲 i/o 口 208-277用

6、 戶 可 用 空 間 278-27f并 行 打 印 機(jī) 口 2 280-2f7用 戶 可 用 空 間 2f8-2ffrs-232 串 行 口 2 300-35f用 戶 可 用 空 間 360-36f保 留 378-37f并 行 打 印 機(jī) 口 1 380-38fsdlc 同 步 通 訊 控 制 器 2 3a0-3afbsc 同 步 通 訊 控 制 器 1 3b0-3bf單 色 顯 示 器 /打 印 機(jī) 適 配 器 3c0-3cf保 留 3d0-3df彩 色 /圖 形 監(jiān) 視 器 適 配 器 3f0-3f7軟 盤 控 制 器 3f8-3ffrs-232 串 行 口 1 注 : 表 中 代 “ ”

7、 的 為 用 戶 可 用 空 間不 要 發(fā) 生 地 址 沖 突 , 否 則 系 統(tǒng) 不 能 正 常 啟 動 i/oi/o接口的尋址方法接口的尋址方法 z1. 匯編語言:寫:mov al,10000000b z mov dx,3fbh z out dx,al z 讀:mov dx,3fdh z inal,dx z2. basic 寫:out( z saen,sa9,sa8,sa7,sa6 pin 1,2,3,4,5; z sa5,sa4,srd,swr,sa3 pin 6,7,8,9,11; z pcen,pcs1 pin 12,13; z h,l,x=1,0,.x.; z a=sa9,sa8,

8、sa7,sa6,sa5,sa4,sa3,x,x,x; z equations z !pcen=(!srd#!swr) z end sdc96 /和module構(gòu)成完整模塊 abel語言符號定義 z 一邏輯運(yùn)算符 z!a 取二進(jìn)制反碼 a&b 與 a#b 或 z a$b 異或 a!$b 同或 z 二算術(shù)預(yù)算符 z-a 取二進(jìn)制補(bǔ)碼 a-b 減法 a+b 加法 za*b 乘法 a/b 無符號整除 a%b 取模 zab a右移b位 z 三關(guān)系運(yùn)算符 za=b 等于 a!=b 不等于 ab 小于 zab 大于 a=b 大于等于 z 四優(yōu)先級 z- ! & * / % + - # $ !$ = != =

9、 6.3.4 6.3.4 寫入設(shè)備寫入設(shè)備 z可利用編程器將編譯好的程序?qū)懭雊al 之中,編程器可用all03/07等,調(diào)入 abel語言生成的*.jed文件. all07圖片 z 6.4 pc/at總線驅(qū)動 z地址和控制總線驅(qū)動器 z數(shù)據(jù)總線驅(qū)動器 1a1 2 1a2 4 1a3 6 1a4 8 2a1 11 2a2 13 2a3 15 2a4 17 1y1 18 1y2 16 1y3 14 1y4 12 2y1 9 2y2 7 2y3 5 2y4 3 1g 1 2g 19 u? 74hc244 a0 2 a1 3 a2 4 a3 5 a4 6 a5 7 a6 8 a7 9 b0 18 b1

10、 17 b2 16 b3 15 b4 14 b5 13 b6 12 b7 11 e 19 dir 1 u? 74hc245 圖 6.5 244 和 245 芯片引腳圖 6.5 pc機(jī)軟件設(shè)計 z主要內(nèi)容 y6.5.1 vb和vc+的關(guān)系 y6.5.2 動態(tài)鏈接庫dll y6.5.3 win32 api y6.5.4 用vc編寫win32s下的dll y6.5.5 vb對dll的調(diào)用 () 6.5.5 vb對dll的調(diào)用 () z對于dll中的過程,declare語句的完整語法如下: z p u b l i c | p r i v a t e d e c l a r e s u b n a m

11、e lib”libname”“alias aliasname”(arglist) z對于dll中的函數(shù),declare語句的完整語法如下: z p u b l i c | p r i v a t e d e c l a r e f u n c t i o n n a m e lib”libname”“alias aliasname”(arglist)as type z 例如: z declare function inpt lib c:vbio32debugvbio32.dll alias vbinportbyte32 (byval port as integer) as byte z dec

12、lare sub outpt lib c:vbio32debugvbio32.dll alias vboutportbyte32 (byval port as integer, byval databyte as byte) vb對dll的調(diào)用 (續(xù)) z declare function setmpeg lib c:jnvisualtrainmpegdll.dll alias setpicdllmode (byval ff as string, mode as picdllmode) as long ztype picdllmode z filenum as byte z fileadd a

13、s long z framespeed as long z signalnum as long z playstatus as byte z realspeed as long z limitspeed as long z distance as long z realtime_hour as long z realtime_minute as long z realtime_second as long z startstop as byte z forback as byte zend type vb對dll的調(diào)用 (續(xù)) z數(shù)據(jù)類型對照表:(自動獲取winapi調(diào)用聲明演示) windo

14、ws類型c類型vb類型 boolintbyval long byteunsigned charbyval byte wordunsigned shortbyval integer dwordunsigned longbyval long lpstrchar far*byval string handleintbyval long hwndintbyval long 6.6 pc機(jī)串口技術(shù)() z主要內(nèi)容 y6.6.1 pc機(jī)串口的引腳定義信號線的定義 y6.6.2 邏輯電平變換 y6.6.3 8250串行接口芯片 y6.6.4 利用vb的mscomm控件來控制pc機(jī)的串行 通訊 6.6.1 p

15、c機(jī)串口的引腳定義信號 線的定義 信號地(gnd) 接收數(shù)據(jù)(rxd) 發(fā)送數(shù)據(jù)(txd) 數(shù)據(jù)終端準(zhǔn)備好(dtr) 載波檢測 數(shù)據(jù)裝置準(zhǔn)備好(dsr) 請求發(fā)送(rts) 清除發(fā)送(cts) 振鈴指示 7 3 2 20 8 6 4 5 22 5 2 3 4 1 6 7 8 9 gnd rxd txd 25 針 9 針 圖 6.6 pc 機(jī)串口定義和啞傳連接圖 z14881488、14891489 6.6.3 邏輯電平變換 12v -12v 4 5 ttl txdeia rxd 14 1 eia txd1 14 7 +5v gnd 36ttl rxd 14881489 圖 6.7 eia 和

16、ttl 電平變換電路(1488/1489) max232max232 單單5v供電,供電, 完成完成ttl和和eia 電平互換電平互換 雙路串行口雙路串行口 4 4個電解電容個電解電容 及其極性連接及其極性連接 要正確要正確 邏輯電平變換(續(xù)) 6.6.3 8250串行接口芯片(詳細(xì)) z1. 通訊線控制寄存器(3fbh) zd1、d0:字符代碼的長度 005位 016位 107位 118位 zd2:停止位數(shù)目 01位 11.5位(字符長度為5位時)2位(字符長度為6、7、8 位時) zd3:奇偶校驗 0無 1有 zd4:奇偶校驗類型 0奇 1偶校驗 zd5:附著奇偶校驗 0該位無效 1奇偶校

17、驗位恒為1(若d3=1、d4=0) z 奇偶校驗位恒為0(若d3=1、d4=1) z 無奇偶校驗位 (若d3=0) zd6:間斷位設(shè)置 0無效 1強(qiáng)迫連續(xù)輸出空白狀態(tài)(邏輯0電平) zd7:尋址位 0正常值 1尋址波特率除數(shù)寄存器 d7 d6 d5 d4 d3 d2 d1 d0 2. 通訊線狀態(tài)寄存器(3fdh) z相應(yīng)位為1則存在該狀態(tài) zd0:接收數(shù)據(jù)就緒 (接收數(shù)據(jù)前查之,為“1” 則表明接收到了新的數(shù)據(jù)) zd1:超越錯 zd2:奇偶錯 zd3:格式錯 zd4:間斷檢測 zd5:發(fā)送保持寄存器空 (發(fā)送前查之,為“1”則 表明可以向3f8再次寫入新的待發(fā)數(shù)據(jù)) zd6:發(fā)送移位寄存器空

18、 zd7:恒為0 d7 d6 d5 d4 d3 d2 d1 d0 z3. 數(shù)據(jù)發(fā)送保持寄存器(同時也為接收數(shù) 據(jù)保持寄存器)(3f8h) z其中d0位為發(fā)送數(shù)據(jù)的第一位,即低位在 前發(fā)送。 z z4. 接收數(shù)據(jù)保持寄存器(3f8h) z其中d0位為接收的第一位。 z d7 d6 d5 d4 d3 d2 d1 d0 z5. 除數(shù)鎖存器(3f8h/3f9h) z除數(shù)= z z baudrate 3f9h 3f8h z3000180h z12000060h z24000030h z48000018h z9600000ch )16(108432. 1 6 baudrate z6. 中斷允許寄存器(3f

19、9h) zd0:允許接收數(shù)據(jù)就緒中斷 zd1:允許發(fā)送保持寄存器空中斷 zd2:允許接收字符錯中斷 zd3:允許改變modem狀態(tài)中斷 z z7. modem控制寄存器(3fch) zd0: 1dtr信號有效 zd1: 1rts信號有效 二串行口二串行口8250初始化初始化 out (&h2fb), &h80 尋址波特率寄存器 zout (&h2f8), &hc &h000cbts=9600 zout (&h2f9), 0 zout (&h2fb), 3數(shù)據(jù)類型 8位 1個停止位 無奇偶校驗 zout (&h2fc), 3dtr和rts有效信 號 zout (&h2f9), 0非中斷模式 三串

20、行口查詢發(fā)送數(shù)據(jù)三串行口查詢發(fā)送數(shù)據(jù) zfssjdd: k = inp(&h2fd) z k1 = k and &h20 z if k1 = &h20 then z out (&h2f8), a(i) z else z goto fssjdd z end if 四串行口查詢接收數(shù)據(jù)四串行口查詢接收數(shù)據(jù) zjssjdd:k = inp(&h2fd) z k2 = k and &h1 z if k2 = &h1 then z b = inp(&h2f8) z else zgotojssjdd z end if 6.6.5 利用vb的mscomm控件 來控制pc機(jī)的串行通訊 z一一 msc omm

21、控件控件 及其及其 屬性屬性 設(shè)計設(shè)計 如圖如圖 所示所示 二二 發(fā)發(fā) 送送 軟軟 件件 的的 編編 寫寫 private sub timcomm_timer() z yhz = out_buffer(0) z for i = 1 to 31 z yhz = yhz xor out_buffer(i) z next i z out_buffer(32) = yhz z surplux one to trig the overflow z out_buffer(33) = &h66 z temp_buffer = out_buffer z mscomm.inputlen = 0 open the

22、 port. z mscomm.portopen = true send the attention command to the modem. z frmcomm.mscomm.output = temp_buffer z frmcomm.mscomm.portopen = false z end sub dim temp_buffer as variant 三利用三利用mscommmscomm中斷接收數(shù)據(jù)中斷接收數(shù)據(jù) zprivate sub mscomm_oncomm() z select case mscomm.commevent z case comeventrxover recei

23、ve buffer overflow. z if commverify = false then 如果校驗不對,則 再次初始化串口 z mscomm.portopen = false z mscomm.inputlen = 0 z mscomm.portopen = true z else z 處理接收到的有效數(shù)據(jù) z end if z end select zend sub 三利用三利用mscommmscomm中斷接收數(shù)據(jù)(續(xù))中斷接收數(shù)據(jù)(續(xù)) z接收校核程序 z function commverify() as boolean z dim temp_buffer as variant z

24、 dim i as integer, tt as byte z dim kk as single z temp_buffer = frmtest.mscomm.input z commbuffer = temp_buffer z tt = commbuffer(0) z for i = 1 to 31 z tt = tt xor commbuffer(i) z next i z if tt commbuffer(32) then z commverify = false z elseif firstcomm = true then z end if z end function 6.7 pc機(jī)

25、并行打印口 z主要內(nèi)容 y6.7.1 打印機(jī)接口“標(biāo)準(zhǔn)” y6.7.2 ibm pc打印機(jī)接口 y6.7.3 ibmpc打印機(jī)接口編程和系統(tǒng) 子程序調(diào)用 y6.7.4 ibmpc并行接口i/o口的擴(kuò)展 6.7.2 ibm pc打印機(jī)接口 表 6.3 pc 打印機(jī)接口信號分配表 i/o 口地址 及輸入輸入輸出 信號分類位功 能連接器引腳 378h數(shù)據(jù)信號 (out) d0d7輸出至打印機(jī)pin2pin9 379h 狀態(tài)信號 (in) d0d2 d3 d4 d5 d6 d7 沒使用 error slct pe ack busy pin15 pin13 pin12 pin10 pin11 37ah控

26、制信號 (out) d0 d1 d2 d3 d4 d5d7 strobe autofdxt init slctin 中斷允許(irq7) 沒使用 pin1 pin14 pin 16 pin 17 每個打印接口的基本口地址 z 數(shù)據(jù) 狀態(tài) 控制 z lpt1: 378h 379h 37ah z lpt2: 278h 279h 27ah z lpt3: 3bch 3bdh 3beh z直接編程,和單片機(jī)打印接口編程相同 zpc機(jī)系統(tǒng)軟件dos和bios為用戶準(zhǔn)備有打印 機(jī)驅(qū)動子程序可調(diào)用 z(自學(xué)) 6.7.3 ibmpc打印機(jī)接口編程和系統(tǒng) 子程序調(diào)用 6.7.4 6.7.4 ibmpcibmpc并行接口并行接口i/oi/o口的擴(kuò)展口的擴(kuò)展 74ls157 擴(kuò)展輸入口線48 ibmibm pcpc 并并 行行 接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論