1、設(shè)計(jì)內(nèi)容與要求1、通過按鍵設(shè)置溫度上、下限,基準(zhǔn)溫度20℃,AD信號的0V~5V對應(yīng)-20℃~70℃。
2、讀入A/D轉(zhuǎn)換數(shù)據(jù),若數(shù)據(jù)<=下限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示L,并使步進(jìn)電機(jī)正轉(zhuǎn),若數(shù)據(jù)>上限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示H,并使步進(jìn)電機(jī)反轉(zhuǎn),下限<若數(shù)據(jù)<=上限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示C,步進(jìn)電機(jī)不轉(zhuǎn)動。
3、本機(jī)地址為08H,當(dāng)接到上位機(jī)發(fā)的08H(P1.0口接開關(guān),高電平發(fā)送)時,則回發(fā)08H,且本機(jī)P1.4口輸出高電平,上位機(jī)接受后P1.3口輸出高電平。
當(dāng)接到上位機(jī)發(fā)的AAH(P1.1口接開關(guān),高電平發(fā)送)時,則將當(dāng)前溫度發(fā)給上位機(jī),且本機(jī)P1.5口輸出高電平,上位機(jī)數(shù)碼管顯示溫度。
當(dāng)收到上位機(jī)發(fā)的55H(P1.2口接開關(guān),高電平發(fā)送)時,下位機(jī)修改設(shè)定上、下限,且本機(jī)P1.6口輸出高電平,數(shù)碼管全部顯示0。
當(dāng)收到上位機(jī)發(fā)送的信號不是上面三個時,本機(jī)P1.7口輸出高電平,數(shù)碼管全部顯示0。
2、設(shè)計(jì)方案本設(shè)計(jì)采用AT89C51單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡單,安裝方便,可以與PC機(jī)進(jìn)行通信。
本設(shè)計(jì)利用單片機(jī)最小系統(tǒng)和ADC0809芯片、電位計(jì)設(shè)計(jì)溫度采集系統(tǒng)。并設(shè)計(jì)一個人機(jī)接口電路:鍵盤采用獨(dú)立式按鍵(功能是調(diào)節(jié)溫度的上下限),同時設(shè)計(jì)了步進(jìn)電機(jī)控制電路,顯示器采用共陰極LED顯示。系統(tǒng)的總體設(shè)計(jì)方案框圖如圖1所示:

圖1
按照系統(tǒng)設(shè)計(jì)功能的要求,系統(tǒng)主要由單片機(jī)、ADC0809芯片、電位器、步進(jìn)電機(jī)、LED數(shù)碼顯示管和PC機(jī)等組成,如圖2所示:

圖2
系統(tǒng)的硬件電路主要由復(fù)位電路、顯示電路、AD轉(zhuǎn)換電路、步進(jìn)電路控制電路、晶振電路組成,系統(tǒng)總體結(jié)構(gòu)方框圖如圖3所示:

圖3
3、方案實(shí)現(xiàn)3.1系統(tǒng)的軟件設(shè)計(jì)本系統(tǒng)的軟件設(shè)計(jì)主要可分為主程序,AD轉(zhuǎn)換程序,溫度顯示程序,步進(jìn)電機(jī)控制程序,中斷系統(tǒng)程序等幾個模塊。
1、主程序⑴功能
主程序的主要功能是負(fù)責(zé)讀取當(dāng)前溫度,并進(jìn)行判斷,從而實(shí)時顯示溫度并根據(jù)判斷結(jié)果控制步進(jìn)電機(jī)的工作。
⑵程序流程圖
如圖4所示:

圖4
2、AD轉(zhuǎn)換程序⑴功能
AD轉(zhuǎn)換程序分為AD采樣程序和采樣溫度轉(zhuǎn)換程序兩部分。其中,AD采樣程序的功能是啟動AD轉(zhuǎn)換并在100μs的延時后得到AD采樣值;采樣溫度轉(zhuǎn)換程序的功能是得到16次AD采樣值,然后取平均值,得到平均AD采樣值,并通過公式將平均AD采樣值轉(zhuǎn)換為實(shí)際溫度。
⑵程序流程圖
如圖5所示:

圖5
3、溫度顯示程序⑴功能
溫度顯示程序分為數(shù)碼管溫度顯示程序和顯示數(shù)據(jù)刷新程序。數(shù)碼管溫度顯示程序的功能是將數(shù)碼管需要顯示的溫度與溫度上下限進(jìn)行比較,并送入相應(yīng)的段碼,讓數(shù)碼管顯示溫度的正負(fù)(若為正顯示0,若為負(fù)顯示負(fù)號)、當(dāng)前溫度、溫度狀態(tài)(L、C、H)以及溫度上下限的范圍;顯示數(shù)據(jù)刷新程序的功能是利用定時器T0,定時1ms,每隔1ms從右到左依次點(diǎn)亮數(shù)碼管,并進(jìn)行循環(huán),數(shù)碼管能夠進(jìn)行動態(tài)、平穩(wěn)的顯示。
⑵程序流程圖
如圖6所示:

圖6
4、步進(jìn)電機(jī)控制程序⑴功能
步進(jìn)電機(jī)控制程序的功能是通過判斷步進(jìn)電機(jī)工作方式控制位,控制步進(jìn)電機(jī)的正轉(zhuǎn)以及反轉(zhuǎn)。
⑵程序流程圖
如圖7所示:

圖7
5、中斷系統(tǒng)程序⑴功能
中斷系統(tǒng)程序分為溫度上下限設(shè)定程序和串口通信程序。溫度上下設(shè)定程序的功能是通過兩個外部中斷程序,采用下降沿觸發(fā)方式并設(shè)置兩個按鍵來設(shè)定上下限;串口通信程序的功能是通過串口中斷,并選擇串行口方式2的工作方式,進(jìn)行數(shù)據(jù)的接受和發(fā)送。
⑵程序流程圖
如圖8所示:

圖8
3.2系統(tǒng)的硬件設(shè)計(jì)本系統(tǒng)的硬件設(shè)計(jì)主要可分為時鐘電路、復(fù)位電路、AD轉(zhuǎn)換、步進(jìn)電機(jī)、數(shù)碼顯示及串口通信等幾個模塊。
1、時鐘電路如圖9:

圖9
2、復(fù)位電路如圖10:

圖10
3、AD轉(zhuǎn)換如圖11:

圖11
4、步進(jìn)電機(jī)如圖12:

圖12
5、數(shù)碼顯示如圖13:

圖13
6、串口通信如圖14:

圖14
7、完整原理圖如圖15:

圖15
4、系統(tǒng)調(diào)試系統(tǒng)的軟件調(diào)試借助于Lab6000通用微控制器實(shí)驗(yàn)系統(tǒng)。在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟件的初調(diào),就是要使各個子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分以下幾個步驟進(jìn)行:
1、功能子程序的調(diào)試功能子程序的調(diào)試包括AD轉(zhuǎn)換、溫度顯示以及步進(jìn)電機(jī)控制等子程序的調(diào)試。在調(diào)試功能子程序時,許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說明該子程序己調(diào)試通過。調(diào)試時由小到大,由里到外。例如,調(diào)試溫度顯示子程序時,先調(diào)通其需要的AD轉(zhuǎn)換子程序和參數(shù)處理子程序,然后將它們連起來進(jìn)行通調(diào)。通調(diào)時,也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算的結(jié)果相同時,該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序的調(diào)試同理。
2、程序流程的調(diào)試
程序流程的調(diào)試主要是查看程序運(yùn)行的步驟是否正確,在某時刻程序運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個中斷服務(wù)程序。在調(diào)試過程中,在各個中斷服務(wù)子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都能運(yùn)行到,則程序流程基本正確。
3、程序的通調(diào)
在完成整個程序流程的調(diào)試后,運(yùn)行程序,進(jìn)行程序的通調(diào),通過器件的現(xiàn)象來判斷程序的正確性。若不正確則設(shè)置斷點(diǎn)檢查錯誤。
如圖16為上位機(jī)調(diào)試實(shí)物圖:

圖16
如圖17為下位機(jī)調(diào)試實(shí)物圖:

圖17
5、結(jié)論本次測溫系統(tǒng)設(shè)計(jì)主要由AT89C51和ADC0809來實(shí)現(xiàn)功能。因此需要通過查閱資料來了解這些器件的基本結(jié)構(gòu),主要功能和注意事項(xiàng)等等。
整個設(shè)計(jì)從確定題目,到尋找相關(guān)資料,再到選擇合適的器件,接著對電路圖的繪制,程序的編寫,最終調(diào)試。一步步走過來,一點(diǎn)點(diǎn)的進(jìn)步,花了大量的時間和精力,而成果也是喜人的。
通過這次設(shè)計(jì),不僅鍛煉自己分析問題、處理問題的能力,還提高了自己的動手能力。在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這是我在這次課程設(shè)計(jì)中的最大收獲。但同時也發(fā)現(xiàn)了自己的不足,特別是在程序的編寫方面,有些細(xì)節(jié)部分沒有考慮到,比如開始沒有考慮到雙機(jī)通信時獨(dú)立運(yùn)行的問題,這樣編出的程序運(yùn)行起來效率會大大降低,沒有實(shí)用性,但在不斷的改進(jìn)中,最終解決了這個問題;但在上位機(jī)實(shí)現(xiàn)對下位機(jī)的溫度調(diào)控這一設(shè)計(jì)中,沒有設(shè)計(jì)好,未能實(shí)現(xiàn)遠(yuǎn)距離溫度控制,自己程序方面還有待加強(qiáng)。
總的來說,自己從此課程設(shè)計(jì)收獲了很多,一個設(shè)計(jì)的完成需要團(tuán)隊(duì)間的密切合作,而且需要提升自己的自學(xué)能力,腳踏實(shí)地。通過這次設(shè)計(jì),相信自己在未來的學(xué)習(xí)和生活中會繼續(xù)努力,提升自己的知識水平,不斷完善自我。
參考文獻(xiàn)[1]《單片機(jī)原理與應(yīng)用設(shè)計(jì)》第二版.張毅剛主編.電子工業(yè)出版社
[2]《Altium Designer電路設(shè)計(jì)標(biāo)準(zhǔn)教程》程曉鴿編著.科學(xué)出版社
附錄上位機(jī)程序