微機(jī)原理課程設(shè)計(jì) 溫度測控系統(tǒng)
南通大學(xué)電子信息學(xué)院微機(jī)原理課程設(shè)計(jì)報 告 書 課 題 名 溫度測控系統(tǒng) 班 級 _ _集成092_ _ 姓 名 _ 杜軼群 指導(dǎo)教師 胡慧 日 期 2012.6.112012.6.15 組長:劉奇組員:宋林峰 張偉 杜軼群14目錄1、 設(shè)計(jì)目的- 3二、設(shè)計(jì)內(nèi)容和要求- 3三、設(shè)計(jì)原理- 3四、程序代碼- 6五、硬件系統(tǒng)調(diào)試- 10六、設(shè)計(jì)總結(jié)與體會- 13七、參考文獻(xiàn)- 14Proteus是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真及印制電路板設(shè)計(jì)軟件,它可以仿真、分析各種模擬電路與集成電路。軟件提供了大量模擬與數(shù)字元器件及外部設(shè)備,各種虛擬儀器,特別是它具有對單片機(jī)及其外圍電路組成的綜合系統(tǒng)的交互仿真功能。Proteus 7主要由ISIS和ARES兩部分組成,ISIS的主要功能是原理圖設(shè)計(jì)及與電路原理圖的交互仿真,ARES主要用于印制電路板的設(shè)計(jì)。一、設(shè)計(jì)目的1.鞏固和加深課堂所學(xué)知識;通過課程設(shè)計(jì),熟悉和掌握微機(jī)系統(tǒng)的軟件、硬件設(shè)計(jì)的方法、設(shè)計(jì)步驟,得到微機(jī)開發(fā)應(yīng)用方面的初步訓(xùn)練。2.學(xué)習(xí)掌握一般的硬件的設(shè)計(jì)方法和查閱、運(yùn)用資料的能力;真正做到理論聯(lián)系實(shí)際,提高動手能力和分析問題、解決問題的能力,實(shí)現(xiàn)由學(xué)習(xí)知識到應(yīng)用知識的初步過渡。3.熟練掌握微機(jī)系統(tǒng)與接口擴(kuò)展電路的設(shè)計(jì)方法,熟練應(yīng)用8086匯編語言編寫應(yīng)用程序和實(shí)際設(shè)計(jì)中的硬軟件調(diào)試方法和步驟,熟悉微機(jī)系統(tǒng)的硬軟件開發(fā)工具的使用方法4.通過溫度測控系統(tǒng)仿真系統(tǒng)設(shè)計(jì)與制作,深入了解與掌握數(shù)模轉(zhuǎn)換,數(shù)碼管顯示和電動機(jī)驅(qū)動的方法,熟悉proteus軟件操作。二、設(shè)計(jì)內(nèi)容和要求總體要求:根據(jù)題意自行設(shè)計(jì)電路,在實(shí)驗(yàn)箱上連接線路并編寫相關(guān)匯編程序,調(diào)試成功。設(shè)計(jì)內(nèi)容:利用ADC0809采用中斷方式設(shè)計(jì)一個溫度測控系統(tǒng),在七段數(shù)碼管上顯示溫度值,并根據(jù)測試的溫度進(jìn)行控制。當(dāng)檢測溫度到達(dá)溫度上限60時啟動直流電動機(jī),而溫度低于下限30時停止電動機(jī)。數(shù)碼管上的顯示內(nèi)容為:XX C(采用十進(jìn)制顯示) 三、設(shè)計(jì)原理溫度測試系統(tǒng)主要由溫度傳感器、A/D轉(zhuǎn)換、顯示及電動機(jī)塊組成。溫度傳感器將外部溫度信號轉(zhuǎn)換為電壓信號,經(jīng)放大電路,再經(jīng)由ADC0808轉(zhuǎn)化為數(shù)字信號進(jìn)行處理,軟件中對數(shù)字量進(jìn)行判斷,并作相應(yīng)的跳轉(zhuǎn),由8255實(shí)現(xiàn)正常顯示和啟動電動機(jī)。各個芯片由8086來進(jìn)行整體的控制。1.電路原理圖直流電動機(jī)上圖中ADC0808的INO輸入端接溫度傳感的ANZ端,進(jìn)行溫度量的采集,CLOCK接1M;8255A中A、B口與數(shù)碼管連接如上圖,PA0接直流電機(jī)的OUTPUT,其中地址端口接40H。2.系統(tǒng)功能框圖單片機(jī)控制電路溫度傳感A/D轉(zhuǎn)換電路數(shù)碼管顯示3.程序流程圖開始初始化8255A選0809通道0并啟動A/D讀A/D轉(zhuǎn)換結(jié)果溫度60啟動直流電動機(jī)溫度>=30停止電動機(jī)數(shù)碼管數(shù)值顯示延時上圖實(shí)現(xiàn)了本次實(shí)驗(yàn)所要要求的功能:檢測溫度到達(dá)溫度上限60時啟動直流電動機(jī),而溫度低于下限30時停止電動機(jī),并在數(shù)碼管上顯示所采集到的數(shù)字量和轉(zhuǎn)換后的模擬量。程序采用中斷處理的方式。四、程序代碼DATA SEGMENTtab db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hbuf db 0 a8255 equ 40h ;8255的A,B,C口及控制口地址b8255 equ 42hc8255 equ 44hQ8255 equ 46hadc0808 equ 20h ;ADC0808端口地址DATA ENDSCODE SEGMENT CODEASSUME DS:DATA,CS:CODESTART:movax,datamovds,axcli ;關(guān)中斷mov dx,Q8255 ; 8255A初始化設(shè)置。8255A控制字,A口為輸出,B 口為輸出, C口的高四位為輸出moval,80houtdx,almov ax,0 ;設(shè)置中斷向量,非屏蔽中斷NMImov es,axmov si,02H*4mov ax,offset int0mov es:si,axmov ax,seg int0mov es: si+2,axmov al,00010011b ;設(shè)置ICW1mov dx,30Hout dx,almov al,00010000b ;ICW2mov dx,32hout dx,almov al,1bh ;ICW4out dx,almov al,0feH ;OCW1out dx,almov al,80H ;OCW2mov dx,30Hout dx,alsti ;開中斷movsi,offset bufMAIN :movdx,adc0808 ;啟動ADC0808轉(zhuǎn)換moval,0outdx,almov al,80H ;OCW2mov dx,30Hout dx,alMOV CX,5MON:moval,simovah,0movbl,20divblmovbx,offset tabxlat ;換碼指令,換成對應(yīng)的段碼movdx,b8255 ;顯示十位outdx,almoval,11101111b ;位碼選通movdx,c8255outdx,alcall DELAY_1Smoval,0ffh ;不選中任何位選outdx,almoval,ahmovah,0movbl,2divblmovbx,offset tabxlat ;換碼指令oral,80h ;個位帶小數(shù)點(diǎn)movdx,b8255outdx,al ;顯示個位及小數(shù)點(diǎn)moval,11011111b ;位碼選通movdx,c8255outdx,alcall DELAY_1S ;調(diào)用延時moval,0ffh ;不選中任何位選outdx,almoval,ah ;小數(shù)位顯示movbx,offset tabxlatmovdx,b8255outdx,almoval,10111111bmovdx,c8255outdx,alcall DELAY_1Smoval,0ffhoutdx,almoval,01111111boutdx,almoval,00111001b ;顯示最后字母”C”movdx,b8255outdx,alcall DELAY_1Smovdx,c8255moval,0ffhoutdx,alcall DELAY_1Smoval,sishral,1 ;邏輯右移一位,減小位擴(kuò)展時的誤差cmp al,30 ;溫度低于30時,跳到downjbdowncmp al,60 ;溫度高于60度時,跳到upjaupjmpMAIN LOOP MONdown:mov dx,a8255moval,00h ;PA0輸出0,低電平不啟動電機(jī)outdx,aljmpMAIN up:mov dx,a8255 moval,01h ;PA0輸出1,高電平啟動電機(jī)outdx,aljmp MAIN int0 proc near ;中斷程序push axpush bxPUSH SIpushfCLImovdx,adc0808 ;讀取轉(zhuǎn)換好的數(shù)據(jù)inal,dxmovsi,almov al,80H ;OCW2mov dx,30H out dx,alstipopfPOP SIpop bxpop axiretint0 endpDELAY_1Sproc ;延時子程序 Push bx Push cxpush simovbx,1LP2:movcx,10LP1:LOOPLP1DECbxJNZ LP2Pop siPop cxPop bxret DELAY_1S ENDPCODEENDSENDSTART五、硬件系統(tǒng)調(diào)試譯碼電路:顯示電路: 模數(shù)轉(zhuǎn)化電路:中斷電路:電動機(jī)電路: 調(diào)試過程中遇到的主要問題和解決辦法 (1)仿真過程中,不能啟動模數(shù)轉(zhuǎn)換電路仿真運(yùn)行中,改變模擬信號時,系統(tǒng)并不能做出相應(yīng)的顯示。解決辦法: 利用debug下8086Source Code 單步運(yùn)行調(diào)試程序后,發(fā)現(xiàn)程序返回點(diǎn)過了0809啟動的程序段,所以將程序中返回點(diǎn)由MON改至MAIM啟動處,進(jìn)而實(shí)現(xiàn)程序啟動。(2)當(dāng)壓力超出3060范圍,程序里只調(diào)用電機(jī)停止模塊,而不調(diào)用數(shù)碼管顯示模塊。單步調(diào)試發(fā)現(xiàn),此時數(shù)碼管顯示模塊被跳過。解決辦法: 在電機(jī)控制程序段結(jié)束后,跳轉(zhuǎn)到數(shù)碼管顯示部分。 六、設(shè)計(jì)總結(jié)與體會這次微機(jī)原理的課程設(shè)計(jì)歷時一個星期,我們組做的是一個溫度測控系統(tǒng),同時采用了中斷控制,用到了ADC0809、8255A和8259A等芯片。通過上網(wǎng)進(jìn)行了相關(guān)內(nèi)容的查詢,了解了實(shí)驗(yàn)的基本原理,設(shè)計(jì)出了本系統(tǒng)的基本思想,然后按照實(shí)驗(yàn)的要求由簡單到難,逐步實(shí)現(xiàn)了在七段數(shù)碼管上顯示出采集過來的數(shù)字量部分,在此基礎(chǔ)之上實(shí)現(xiàn)了當(dāng)檢測溫度到數(shù)字量上限60時啟動直流電動機(jī),而溫度低于下限30時停止電動機(jī)這個功能。以前對編程工具的使用還處于一知半解的狀態(tài),但是經(jīng)過了一段上機(jī)的實(shí)踐,對于怎么排錯,差錯,怎么看每一步的運(yùn)行結(jié)果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。由于實(shí)驗(yàn)采集到的數(shù)字量不是很直觀,最后我們將三位的數(shù)字量轉(zhuǎn)換為了溫度并和數(shù)字量一并在數(shù)碼管上顯示出來,進(jìn)一步完善了本系統(tǒng)。在實(shí)現(xiàn)各個功能的過程中遇到的主要問題:(1)中斷程序不執(zhí)行,0809不能啟動,這個問題經(jīng)過單步調(diào)試才發(fā)現(xiàn)是跳轉(zhuǎn)的程序段不正確。(2)第二個問題是經(jīng)老師提醒才發(fā)現(xiàn),設(shè)計(jì)電路在采集。相當(dāng)于把所學(xué)的接口知識又復(fù)習(xí)了一遍,同時將平時實(shí)驗(yàn)中存在的一些疑問都解決掉了。對于8255數(shù)碼管的顯示和0809 A/D轉(zhuǎn)換器基本工作原理有了更深入的了解,對兩者結(jié)合起來實(shí)現(xiàn)比較復(fù)雜的功能(本實(shí)驗(yàn)中實(shí)現(xiàn)了在數(shù)碼管上顯示溫度值,并用溫度值來控制直流電機(jī)的運(yùn)行情況的功能)也有了一定的了解。通過這次課程設(shè)計(jì)使我懂得了理論和實(shí)踐相結(jié)合起來是很重要的,從理論中知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識和實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。七、參考文獻(xiàn)1 顧暉,梁惺彥.微機(jī)原理與接口技術(shù)基于8086和Proteus仿真M.北京:電子工業(yè)出版社,2011,262-2932 徐晨,陳繼紅.微機(jī)原理及應(yīng)用M.北京:高等教育出版社,20043 康華光.電子技術(shù)基礎(chǔ)(數(shù)電部分)M.北京:高等教育出版社,2006,143-1514 沈美明,溫冬嬋.IBM-PC匯編程序設(shè)計(jì)M.北京:清華大學(xué)出版社,20015 周潤景,張麗娜.Proteus入門實(shí)用教程M.北京:機(jī)械工業(yè)出版社,2007