單片機課程設計報告 一個數(shù)字溫度的控制檢測的電路板產(chǎn)品設計
《單片機課程設計報告 一個數(shù)字溫度的控制檢測的電路板產(chǎn)品設計》由會員分享,可在線閱讀,更多相關《單片機課程設計報告 一個數(shù)字溫度的控制檢測的電路板產(chǎn)品設計(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 第一章: 概 述 1 第二章: 課程設計功能描述 2 第三章: 課程設計分析設計 3 3.1. 溫度采集系統(tǒng) 3 3.2. DS18B20單線數(shù)字溫度傳感器 3 3.2.1.DS18B20的管腳 4 3.2.2.DS18B20存儲器 5 3.2.3.DS18B20高速暫存存儲器 5 3.2.4.DS18B20有4個主要的數(shù)據(jù)部件 6 3.2.5.DS18B20和電源的接線方式 7 3.3. DS18B20的工作原理 8 3.3.1.DS18B20的初始化 8 3.3.2.對DS18B20寫和讀 9 3.3.3.DS18B20在應用中應注意的事項 12 3.4.
2、 AT89S52單片機簡介 13 3.4.1. AT89S52主要功能列舉如下 13 3.4.2. AT89S52各引腳功能介紹 13 第四章:繪制硬件電路圖并對硬件電路圖進行說明 16 4.1.PROTUEL軟件簡介 16 4.2.PROTUEL軟件特色 17 第五章:繪制軟件流程圖和對軟件流程圖的介紹 19 第六章:上機調試及運行結果 21 6.1.對proteus的簡介 21 6.2.proteus功能特點 21 6.3.電路仿真 22 6.4.調試遇到的問題分析 22 6.5. PRTEUS原理圖 22 總結 23 參考文獻 24 附錄 25 第
3、一章: 概 述 大學本科學生動手能力的培養(yǎng)和提高是大學本科教育的一個重要內(nèi)容。如何讓學生在學好基礎知識的同時,迅速掌握應用技術,實驗與課程設計環(huán)節(jié)起著非常重要的作用。 單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)。 目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡通訊
4、與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械以及各種智能機械了。因此,單片機的學習、開發(fā)與應用將造就一批計算機應用與智能化控制的科學家、工程師。 基于單片機的強大功能和重要作用,也為了提高我們的動手能力,使我們能把理論學習和實踐操作結合起來,加深對理論學習的理解。我們在10—11學年的下半學期第十四、十五和十六周進行了單片機應用這樣的課程設計。 課設的具體內(nèi)容是通過DS18B20這個一總線數(shù)字傳感器,用
5、C52控制實現(xiàn)對溫度的實時監(jiān)測,并且超過設定的最高或最低溫度時可以自動報警,這個最高和最低溫度可以通過對單片機的控制來隨意設置。 第二章: 課程設計功能描述 本次單片機應用的課程設計要求是運用AT89S52,DS18B20和四個開關以及若干導線、電阻、三極管設計并制作一個數(shù)字溫度的控制檢測的電路板產(chǎn)品其具體實現(xiàn)的功能如下: 1.能過實現(xiàn)運用DS18B20這一溫度傳感器可以實時準確的檢測出當前的溫度,并將檢測的溫度清楚準確的顯示在四位集成數(shù)碼管上。 2.能夠運用AT89S52可以控制DS18B20的檢測的過程,在數(shù)碼管上可以初始化顯示。 3.能夠設置最高溫度和最低溫
6、度,并且通過開關控制AT89S52可以把最高溫度和最高溫度可以顯示在數(shù)碼管上。 4.能夠通過開關控制AT89S52,可以調整最高溫度和最低溫度。 5.能過實現(xiàn)當檢測的實際溫度高于最高溫度或低于最低溫度時都能夠報警提示。 第三章: 課程設計分析設計 3.1. 溫度采集系統(tǒng) 如圖3.1所示為溫度采集報警系統(tǒng)框圖。該課程設計將以單片機控制的溫度采集系統(tǒng)為主,利用單片機完成對溫度的檢測,實現(xiàn)安全溫度內(nèi)正常顯示溫度值,超出設定溫度則進行報警。 系統(tǒng)在溫度采集時主要應用DS18B20芯片,該器件經(jīng)過初始化后單片機首先進行ROM匹配,當收到測溫器件發(fā)回的信號時證明該器
7、件正常工作,接著單片機發(fā)出溫度轉換命令進行溫度采集,測溫的精確度很高,設計中用三極管進行數(shù)碼管顯示驅動。 圖3.1 系統(tǒng)圖框 3.2. DS18B20單線數(shù)字溫度傳感器 DS18B20、 DS1822 “一線總線”數(shù)字化溫度傳感器是DALLAS最新單線數(shù)字溫度傳感器, 同DS1820一樣,DS18B20也 支持“一線總線”接口,測量溫度范圍為 -55C~+125C,在-10~+85C范圍內(nèi),精度為0.5C。DS1822的精度較差為 2C ?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電
8、壓范圍,使系統(tǒng)設計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20可以程序設定9~12位的分辨率,精度為0.5C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色! DS1822與 DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為2C,適用于對性能要求不高,成本控制嚴格的應用,是經(jīng)濟型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術的新概念。DS18B20和D
9、S1822使電壓、特性及封裝有更多的選擇,讓我們可以構建適合自己的經(jīng)濟的測溫系統(tǒng)。 圖3.2 DS18B20內(nèi)部結構圖 3.2.1.DS18B20的管腳 DS18B20內(nèi)部結構主要有四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下: DQ為數(shù)字信號輸入/輸出端 GND為電源地 VDD為外接電源輸入端 圖3.3 DS18B20 3.2.2.DS18B20存儲器 DS18B20的存儲器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,
10、以及一個配置寄存器。存儲器能完整的確定一線端口的通訊,數(shù)字開始用寫寄存器的命令寫進寄存器,接著也可以用讀寄存器的命令來確認這些數(shù)字。當確認以后就可以用復制寄存器的命令來將這些數(shù)字轉移到可電擦除RAM中。當修改過寄存器中的數(shù)時,這個過程能確保數(shù)字的完整性。 高速暫存器RAM是由8個字節(jié)的存儲器組成;第一和第二個字節(jié)是溫度的顯示位。第三和第四個字節(jié)是復制TH和TL,同時第三和第四個字節(jié)的數(shù)字可以更新;第五個字節(jié)是復制配置寄存器,同時第五個字節(jié)的數(shù)字可以更新;六、七、八三個字節(jié)是計算機自身使用。用讀寄存器的命令能讀出第九個字節(jié),這個字節(jié)是對前面的八個字節(jié)進行校驗。 3.2.3.DS18B20高
11、速暫存存儲器 高速暫存存儲器由9個字節(jié)組成,其分配如表5所示。當溫度轉換命令發(fā)布后,經(jīng)轉換所得的溫度值以二字節(jié)補碼形式存放在 高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表1所示。對應的溫度計算: 當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變?yōu)樵a,再計算十進制值。表3.1是對應的一部分溫度值。第九個字節(jié)是 冗余檢驗字節(jié)。 表3.1 DS18B20暫存寄存器分布 根據(jù)DS18B20的通訊協(xié)議,主機(單片機)控制DS18B20完成溫度轉換必須經(jīng)過三個步驟:每一次讀寫之前
12、都要對DS18B20進行 復位操作,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后 釋放,當DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。 3.2.4.DS18B20有4個主要的數(shù)據(jù)部件 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5
13、+X4+1)。光刻ROM的作用 是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達,其中S為符號位。 圖3.4 DS18B20測溫原理框圖 3.2.5.DS18B20和電源的接線方式 DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當VDD端口接3.0V—5.5V的電壓時是使用外部電源;當VDD端口接地時使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電
14、,I/O口線要接5KΩ左右的上拉電阻。 圖3.5 DS18B20寄生電源供電方式 此次課設我們用的是外部電源供電方式,在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度,同時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉換溫度,讀取的溫度總是85℃。 圖3.6 DS18B20外接電源供電方式 3.3. DS18B20的工作原理 DS18B20的
15、讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉換時的延時時間由2s 減為750ms。 DS18B20測溫原理如圖3.4所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預置在-55℃所對應的一個基數(shù)值。計數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,計數(shù)器
16、1的預置將重新被裝入,計數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即 為所測溫度。圖3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預置值。 3.3.1.DS18B20的初始化 主機首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應答。 做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒
17、的低電平出現(xiàn),如果有,在總線轉為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。 圖3.7初始化時序圖 3.3.2.對DS18B20寫和讀 接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機是如何進行寫0、寫1、讀0和讀1的。 寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結束,
18、然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。 圖3.8寫操作的時序圖 對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結束。若要送出1則釋放總線為高電平。主機在一開
19、始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進行采樣檢測,采樣期內(nèi)總線為低電平則確認為0。采樣期內(nèi)總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成 圖3.9讀操作的時序圖 DS18B20 單線通信功能是分時完成的,他有嚴格的時隙概念,如果出現(xiàn)序列混亂, 1-WIRE 器件將不響應主機,因此讀寫時序很重要。系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉換必須經(jīng)過以下 3個步驟 : (1)每次讀寫前對 DS18B20 進行復位初始化。復位
20、要求主 CPU 將數(shù)據(jù)線 下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us~60us 左右,然后發(fā)出60us~240us 的存在低脈沖,主 CPU 收到此信號后表示復位成功。 (2)發(fā)送一條 ROM 指令 (3)發(fā)送存儲器指令 表3.2 DS18B20的ROM指令集 表3.3 DS18B20的RAM指令集 現(xiàn)在我們要做的是讓DS18B20進行一次溫度的轉換,那具體的操作就是: 1、主機先作個復位操作, 2、主機再寫跳過ROM的操作(CCH)命令, 3、然后主機接著寫個轉換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉換的操作。
21、在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。 讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。 1、主機發(fā)出復位操作并接收DS18B20的應答(存在)脈沖。 2、主機發(fā)出跳過對ROM操作的命令(CCH)。 3、主機發(fā)出讀取RAM的命令(BEH),隨后主機依次讀取DS18B20發(fā)出的從第0一第8,共九個字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個數(shù)據(jù)后就不再理會后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。 在這里說明一下
22、,第二步跳過對ROM操作的命令是在總線上只有一個器件時,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應,這樣就會出現(xiàn)數(shù)據(jù)沖突。 3.3.3.DS18B20在應用中應注意的事項 DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題: 1. 較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統(tǒng)程序設計時,對 DS1820操作部分最
23、好采用匯編語言實現(xiàn)。 2. 在DS1820的有關資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認為可以掛任意多個 DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統(tǒng)設計時 要加以注意。 3. 連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的 測溫數(shù)據(jù)將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正 常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,
24、在用DS1820進行長距離測溫系統(tǒng)設計時要充分考 慮總線分布電容和阻抗匹配問題。 4. 在DS1820測溫程序設計中,向DS1820發(fā)出溫度轉換命令后,程序總要等待DS1820的返回信號,一旦 某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予 一定的重視。 測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地 3.4. AT89S52單片機簡介 AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Fl
25、sah存儲器。 3.4.1. AT89S52主要功能列舉如下 1、擁有靈巧的8位CPU和在系統(tǒng)可編程Flash 2、晶片內(nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz) 3、內(nèi)部程序存儲器(ROM)為 8KB 4、內(nèi)部數(shù)據(jù)存儲器(RAM)為 256字節(jié) 5、32 個可編程I/O 口線 6、8 個中斷向量源 7、三個 16 位定時器/計數(shù)器 8、三級加密程序存儲器 9、全雙工UART串行通道 3.4.2. AT89S52各引腳功能介紹 VCC: AT89S52電源正端輸入,接+5V。 VSS: 電源地端。 XTAL1: 單芯片系統(tǒng)時鐘的反相放大器輸入端。
26、XTAL2: 系統(tǒng)時鐘的反相放大器輸出端,一般在設計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機。 RESET: AT89S52的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,AT89S51便能完成系統(tǒng)重置的各項動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。 EA/Vpp: "EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低
27、電平動作,也就是說當此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因為其內(nèi)部無程序存儲器空間。如果是使用 8751 內(nèi)部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。 ALE/PROG: ALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。AT89S52可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總線(A0~A7)鎖進鎖存器中,因為AT89S52是以多工的方式送
28、出地址及數(shù)據(jù)。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當成程序規(guī)劃的特殊功能來使用。 PSEN: 此為"Program Store Enable"的縮寫,其意為程序儲存啟用,當8051被設成為讀取外部程序代碼工作模式時(EA=0),會送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。 PORT0(P0.0~P0.7): 端口0是一個
29、8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當做I/O用時可以推動8個LS的TTL負載。如果當EA引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0就以多工方式提供地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)。設計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。 PORT2(P2.0~P2.7): 端口2是具有內(nèi)部提升電路的雙向I
30、/O端口,每一個引腳可以推動4個LS的TTL負載,若將端口2的輸出設為高電平時,此端口便能當成輸入端口來使用。P2除了當做一般I/O端口使用外,若是在AT89S52擴充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)A8~A15,這個時候P2便不能當做I/O來使用了。 PORT1(P1.0~P1.7): 端口1也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LS TTL負載,同樣地若將端口1的輸出設為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。 P
31、ORT3(P3.0~P3.7): 端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或寫入控制等功能。 其引腳分配如下: P3.0:RXD,串行通信輸入。 P3.1:TXD,串行通信輸出。 P3.2:INT0,外部中斷0輸入。 P3.3:INT1,外部中斷1輸入。 P3.4:T0,計時計數(shù)器0輸入。 P3.5:T1,計時計數(shù)器1輸入。 P3.6:WR:外部數(shù)據(jù)存儲器的寫入信號。 P3.7:RD,外部數(shù)據(jù)存儲器的讀取信號。 RST:復位輸入。當
32、振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的
33、選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 第四章:繪制硬件電路圖并對硬件電路圖進行說明 4.1.PROTUEL軟件簡介
34、 早期的PROTEL主要作為印制板自動布線工具使用,運行在DOS環(huán)境,對硬件的要求很低,在無硬盤286機的1M內(nèi)存下就能運行,但它的功能也較少,只有電原理圖繪制與印制板設計功能,其印制板自動布線的布通率也低,而現(xiàn)今的PROTEL已發(fā)展到PROTEL99(網(wǎng)絡上可下載到它的測試板),是個龐大的EDA軟件,完全安裝有200多M,它工作在WINDOWS95環(huán)境下,是個完整的板級全方位電子設計系統(tǒng),它包含了電路原理圖繪制、模擬電路與數(shù)字電路混合信號仿真、多層印制電路板設計(包含印制電路板自動布線)、可編程邏輯器件設計、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server(客戶/服
35、務器)體系結構,同時還兼容一些其它設計軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動布線可實現(xiàn)高密度PCB的100%布通率。在國內(nèi)PROTEL軟件較易買到,有關PROTEL軟件和使用說明的書也有很多,這為它的普及提供了基礎。想更多地了解PROTEL的軟件功能或者下載PROTEL99的試用版,可以在INTERNET上。 4.2.PROTUEL軟件特色 Protel99 SE共分5個模塊,分別是原理圖設計、PCB設計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設計。 以下介紹一些Protel99SE的部分最新功能: 1,可生成30多種格式的
36、電氣連接網(wǎng)絡表; 2,強大的全局編輯功能; 3,在原理圖中選擇一級器件,PCB中同樣的器件也將被選中; 4,同時運行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡 5,既可以進行正向注釋元器件標號(由原理圖到PCB),也可以進行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設計上的一致性; 6,滿足國際化設計要求(包括國標標題欄輸出,GB4728國標庫); * 方便易用的數(shù)?;旌戏抡妫嫒軸PICE 3f5); , 7,方便的打印預覽功能,不用修改PCB文件就可以直接控制打印結果; 8,獨特
37、的3D顯示可以在制板之前看到裝配事物的效果; 9,強大的CAM處理使您輕松實現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機文件、測試點報告等; 在原理圖部分,新增加“靈巧粘帖”可以將一些不同的對象拷貝到原理圖當中,比如一些網(wǎng)絡標號, 一頁圖紙的BOM表,都可以拷貝粘帖到原理圖當中。原理圖文件切片,多個器件集體操作,文本筐的直接編輯,箭頭的添加,器件精確移動,總線走線,自動網(wǎng)標選擇等! 強大的前端將多層次、多通道的原理圖輸入、VHDL開發(fā)和功能仿真、布線前后的信號完整性分析功能。在信號仿真部分,提供完善的混合信號仿真,在對XSPICE 標準的支持之外,還支持對Pspice模型和電路的仿真
38、。對FPGA設計提供了豐富的IP內(nèi)核,包括各種處理器、存儲器、外設、接口、以及虛擬儀器 。 在PCB部分,除了Protel2004中的多通道復制;實時的、阻抗控制布線功能;SitusTM自動布線器等新功能以外,Altium Designer 6.0還著重在:差分對布線,F(xiàn)PGA器件差分對管腳的動態(tài)分配, PCB和FPGA之間的全面集成,從而實現(xiàn)了自動引腳優(yōu)化和非凡的布線效果。還有PCB文件切片,PCB多個器件集體操作,在PCB文件中支持多國語言(中文、英文、德文、法文、日文),任意字體和大小的漢字字符輸入,光標跟隨在線信息顯示功能,光標點可選器件列表,復雜BGA器件的多層自動扇出,提供了對高
39、密度封裝(如BGA)的交互布線功能, 總線布線功能,器件精確移動,快速鋪銅等功能。 圖4.1 PROTEL原理圖 圖4.2 PCB板 第五章:繪制軟件流程圖和對軟件流程圖的介紹 首先啟動系統(tǒng),然后初始化DS18B20,初始化的目的是檢測單片機的外部連接的DS18B20和單片機的連接狀態(tài)是否良好并且檢測DS18B20是否處于正常工作狀態(tài)。 DS18B20處于正常工作的狀態(tài)并且單片機得到DS18B20的應答,那么接這就跳過ROM,跳過對ROM操作的命令是在總線上只有一個器件時,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應,這樣就會出
40、現(xiàn)數(shù)據(jù)沖突。 接著單片機發(fā)出溫度轉換命令,DS18B20開始進行溫度的檢測和轉換,將檢測的結果顯示在數(shù)碼管上,這時單片機根據(jù)DS18B20傳來的數(shù)據(jù)進行判斷,如果檢測的溫度大于設定的最高溫度或低于設定的最低溫度,此時進行報警,報警后返回初始化。如果沒有超過設定溫度直接返回初始化。 圖5.1 流程圖 第六章:上機調試及運行結果 6.1.對proteus的簡介 軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及
41、外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他
42、系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器 6.2.proteus功能特點 原理布圖 自動或人工布線 SPICE電路仿真 革命性的特點 (1)互動的電路仿真 用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真處理器及其外圍電路 可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型 上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發(fā)環(huán)境。 6.
43、3.電路仿真 在PROTEUS繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實物運行狀態(tài)和過程。 PROTEUS不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。 它的元器件、連接線路等卻和傳統(tǒng)的單片機實驗硬件高度對應。這在相當程度上替代了傳統(tǒng)的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調試、運行結果等。 由于PROTEUS提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數(shù)量、質
44、量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學生實踐精神、創(chuàng)造精神的平臺。 隨著科技的發(fā)展,“計算機仿真技術”已成為許多設計部門重要的前期設計手段。它具有設計靈活,結果、過程的統(tǒng)一的特點??墒乖O計時間大為縮短、耗資大為減少,也可降低工程制造的風險。相信在單片機開發(fā)應用中PROTEUS也能茯得愈來愈廣泛的應用。 使用Proteus 軟件進行單片機系統(tǒng)仿真設計, 是虛擬仿真技術和計算機多媒體技術相結合的綜合運用,有利于培養(yǎng)學生的電路設計能力及仿真軟件的操作能力;實踐證明,在使用 Proteus 進行系統(tǒng)仿真開發(fā)成功之后再進行實際制作,能極大提高單片機系統(tǒng)設計效率。因此,Proteus 有較高
45、的推廣利用價值。 6.4.調試遇到的問題分析 我們在調試的過程中遇到了很多問題,整個調試的過程實際上就是解決這些問題的過程。 首先我們仿真的時候我們發(fā)現(xiàn)數(shù)碼管根本不會顯示,我們很失望,后來經(jīng)過分析發(fā)現(xiàn)三極管接反了,本來是三極管的發(fā)射極與集成數(shù)碼管的位相連接,集電極接電源,而我們正好接反了,后來改正后數(shù)碼管可以顯示了。 接著我們遇到的問題就是我們的數(shù)碼管顯示錯誤,我們認真的檢查后發(fā)現(xiàn)我們的程序和所用的數(shù)碼管不一致,我們程序是共陽極的,但是我們在選器件的時候選成了共陰極,后來我們改正了錯誤。 改完后發(fā)現(xiàn)數(shù)碼管的四位數(shù)字顯示的順序正好相反,我們分析后覺得是單片機和集成數(shù)碼管的位連接的時候位
46、接反了。 我們在調試的過程中是把改我們的原理圖和改程序結合者進行調試的最終達到了我們的期望得到的結果。 6.5. PRTEUS原理圖 圖6.1 PROTEUS仿真圖 圖6.2 焊接產(chǎn)品 總結 本次課程設計的寫作是在老師的指導下進行的。針對在寫作過程中遇到許多的難題老師都給以認真的解釋,為此,向老師表示最衷心的謝意。我在這次課程設計中,學會了怎么去發(fā)現(xiàn)問題,解決問題。遇到不明白的問題都會積極的去詢問老師,或者去找尋相關的資料。從中學到了很多知識。這次課程設計使我們有機會把我們的課堂理論知識運用到實際生活中,貼近生活,實現(xiàn)我們的人生價值。并且通過對知識的綜合利用,加入個人的
47、分析和比較,加深了了我們對理論知識的理解和運用。
參考文獻
【1】倪曉軍 單片機原理與接口技術 北京:清華大學大學出版社
2009.9
【2】 廖常初 PLC 編程及應用 北京:機械工業(yè)出版社
2010.1
【3】 胡學林 可編程控制器教程 北京:電子工業(yè)出版社
2008.6
附錄
#include
48、 unsigned int #define uchar unsigned char //宏定義 sbit p34=P2^4; sbit p35=P2^5; sbit p36=P2^6; sbit dp=P0^7; sbit p37=P2^7; sbit DQ=P2^2; //定義DS18B20總線I/O sbit SET=P3^1; //定義選擇報調整警溫度上限和下限(1為上限,0為下限) /****P3.2和P3.3為調整溫度報警增加鍵和減少鍵******/ sbit LING=P2^0; //定義響鈴 signed char m; //溫
49、度值全局變量 bit sign=0; //外部中斷狀態(tài)標志 signed char shangxian=38; //上限報警溫度,默認值為38 signed char xiaxian=6; //下限報警溫度,默認值為5 uchar code LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延時子程序*****/ void Delay(uint i) { while( i-- ); } /*****初始化DS18B20*****/ void Ini
50、t_DS18B20(void) { unsigned char x=0; DQ=1; Delay(8); //稍做延時 DQ=0; //單片機將DQ拉低 Delay(80); //精確延時,大于480us DQ=1; //拉高總線 Delay(14); x=DQ; //稍做延時后,如果x=0則初始化成功,x=1則初始化失敗 Delay(20); } /*****讀一個字節(jié)*****/ unsigned char ReadOneChar(void) {
51、 unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) { DQ=0; // 給脈沖信號 dat>>=1; DQ=1; // 給脈沖信號 if(DQ) dat|=0x80; Delay(4); } return(dat); } /*****寫一個字節(jié)*****/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0
52、; i--) { DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat>>=1; } } void Tmpchange(void) //發(fā)送溫度轉換命令 { Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0x44); //啟動溫度轉換 } /*****讀取溫度*****/ unsigned int ReadTemperature(void) { unsigned char a=0; u
53、nsigned char b=0; unsigned int t=0; float tt=0; Tmpchange(); Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器 a=ReadOneChar(); //讀低8位 b=ReadOneChar(); //讀高8位 t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*100+0.5; //放大10倍輸出并四舍五
54、入 return(t); } /*****顯示開機初始化等待畫面*****/ Disp_init() { P0 = 0x80; //顯示- p34=1;p35=0;p36=0;p37=0; Delay(200); P0 = 0x80; p34=0;p35=1;p36=0;p37=0; Delay(200); P0 = 0x80; p34=0;p35=0;p36=1;p37=0; Delay(200); P0 = 0x80; p34=0;p35=0;p36=0;p37=1; Delay(200); P0 = 0
55、x80;
}
/*****顯示溫度子程序*****/
Disp_Temperature() //顯示溫度
{
uint a,b,c,d,e;
e=ReadTemperature(); //獲取溫度值
a=e/1000; //計算得到十位數(shù)字
b=e/100-a*10; //計算得到個位數(shù)字
d=e%10; //計算得到小數(shù)點后兩位
c=(e%100)/10; //計算得到小數(shù)點后一位
m=e/100;
if(m>shangxian || m 56、n) LING=1; //溫度不在范圍內(nèi)報警
else LING=0;
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[d]; //顯示小數(shù)點后兩位
p34=1;p35=0;p36=0;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[c]; //顯示小數(shù)點后一位
p34=0;p35=1;p36=0;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[b]; // 57、顯示個位
dp=0;
p34=0;p35=0;p36=1;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[a]; //顯示十位
p34=0;p35=0;p36=0;p37=1;
Delay(300);
p34=0;p35=0;p36=0;p37=0; //關閉顯示
}
disptiaozheng()
{
uchar f,g,j,k;
f=shangxian/10;
g=shangxian%10;
j=xiaxian/10;
k=xiaxi 58、an%10;
p34=0;p35=0;p36=0;p37=0;
P0 =0xc0; //顯示0
p34=1;p35=0;p36=0;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
P0 =0xc0; //顯示0
p34=0;p35=1;p36=0;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
if(SET==1)
{
P0 =LEDData[g];
dp=0; //顯示上限溫度個位
}
else
{
59、P0 =LEDData[k];
dp=0;
}
p34=0;p35=0;p36=1;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
if(SET==1) P0 =LEDData[f]; //顯示上限溫度十位
else
{
if(f==0) P0=0x00; //不顯示下限溫度十位
else P0 =LEDData[j]; //顯示下限溫度十位
}
p34=0;p35=0;p36=0;p37=1;
Delay(200);
p34=0;p35=0;p36=0;p37=0; 60、 //關閉顯示
Delay(20);
}
/*****外部中斷0服務程序*****/
void int0(void) interrupt 0
{
EX0=0; //關外部中斷0
sign=1;
if(SET==1) shangxian++;
else xiaxian++;
Delay(500);
EX0=1;
}
/*****外部中斷1服務程序*****/
void int1(void) interrupt 2
{
EX1=0; //關外部中斷0
sign=1;
if(SET==1) sha 61、ngxian--;
else xiaxian--;
Delay(500);
EX1=1;
}
/*****主函數(shù)*****/
void main(void)
{
uint z;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
ReadTemperature();
LING=0;
for(z=0;z<100;z++)
{
Disp_init();
}
while(1)
{
Disp_Temperature();
if(sign==1)
{
for(z=0;z<300;z++)
disptiaozheng();
sign=0;
}
}
}
參考文獻
【1】倪曉軍 單片機原理與接口技術 北京:清華大學大學出版社
2009.9
【2】 霍孟友 王愛群 單片機原理與應用學習概要及題解 機械工業(yè)出版社
2005.3
【3】 賈好來 MCS-51單片機原理及應用 機械工業(yè)出版社
2007.6
34
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案