《微機原理課程設計 溫度測控系統(tǒng)》由會員分享,可在線閱讀,更多相關《微機原理課程設計 溫度測控系統(tǒng)(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
南通大學電子信息學院
微機原理課程設計
報 告 書
課 題 名 溫度測控系統(tǒng)
班 級 ________ _集成092__ _
姓 名 ___ 杜軼群
指導教師 胡慧
日 期 2012.6.11—2012.6.15
組長:劉奇
組員:宋林峰 張偉 杜軼群
14
目錄
1、 設計目的----------------------------------
2、---------- 3
二、設計內(nèi)容和要求-------------------------------------- 3
三、設計原理-------------------------------------------- 3
四、程序代碼-------------------------------------------- 6
五、硬件系統(tǒng)調(diào)試---------------------------------------- 10
六、設計總結與體會-------------------------------------- 13
七、參考文獻----
3、---------------------------------------- 14
Proteus是英國Labcenter公司開發(fā)的電路分析與實物仿真及印制電路板設計軟件,它可以仿真、分析各種模擬電路與集成電路。軟件提供了大量模擬與數(shù)字元器件及外部設備,各種虛擬儀器,特別是它具有對單片機及其外圍電路組成的綜合系統(tǒng)的交互仿真功能。Proteus 7主要由ISIS和ARES兩部分組成,ISIS的主要功能是原理圖設計及與電路原理圖的交互仿真,ARES主要用于印制電路板的設計。
一、設計目的
1.鞏固和加深課堂所學知識;
4、通過課程設計,熟悉和掌握微機系統(tǒng)的軟件、硬件設計的方法、設計步驟,得到微機開發(fā)應用方面的初步訓練。
2.學習掌握一般的硬件的設計方法和查閱、運用資料的能力;真正做到理論聯(lián)系實際,提高動手能力和分析問題、解決問題的能力,實現(xiàn)由學習知識到應用知識的初步過渡。
3.熟練掌握微機系統(tǒng)與接口擴展電路的設計方法,熟練應用8086匯編語言編寫應用程序和實際設計中的硬軟件調(diào)試方法和步驟,熟悉微機系統(tǒng)的硬軟件開發(fā)工具的使用方法
4.通過溫度測控系統(tǒng)仿真系統(tǒng)設計與制作,深入了解與掌握數(shù)模轉換,數(shù)碼管顯示和電動機驅(qū)動的方法,熟悉proteus軟件操作。
二、設計內(nèi)容和要求
總體要求:根據(jù)題意自行設
5、計電路,在實驗箱上連接線路并編寫相關匯編程序,調(diào)試成功。
設計內(nèi)容:
利用ADC0809采用中斷方式設計一個溫度測控系統(tǒng),在七段數(shù)碼管上顯示溫度值,并根據(jù)測試的溫度進行控制。當檢測溫度到達溫度上限60℃時啟動直流電動機,而溫度低于下限30℃時停止電動機。數(shù)碼管上的顯示內(nèi)容為:XX C(采用十進制顯示)
三、設計原理
溫度測試系統(tǒng)主要由溫度傳感器、A/D轉換、顯示及電動機塊組成。溫度傳感器將外部溫度信號轉換為電壓信號,經(jīng)放大電路,再經(jīng)由ADC0808轉化為數(shù)字信號進行處理,軟件中對數(shù)字量進行判斷,并作相應的跳轉,由8255實現(xiàn)正常顯示和啟動電動機。各個
6、芯片由8086來進行整體的控制。
1.電路原理圖
直流
電動機
上圖中ADC0808的INO輸入端接溫度傳感的ANZ端,進行溫度量的采集,CLOCK接1M;8255A中A、B口與數(shù)碼管連接如上圖,PA0接直流電機的OUTPUT,其中地址端口接40H。
2.系統(tǒng)功能框圖
單片機控制電路
溫度傳感
A/D轉換電路
數(shù)碼管顯示
3.程序流程圖
開始
初始化8255A
選0809通道0并啟動A/D
讀A/D轉換結果
溫度>60℃
啟動直流電動機
溫度>=30℃
停止電動機
數(shù)碼管數(shù)值顯示
延時
上圖實現(xiàn)了本次實驗所
7、要要求的功能:檢測溫度到達溫度上限60℃時啟動直流電動機,而溫度低于下限30℃時停止電動機,并在數(shù)碼管上顯示所采集到的數(shù)字量和轉換后的模擬量。程序采用中斷處理的方式。
四、程序代碼
DATA SEGMENT
tab db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
buf db 0
a8255 equ 40h ;8255的A,B,C口及控制口地址
b8255 equ 42h
c8255 equ 44h
Q8255 equ 46h
adc0808 equ 20h
8、 ;ADC0808端口地址
DATA ENDS
CODE SEGMENT 'CODE'
ASSUME DS:DATA,CS:CODE
START: mov ax,data
mov ds,ax
cli ;關中斷
mov dx,Q8255 ; 8255A初始化設置。8255A控制字,A口為輸出,B 口為輸出, C口的高四位為輸出
mov al,80h
out dx,al
mov ax,0 ;設置中斷向量,非屏蔽中斷NMI
mov es,ax
mov si,02
9、H*4
mov ax,offset int0
mov es:[si],ax
mov ax,seg int0
mov es: [si+2],ax
mov al,00010011b ;設置ICW1
mov dx,30H
out dx,al
mov al,00010000b ;ICW2
mov dx,32h
out dx,al
mov al,1bh ;ICW4
out dx,al
mov al,0feH ;OCW1
out dx,al
mov a
10、l,80H ;OCW2
mov dx,30H
out dx,al
sti ;開中斷
mov si,offset buf
MAIN : mov dx,adc0808 ;啟動ADC0808轉換
mov al,0
out dx,al
mov al,80H ;OCW2
mov dx,30H
out dx,al
MOV CX,5
MON: mov al,[si]
mov ah,0
mov bl,20
div bl
mov bx,offset tab
11、 xlat ;換碼指令,換成對應的段碼
mov dx,b8255 ;顯示十位
out dx,al
mov al,11101111b ;位碼選通
mov dx,c8255
out dx,al
call DELAY_1S
mov al,0ffh ;不選中任何位選
out dx,al
mov al,ah
mov ah,0
mov bl,2
div bl
mov bx,offset tab
xlat ;換碼指令
or
12、al,80h ;個位帶小數(shù)點
mov dx,b8255
out dx,al ;顯示個位及小數(shù)點
mov al,11011111b ;位碼選通
mov dx,c8255
out dx,al
call DELAY_1S ;調(diào)用延時
mov al,0ffh ;不選中任何位選
out dx,al
mov al,ah ;小數(shù)位顯示
mov bx,offset tab
xlat
mov dx,b8255
out
13、dx,al
mov al,10111111b
mov dx,c8255
out dx,al
call DELAY_1S
mov al,0ffh
out dx,al
mov al,01111111b
out dx,al
mov al,00111001b ;顯示最后字母”C”
mov dx,b8255
out dx,al
call DELAY_1S
mov dx,c8255
mov al,0ffh
out dx,al
call DELAY_1S
mov al,[si]
shr al,1
14、 ;邏輯右移一位,減小位擴展時的誤差
cmp al,30 ;溫度低于30時,跳到down
jb down
cmp al,60 ;溫度高于60度時,跳到up
ja up
jmp MAIN
LOOP MON
down: mov dx,a8255
mov al,00h ;PA0輸出0,低電平不啟動電機
out dx,al
jmp MAIN
up: mov dx,a8255
mov al,01h ;PA0輸出1,高電平啟動電機
out dx
15、,al
jmp MAIN
int0 proc near ;中斷程序
push ax
push bx
PUSH SI
pushf
CLI
mov dx,adc0808 ;讀取轉換好的數(shù)據(jù)
in al,dx
mov [si],al
mov al,80H ;OCW2
mov dx,30H
out dx,al
sti
popf
POP SI
pop bx
pop ax
iret
int0 endp
DELAY_1S proc
16、 ;延時子程序
Push bx
Push cx
push si
mov bx,1
LP2: mov cx,10
LP1: LOOP LP1
DEC bx
JNZ LP2
Pop si
Pop cx
Pop bx
ret
DELAY_1S ENDP
CODE ENDS
END START
五、硬件系統(tǒng)調(diào)試
譯碼電路:
顯示電路:
模數(shù)轉化電路:
中斷電路:
電動機電路:
調(diào)試過程中遇到的主要問題和解決辦法
17、
(1)仿真過程中,不能啟動模數(shù)轉換電路
仿真運行中,改變模擬信號時,系統(tǒng)并不能做出相應的顯示。
解決辦法:
利用debug下8086\Source Code 單步運行調(diào)試程序后,發(fā)現(xiàn)程序返回點過了0809啟動的程序段,所以將程序中返回點由MON改至MAIM啟動處,進而實現(xiàn)程序啟動。
(2)當壓力超出30~60范圍,程序里只調(diào)用電機停止模塊,而不調(diào)用數(shù)碼管顯示模塊。單步調(diào)試發(fā)現(xiàn),此時數(shù)碼管顯示模塊被跳過。
解決辦法:
在電機控制程序段結束后,跳轉到數(shù)碼管顯示部分。
六、設計總結與體會
這次微機原理的課程設計歷時
18、一個星期,我們組做的是一個溫度測控系統(tǒng),同時采用了中斷控制,用到了ADC0809、8255A和8259A等芯片。通過上網(wǎng)進行了相關內(nèi)容的查詢,了解了實驗的基本原理,設計出了本系統(tǒng)的基本思想,然后按照實驗的要求由簡單到難,逐步實現(xiàn)了在七段數(shù)碼管上顯示出采集過來的數(shù)字量部分,在此基礎之上實現(xiàn)了當檢測溫度到數(shù)字量上限60時啟動直流電動機,而溫度低于下限30時停止電動機這個功能。以前對編程工具的使用還處于一知半解的狀態(tài),但是經(jīng)過了一段上機的實踐,對于怎么排錯,差錯,怎么看每一步的運行結果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。由于實驗采集到的數(shù)字量不是很直觀,最后我們將三
19、位的數(shù)字量轉換為了溫度并和數(shù)字量一并在數(shù)碼管上顯示出來,進一步完善了本系統(tǒng)。
在實現(xiàn)各個功能的過程中遇到的主要問題:(1)中斷程序不執(zhí)行,0809不能啟動,這個問題經(jīng)過單步調(diào)試才發(fā)現(xiàn)是跳轉的程序段不正確。(2)第二個問題是經(jīng)老師提醒才發(fā)現(xiàn),設計電路在采集。
相當于把所學的接口知識又復習了一遍,同時將平時實驗中存在的一些疑問都解決掉了。對于8255數(shù)碼管的顯示和0809 A/D轉換器基本工作原理有了更深入的了解,對兩者結合起來實現(xiàn)比較復雜的功能(本實驗中實現(xiàn)了在數(shù)碼管上顯示溫度值,并用溫度值來控制直流電機的運行情況的功能)也有了一定的了解。
通過這次課程設計使我懂得了理論和實踐相結合起來是
20、很重要的,從理論中知識是遠遠不夠的,只有把所學的理論知識和實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。
七、參考文獻
[1] 顧暉,梁惺彥.微機原理與接口技術—基于8086和Proteus仿真[M].北京:電子工業(yè)出版社,2011,262-293
[2] 徐晨,陳繼紅.微機原理及應用[M].北京:高等教育出版社,2004
[3] 康華光.電子技術基礎(數(shù)電部分)[M].北京:高等教育出版社,2006,143-151
[4] 沈美明,溫冬嬋.IBM-PC匯編程序設計[M].北京:清華大學出版社,2001
[5] 周潤景,張麗娜.Proteus入門實用教程[M].北京:機械工業(yè)出版社,2007