課程設(shè)計(jì)報(bào)告--雙機(jī)參數(shù)采集系統(tǒng)設(shè)計(jì)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  課程名稱:微機(jī)原理課程設(shè)計(jì)</p><p><b>  成 員:</b></p><p>  設(shè)計(jì)時(shí)間:2013年3月4日至3月15日</p><p><b>  課程設(shè)計(jì)題目2</b></p

2、><p><b>  課程設(shè)計(jì)目的2</b></p><p><b>  課程設(shè)計(jì)要求3</b></p><p><b>  概要設(shè)計(jì)3</b></p><p><b>  工作分配:3</b></p><p><b>

3、;  方案論證:3</b></p><p>  硬件系統(tǒng)框圖與說明4</p><p><b>  硬件資源:5</b></p><p>  硬件硬件系統(tǒng)框圖與說明:6</p><p><b>  詳細(xì)設(shè)計(jì)7</b></p><p><b>  

4、下位機(jī)部分:7</b></p><p><b>  下位機(jī)部分:8</b></p><p><b>  PC機(jī)部分:9</b></p><p><b>  工作總結(jié)9</b></p><p><b>  附錄10</b></p

5、><p>  附錄1:電路原理圖10</p><p>  附錄2: 源程序及程序注釋13</p><p>  附錄3: 使用元器件一覽表(序號(hào),名稱,型號(hào),規(guī)格,數(shù)量,備注)22</p><p>  附錄4: 參考文獻(xiàn)23</p><p><b>  課程設(shè)計(jì)題目</b></p>

6、<p>  雙機(jī)參數(shù)采集系統(tǒng)設(shè)計(jì)</p><p><b>  課程設(shè)計(jì)目的</b></p><p>  《微機(jī)原理與匯編語言》是一門實(shí)踐性和實(shí)用性都很強(qiáng)的課程,本次課程設(shè)計(jì)是在課程學(xué)習(xí)結(jié)束后,為使學(xué)生進(jìn)一步鞏固課堂和書本上所學(xué)知識(shí),加強(qiáng)綜合能力,充分理解和運(yùn)用所學(xué)到的知識(shí),通過簡(jiǎn)單的應(yīng)用系統(tǒng)的設(shè)計(jì),提高系統(tǒng)設(shè)計(jì)水平,啟發(fā)創(chuàng)新思想。通過本課程設(shè)計(jì)希望達(dá)到以下

7、目的:</p><p>  培養(yǎng)資料搜集和匯總的能力;</p><p>  培養(yǎng)總體設(shè)計(jì)和方案論證的意識(shí);</p><p>  提高硬件,軟件設(shè)計(jì)與開發(fā)的綜合能力;</p><p>  提高軟件和硬件聯(lián)合調(diào)試的能力;</p><p>  熟練掌握相關(guān)測(cè)量?jī)x器的使用方法;</p><p>  掌握

8、相關(guān)開發(fā)軟件,仿真軟件的使用方法。</p><p><b>  課程設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)一套結(jié)構(gòu)如下圖所示的雙機(jī)參數(shù)采集系統(tǒng)。圖中上位機(jī)負(fù)責(zé)向下位機(jī)下達(dá)命令,并對(duì)下位機(jī)采集的數(shù)據(jù)進(jìn)行處理;下位機(jī)則根據(jù)上位機(jī)的命令對(duì)工作現(xiàn)場(chǎng)的各種開關(guān)量和模擬量參數(shù)進(jìn)行采集,以某種通信方式傳遞給上位機(jī),接收上位機(jī)根據(jù)處理結(jié)果下達(dá)的命令對(duì)現(xiàn)場(chǎng)各種設(shè)備實(shí)施控制。<

9、/p><p>  首先制定通信協(xié)議,包括命令編碼,數(shù)據(jù)編碼,信息包格式,校驗(yàn)方式、通信速率、采樣周期、濾波方法等;確定硬件通信接口選擇(并行或串行接口)</p><p>  系統(tǒng)實(shí)現(xiàn)按從易到難有如下三種要求:</p><p>  (1)基本功能:實(shí)現(xiàn)參數(shù)采集,通信,基本形式的參數(shù)顯示,其中下位機(jī)用數(shù)碼管顯示,上位機(jī)用屏幕以數(shù)字顯示。</p><p&g

10、t; ?。?)擴(kuò)展功能:在實(shí)現(xiàn)基本部分基礎(chǔ)上,擴(kuò)展2路開關(guān)信號(hào)輸入,前端參數(shù)采集計(jì)算機(jī)參數(shù)顯示為數(shù)碼管顯示。通過開關(guān)選擇模擬信號(hào)回送操作,回送的模擬信號(hào)在前端參數(shù)采集計(jì)算機(jī)接口儀器中的D/A通道輸出,后端處理計(jì)算機(jī)顯示兩路模擬信號(hào)的同時(shí),顯示回送的模擬信號(hào)值和開關(guān)狀態(tài)顯示。</p><p>  (3)發(fā)揮功能:在實(shí)現(xiàn)擴(kuò)展部分基礎(chǔ)上,后端處理計(jì)算機(jī)以曲線形式顯示兩路模擬信號(hào)、回送的模擬信號(hào)值和開關(guān)狀態(tài)顯示。<

11、/p><p><b>  概要設(shè)計(jì)</b></p><p><b>  工作分配:</b></p><p>  宋俊月:負(fù)責(zé)前端系統(tǒng)的參數(shù)采集與簡(jiǎn)單顯示功能,并將采集的參數(shù)通過通信接口傳送給上位機(jī)。其中包括下位機(jī)與上位機(jī)中8255和8250的參數(shù)設(shè)置,將數(shù)字信號(hào)顯示到數(shù)碼管上的子程序。</p><p>

12、;  宋友良:負(fù)責(zé)接收參數(shù),并在屏幕上顯示參數(shù)。其中包括上位機(jī)與下位機(jī)的信號(hào)傳送與接收相應(yīng)代碼和pc機(jī)中的波形顯示。</p><p><b>  方案論證:</b></p><p>  根據(jù)課程要求,總體上上位機(jī)與下位機(jī)的通信采用了并行的數(shù)據(jù)傳送,因此分別應(yīng)用了并行接口電路8255A,實(shí)現(xiàn)前端與后端的數(shù)據(jù)傳送。下位機(jī)通過D/A轉(zhuǎn)換器對(duì)信號(hào)進(jìn)行采樣,然后送到8255A的

13、通道中,滿足上位機(jī)8255A的通道要求。而上位機(jī)通過兩個(gè)開關(guān)量對(duì)下位機(jī)進(jìn)行控制,其中一個(gè)控制是否采集信號(hào),另一個(gè)控制哪一路進(jìn)行回送。此外對(duì)于數(shù)據(jù)的顯示,其中上位機(jī)與下位機(jī)中通過子程序?qū)?shù)據(jù)顯示在數(shù)碼管上,而對(duì)于波形的顯示則通過pc程序中8250串行通信方式與上位機(jī)中的8250對(duì)應(yīng)從而將數(shù)據(jù)傳送到pc機(jī)中,再通過系統(tǒng)功能調(diào)用從而進(jìn)行描點(diǎn)。</p><p><b>  實(shí)驗(yàn)原理</b></

14、p><p>  上位機(jī)8255:地址為CS0,片選輸入端插孔為8255CS,B、C端口的插孔分別為:PB0~PB7,PC0~PC7下位機(jī)8255:地址為CS2,片選輸入端插孔為8255CS,A、C端口的插孔分別為:PA0~PA7,PC0~PC7</p><p>  上位機(jī)與下位機(jī)中8255連線:</p><p>  上位機(jī) 下位機(jī)</p>

15、;<p>  B口<------------------ A口</p><p>  C口-------------------> C口</p><p>  雖然是對(duì)兩路進(jìn)行信號(hào)采集,但是仍然可以通過公用通道口從而達(dá)到簡(jiǎn)化線路的目的。</p><p>  上位機(jī)與pc機(jī)程序中的8250:應(yīng)用RS-232C串口

16、實(shí)現(xiàn)近距離的串行通信。數(shù)據(jù)傳送波特率為9600bps,數(shù)據(jù)格式為8位/每字符,1位停止位,無奇校驗(yàn),雙機(jī)8250端口地址均為2F8H~2FFH。</p><p>  下位機(jī)0809:八路八位A/D實(shí)驗(yàn)電路由一片ADC0809,一片74LS04,一片74LS32組成,該電路中,ADIN0—ADIN7是ADC0809的模擬量輸入插孔,CS0809是0809的AD啟動(dòng)和片選的輸入插孔,EOC是0809轉(zhuǎn)換結(jié)束標(biāo)志,高電

17、平表示轉(zhuǎn)換結(jié)束。齊納二極管LM336-5提供5V的參考電源,ADC0809的參考電壓,數(shù)據(jù)總線輸出,通道控制線均已接好。</p><p>  通過上位機(jī)的兩個(gè)開關(guān)分別進(jìn)行控制。開關(guān)0控制是否進(jìn)行采集,開關(guān)1則控制對(duì)哪一路進(jìn)行采集。開關(guān)0、1在上位機(jī),讀取的時(shí)候是對(duì)下位機(jī)的74L244中的in7位進(jìn)行讀取,從而實(shí)現(xiàn)后端控制。</p><p>  而對(duì)采樣頻率的控制則是應(yīng)用8253產(chǎn)生連續(xù)方波

18、,通過下降沿直接控制8259產(chǎn)生中斷請(qǐng)求,每次請(qǐng)求則控制0809進(jìn)行對(duì)數(shù)據(jù)的采集,從而實(shí)現(xiàn)對(duì)才樣頻率的控制。</p><p><b>  硬件系統(tǒng)框圖與說明</b></p><p><b>  地址分配:</b></p><p>  CS0 片選信號(hào),地址04A0~04AF 偶地址有效</p><

19、p>  CS1 片選信號(hào),地址04B0~04BF 偶地址有效</p><p>  CS2 片選信號(hào),地址04C0~04CF 偶地址有效 </p><p>  CS3 片選信號(hào),地址04D0~04DF 偶地址有效 </p><p>  CS4 片選信號(hào),地址04E0~04EF 偶地址有效 </p><p>  C

20、S5 片選信號(hào),地址04F0~04FF 偶地址有效</p><p>  CS6 片選信號(hào),地址0000~01FF 偶地址有效</p><p>  CS7 片選信號(hào),地址0200~03FF 偶地址有效</p><p>  8250 片選地址:0480~048F,偶地址有效</p><p>  8279 片選地址:04

21、90~049F,偶地址有效</p><p><b>  硬件資源:</b></p><p> ?。?)可編程并口接口芯片8255一片。</p><p> ?。?)串行接口兩個(gè):8250芯片一個(gè),系統(tǒng)與主機(jī)通訊用,用戶不可用。 單片機(jī)的串行口,可供用戶使用。</p><p> ?。?)鍵盤、LED顯示芯片8279一片,其地

22、址已被系統(tǒng)固定為CFE8H、CFE9H。硬件系統(tǒng)要求編碼掃描顯示。</p><p>  (4)六位LED數(shù)碼管顯示。</p><p> ?。?)ADC0809 A/D轉(zhuǎn)換芯片一片,其地址、通道1—8輸入對(duì)用戶開放。</p><p>  (6)DAC0832 D/A轉(zhuǎn)換芯片一片,其地址對(duì)用戶開放,模擬輸出可調(diào)。</p><p> ?。?)8位簡(jiǎn)

23、單輸入接口74LS244一個(gè),8位簡(jiǎn)單輸出接口74LS273一個(gè),其地址對(duì)用戶開放。</p><p> ?。?)配有8個(gè)邏輯電平開關(guān),8個(gè)發(fā)光二極管顯示電路。</p><p> ?。?)配有一個(gè)可手動(dòng)產(chǎn)生正、負(fù)脈沖的單脈沖發(fā)生器</p><p>  (10)10、配有一個(gè)可自動(dòng)產(chǎn)生正、負(fù)脈沖的脈沖發(fā)生器,按基頻6.0MHz進(jìn)行1分頻(CLK0)、二分頻(CLK1)、

24、四分頻(CLK2)、八分頻 (CLK3)、十六分頻(CLK4)輸出方波。</p><p> ?。?1)配有一路0---5V連續(xù)可調(diào)模擬量輸出(AN0)。</p><p> ?。?2)配有可編程中斷控制器8259一個(gè),其中斷IRQ輸入、控制輸出均對(duì)用戶開放。</p><p><b>  系統(tǒng)板的結(jié)構(gòu)簡(jiǎn)圖</b></p><p&

25、gt;  硬件硬件系統(tǒng)框圖與說明:</p><p><b>  實(shí)驗(yàn)硬件設(shè)計(jì)圖</b></p><p>  圖中8255完成了上位機(jī)與下位機(jī)的并行通訊,其中上位機(jī)的8255地址為CS1,下位機(jī)地址為CS0(CS0-CS7詳細(xì)地址見地址分配),上位機(jī)中B口輸入,C口輸出,下位機(jī)中C口輸入,A口輸出。</p><p>  上位機(jī)的74L244接到C

26、S0,開關(guān)控制K1接到了74L244的in0,從而實(shí)現(xiàn)的開關(guān)1的讀取。開關(guān)0接到了下位機(jī)74L244的in7,從而實(shí)現(xiàn)對(duì)控制的讀取。</p><p>  信源0和信源1分別接到了0809中的and0和and1,滿足了兩路信號(hào)的要求。</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p><b>  下位機(jī)部分:</b&g

27、t;</p><p><b>  下位機(jī)模塊流程圖</b></p><p>  說明:圖中開關(guān)量的讀取是通過讀取下位機(jī)74L244中in0-in7,而開關(guān)卻設(shè)置在上位機(jī)上,然后通過test指令實(shí)現(xiàn)了對(duì)控制量的判斷選擇,從而對(duì)0路信號(hào)或者是1路信號(hào)進(jìn)行采集。采集工作是由0809進(jìn)行對(duì)模擬信號(hào)的數(shù)字轉(zhuǎn)換。其中的EOC是轉(zhuǎn)換結(jié)束信號(hào),通過對(duì)它的讀取判斷合適進(jìn)行數(shù)據(jù)傳送。而E

28、OC信號(hào)則連接到了下位機(jī)74L244中的in0(具體連線見實(shí)驗(yàn)硬件設(shè)計(jì)圖)。</p><p><b>  下位機(jī)部分:</b></p><p><b>  上位機(jī)模塊流程圖</b></p><p>  說明:圖中開關(guān)量的讀取是通過讀取下位機(jī)74L244中in0-in7,而開關(guān)卻設(shè)置在上位機(jī)上,然后通過test指令實(shí)現(xiàn)了對(duì)控

29、制量的判斷選擇,從而對(duì)0路信號(hào)或者是1路信號(hào)進(jìn)行接收。接收工作由in指令對(duì)PB0-PB7進(jìn)行讀取,然后在通過out指令將保存的ax通過PC0-PC7回送給下位機(jī)。數(shù)碼管的顯示則是調(diào)用了disp子程序(具體程序見附錄)。</p><p><b>  PC機(jī)部分:</b></p><p><b>  PC機(jī)模塊流程圖</b></p>

30、<p>  說明:首先進(jìn)行了8250的初始化,對(duì)應(yīng)上位機(jī)中的8250。然后用in指令讀取銅線線路寄存器的狀態(tài)判斷是否有錯(cuò),若有錯(cuò)則用過jmp指令跳到錯(cuò)誤處理執(zhí)行部分,若沒錯(cuò)則使用test指令判斷是否接收到數(shù)據(jù),是則進(jìn)行數(shù)據(jù)的處理和保存,否則繼續(xù)讀取通信寄存器狀態(tài)。然后檢測(cè)鍵盤狀態(tài)是否按下退出鍵,若沒有則判斷屏幕是否已滿,若滿則清屏,然后調(diào)用描點(diǎn)功能指令,之后則繼續(xù)讀取讀取通信寄存器狀態(tài)進(jìn)行循環(huán)。</p><

31、p><b>  工作總結(jié)</b></p><p>  通過兩周的課程設(shè)計(jì),認(rèn)識(shí)到了自己的不足,首先是對(duì)各個(gè)知識(shí)的綜合應(yīng)用掌握的不扎實(shí),不能將以前的知識(shí)完美的結(jié)合起來。比如如何將8253的方波信號(hào)作為8259的中斷請(qǐng)求信號(hào),如何在滿足對(duì)兩路信號(hào)采集的情況下又不過度的占用通道口,造成對(duì)資源的浪費(fèi),等等。</p><p>  對(duì)于對(duì)兩路信號(hào)的采集。主要有兩路方案:&l

32、t;/p><p>  方案一:使用兩路通道口0和1,通道0傳送信號(hào)0,通道1傳送信號(hào)1。這個(gè)方案優(yōu)點(diǎn)是能夠快速的對(duì)信號(hào)進(jìn)行采集和傳送,而不需要進(jìn)行判斷。缺點(diǎn)是過多的占用了通道資源,也不切合實(shí)際應(yīng)用。</p><p>  方案二:僅采用一路通道分時(shí)的對(duì)兩路信號(hào)進(jìn)行傳送。這樣的優(yōu)點(diǎn)是節(jié)省資源,符合實(shí)際要求,缺點(diǎn)是不能同時(shí)進(jìn)行信號(hào)傳送,從而不能對(duì)兩路信號(hào)進(jìn)行實(shí)時(shí)的比較。</p><

33、;p>  綜上,我們采取了方案二,雖然不能同時(shí)對(duì)信號(hào)進(jìn)行傳送,但是由于傳送的頻率較快,對(duì)于實(shí)際的影響較小。在一定程度上實(shí)現(xiàn)了技術(shù)創(chuàng)新。</p><p><b>  不足之處:</b></p><p>  對(duì)于采樣頻率的掌控不足,由于時(shí)間少,知識(shí)掌握不足,所以沒能完成實(shí)驗(yàn)要求,但是我們覺得通過8253、8259、0809的綜合使用應(yīng)該可以實(shí)現(xiàn)對(duì)采樣頻率的控制。通過

34、對(duì)8253的初始化產(chǎn)生一定頻率的連續(xù)方波,然后每次方波的下降沿觸發(fā)一次8259中斷程序,每次中斷進(jìn)行一次0809對(duì)信號(hào)的采集。從而實(shí)現(xiàn)實(shí)驗(yàn)對(duì)采樣頻率的要求。</p><p><b>  附錄</b></p><p><b>  附錄1:電路原理圖</b></p><p>  開關(guān)和74L244:</p>&l

35、t;p>  開關(guān)量輸入電路由8只開關(guān)組成,每只開關(guān)有兩個(gè)位置H和L,一個(gè)位置代表高電平,一個(gè)位置代表低電平。對(duì)應(yīng)的插孔是:K1~K8。開關(guān)量輸出電路由8只LED組成,對(duì)應(yīng)的插孔分別為L(zhǎng)ED1~LED8,當(dāng)對(duì)應(yīng)的插孔接低電平時(shí)LED點(diǎn)亮。</p><p>  輸入緩沖電路由74LS244組成,輸出鎖存電路由上升沿鎖存器74LS273組成。74LS244是一個(gè)擴(kuò)展輸入口,74LS273是一個(gè)擴(kuò)展輸出口,同時(shí)它們

36、都是一個(gè)單向驅(qū)動(dòng)器,以減輕總線的負(fù)擔(dān)。74LS244的輸入信號(hào)由插孔IN0~IN7輸入,插孔CS244是其選通信號(hào),其它信號(hào)線已接好;74LS273的輸出信號(hào)由插孔O0~O7輸出,插孔CS273是其選通信號(hào),其它信號(hào)線已接好。其原理圖如下:</p><p><b>  8250接口電路:</b></p><p>  該電路由一片8250,一片MAX232組成,該電路所

37、有信號(hào)線均已接好。原理圖如下:</p><p>  8255并行接口電路:</p><p>  該電路由1片8255組成,8255的數(shù)據(jù)口,地址,讀寫線,復(fù)位控制線均已接好,片選輸入端插孔為8255CS,A,B,C三端口的插孔分別為:PA0~PA7,PB0~PB7,PC0~PC7.電路原理圖如下:</p><p><b>  D/A電路:</b>

38、;</p><p>  八位雙緩沖D/A實(shí)驗(yàn)電路由一片DAC0832。一片74LS00,一片74LS04,一片LM324組成,該電路中除DAC0832的片選未接好外,其他信號(hào)均已接好,片選插孔標(biāo)號(hào)CS0832。輸出插孔標(biāo)號(hào)DAOUT。該電路為非偏移二進(jìn)制D/A轉(zhuǎn)換電路,通過調(diào)節(jié)POT3,可調(diào)節(jié)D/A轉(zhuǎn)換器的滿偏值,調(diào)節(jié)POT2,可調(diào)節(jié)D/A轉(zhuǎn)換器的零偏值。</p><p>  8253定時(shí)

39、器/計(jì)數(shù)器電路:</p><p>  該電路由1片8253組成,8253的片選輸入端插孔CS8253,數(shù)據(jù)口,地址,讀寫線均已接好,T0、T1、T2時(shí)鐘輸入分別為8253CLK0、8253CLK1、8253CLK2。定時(shí)器輸出,GATE控制孔對(duì)應(yīng)如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。原理圖如下:</p><p>  注:GATE信號(hào)無輸入時(shí)為高電

40、平</p><p>  附錄2: 源程序及程序注釋</p><p><b>  下位機(jī)部分:</b></p><p>  con8279 equ 0492h</p><p>  dat8279 equ 0490h</p><p>  assume cs:code</p>&

41、lt;p>  code segment public</p><p><b>  org 100h</b></p><p><b>  start: </b></p><p>  jmp start0;</p><p>  segcod db 3fh,06h,5bh,4fh,66h,6dh,

42、7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h </p><p><b>  start0:</b></p><p><b>  ;8255初始化</b></p><p>  mov dx,04c6h;控制寄存器地址</p><p>  mov ax,89h

43、;設(shè)置為A口輸出,B口輸出,C口輸入</p><p>  out dx,ax</p><p>  ;8253計(jì)數(shù)器初始化</p><p>  mov dx,04f6h;控制寄存器</p><p>  mov ax,34h;計(jì)數(shù)器0,方式2</p><p>  out dx,ax</p>&

44、lt;p>  mov dx,04f0h</p><p>  mov ax,53h</p><p>  out dx,ax</p><p>  mov ax,07h</p><p>  out dx,ax;計(jì)數(shù)值0753h,每5ms采一次</p><p>  search: mov dx,0

45、4b0h ;74LS244地址</p><p>  in al,dx ;讀輸入開關(guān)量 K1=0 caiji</p><p>  test al,80h</p><p>  jnz caiji</p><p>  jmp search</p><p><

46、;b>  caiji:</b></p><p>  mov dx,04b0h ;74LS244地址</p><p>  in al,dx ;讀輸入開關(guān)量</p><p>  test al,02h</p><p>  jz getinfo0 ;K1=0 處理0

47、路</p><p>  jmp getinfo1 ;K1=1 處理1路</p><p>  getinfo0: </p><p>  mov dx,04a0h</p><p>  mov ax,34h</p><p>  out dx,ax;啟動(dòng)通道 0</

48、p><p>  wait1: mov dx,04b0h ;CS244</p><p>  in ax,dx;讀 EOC</p><p><b>  and ax,1</b></p><p><b>  cmp ax,1</b></p><p>  jne

49、wait1;如果EOC=0,waiting....</p><p>  mov dx,04a0h</p><p>  in ax,dx;讀轉(zhuǎn)換結(jié)果</p><p>  and ax,0ffh</p><p>  mov bx,ax</p><p>  mov dx,04d0h

50、;送轉(zhuǎn)換結(jié)果給273</p><p>  out dx,ax</p><p>  mov dx,04c0h;A口地址,轉(zhuǎn)換結(jié)果送A口</p><p>  out dx,ax </p><p><b>  nop</b></p><p>  call disp&

51、lt;/p><p><b>  jmp hx</b></p><p>  ;************************************************************start1:</p><p>  getinfo1: mov dx,04a2h</p><p>  mov ax,3

52、4h</p><p>  out dx,ax;啟動(dòng)通道 1</p><p>  wait2: mov dx,04b0h ;CS244</p><p>  in ax,dx;讀 EOC</p><p><b>  and ax,1</b></p><p><b

53、>  cmp ax,1</b></p><p>  jne wait2;如果EOC=0,waiting....</p><p>  mov dx,04a0h</p><p>  in ax,dx;讀轉(zhuǎn)換結(jié)果</p><p>  and ax,0ffh</p><p>  mo

54、v bx,ax</p><p>  mov dx,04d0h ;送轉(zhuǎn)換結(jié)果給273</p><p>  out dx,ax</p><p>  mov dx,04c0h;A口地址,轉(zhuǎn)換結(jié)果送A口 </p><p>  out dx,ax </p><p><

55、;b>  nop</b></p><p>  call disp</p><p>  hx:mov dx,04c4h;C口地址,轉(zhuǎn)換結(jié)果送C口</p><p>  in ax,dx</p><p><b>  mov bx,ax</b></p><p&

56、gt;  call disp2</p><p>  jmp search</p><p>  ;******************顯示子程序1****************************</p><p><b>  disp:</b></p><p>  mov di,offset segcod<

57、/p><p>  mov ax,08h ;工作方式,16位,左入</p><p>  mov dx,con8279</p><p>  out dx,ax</p><p>  mov ax,90h</p><p>  mov dx,con8279</p><p&g

58、t;  out dx,ax</p><p>  ;寫顯示RAM命令,地址自增</p><p>  mov dx,dat8279</p><p><b>  push bx</b></p><p>  and bx,0f0h ;取高4位</p>

59、<p><b>  mov cl,4</b></p><p>  shr bx,cl</p><p>  add di,bx</p><p>  mov al,cs:[di]</p><p><b>  mov ah,0</b></p><p>  out

60、 dx,ax ;寫RAM0</p><p><b>  nop</b></p><p><b>  nop</b></p><p>  mov di,offset segcod</p><p><b>  pop bx</b></p>

61、<p>  and bx,0fh ;取低4位</p><p>  add di,bx</p><p>  mov al,cs:[di]</p><p><b>  mov ah,0</b></p><p>  out dx,ax

62、 ;寫RAM1</p><p><b>  ret</b></p><p>  ;************************************************</p><p>  ;******************顯示子程序2****************************</p><p&g

63、t;<b>  disp2:</b></p><p>  mov di,offset segcod</p><p>  mov dx,dat8279</p><p><b>  push bx</b></p><p>  and bx,0f0h

64、 ;取高4位</p><p><b>  mov cl,4</b></p><p>  shr bx,cl</p><p>  add di,bx</p><p>  mov al,cs:[di]</p><p><b>  mov ah,0</b></p

65、><p>  out dx,ax ;寫RAM0</p><p><b>  nop</b></p><p><b>  nop</b></p><p>  mov di,offset segcod</p><p><b>  pop bx&

66、lt;/b></p><p>  and bx,0fh ;取低4位</p><p>  add di,bx</p><p>  mov al,cs:[di]</p><p><b>  mov ah,0</b></p><p> 

67、 out dx,ax ;寫RAM1</p><p><b>  ret</b></p><p>  ;************************************************</p><p>  ;*********************延時(shí)子程序***********************&l

68、t;/p><p>  delay:mov cx,0ffffh ;time delay</p><p>  delay1: nop </p><p><b>  nop</b></p><p>  loop delay1</p><p><b>  ret&l

69、t;/b></p><p>  ;************************************************</p><p>  ;********************D/A轉(zhuǎn)換子程序******************</p><p><b>  r0832:</b></p><p> 

70、 mov dx,04c2h</p><p>  in ax,dx </p><p>  and ah,0h </p><p>  mov dx,04e0h </p><p>  out dx,al </p><p>  mov dx,04e2h</p><p>

71、;  out dx,al ;啟動(dòng)轉(zhuǎn)換</p><p><b>  ret</b></p><p>  ;************************************************</p><p><b>  code ends</b></p><p><

72、;b>  end start</b></p><p><b>  上位機(jī)部分:</b></p><p>  con8279 equ 0492h</p><p>  dat8279 equ 0490h</p><p>  assume cs:code</p><p>  cod

73、e segment public</p><p><b>  org 100h</b></p><p>  start: jmp starttt</p><p>  segcod db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h </p><

74、;p><b>  starttt:</b></p><p>  mov dx,04a6h;控制寄存器地址</p><p>  mov ax,92h;設(shè)置為A口輸入,"B口輸入","C口輸出"</p><p>  out dx,ax</p><p><b&

75、gt;  ;8250初始化</b></p><p>  mov bx,0480h ;0480h接受緩沖寄存器的地址</p><p><b>  mov dx,bx</b></p><p>  add dx,6 ;0486h通信線路控制寄存器的地址</p><p>  mov ax,80

76、h </p><p>  out dx,ax ;寫入通信線路控制寄存器,使DLAB=1</p><p>  mov dx,bx ;寫入除數(shù)寄存器</p><p>  mov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4</p><p>  ; AL=47700

77、00/16/9600/4=8</p><p>  out dx,ax ;寫入除數(shù)寄存器低8位</p><p><b>  add dx,2</b></p><p><b>  mov ax,0h</b></p><p>  out dx,ax ;寫入除數(shù)寄存器低8位<

78、/p><p>  add dx,4 </p><p>  mov ax,07 ;無奇偶校驗(yàn),8位,1個(gè)停止位</p><p><b>  out dx,ax</b></p><p><b>  mov dx,bx</b></p><p>  add dx,2

79、 ;無中斷</p><p><b>  mov ax,0</b></p><p><b>  out dx,ax</b></p><p>  start1: </p><p>  mov dx,04b0h ;74LS244地址</p><

80、p>  in al,dx ;讀輸入開關(guān)量</p><p>  test al,01h</p><p>  jz intr0</p><p>  mov dx,04a2h;a口地址04a0---->04a2</p><p>  in ax,dx;輸入</p><

81、p>  mov bx,ax ;bx保存1通道來的值</p><p><b>  nop;</b></p><p><b>  nop;</b></p><p><b>  nop;</b></p><p>  mov dx,04a4h

82、;C口地址</p><p>  mov ax,bx</p><p>  out dx,ax;輸出1通道來的值</p><p><b>  push ax</b></p><p><b>  call disp</b></p><p><b>  po

83、p ax</b></p><p><b>  jmp crd</b></p><p><b>  intr0:</b></p><p>  mov dx,04a2h;B口地址</p><p>  in ax,dx;輸入</p><p>  mo

84、v bx,ax ;bx保存0通道來的值</p><p>  mov dx,04a4h;C口地址</p><p>  mov ax,bx</p><p>  out dx,ax;輸出0通道來的值</p><p><b>  mov bx,ax</b></p>&

85、lt;p><b>  push ax</b></p><p><b>  call disp</b></p><p><b>  pop ax</b></p><p>  crd: </p><p>  call delay</p><p&

86、gt;<b>  call send</b></p><p>  jmp start1</p><p>  ;********************************發(fā)送子程序</p><p>  send: push ax</p><p>  mov bx,0480h</p><p>

87、<b>  mov dx,bx</b></p><p>  add dx,0ah </p><p>  in ax,dx ;讀取通信狀態(tài)寄存器的值 </p><p>  test ax,20h ;能輸出數(shù)據(jù)嗎?</p><p>  jnz recv2 ;能輸出,

88、轉(zhuǎn)輸出處理</p><p><b>  pop ax</b></p><p><b>  jmp send</b></p><p>  recv2: pop ax</p><p>  mov dx,bx </p><p><b>  out dx,a

89、x</b></p><p><b>  ret</b></p><p>  ;********************************************************************</p><p>  ;******************顯示子程序*************************

90、***</p><p>  disp:mov di,offset segcod</p><p>  mov ax,08h ;工作方式,16位,左入</p><p>  mov dx,con8279</p><p>  out dx,ax</p><p>  mov ax,90h&l

91、t;/p><p>  mov dx,con8279</p><p>  out dx,ax ;寫顯示RAM命令,地址自增</p><p>  mov dx,dat8279</p><p><b>  push bx</b></p><p>  andbx,0f0h

92、 ;取高4位</p><p><b>  movcl,4</b></p><p><b>  shrbx,cl</b></p><p><b>  adddi,bx</b></p><p>  mov al,cs:[di]</p>&

93、lt;p>  mov ah,0</p><p>  out dx,ax ;寫RAM0</p><p><b>  nop</b></p><p><b>  nop</b></p><p>  mov di,offset segcod</p><p&

94、gt;<b>  pop bx</b></p><p>  and bx,0fh ;取低4位</p><p>  add di,bx</p><p>  mov al,cs:[di]</p><p>  mov ah,0</p><p>  out

95、 dx,ax ;寫RAM1</p><p><b>  ret</b></p><p>  ;********************************************************************</p><p>  ;*********************延時(shí)子程序**************

96、*********</p><p>  delay: mov cx,1fffh ;time delay</p><p>  delay1: nop </p><p><b>  nop</b></p><p>  loop delay1</p>&l

97、t;p><b>  ret</b></p><p>  ;******************************************************************* </p><p>  code ends</p><p>  end start</p><p><b&

98、gt;  Pc機(jī)部分:</b></p><p>  sseg segment para STACK 'stack'</p><p>  dw 100h dup(0) ;初始化堆棧大小為100</p><p><b>  sseg ends</b></p><p>  dseg segment&

99、lt;/p><p><b>  dseg ends</b></p><p>  eseg segment</p><p><b>  eseg ends</b></p><p>  code segment</p><p>  assume cs:code , ds:ds

100、eg, es:eseg, ss:sseg</p><p><b>  start:</b></p><p>  mov ax, dseg</p><p>  mov ds, ax</p><p>  mov ax,eseg</p><p>  mov es, ax</p><p

101、>  call clearp</p><p><b>  ;初始化8250</b></p><p>  mov al,80h</p><p>  mov dx,3fbh</p><p>  out dx,al; 寫入通信線路控制寄存器,使DLAB=1</p><p>  mov ax,0ch

102、 ;分頻系數(shù):1.8432MHz÷(9600×16)=96=0cH</p><p>  mov dx,3f8h</p><p>  out dx,al;寫入除數(shù)寄存器低8位</p><p><b>  mov al,ah</b></p><p><b>  inc dx</b>

103、;</p><p>  out dx,al;寫入除數(shù)寄存器高8位</p><p>  mov al,07h ;無奇偶校驗(yàn),8位,1個(gè)停止位</p><p>  mov dx,3fbh</p><p>  out dx,al;寫入通信線路控制寄存器,這段程序同時(shí)使DLAB=0</p><p&g

104、t;  mov al,03h </p><p>  mov dx,3fch</p><p>  out dx,al;寫入調(diào)制解調(diào)器控制寄存器</p><p>  mov dx,3f9h ;無中斷</p><p><b>  mov ax,0</b></p><

105、;p>  out dx,ax</p><p>  statue:mov dx,3fdh ;讀通信線路狀態(tài)寄存器</p><p><b>  in al,dx</b></p><p>  test al,1eh ;接收有錯(cuò)誤否?</p><p>  jnz error

106、 ;有錯(cuò),則轉(zhuǎn)錯(cuò)誤處理</p><p>  test al,01h;接收到數(shù)據(jù)嗎?</p><p>  jnz receive;是,轉(zhuǎn)接收處理</p><p>  test al,20h;保持寄存器空嗎?</p><p>  jz statue </p><p><b>  

107、;不能,循環(huán)查詢</b></p><p>  ;保持寄存器已空,發(fā)送數(shù)據(jù)</p><p>  mov ah,0bh;檢測(cè)鍵盤有無輸入字符</p><p><b>  int 21h</b></p><p><b>  cmp al,0</b></p><p> 

108、 jz statue;無輸入字符,循環(huán)等待</p><p>  mov ah,0;有輸入字符,讀取字符</p><p>  int 16h ;采用01號(hào)DOS功能調(diào)用,則無回顯</p><p>  cmp al,1bh</p><p>  jz done; 是ESC鍵,程序返回DOS</p><p>  m

109、ov dx,3f8h ;將字符輸出給發(fā)送保持寄存器</p><p>  out dx,al ;串行發(fā)送數(shù)據(jù)</p><p>  jmp statue ;繼續(xù)查詢</p><p>  ;已接收字符,讀取該字符并顯示</p><p><b>  receive:</b></p><p>&

110、lt;b>  add bp,1</b></p><p>  cmp bp,300</p><p><b>  jbe r1</b></p><p>  call clearp</p><p>  r1: mov dx,3f8h ;從輸入緩沖寄存器讀取字符</p><p&g

111、t;<b>  in al,dx</b></p><p><b>  xor ah,ah</b></p><p>  push ax;保存數(shù)據(jù)</p><p><b>  mov bl,2</b></p><p><b>  div bl</b><

112、/p><p><b>  mov bl,al</b></p><p><b>  mov bh,0 </b></p><p><b>  mov al,4</b></p><p><b>  mov dx,bx</b></p><p>

113、  add dx ,23h</p><p>  mov cx,bp </p><p>  mov ah,0ch </p><p><b>  int 10h </b></p><p>  pop ax ;恢復(fù)數(shù)據(jù)</p><p>  cmp al,0dh;數(shù)據(jù)是回車符嗎?<

114、/p><p>  jnz statue;不是,則循環(huán)</p><p>  mov dl,0ah;是,再進(jìn)行換行</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  jmp statue;繼續(xù)查詢<

115、;/p><p>  ;接收有錯(cuò),顯示問號(hào)</p><p>  error:mov dx,3f8h ;讀出接收有誤的數(shù)據(jù),丟掉</p><p><b>  in al,dx</b></p><p>  mov dl,'?';顯示問號(hào)</p><p><b>  mov

116、ah,2</b></p><p><b>  int 21h</b></p><p>  jmp statue;繼續(xù)查詢</p><p><b>  ;按任意鍵退出</b></p><p><b>  mov ah,1</b></p><p&g

117、t;<b>  int 21h</b></p><p>  done: mov ax, 4c00h ;程序結(jié)束,返回到操作系統(tǒng)系統(tǒng)</p><p><b>  int 21h</b></p><p>  clearp: mov ax,0013h ;設(shè)置屏幕輸出格式 </p><p><

118、;b>  int 10h</b></p><p>  mov cx,0 ;畫坐標(biāo)軸(300*180)</p><p><b>  mov al,3 </b></p><p><b>  mov dx,0 </b></p><p>  frow:mov ah,0ch </

119、p><p><b>  int 10h </b></p><p><b>  inc dx </b></p><p>  cmp dx,180</p><p><b>  jnz frow </b></p><p>  fline:mov ah,0ch &l

120、t;/p><p><b>  int 10h </b></p><p><b>  inc cx </b></p><p>  cmp cx,300</p><p><b>  jnz fline</b></p><p><b>  mov bp,

121、0</b></p><p><b>  ret</b></p><p><b>  code ends</b></p><p><b>  end start</b></p><p>  附錄3: 使用元器件一覽表(序號(hào),名稱,型號(hào),規(guī)格,數(shù)量,備注)</p&

122、gt;<p>  序號(hào)名稱數(shù)量備注</p><p>  1MUT—Ⅲ型實(shí)驗(yàn)箱2</p><p>  28086CPU模塊2</p><p>  38255模塊2</p><p>  48250模塊2</p><p>  58253模塊1</p&

123、gt;<p>  68259模塊1</p><p>  7ADC0809模塊1</p><p>  80832模塊1</p><p>  9數(shù)碼管模塊2</p><p><b>  附錄4: 參考文獻(xiàn)</b></p><p>  [1]錢曉捷,陳

溫馨提示

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

評(píng)論

0/150

提交評(píng)論