唐都微機實驗指導(dǎo)書_第1頁
唐都微機實驗指導(dǎo)書_第2頁
唐都微機實驗指導(dǎo)書_第3頁
唐都微機實驗指導(dǎo)書_第4頁
唐都微機實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄目錄1實驗一8259中斷控制實驗1實驗二8254定時/計數(shù)器應(yīng)用實驗3實驗三8255并行接口實驗6實驗四8251串行接口應(yīng)用實驗9實驗五A/D轉(zhuǎn)換實驗14實驗六D/A轉(zhuǎn)換實驗17實驗七鍵盤掃描及顯示設(shè)計實驗21實驗八電子發(fā)聲設(shè)計實驗23實驗九點陣LED顯示設(shè)計實驗27實驗十圖形LCD顯示設(shè)計實驗33實驗十一步進電機實驗39實驗十二直流電機閉環(huán)調(diào)速實驗42實驗十三溫度閉環(huán)控制實驗51附錄1Wmd86V5.4聯(lián)機軟件使用說明60附1.1菜單功能60附1.2工具欄功能介紹62附1.3專用圖形顯示64附1.4示波器65附1.5Debug調(diào)試命令66附錄2系統(tǒng)編程信息68附2.1地址分配情況68附2.2常用BIOS及DOS功能調(diào)用說明69實驗一8259中斷控制實驗一、實驗?zāi)康?.掌握8259中斷控制器的工作原理。2.學(xué)習(xí)8259的應(yīng)用編程方法。3.掌握8259級聯(lián)方式的使用方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容及步驟1.中斷控制器8259簡介在Intel386EX芯片中集成有中斷控制單元〔ICU〕,該單元包含有兩個級聯(lián)中斷控制器,一個為主控制器〔端口為20H、21H〕,一個為從控制器〔端口為A0H、A1H〕。該中斷控制單元就功能而言與工業(yè)上標(biāo)準(zhǔn)的82C59A在TD-PITE實驗系統(tǒng)中,將主控制器的IR6、IR7以及從控制器的IR1開放出來供實驗使用,主片8259的IR4供系統(tǒng)串口使用。8259的內(nèi)部連接及外部管腳引出如圖2.1:圖2.18259內(nèi)部連續(xù)及外部管腳引出圖在對8259進行編程時,首先必須進行初始化。一般先使用CLI指令將所有的可屏蔽中斷禁止,然后寫入初始化命令字。8259有一個狀態(tài)機控制對存放器的訪問,不正確的初始化順序會造成異常初始化。在初始化主片8259時,寫入初始化命令字的順序是:ICW1、ICW2、ICW3、然后是ICW4,初始化從片8259的順序與初始化主片8259的順序是相同的。系統(tǒng)啟動時,主片8259已被初始化,且4號中斷源〔IR4〕提供應(yīng)與PC聯(lián)機的串口通信使用,其它中斷源被屏蔽。中斷矢量地址與中斷號之間的關(guān)系如下表所示:主片中斷序號01234567功能調(diào)用08H09H0AH0BH0CH0DH0EH0FH矢量地址20H~23H24H~27H28H~2BH2CH~2FH30H~33H34H~37H38H~3BH3CH~3FH說明未開放未開放未開放未開放串口未開放可用可用從片中斷序號01234567功能調(diào)用30H31H32H33H34H35H36H37H矢量地址C0H~C3HC4H~C7HC8H~CBHCCH~CFHD0H~D3HD4H~D7HD8H~DBHDCH~DFH說明未開放可用未開放未開放未開放未開放未開放未開放2.8259單中斷實驗步驟系統(tǒng)總線單次脈沖單元系統(tǒng)總線單次脈沖單元MIR7KK1+主8259圖2.28259單中斷實驗接線圖〔2〕編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)?!?〕運行程序,重復(fù)按單次脈沖開關(guān)KK1+,顯示屏?xí)@示字符“7〞,說明響應(yīng)了中斷。3.8259級聯(lián)實驗步驟〔1〕實驗接線圖如圖2.3所示,KK1+連接到主片8259的IR7上,KK2+連接到從片8259的IR1上,當(dāng)按一次KK1+時,顯示屏上顯示字符“M7〞,按一次KK2+時,顯示字符“S1〞。編寫程序。系系統(tǒng)總線單次脈沖單元MIR7KK1+主8259SIR1從8259KK2+圖2.38259級聯(lián)實驗〔2〕輸入程序,編譯、鏈接無誤后裝入系統(tǒng)?!?〕運行程序,按動KK1+或KK2+,觀察實驗結(jié)果,驗證實驗程序的正確性。〔4〕假設(shè)同時按下KK1+和KK2+,觀察實驗結(jié)果,解釋實驗現(xiàn)象。實驗二8254定時/計數(shù)器應(yīng)用實驗一、實驗?zāi)康?.掌握8254的工作方式及應(yīng)用編程。2.掌握8254典型應(yīng)用電路的接法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容1.計數(shù)應(yīng)用實驗。編寫程序,應(yīng)用8254的計數(shù)功能,使用單次脈沖模擬計數(shù),使每當(dāng)按動‘KK1+’5次后,產(chǎn)生一次計數(shù)中斷,并在屏幕上顯示一個字符‘M’。2.定時應(yīng)用實驗。編寫程序,應(yīng)用8254的定時功能,每隔1秒顯示一個“M〞。四、實驗原理8254是Intel公司生產(chǎn)的可編程間隔定時器。是8253的改良型,比8253具有更優(yōu)良的性能。8254具有以下根本功能:〔1〕有3個獨立的16位計數(shù)器?!?〕每個計數(shù)器可按二進制或十進制〔BCD〕計數(shù)?!?〕每個計數(shù)器可編程工作于6種不同工作方式?!?〕8254每個計數(shù)器允許的最高計數(shù)頻率為10MHz〔8253為2MHz〕?!?〕8254有讀回命令〔8253沒有〕,除了可以讀出當(dāng)前計數(shù)單元的內(nèi)容外,還可以讀出狀態(tài)存放器的內(nèi)容?!?〕計數(shù)脈沖可以是有規(guī)律的時鐘信號,也可以是隨機信號。計數(shù)初值公式為:n=fCLKi÷fOUTi、其中fCLKi是輸入時鐘脈沖的頻率,fOUTi是輸出波形的頻率。圖3.1是8254的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與CPU的接口、內(nèi)部控制電路和三個計數(shù)器組成。8254的工作方式如下述:〔1〕方式0:計數(shù)到0結(jié)束輸出正躍變信號方式?!?〕方式1:硬件可重觸發(fā)單穩(wěn)方式?!?〕方式2:頻率發(fā)生器方式?!?〕方式3:方波發(fā)生器?!?〕方式4:軟件觸發(fā)選通方式?!?〕方式5:硬件觸發(fā)選通方式。圖3.18254的內(nèi)部接口和引腳8254的控制字有兩個:一個用來設(shè)置計數(shù)器的工作方式,稱為方式控制字;另一個用來設(shè)置讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標(biāo)識位來區(qū)分??刂谱指袷饺绫?.1—3.3所示。表3.18254的方式控制字格式D7D6D5D4D3D2D1D0計數(shù)器選擇讀/寫格式選擇工作方式選擇計數(shù)碼制選擇00-計數(shù)器001-計數(shù)器110-計數(shù)器211-讀出控制字標(biāo)志00-鎖存計數(shù)值01-讀/寫低8位10-讀/寫高8位11-先讀/寫低8位再讀/寫高8位000-方式0001-方式1010-方式2011-方式3100-方式4101-方式50-二進制數(shù)1-十進制數(shù)表3.28254讀出控制字格式D7D6D5D4D3D2D1D0110-鎖存計數(shù)值0-鎖存狀態(tài)信息計數(shù)器選擇〔同方式控制字〕0表3.38254狀態(tài)字格式D7D6D5D4D3D2D1D0OUT引腳現(xiàn)行狀態(tài)1-高電平0-低電平計數(shù)初值是否裝入1-無效計數(shù)0-計數(shù)有效計數(shù)器方式〔同方式控制字〕8254實驗單元電路圖如以下圖所示:圖3.28254實驗電路原理圖五、實驗步驟1.計數(shù)應(yīng)用實驗編寫程序,將8254的計數(shù)器0設(shè)置為方式3,計數(shù)值為十進制數(shù)4,用單次脈沖KK1+作為CLK0時鐘,OUT0連接MIR7,每當(dāng)KK1+按動5次后產(chǎn)生中斷請求,在屏幕上顯示字符“M〞?!?〕實驗接線如圖3.3所示?!?〕編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。〔3〕運行程序,按動KK1+產(chǎn)生單次脈沖,觀察實驗現(xiàn)象?!?〕改變計數(shù)值,驗證8254的計數(shù)功能。圖3.3實驗接線圖2.定時應(yīng)用實驗編寫程序,將8254的計數(shù)器0和計數(shù)器1都設(shè)置為方式3,用信號源1MHz作為CLK0時鐘,OUT0為波形輸出1ms方波,再通過CLK1輸入,OUT1輸出1s方波,每隔1秒向CPU發(fā)中斷請求,在屏幕上顯示“M〞。〔1〕實驗接線如圖3.4所示?!?〕編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)?!?〕運行程序,觀察實驗現(xiàn)象。圖3.4實驗接線圖實驗三8255并行接口實驗一、實驗?zāi)康?.學(xué)習(xí)并掌握8255的工作方式及其應(yīng)用。2.掌握8255典型應(yīng)用電路的接法。3.掌握程序固化及脫機運行程序的方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容1.根本輸入輸出實驗。編寫程序,使8255的A口為輸入,B口為輸出,完成撥動開關(guān)到數(shù)據(jù)燈的數(shù)據(jù)傳輸。要求只要開關(guān)撥動,數(shù)據(jù)燈的顯示就發(fā)生相應(yīng)改變。2.流水燈顯示實驗。編寫程序,使8255的A口和B口均為輸出,數(shù)據(jù)燈D7~D0由左向右,每次僅亮一個燈,循環(huán)顯示,D15~D8與D7~D0正相反,由右向左,每次僅點亮一個燈,循環(huán)顯示。四、實驗原理圖4.18255內(nèi)部結(jié)構(gòu)及外部引腳圖并行接口是以數(shù)據(jù)的字節(jié)為單位與I/O設(shè)備或被控制對象之間傳遞信息。CPU和接口之間的數(shù)據(jù)傳送總是并行的,即可以同時傳遞8位、16位或32位等。8255可編程外圍接口芯片是Intel公司生產(chǎn)的通用并行I/O接口芯片,它具有A、B、C三個并行接口,用+5V單電源供電,能在以下三種方式下工作:方式0--根本輸入/輸出方式、方式1--選通輸入/輸出方式、方式2--雙向選通工作方式。8255的內(nèi)部結(jié)構(gòu)及引腳如圖4.1所示,8255工作方式控制字和C口按位置位/復(fù)位控制字格式如圖4.2所示。圖4.28255控制字格式8255實驗單元電路圖如圖4.3所示:圖4.38255實驗單元電路圖五、實驗步驟1.根本輸入輸出實驗本實驗使8255端口A工作在方式0并作為輸入口,端口B工作在方式0并作為輸出口。用一組開關(guān)信號接入端口A,端口B輸出線接至一組數(shù)據(jù)燈上,然后通過對8255芯片編程來實現(xiàn)輸入輸出功能。具體實驗步驟如下述:〔1〕實驗接線圖如圖4.4所示,按圖連接實驗線路圖。〔2〕編寫實驗程序,經(jīng)編譯、連接無誤后裝入系統(tǒng)?!?〕運行程序,改變撥動開關(guān),同時觀察LED顯示,驗證程序功能?!?〕點擊“調(diào)試〞下拉菜單中的“固化程序〞項,將程序固化到系統(tǒng)存儲器中?!?〕將短路跳線JDBG的短路塊短接到RUN端,然后按復(fù)位按鍵,觀察程序是否正常運行;關(guān)閉實驗箱電源,稍等后再次翻開電源,看固化的程序是否運行,驗證程序功能?!?〕實驗完畢后,請將短路跳線JDBG的短路塊短接到DBG端。圖4.48255根本輸入輸出實驗接線圖2.流水燈顯示實驗使8255的A口和B口均為輸出,數(shù)據(jù)燈D7~D0由左向右,每次僅亮一個燈,循環(huán)顯示,D15~D8與D7~D0正相反,由右向左,每次僅點亮一個燈,循環(huán)顯示。實驗接線圖如圖4.5所示。實驗步驟如下所述:〔1〕按圖4.5連接實驗線路圖?!?〕編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)?!?〕運行程序,觀察LED燈的顯示,驗證程序功能?!?〕自己改變流水燈的方式,編寫程序?!?〕固化程序并脫機運行。圖4.58255流水燈實驗接線圖實驗四8251串行接口應(yīng)用實驗一、實驗?zāi)康?.掌握8251的工作方式及應(yīng)用。2.了解有關(guān)串口通訊的知識。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套或兩套。三、實驗內(nèi)容1.數(shù)據(jù)信號的串行傳輸實驗,循環(huán)向串口發(fā)送一個數(shù),使用示波器測量TXD引腳上的波形,以了解串行傳輸?shù)臄?shù)據(jù)格式。2.自收自發(fā)實驗,將3000H起始的10個單元中的初始數(shù)據(jù)發(fā)送到串口,然后自接收并保存到4000H起始的內(nèi)存單元中。3.雙機通訊實驗,本實驗需要兩臺實驗裝置,其中一臺作為接收機,一臺作為發(fā)送機,發(fā)送機將3000H~3009H內(nèi)存單元中共10個數(shù)發(fā)送到接收機,接收機將接收到的數(shù)據(jù)直接在屏幕上輸出顯示。四、實驗原理1.8251的根本性能8251是可編程的串行通信接口,可以管理信號變化范圍很大的串行數(shù)據(jù)通信。有以下根本性能:〔1〕通過編程,可以工作在同步方式,也可以工作在異步方式?!?〕同步方式下,波特率為0~64K,異步方式下,波特率為0~19.2K?!?〕在同步方式時,可以用5~8位來代表字符,內(nèi)部或外部同步,可自動插入同步字符?!?〕在異步方式時,也使用5~8位來代表字符,自動為每個數(shù)據(jù)增加1個啟動位,并能夠根據(jù)編程為每個數(shù)據(jù)增加1個、1.5個或2個停止位?!?〕具有奇偶、溢出和幀錯誤檢測能力?!?〕全雙工,雙緩沖器發(fā)送和接收器。注意,8251盡管通過了RS-232規(guī)定的根本控制信號,但并沒有提供規(guī)定的全部信號。2.8251的內(nèi)部結(jié)構(gòu)及外部引腳8251的內(nèi)部結(jié)構(gòu)圖如圖5.1所示,可以看出,8251有7個主要局部,即數(shù)據(jù)總線緩沖器、讀/寫控制邏輯電路、調(diào)制/解調(diào)控制電路、發(fā)送緩沖器、發(fā)送控制電路、接收緩沖器和接收控制電路,圖中還標(biāo)識出了每個局部對外的引腳。8251的外部引腳如圖4.37所示,共28個引腳,每個引腳信號的輸入輸出方式如圖中的箭頭方向所示。圖5.18251內(nèi)部結(jié)構(gòu)圖圖5.28251外部引腳圖3.8251在異步方式下的TXD信號上的數(shù)據(jù)傳輸格式圖5.3示意了8251工作在異步方式下的TXD信號上的數(shù)據(jù)傳輸格式。數(shù)據(jù)位與停止位的位數(shù)可以由編程指定。圖5.38251工作在異步方式下TXD信號的數(shù)據(jù)傳輸格式4.8251的編程對8251的編程就是對8251的存放器的操作,下面分別給出8251的幾個存放器的格式?!?〕方式控制字方式控制字用來指定通信方式及其方式下的數(shù)據(jù)格式,具體各位的定義如圖5.4所示。D7D6D5D4D3D2D1D0SCS/S2ESD/S1EPPENL2L1B2B1同步/停止位奇偶校驗字符長度波特率系數(shù)同步〔D1D0=00〕X0=內(nèi)同步X1=外同步0X=雙同步1X=單同步異步〔D1D0≠0〕00=不用01=1位10=1.5位11=2位X0=無校驗01=奇校驗11=偶校驗00=5位01=6位10=7位11=8位異步00=不用01=0110=1611=64同步00=同步方式標(biāo)志圖5.48251方式控制字〔2〕命令控制字命令控制字用于指定8251進行某種操作〔如發(fā)送、接收、內(nèi)部復(fù)位和檢測同步字符等〕或處于某種工作狀態(tài),以便接收或發(fā)送數(shù)據(jù)。圖5.5所示的是8251命令控制字各位的定義。D7D6D5D4D3D2D1D0EHIRRTSERSBRKRxEDTRTxEN進入搜索1=允許搜索內(nèi)部復(fù)位1=使8251返回方式控制字請求發(fā)送1=使RTS輸出0錯誤標(biāo)志復(fù)位使錯誤標(biāo)志PE、OE、FE復(fù)位發(fā)中止字符1=使TXD為低0=正常工作接收允許1=允許0=禁止數(shù)據(jù)終端準(zhǔn)備好1=使DTR輸出0發(fā)送允許1=允許0=禁止圖5.58251命令控制字格式〔3〕狀態(tài)字CPU通過狀態(tài)字來了解8251當(dāng)前的工作狀態(tài),以決定下一步的操作,8251的狀態(tài)字如圖5.6所示。D7D6D5D4D3D2D1D0DSRSYNDETFEOEPETxERxRDYTxRDY數(shù)據(jù)裝置就緒:當(dāng)DSR輸入為0時,該位為1同步檢測幀錯誤:該標(biāo)志僅用于異步方式,當(dāng)在任一字符的結(jié)尾沒有檢測到有效的停止位時,該位置1。此標(biāo)志由命令控制字中的位4復(fù)位。溢出錯誤:在下一個字符變?yōu)榭捎们埃珻PU沒有把字符讀走,此標(biāo)志置1。此錯誤出現(xiàn)時上一字符已喪失。奇偶錯誤:當(dāng)檢測到奇偶錯誤時此位置1。發(fā)送器空接收就緒為1說明接收到一個字符。發(fā)送就緒為1說明發(fā)送緩沖器空。圖5.68251狀態(tài)字格式〔4〕系統(tǒng)初始化8251的初始化和操作流程如圖5.7所示。5.8251實驗單元電路圖圖5.88251實驗單元電路圖圖5圖5.78251初始化流程圖圖5.9自收自發(fā)實驗接線圖五、實驗步驟1.自收自發(fā)實驗通過自收自發(fā)實驗,可以驗證硬件及軟件設(shè)計,常用于自測試。具體實驗步驟如下:〔1〕參考實驗接線圖如圖5.9所示,按圖連接實驗線路?!?〕編寫實驗程序,編譯、鏈接無誤后裝入系統(tǒng)?!?〕使用E命令更改4000H起始的10個單元中的數(shù)據(jù)。〔4〕運行實驗程序,待程序運行停止?!?〕查看3000H起始的10個單元中的數(shù)據(jù),與初始化的數(shù)據(jù)進行比擬,驗證程序功能。2雙機通訊實驗使用兩臺實驗裝置,一臺為發(fā)送機,一臺為接收機,進行兩機間的串行通訊。實驗步驟如下:〔1〕按圖5.10連接實驗線路?!?〕為兩臺機器分別編寫實驗程序,編譯、鏈接后裝入系統(tǒng)?!?〕為發(fā)送機初始化發(fā)送數(shù)據(jù)。在發(fā)送機3000H~3009H內(nèi)存單元寫入ASCII值:30,31,32,33,34,35,36,37,38,39共10個數(shù)。〔4〕首先運行接收機上的程序,等待接收數(shù)據(jù),然后運行發(fā)送機上的程序,將數(shù)據(jù)發(fā)送到串口?!?〕觀察接收機端屏幕上的顯示是否與發(fā)送機端初始的數(shù)據(jù)相同,驗證程序功能。屏幕將會顯示字符:0123456789圖5.10雙機通訊實驗接線圖實驗五A/D轉(zhuǎn)換實驗一、實驗?zāi)康?.學(xué)習(xí)理解模/數(shù)信號轉(zhuǎn)換的根本原理。2.掌握模/數(shù)轉(zhuǎn)換芯片ADC0809的使用方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套,萬用表一個。三、實驗內(nèi)容編寫實驗程序,將ADC單元中提供的0V~5V信號源作為ADC0809的模擬輸入量,進行A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)果通過變量進行顯示。四、實驗原理ADC0809包括一個8位的逐次逼近型的ADC局部,并提供一個8通道的模擬多路開關(guān)和聯(lián)合尋址邏輯。用它可直接輸入8個單端的模擬信號,分時進行A/D轉(zhuǎn)換,在多點巡回檢測、過程控制等應(yīng)用領(lǐng)域中使用非常廣泛。ADC0809的主要技術(shù)指標(biāo)為:·分辨率:8位·單電源:+5V·總的不可調(diào)誤差:±1LSB·轉(zhuǎn)換時間:取決于時鐘頻率·模擬輸入范圍:單極性0~5V·時鐘頻率范圍:10KHz~1280KHzADC0809的外部管腳如圖6.1所示,地址信號與選中通道的關(guān)系如表6.1所示。圖6.1ADC0809外部引腳圖表6.1地址信號與選中通道的關(guān)系地址選中通道ABC000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7模/數(shù)轉(zhuǎn)換單元電路圖如圖6.2所示:圖6.2模/數(shù)轉(zhuǎn)換電路圖五、實驗步驟1.按圖6.2連接實驗線路。2.編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。3.將變量VALUE添加到變量監(jiān)視窗口中。4.在JMPSTART語句行設(shè)置斷點,使用萬用表測量ADJ端的電壓值,計算對應(yīng)的采樣值,然后運行程序。5.程序運行到斷點處停止運行,查看變量窗口中VALUE的值,與計算的理論值進行比擬,看是否一致〔可能稍有誤差,相差不大〕。6.調(diào)節(jié)電位器,改變輸入電壓,比擬VALUE與計算值,反復(fù)驗證程序功能。圖6.2AD轉(zhuǎn)換實驗接線圖實驗程序清單〔AD1.ASM〕SSTACK SEGMENTSTACK DW64DUP(?)SSTACK ENDSPUBLIC VALUE ;設(shè)置全局變量以便變量監(jiān)視DATA SEGMENTVALUE DB? ;AD轉(zhuǎn)換結(jié)果DATA ENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVDX,640H ;啟動AD采樣 OUTDX CALLDALLY INAL,DX ;讀AD采樣結(jié)果 MOVVALUE,AL ;將結(jié)果送變量 JMPSTART ;在此處設(shè)置斷點,觀察變量窗口中的VALUE值DALLY: PUSHCX ;延時程序 PUSHAX MOVCX,100HA5: MOVAX,0800HA6: DECAX JNZA6LOOPA5 POPAX POPCX RET CODEENDS ENDSTART實驗六D/A轉(zhuǎn)換實驗一、實驗?zāi)康?.學(xué)習(xí)數(shù)/模轉(zhuǎn)換的根本原理。2.掌握DAC0832的使用方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容設(shè)計實驗電路圖實驗線路并編寫程序,實現(xiàn)D/A轉(zhuǎn)換,要求產(chǎn)生鋸齒波、脈沖波,并用示波器觀察電壓波形。四、實驗原理D/A轉(zhuǎn)換器是一種將數(shù)字量轉(zhuǎn)換成模擬量的器件,其特點是:接收、保持和轉(zhuǎn)換的數(shù)字信息,不存在隨溫度、時間漂移的問題,其電路抗干擾性較好。大多數(shù)的D/A轉(zhuǎn)換器接口設(shè)計主要圍繞D/A集成芯片的使用及配置響應(yīng)的外圍電路。DAC0832是8位芯片,采用CMOS工藝和R-2RT形電阻解碼網(wǎng)絡(luò),轉(zhuǎn)換結(jié)果為一對差動電流Iout1和Iout2輸出,其主要性能參數(shù)如表7.1示,引腳如圖7.1所示。圖7.1DAC0832引腳圖表7.1DAC0832性能參數(shù)性能參數(shù)參數(shù)值分辨率8位單電源+5V~+15V參考電壓+10V~-10V轉(zhuǎn)換時間1Us滿刻度誤差±1LSB數(shù)據(jù)輸入電平與TTL電平兼容D/A轉(zhuǎn)換單元實驗電路圖如圖7.2所示:圖7.2D/A實驗單元電路圖實驗程序清單〔DA1.ASM〕STACKSEGMENTSTACKDW32DUP(?)STACK ENDSCODESEGMENTASSUMECS:CODE,SS:STACKSTART: MOVAX,00H ;產(chǎn)生鋸齒波MOVDX,600HMOVAL,00HAA1:OUTDXCALLDELAYINCALJMPAA1 DELAY: PUSHCXMOVCX,03FFHAA2:PUSHAXPOPAXLOOPAA2POPCXRETCODEENDSENDSTART五、實驗步驟1.實驗接線圖如圖7.3所示,按圖接線。圖7.3D/A實驗接線圖2.編寫實驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。3.單擊按鈕,運行實驗程序,用示波器測量DA的輸出,觀察實驗現(xiàn)象。4.用示波器觀察波形的方法:單擊虛擬儀器菜單中的按鈕或直接單擊工具欄的按鈕,在新彈出的示波器界面上單擊按鈕運行示波器,觀測實驗波形。5.自行編寫實驗程序,產(chǎn)生三角波形,使用示波器觀察輸出,驗證程序功能。6.產(chǎn)生方波程序如下〔DA2.ASM〕:SSTACK SEGMENTSTACK DW32DUP(?)SSTACK ENDSCODE SEGMENT ASSUMECS:CODESTART:MOVAX,00H ;產(chǎn)生方波MOVDX,600HAA1: MOVAL,00HOUTDXCALLDELAYMOVAL,7FHOUTDXCALLDELAYJMPAA1DELAY: PUSHCXMOVCX,0FF00HAA2: PUSHAXPOPAXLOOPAA2POPCXRETCODE ENDSENDSTART實驗七鍵盤掃描及顯示設(shè)計實驗一、實驗?zāi)康牧私怄I盤掃描及數(shù)碼顯示的根本原理,熟悉8255的編程。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容將8255單元與鍵盤及數(shù)碼管顯示單元連接,編寫實驗程序,實現(xiàn)〔1〕掃描鍵盤輸入,并將掃描結(jié)果屏幕顯示。鍵盤采用4×4鍵盤,每個數(shù)碼管顯示值可為0~F共16個數(shù)。實驗具體內(nèi)容如下:將鍵盤進行編號,記作0~F,當(dāng)按下其中一個按鍵時,將該按鍵對應(yīng)的編號在一個屏幕上顯示出來;〔2〕在六位數(shù)碼管上顯示“123456〞圖8.1鍵盤及數(shù)碼管顯示單元電路圖鍵盤及數(shù)碼管顯示單元電路圖如圖8.1所示。8255鍵盤及顯示實驗參考接線圖如圖8.2所示。圖8.28255鍵盤掃描及數(shù)碼管顯示實驗線路圖四、實驗步驟1.按圖8.2連接線路圖。2.編寫實驗程序,檢查無誤后編譯、連接并裝入系統(tǒng)。3.運行程序,按下按鍵,觀察數(shù)碼管的顯示,驗證程序功能。4.固化程序,然后脫機運行程序。實驗八電子發(fā)聲設(shè)計實驗一、實驗?zāi)康膶W(xué)習(xí)用8254定時/計數(shù)器使蜂鳴器發(fā)聲的編程方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容根據(jù)實驗提供的音樂頻率表和時間表,編寫程序控制8254,使其輸出連接到揚聲器上能發(fā)出相應(yīng)的樂曲。四、實驗說明及步驟一個音符對應(yīng)一個頻率,將對應(yīng)一個音符頻率的方波通到揚聲器上,就可以發(fā)出這個音符的聲音。將一段樂曲的音符對應(yīng)頻率的方波依次送到揚聲器,就可以演奏出這段樂曲。利用8254的方式3——“方波發(fā)生器〞,將相應(yīng)一種頻率的計數(shù)初值寫入計數(shù)器,就可產(chǎn)生對應(yīng)頻率的方波。計數(shù)初值的計算如下:計數(shù)初值=輸入時鐘÷輸出頻率例如輸入時鐘采用1MHz,要得到800Hz的頻率,計數(shù)初值即為1000000÷800。音符與頻率對照關(guān)系如表9.1所示。對于每一個音符的演奏時間,可以通過軟件延時來處理。首先確定單位延時時間程序〔根據(jù)CPU的頻率不同而有所變化〕。然后確定每個音符演奏需要幾個單位時間,將這個值送入DL中,調(diào)用DALLY子程序即可。;單位延時時間DALLYPROCD0: MOVCX,0010HD1: MOVAX,0F00HD2: DECAXJNZD2LOOPD1RETDALLYENDP;N個單位延時時間(N送至DL)DALLYPROCD0: MOVCX,0010HD1: MOVAX,0F00HD2: DECAX JNZD2LOOPD1 DECDL JNZD0 RETDALLYENDP表9.1音符與頻率對照表〔單位:Hz〕下面提供了樂曲?友誼地久天長?實驗參考程序。程序中頻率表是將曲譜中的音符對應(yīng)的頻率值依次記錄下來〔B調(diào)、四分之二拍〕,時間表是將各個音符發(fā)音的相對時間記錄下來〔由曲譜中節(jié)拍得出〕。圖9.1實驗參考流程圖頻率表和時間表是一一對應(yīng)的,頻率表的最后一項為0,作為重復(fù)的標(biāo)志。根據(jù)頻率表中的頻率算出對應(yīng)的計數(shù)初值,然后依次寫入8254的計數(shù)器。將時間表中相對時間值帶入延時程序來得到音符演奏時間。實驗參考程序流程如圖9.1所示。電子發(fā)聲電路圖如圖9.2所示。圖9.2電子發(fā)聲單元電路圖實驗步驟如下:1.參考圖9.3所示連接實驗線路。2.編寫實驗程序,經(jīng)編譯、連接無誤后裝入系統(tǒng)。3.運行程序,聽揚聲器發(fā)出的音樂是否正確。4.固化程序,然后脫機運行程序。圖9.38254電子發(fā)聲實驗接線圖實驗參考例程〔SOUND.ASM〕IOY0 EQU06C0HMY8254_COUNT0 EQUIOY0+00H ;8254計數(shù)器0端口地址MY8254_COUNT1 EQUIOY0+02H ;8254計數(shù)器1端口地址MY8254_COUNT2 EQUIOY0+04H ;8254計數(shù)器2端口地址MY8254_MODE EQUIOY0+06H ;8254控制存放器端口地址STACK1 SEGMENTSTACK DW256DUP(?)STACK1 ENDSDATA SEGMENTFREQ_LIST DW371,495,495,495,624,556,495,556,624 ;頻率表 DW495,495,624,742,833,833,833,742,624 DW624,495,556,495,556,624,495,416,416,371 DW495,833,742,624,624,495,556,495,556,833 DW742,624,624,742,833,990,742,624,624,495 DW556,495,556,624,495,416,416,371,495,0TIME_LIST DB4,6,2,4,4,6,2,4,4 ;時間表 DB6,2,4,4,12,1,3,6,2 DB4,4,6,2,4,4,6,2,4,4 DB12,4,6,2,4,4,6,2,4,4 DB6,2,4,4,12,4,6,2,4,4 DB6,2,4,4,6,2,4,4,12DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVDX,MY8254_MODE ;初始化8254工作方式 MOVAL,36H ;定時器0、方式3 OUTDXBEGIN: MOVSI,OFFSETFREQ_LIST ;裝入頻率表起始地址 MOVDI,OFFSETTIME_LIST ;裝入時間表起始地址PLAY: MOVDX,0FH ;輸入時鐘為1MHz,1M=0F4240H MOVAX,4240H DIVWORDPTR[SI] ;取出頻率值計算計數(shù)初值,0F4240H/輸出頻率 MOVDX,MY8254_COUNT0 OUTDX,AL ;裝入計數(shù)初值 MOVAL,AH OUTDX MOVDL,[DI] ;取出演奏相對時間,調(diào)用延時子程序 CALLDALLY ADDSI,2 INCDI CMPWORDPTR[SI],0 ;判斷是否到曲末? JEBEGIN JMPPLAYDALLY PROC ;延時子程序D0: MOVCX,0010HD1: MOVAX,0F00HD2: DECAX JNZD2LOOPD1 DECDL JNZD0 RETDALLY ENDPCODE ENDS ENDSTART實驗九點陣LED顯示設(shè)計實驗一、實驗?zāi)康?.了解LED點陣的根本結(jié)構(gòu)。2.學(xué)習(xí)LED點陣掃描顯示程序的設(shè)計方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容及原理編寫程序,控制點陣向上卷動顯示“西安唐都科教儀器公司!〞。實驗系統(tǒng)中的16×16LED點陣由四塊8×8LED點陣組成,如圖4.58所示,8×8點陣內(nèi)部結(jié)構(gòu)圖如圖10.1所示。由圖10.2可知,當(dāng)行為“0〞,列為“1〞,那么對應(yīng)行、列上的LED點亮。圖10.3為點陣外部引腳圖。漢字顯示如圖10.4所示。圖10.116×16點陣示意圖圖10.2點陣內(nèi)部結(jié)構(gòu)圖圖10.3點陣外部引腳圖圖10.4顯示例如點陣實驗單元電路圖如圖10.5所示。由于2803輸出反向,所以行為1,列為0時對于點的LED點亮。點陣實驗接線圖如圖10.6所示。圖10.5點陣顯示實驗接線圖圖10.6點陣實驗單元電路圖四、實驗步驟1.按圖10.6連接實驗電路圖。2.編寫實驗程序,檢查無誤后,編譯、鏈接并裝入系統(tǒng)。3.運行實驗程序,觀察點陣的顯示,驗證程序功能。4.固化實驗程序,然后脫機運行。5.自己可以設(shè)計實驗,使點陣顯示不同的符號。使用點陣顯示符號時,必須首先得到顯示符號的編碼,這可以根據(jù)需要通過不同的工具獲得。在本例子中,我們首先得到了顯示漢字的字庫文件,然后將該字庫文件修改后包含到主文件中。參考下一節(jié)所述。實驗程序清單〔ALED16.ASM〕ROW1 EQU0600H ;端口定義ROW2 EQU0640HCOL1 EQU0680HCOL2 EQU06C0HSTACK1 SEGMENTSTACK DW256DUP(?)STACK1 ENDS;定義為數(shù)據(jù)段INCLUDEHZDOTht.ASM ;數(shù)據(jù)字段為漢字點陣庫,在HZDOTht.ASM文件中 CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVDX,ROW1 MOVAL,00H OUTDX MOVDX,ROW2 OUTDX MOVAL,0ffH MOVDX,COL1 OUTDX MOVDX,COL2 OUTDXBG0: MOVAX,160 MOVSI,OFFSETHZDOThtBG1: CALLDISP ADDSI,2 DECAX JZBG0 JMPBG1;======顯示漢字子程序======;入口參數(shù):SI=存放漢字起始地址 DISP: MOVCX,000FH PUSHAX ML0: PUSHCX MOVBL,01H MOVCX,0008HML1: MOVDX,ROW1 ;控制0--7行 MOVAL,00H OUTDX MOVAL,[SI] NOTAL MOVDX,COL1 ;0--7列 OUTDX INCSI MOVAL,[SI] NOTAL MOVDX,COL2 ;8--15列 OUTDX INCSI MOVDX,ROW1 ;控制0--7行 MOVAL,BL OUTDX ROLBL,1 CALLDELAYLOOPML1 MOVDX,ROW1 MOVAL,00H OUTDX MOVCX,0008HML2: MOVDX,ROW2 ;控制8--15行 MOVAL,00H OUTDX MOVAL,[SI] NOTAL MOVDX,COL1 ;0--7列 OUTDX INCSI MOVAL,[SI] NOTAL MOVDX,COL2 ;8--15列 OUTDX INCSI MOVDX,ROW2 ;控制8--15行 MOVAL,BL OUTDX ROLBL,1 CALLDELAYLOOPML2 MOVDX,ROW2 MOVAL,00H OUTDX SUBSI,32 POPCXLOOPML0 POPAX RET DELAY: PUSHCX ;延時子程序 MOVCX,0100HDL1: PUSHAX POPAXLOOPDL1 POPCX RET CODE ENDS ENDSTART五、字符提取方法1.將HZDotReader文件夾拷貝到硬盤上,然后雙擊文件運行程序;2.在“設(shè)置〞下拉菜單中選擇“取模字體〞選項,設(shè)置需要顯示漢字的字體;圖10.7取模字體對話框3.在“設(shè)置〞下拉菜單中選擇“取模方式〞選項,在本系統(tǒng)中選擇如下圖,即以橫向8個連續(xù)點構(gòu)成一個字節(jié),最左邊的點為字節(jié)的最低位,即BIT0,最右邊的點為BIT7。16×16漢字按每行2字節(jié),共16行取字模,每個漢字共32字節(jié),點陣四個角取字順序為左上角→右上角→左下角→右下角;圖10.8取模方式對話框4.在“設(shè)置〞下拉菜單中選擇“輸出設(shè)置〞選項,以設(shè)置輸出格式,可以為匯編格式或C語言格式,根據(jù)實驗程序語言而定,如圖10.9所示;圖10.9輸出設(shè)置對話框5.點擊按鈕,彈出字符輸入對話框,輸入“西安唐都科教儀器公司!〞,如圖4.67所示,然后點擊輸入按鈕;圖10.10字符輸入對話框6.字符輸入后,可得到輸入字符的點陣編碼以及對應(yīng)漢字的顯示,如圖10.11所示。此時可以對點陣進行編輯,方法是右鍵點擊某一漢字,此時該漢字的編碼反藍,然后點擊“編輯〞下拉菜單中的“編輯點陣〞選項來編輯該漢字,如圖10.12所示。鼠標(biāo)左鍵為點亮某點,鼠標(biāo)右鍵為取消某點。假設(shè)無需編輯,那么進行保存,軟件會將此點陣文件保存為dot格式;7.使用Word軟件翻開保存的文件,然后將字庫復(fù)制到自己的程序中使用。圖10.11字模生成窗口圖10.12點陣編輯窗實驗十圖形LCD顯示設(shè)計實驗一、實驗?zāi)康牧私鈭D形LCD的控制方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套,圖形LCD液晶一塊〔選配〕。三、實驗內(nèi)容本實驗使用的是128×64圖形點陣液晶,編寫實驗程序,通過8255控制液晶,顯示“唐都科教儀器公司歡送你!〞,并使該字串滾屏一周。四、實驗原理1.液晶模塊的接口信號及工作時序該圖形液晶內(nèi)置有控制器,這使得液晶顯示模塊的硬件電路簡單化,它與CPU連接的信號線如下:表11.1時序參數(shù)說明特性曲線助記符最小值典型最大值單位E周期tcyc1000--nsE高電平寬度twhE450--nsE低電平寬度twlE450--nsE上升時間tr--25nsE下降時間tf--25ns地址建立時間tas140--ns地址保持時間tah10--ns數(shù)據(jù)建立時間tdsw200--ns數(shù)據(jù)延遲時間tddr--320ns數(shù)據(jù)保持時間〔寫〕tdhw10--ns數(shù)據(jù)保持時間〔讀〕tdhr20--nsCS1、CS2:片選信號,低電平有效;E:使能信號;RS:數(shù)據(jù)和指令選擇信號,RS=1為RAM數(shù)據(jù),RS=0為指令數(shù)據(jù);R/W:讀/寫信號,R/W=1為讀操作,R/W=0為寫操作;D7~D0:數(shù)據(jù)總線;LT:背景燈控制信號,LT=1時翻開背景燈,LT=0時關(guān)閉背景燈。該液晶的時序參數(shù)說明如表11.1所列,讀寫時序圖如圖11.1和11.2所示。圖11.1讀操作時序圖圖11.2寫操作時序圖2.顯示控制指令顯示控制指令控制著液晶控制器的內(nèi)部狀態(tài),具體如表11.2所列。表11.2顯示控制命令列表指令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0顯示開/關(guān)0000111110/1設(shè)置地址〔Y地址〕0001Y地址〔0~63〕設(shè)置頁〔X地址〕0010111頁〔0~7〕顯示起始行〔Z地址〕0011顯示起始行〔0~63〕狀態(tài)讀01忙0開/關(guān)復(fù)位0000寫顯示數(shù)據(jù)10寫數(shù)據(jù)讀顯示數(shù)據(jù)11讀數(shù)據(jù)顯示開/關(guān):格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011111D該指令設(shè)置顯示開/關(guān)觸發(fā)器的狀態(tài),當(dāng)D=1為顯示數(shù)據(jù),當(dāng)D=0為關(guān)閉顯示設(shè)置。設(shè)置地址〔Y地址〕:格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB00001AC5AC4AC3AC2AC1AC0該指令用以設(shè)置Y地址計數(shù)器的內(nèi)容,AC5~AC0=0~63代表某一頁面上的某一單元地址,隨后的一次讀或?qū)憯?shù)據(jù)將在這個單元上進行。Y地址計數(shù)器具有自動加一功能,在每次讀或?qū)憯?shù)據(jù)后它將自動加一,所以在連續(xù)讀寫數(shù)據(jù)時,Y地址計數(shù)器不必每次設(shè)置一次。設(shè)置頁〔X地址〕:格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB00010111AC2AC1AC0該指令設(shè)置頁面地址存放器的內(nèi)容。顯示存儲器共分8頁,指令代碼中AC2~AC0用于確定當(dāng)前所要選擇的頁面地址,取值范圍為0~7,代表第1~8頁。該指令指出以后的讀寫操作將在哪一個頁面上進行。顯示起始行〔Z地址〕:格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB00011L5L4L3L2L1L0該指令設(shè)置了顯示起始行存放器的內(nèi)容。此液晶共有64行顯示的管理能力,指令中的L5~L0為顯示起始行的地址,取值為0~63,規(guī)定了顯示屏上最頂一行所對應(yīng)的顯示存儲器的行地址。假設(shè)等時間、等間距地修改顯示起始行存放器的內(nèi)容,那么顯示屏將呈現(xiàn)顯示內(nèi)容向上或向下滾動的顯示效果。狀態(tài)讀:格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB001忙0開/關(guān)復(fù)位0000狀態(tài)字是CPU了解液晶當(dāng)前狀態(tài)的唯一信息渠道。共有3位有效位,說明如下。忙:表示當(dāng)前液晶接口控制電路運行狀態(tài)。當(dāng)忙位為1表示正在處理指令或數(shù)據(jù),此時接口電路被封鎖,不能接受除讀狀態(tài)字以外的任何操作。當(dāng)忙位為0時,說明接口控制電路已準(zhǔn)備好等待CPU的訪問。開/關(guān):表示當(dāng)前的顯示狀態(tài)。為1表示關(guān)顯示狀態(tài),為0表示開顯示狀態(tài)。復(fù)位:為1表示系統(tǒng)正處于復(fù)位狀態(tài),此時除狀態(tài)讀可被執(zhí)行外,其它指令不可執(zhí)行,此位為0表示處于正常工作狀態(tài)。在指令設(shè)置和數(shù)據(jù)讀寫時要注意狀態(tài)字中的忙標(biāo)志。只有在忙標(biāo)志為0時,對液晶的操作才能有效。所以在每次對液晶操作前,都要讀出狀態(tài)字判斷忙標(biāo)志位,假設(shè)不為0那么需要等待,直到忙標(biāo)志為0為止。寫顯示數(shù)據(jù):格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB010D7D6D5D4D3D2D1D0該操作將8位數(shù)據(jù)寫入先前確定的顯示存儲單元中。操作完成后列地址計數(shù)器自動加一。讀顯示數(shù)據(jù):格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB011D7D6D5D4D3D2D1D0該操作將讀出顯示數(shù)據(jù)RAM中的數(shù)據(jù),然后列地址計數(shù)器自動加一。3.液晶顯示單元電路圖如圖11.3所示,調(diào)節(jié)10K微調(diào)可以改變液晶顯示的比照度。圖11.3液晶顯示電路圖五、實驗步驟1.按照圖11.4連接實驗接線圖。2.得到需顯示漢字或圖形的顯示數(shù)據(jù),這里需要得到“唐都科教儀器公司歡送你!〞的字模。3.編寫實驗程序,編譯、鏈接無誤后裝入系統(tǒng)。4.運行實驗程序,驗證程序功能。圖11.4液晶實驗線路圖實驗程序清單〔CLCD.C〕#include<conio.h>#include"lcd.h" //此頭文件中為漢字的字模voiddelay(inttime);voidquery(charcmd);voidopenlight(charcmd);voidcloselight(charcmd);voidclear(charcmd,intx);voidwrite(charcmd,chardata);voidwritehz(charxadd,charyadd,charcmd,char*hz);intMY8255_A=0x0600;intMY8255_B=0x0602;intMY8255_C=0x0604;intMY8255_MODE=0x0606;charcmd1=0x04;charcmd2=0x08;chardata;charxadd;charyadd;voidmain(){ intx; outp(MY8255_MODE,0x80); write(cmd1,0x3f); //DisplayOn翻開顯示 write(cmd2,0x3f); write(cmd1,0xc0); //設(shè)置起始行 write(cmd2,0xc0); for(x=0;x<8;x++) //清屏 { clear(cmd1,x); clear(cmd2,x); } writehz(0xba,0x40,cmd1,tang); //寫漢字 writehz(0xba,0x50,cmd1,du); writehz(0xba,0x60,cmd1,ke); writehz(0xba,0x70,cmd1,jiao); writehz(0xba,0x40,cmd2,yi); writehz(0xba,0x50,cmd2,qi); writehz(0xba,0x60,cmd2,gong); writehz(0xba,0x70,cmd2,si); writehz(0xbc,0x60,cmd1,huan); writehz(0xbc,0x70,cmd1,ying); writehz(0xbc,0x40,cmd2,nin); writehz(0xbc,0x50,cmd2,gantan); delay(50); for(x=0xc1;x<=0xFF;x++) { write(cmd1,x); write(cmd2,x); delay(20); } while(1);}voidwrite(charcmd,chardata) //寫命令或數(shù)據(jù)子程序{ outp(MY8255_B,data); cmd=cmd|0x10; outp(MY8255_A,cmd); cmd=cmd&0xEF; outp(MY8255_A,cmd);}voidwritehz(charxadd,charyadd,charcmd,char*hz){ //寫漢字子程序16*16 intx,y; write(cmd,xadd); query(cmd+1); write(cmd,yadd); query(cmd+1); for(x=0;x<2;x++) { for(y=0;y<16;y++) { data=hz[y+(x*16)]; write(cmd+2,data); query(cmd+1); } xadd++; write(cmd,xadd); query(cmd+1); write(cmd,yadd); query(cmd+1); }}voidopenlight(charcmd) //翻開背景燈{ cmd=cmd|0x20; outp(MY8255_A,cmd);}voidcloselight(charcmd) //關(guān)閉背景燈{ cmd=cmd&0xdf; outp(MY8255_A,cmd);}voidclear(charcmd,intx) //清一行屏幕子程序{ inty; xadd=0xb8+x; write(cmd,xadd); query(cmd+1); yadd=0x40; write(cmd,yadd); query(cmd+1); for(y=0;y<64;y++) { data=0x00; write(cmd+2,data); query(cmd+1); }}voidquery(charcmd) //查詢子程序{ outp(MY8255_MODE,0x82); cmd=cmd|0x10; outp(MY8255_A,cmd); cmd=cmd&0xEF; outp(MY8255_A,cmd); while(inp(MY8255_B)&0x80) { cmd=cmd|0x10; outp(MY8255_A,cmd); cmd=cmd&0xEF; outp(MY8255_A,cmd); } outp(MY8255_MODE,0x80);}voiddelay(inttime){ inti; intj; for(i=0;i<=time;i++) { for(j=0;j<=0x1000;j++); }}實驗十一步進電機實驗一、實驗?zāi)康恼莆詹竭M電機的控制方法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容編寫實驗程序,利用8255的B口來控制步進電機的運轉(zhuǎn)。四、實驗原理使用開環(huán)控制方式能對步進電機的轉(zhuǎn)動方向、速度和角度進行調(diào)節(jié)。所謂步進,就是指每給步進電機一個遞進脈沖,步進電機各繞組的通電順序就改變一次,即電機轉(zhuǎn)動一次。根據(jù)步進電機控制繞組的多少可以將電機分為三相、四相和五相。圖12.1勵磁線圈本實驗系統(tǒng)所采用的步進電機為四相八拍電機。勵磁線圈如圖12.1所示,勵磁順序如表12.1所列。表12.1勵磁順序步序123456785++++++++4---3---2---1---實驗中PB端口各線的電平在各步中的情況如表12.2所示。表12.2PB端口各線的電平在各步中的情況步序PB3PB2PB1PB0對應(yīng)B口輸出值1000101H2001103H3001002H4011006H5010004H611000CH7100008H8100109H驅(qū)動電路原理圖如圖12.2所示。實驗接線圖如圖12.3所示。圖12.2驅(qū)動電路原理圖圖12.3步進電機實驗參考接線圖實驗程序清單〔ABUJIN.ASM〕SSTACK SEGMENTSTACK DW256DUP(?)SSTACK ENDSDATA SEGMENTTABDT DB01H,03H,02H,06H,04H,0CH,08H,09HDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMAIN: MOVAL,90H ;控制B口工作于方式0,輸出 MOVDX,0606H OUTDXA1: MOVBX,OFFSETTABDTMOVCX,0008HA2: MOV AL,[BX] MOVDX,0602H ;寫B(tài)口 OUT DX CALLDALLY ;控制步進電機的轉(zhuǎn)速 INC BXLOOPA2 JMP A1DALLY: PUSHCX MOVCX,8000HA3: PUSHAX POP AXLOOPA3 POP CX RET CODE ENDS ENDSTART五實驗步驟1.按圖12.3連接線路。2.編寫實驗程序,編譯、鏈接后裝入系統(tǒng)。3.運行程序,觀察實驗現(xiàn)象。注意:步進電機不使用時請斷開連接器,以免誤操作使電機過熱損壞。實驗十二直流電機閉環(huán)調(diào)速實驗一、實驗?zāi)康?.了解直流電機閉環(huán)調(diào)速的方法。2.掌握PID控制規(guī)律及算法。3.了解計算機在控制系統(tǒng)中的應(yīng)用。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容直流電機閉環(huán)調(diào)速實驗原理如圖13.1所示。圖13.1直流電機閉環(huán)調(diào)速實驗原理圖如圖13.1所示,人為數(shù)字給定直流電機轉(zhuǎn)速,與霍爾測速得到的直流電機轉(zhuǎn)速〔反應(yīng)量〕進行比擬,其差值經(jīng)過PID運算,將得到控制量并產(chǎn)生PWM脈沖,通過驅(qū)動電路控制直流電機的轉(zhuǎn)動,構(gòu)成直流電機閉環(huán)調(diào)速控制系統(tǒng)。實驗系統(tǒng)中直流電機電路原理圖如圖13.2所示。圖13.2直流電機電路原理圖四、實驗步驟1.根據(jù)圖13.4連接實驗線路圖。2.參考圖13.3的流程圖編寫實驗程序,實驗參數(shù)取值范圍見表13.1,檢查無誤后編譯、鏈接并裝入系統(tǒng)。圖13.3直流電機閉環(huán)調(diào)速實驗流程圖圖13.4直流電機閉環(huán)調(diào)速實驗參考接線圖3.點擊按鈕,啟動86專用圖形界面。4.在專用圖形界面中,點擊,運行程序,觀察電機轉(zhuǎn)速及示波器上給定值與反應(yīng)值的波形。5.點擊按鈕,暫停程序運行,根據(jù)實驗波形分析直流電機的響應(yīng)特性。6.改變參數(shù)IBAND、KPP、KII、KDD的值后再觀察其響應(yīng)特性,選擇一組較好的控制參數(shù)并填入下表。參數(shù)項目IBANDKPPKIIKDD超調(diào)穩(wěn)定時間<2%1:例程中參數(shù)響應(yīng)特性0060H1060H0010H0020H15%4.8秒2:去掉IBAND0000H1060H0010H0020H3:自測一組較好參數(shù)注:直流電機閉環(huán)調(diào)速控制實驗以及后面的溫度控制實驗中給定與反應(yīng)都為單極性,屏幕最底端對應(yīng)值為00H,最頂端對應(yīng)值為FFH,對于時間刻度值由于采樣周期不同存在以下關(guān)系:實際時間〔秒〕=〔采樣周期×實際刻度值〕電機轉(zhuǎn)速范圍在6轉(zhuǎn)/秒~48轉(zhuǎn)/秒之間,速度過低受阻力影響較大不穩(wěn)定。最大轉(zhuǎn)速不超過4000轉(zhuǎn)/分。即:給定值〔SPEC〕范圍約在06H~30H之間。例如程序中給定SPEC=30H為48轉(zhuǎn)/秒。TS=14H,由于8254的OUT0接中斷MIR6,間隔為1ms,故采樣周期=14H×1=0.02秒。如實際刻度值=200,那么實際響應(yīng)時間〔秒〕=〔0.02×200〕=4秒。表13.1實驗程序參數(shù)表符號單位取值范圍名稱及作用TSMS00H-FFH采樣周期:決定數(shù)據(jù)采集處理快慢程度SPECN/s06H-30H給定:即要求電機到達的轉(zhuǎn)速值IBAND0000H-007FH積分別離值:PID算法中積分別離值KPP0000H-1FFFH比例系數(shù):PID算法中比例項系數(shù)值KII0000H-1FFFH積分系數(shù):PID算法中積分項系數(shù)值KDD0000H-1FFFH微分系數(shù):PID算法中微分項系數(shù)值YKN/s0000H-0042H反應(yīng):通過霍爾元件反應(yīng)算出的電機轉(zhuǎn)速反應(yīng)值CK00H-FFH控制量:PID算法產(chǎn)生用于控制的量VADD0000H-FFFFH轉(zhuǎn)速累加單元:記錄霍爾輸出脈沖用于轉(zhuǎn)速計算ZV00H-FFH轉(zhuǎn)速計算變量ZVV00H-FFH轉(zhuǎn)速計算變量TC00H-FFH采樣周期變量FPWM00H-01HPWM脈沖中間標(biāo)志位CK_100H-FFH控制量變量:記錄上次控制量值EK_10000H-FFFFHPID偏差:E(K)=SPEC(K)-YK(K)AEK_10000H-FFFFH△E(K)=E(K)-E(K-1)BEK0000H-FFFFH△E(K)=△E(K)-△E(K-1)AAAA00H-FFH用于PWM脈沖高電平時間計算VAA00H-FFHAAAA變量BBB00H-FFH用于PWM脈低沖電平時間計算VBB00H-FFHBBB變量MARK00H-01HR0R8PID計算用變量實驗程序清單〔AZHILIU.ASM〕SSTACK SEGMENTSTACK DW64DUP(?) TOP LABELWORDSSTACK ENDSDATA SEGMENTTS DB14HSPEC DW0030HIBAND DW0060HKPP DW1060HKII DW0010HKDD DW0020HCH1 DB?CH2 DB?YK DW?CK DB?VADD DW?ZV DB?ZVV DB?TC DB?FPWM DB?CK_1 DB?EK_1 DW?AEK_1 DW?BEK DW?AAAA DB?VAA DB?BBB DB?VBB DB?MARK DB?R0 DW?R1 DW?R2 DW?R3 DW?R4 DW?R5 DW?R6 DW?R7 DB?R8 DW?DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AXMAIN: CALLINIT ;初始化 STIM1: MOVAL,TS ;判斷Ts=Tc? SUBAL,TC JNCM1 MOVTC,00H ;得到Y(jié)k MOVAL,ZVV MOVAH,00H MOVYK,AX CALLPID ;調(diào)用PID計算控制量CK MOVAL,CK ;根據(jù)CK產(chǎn)生PWM脈沖 SUBAL,80H JCIS0 MOVAAAA,AL JMPCOUIS0: MOVAL,10H MOVAAAA,ALCOU: MOVAL,7FH SUBAL,AAAA MOVBBB MOVAX,SPEC ;給定SPEC存入CH1 MOVCH1,AL MOVAX,YK ;反應(yīng)YK存入CH2 MOVCH2,AL CALLPUT_COM ;調(diào)用PUT_COM顯示給定與反應(yīng)的波形 JMPM1PUT_COM: MOVDX,03FDHWAIT1: IN AL,DX TESTAL,20H JZ WAIT1 MOVDX,03F8H MOVAL,CH2 OUTDX MOVDX,03FDHWAIT2: IN AL,DX TESTAL,20H JZ WAIT2 MOVDX,03F8H MOVAL,CH1 OUT DX RETINIT: CLI PUSHDS XORAX,AX MOVDS,AX MOVAX,OFFSETIRQ6 ;8259IRQ6(T0:1ms) MOVSI,0038H MOV[SI],AX MOVAX,CS MOVSI,003AH MOV[SI],AX MOVAX,OFFSETIRQ7 ;8259IRQ7(INT0:HR-OUT,COUNT-VVV) MOVSI,003CH MOV[SI],AX MOVAX,CS MOVSI,003EH MOV[SI],AX POPDS MOVAL,2FH ;允許IRQ6,IRQ7 OUT21H,AL MOVVADD,0000H ;變量初始化 MOVZV,00H MOVZVV,00H MOVCK,00H MOVYK,0000H MOVCK_1,00H MOVEK_1,0000H MOVAEK_1,0000H MOVBEK,0000H MOVBBB,00H MOVVBB,00H MOVR0,0000H MOVR1,0000H MOVR2,0000H MOVR3,0000H MOVR4,0000H MOVR5,0000H MOVR6,0000H MOVR7,00H MOVR8,0000H MOVMARK,00H MOVFPWM,01H MOVAAAA,7FH MOVVAA,7FH MOVTC,00H MOVDX,606H MOVAL,90H ;初始化8255-B口 OUTDX MOVDX,602H MOVAL,00H OUTDX MOVDX,6C6H MOVAL,36H ;8254計數(shù)器0的輸出OUT0 OUTDX MOVDX,6C0H MOVAL,0E8H ;1ms OUTDX MOVAL,03H OUTDX RETIRQ7: NOP ;7號中斷程序,計算轉(zhuǎn)速 PUSHAX PUSHBX PUSHCX PUSHDX PUSHF MOVAL,MARK CMPAL,01H JZ IN1 MOVMARK,01HIN2: NOP MOVAL,20H ;關(guān)閉IRQ7 OUT20H,AL POPF POPDX POPCX POPBX POPAX IRETIN1: MOVMARK,00H CALLVV MOVAL,ZV MOVZVV JMPIN2VV: MOVDX,0000H ;計算電機轉(zhuǎn)速 MOVAX,03E8H MOVCX,VADD CMPCX,0000H JZMM1 DIVCXMM: MOVZV,AL MOVVADD,0000HMM1: RETIRQ6: PUSHAX PUSHDX PUSHF INCTC CALLKJ CLC CMPMARK,01H JC TT1 INCVADD CMPVADD,0700H ;轉(zhuǎn)速值溢出,賦極值 JC TT1 MOVVADD,0700H MOVMARK,00HTT1: NOP MOVAL,20H ;關(guān)閉IRQ6,中斷返回 OUT20H,AL POPF POPDX POPAX IRETKJ: NOP ;PWM發(fā)生子程序 PUSHAX CMPFPWM,01H ;FPWM為1,產(chǎn)生PWM的高電平 JNZTEST2 CMPVAA,00H JNZANOT0 MOVFPWM,02H MOVAL,BBB CLC RCRAL,01H MOVVBB JMPTEST2ANOT0: DECVAA MOVDX,0602H ;輸出高電平 MOVAL,01H OUTDXTEST2: CMPFPWM,02H ;FPWM為2,產(chǎn)生PWM的低電平 JNZOUTT CMPVBB,00H JNZBNOT0 MOVFPWM,01H MOVAL,AAAA CLC RCRAL,01H MOVVAA,AL JMPOUTTBNOT0: DECVBB MOVDX,0602H ;輸出低電平 MOVAL,00H OUTDXOUTT: POPAX RET;==============================================;PID算法子程序;根據(jù)SPEC,KPP,KII,KDD及YK計算對應(yīng)控制量CK;==============================================PID: MOVAX,SPEC ;求偏差EK SUBAX,YK MOVR0,AX MOVR1,AX ;求偏差的變化量AEK SUBAX,EK_1 MOVR2,AX SUBAX,AEK_1 ;求BEK MOVBEK,AX MOVR8,AX MOVAX,R1 MOVEK_1,AX MOVAX,R2 MOVAEK_1,AX TESTR1,8000H JZ EK1 NEGR1EK1: MOVAX,R1 ;根據(jù)積分別離值,判是否積分 SUBAX,IBAND JC II MOVR3,00H JMPDDDII: MOVAL,TS ;計算積分項的值 MOVAH,00H MOVCX,R1 MULCX MOVCX,KII DIVCX MOVR3,AX TESTR0,8000H JZ DDD NEGR3DDD: TESTBEK,8000H ;計算微分項的值 JZ DDD1 NEGBEKDDD1: MOVAX,BEK MOVCX,KDD MUL CX PUSHAX PUSHDX MOVAL,TS MOVAH,00H ;將微分項縮小8倍,防止溢出 MOVCX,0008H MULCX MOVCX,AX POPDX POPAX DIVCX MOVR4,AX TESTR8,8000H JZ DD1 NEGR4DD1: MOVAX,R3 ;積分項和微分項相加,判溢出 ADDAX,R4 MOVR5,AX JO L9L2: MOVAX,R5 ADDAX,R2 MOVR6,AX JO L3L5: MOVAX,R6 ;計算比例項 MOVCX,KPP IMULCX MOVCX,1000H IDIVCX MOVCX,AX RCL AH,01H PUSHF RCR AL,01H POPF JC LLL1 ;判溢出,溢出賦極值 CMP CH,00H JZ LLL2 MOV AL,7FH JMP LLL2LLL1: CMP CH,0FFH JZ LLL2 MOV AL,80HLLL2: MOV R7,AL ;CK=CK+CK_1 ADDAL,CK_1 JO L8L18: MOVCK_1,AL ADDAL,80H MOVCK,AL RET ;PID子程序返回L8: TESTR7,80H ;溢出處理程序 JNZL17 MOVAL,7FH JMPL18L17: MOVAL,80H JMPL18 L9: TESTR3,8000H JNZL1 MOV R5,7FFFH JMPL2L1: MOVR5,8000H JMPL2L3: TESTR2,8000H JNZL4 MOVR6,7FFFH JMPL5L4: MOVR6,8000H JMPL5CODE ENDS ENDSTART實驗十三溫度閉環(huán)控制實驗一、實驗?zāi)康?.了解溫度調(diào)節(jié)閉環(huán)控制方法。2.掌握PID控制規(guī)律及算法。二、實驗設(shè)備PC機一臺,TD-PITE實驗裝置一套。三、實驗內(nèi)容溫度閉環(huán)控制原理如圖14.1所示。人為數(shù)字給定一個溫度值,與溫度測量電路得到的溫度值〔反應(yīng)量〕進行比擬,其差值經(jīng)過PID運算,將得到控制量并產(chǎn)生PWM脈沖,通過驅(qū)動電路控制溫度單元是否加熱,從而構(gòu)成溫度閉環(huán)控制系統(tǒng)。圖14.1溫度控制實驗原理圖溫度控制單元中由7805與一個24Ω的電阻構(gòu)成回路,回路電流較大使得7805芯片發(fā)熱。用熱敏電阻測量7805芯片的溫度可以進行溫度閉環(huán)控制實驗。由于7805裸

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論