版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙機(jī)通訊課程設(shè)計(jì)報(bào)告--雙機(jī)通信的設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)報(bào)告
- 雙機(jī)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)-計(jì)算機(jī)微機(jī)原理課程設(shè)計(jì)
- 接口課程設(shè)計(jì)報(bào)告——雙機(jī)通信
- 測(cè)控課程設(shè)計(jì)報(bào)告---雙機(jī)通信
- 雙機(jī)通信課程設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)
- 雙機(jī)通信課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)報(bào)告-雙機(jī)串行通信
- 單片機(jī)雙機(jī)通信課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--單片機(jī)雙機(jī)通信系統(tǒng)
- 單片機(jī)雙機(jī)通信系統(tǒng)-課程設(shè)計(jì)
- 雙機(jī)通信系統(tǒng)單片機(jī)課程設(shè)計(jì)
- 雙機(jī)串行通信課程設(shè)計(jì)
- 單路數(shù)據(jù)采集系統(tǒng)課程設(shè)計(jì)報(bào)告
- 溫度采集系統(tǒng)課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---溫度采集系統(tǒng)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告--雙機(jī)串行通訊
- 微機(jī)原理課程設(shè)計(jì)報(bào)告--數(shù)據(jù)采集顯示系統(tǒng)
- 無線溫度采集系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論