1. 如何自己製作單片機最小系統
需要的工具如下:
1.指針萬用表
2.數字萬用表 現在用的最多的是蜂鳴檔
3.剪刀
4.斜口鉗(剪引腳)、鋼絲鉗(壓東西)、森海塞爾PX80(聽音樂必須的)
5.尖嘴鉗(拉東西)、剝線鉗(剝導線絕緣皮)
6.壓線鉗(壓排線用的)、美工刀(刮洞洞板最外圍電源線上的絕緣層)
搭建最小系統,主要是單片機能夠正常工作的最低配置,電路圖如下圖所示,其中紅線部分表示可以焊接在一塊。將各種元器件按照電路圖所示位置擺放好,就可以開始焊接了。電路圖上其他管腳沒有標注。
根據電路圖焊接完成後,一個最小系統的單片機就完成了。
2. 請簡述單片機系統的設計過程是怎樣的
單片機應用系統設計分為硬體設計與軟體設計兩部分及系統調試三個部分,大致過程如下:一、硬體電路設計1、根據任務需求規劃確定單片機類型及外圍介面電路方案;2、根據方案設計具體電路。二、軟體設計1、根據目標任務的功能需求,結合硬體電路控制方式,規劃設計軟體功能模塊;2、將功能模塊細化成流程圖;3、根據流程圖編寫程序代碼;4、將編譯後的目標代碼下載到實物單片機或虛擬單片機進行軟體模擬調試;三、系統調試1、將初調成功的目標的代碼下載到單片機目標試驗板進行軟硬體聯調及功能驗證;2、驗證成功符合設計要求,就可以進入小批量測試了。
3. 2. 目前單片機應用系統設計與開發的一般過程
第一步,理清方案,選擇完成目標需要的元器件及輔料。
第二步,原理圖設計
第三步,軟體設計,利用模擬系統模擬,驗證原理及程序
第四步,PCB設計,加工,焊接
第五步,調試。
4. 單片機應用程序的開發步驟
具體步驟如下:
1、首先,開啟我們的keil軟體,具體的安裝步驟就不做太多的介紹了;
開啟後,點擊菜單欄上的Project選項,創建我們的工程,如圖所示;
編譯完成後,在我們的文件夾下找到.hex的文件,將其燒寫到我們的晶元中即可。
5. 1.設計單片機最小系統(其具體到器件) 2.寫出硬體的工作原理 畫出軟體的流程圖
單片機最小系統,或者稱為最小應用系統,是指用最少的元件組成的單片機可以工作的系統.
對51系列單片機來說,最小系統一般應該包括:單片機、晶振電路、復位電路.
下面給出一個51單片機的最小系統電路圖.
說明
復位電路:由電容串聯電阻構成,由圖並結合"電容電壓不能突變"的性質,可以知道,當系統一上電,RST腳將會出現高電平,並且,這個高電平持續的時間由電路的RC值來決定.典型的51單片機當RST腳的高電平持續兩個機器周期以上就將復位,所以,適當組合RC的取值就可以保證可靠的復位.一般教科書推薦C取10u,R取8.2K.當然也有其他取法的,原則就是要讓RC組合可以在RST腳上產生不少於2個機周期的高電平.至於如何具體定量計算,可以參考電路分析相關書籍.
晶振電路:典型的晶振取11.0592MHz(因為可以准確地得到9600波特率和19200波特率,用於有串口通訊的場合)/12MHz(產生精確的uS級時歇,方便定時操作)
單片機:一片AT89S51/52或其他51系列兼容單片機
特別注意:對於31腳(EA/Vpp),當接高電平時,單片機在復位後從內部ROM的0000H開始執行;當接低電平時,復位後直接從外部ROM的0000H開始執行.這一點是初學者容易忽略的.
復位電路:
一、復位電路的用途
單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現死機,按下重啟按鈕電腦內部的程序從頭開始執行。單片機也一樣,當單片機系統在運行中,受到環境干擾出現程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執行。
單片機復位電路如下圖:
二、復位電路的工作原理
在書本上有介紹,51單片機要復位只需要在第9引腳接個高電平持續2US就可以實現,那這個過程是如何實現的呢?
在單片機系統中,系統上電啟動的時候復位一次,當按鍵按下的時候系統再次復位,如果釋放後再按下,系統還會復位。所以可以通過按鍵的斷開和閉合在運行的系統中控制其復位。
開機的時候為什麼為復位
在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據公式,可以算出電容充電到電源電壓的0.7倍(單片機的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。
也就是說在電腦啟動的0.1S內,電容兩端的電壓時在0~3.5V增加。這個時候10K電阻兩端的電壓為從5~1.5V減少(串聯電路各處電壓之和為總電壓)。所以在0.1S內,RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機中小於1.5V的電壓信號為低電平信號,而大於1.5V的電壓信號為高電平信號。所以在開機0.1S內,單片機系統自動復位(RST引腳接收到的高電平信號時間為0.1S左右)。
按鍵按下的時候為什麼會復位
在單片機啟動0.1S後,電容C兩端的電壓持續充電為5V,這是時候10K電阻兩端的電壓接近於0V,RST處於低電平所以系統正常工作。當按鍵按下的時候,開關導通,這個時候電容兩端形成了一個迴路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內,從5V釋放到變為了1.5V,甚至更小。根據串聯電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統自動復位。
總結:
1、復位電路的原理是單片機RST引腳接收到2US以上的電平信號,只要保證電容的充放電時間大於2US,即可實現復位,所以電路中的電容值是可以改變的。
2、按鍵按下系統復位,是電容處於一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。
51單片機最小系統電路介紹
1.51單片機最小系統復位電路的極性電容C1的大小直接影響單片機的復位時間,一般採用10~30uF,51單片機最小系統容值越大需要的復位時間越短。
2.51單片機最小系統晶振Y1也可以採用6MHz或者11.0592MHz,在正常工作的情況下可以採用更高頻率的晶振,51單片機最小系統晶振的振盪頻率直接影響單片機的處理速度,頻率越大處理速度越快。
3.51單片機最小系統起振電容C2、C3一般採用15~33pF,並且電容離晶振越近越好,晶振離單片機越近越好4.P0口為開漏輸出,作為輸出口時需加上拉電阻,阻值一般為10k。
設置為定時器模式時,加1計數器是對內部機器周期計數(1個機器周期等於12個振盪周期,即計數頻率為晶振頻率的1/12)。計數值N乘以機器周期Tcy就是定時時間t。
設置為計數器模式時,外部事件計數脈沖由T0或T1引腳輸入到計數器。在每個機器周期的S5P2期間采樣T0、T1引腳電平。當某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時,則計數器加1,更新的計數值在下一個機器周期的S3P1期間裝入計數器。由於檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期。當晶振頻率為12MHz時,最高計數頻率不超過1/2MHz,即計數脈沖的周期要大於2ms。
6. 【單片機打鈴系統設計】 c51語言單片機打鈴系統設計
畢業綜合訓練
(畢業論文/設計形式用)
課題名稱 單片機打鈴系統設計
學 院 信息工程學院
專 業 電子信息工程設計
班 級 13專電子1班
姓 名 李躍 學號 2013242638
指導老師 何健
江西科技學院
畢業綜合訓練任務書
學院 信息工程學院 專業 電子信息工程技術 年級 13 班級 電子專1班 姓名 李躍 起止日期 題目 單片機打鈴設計
1.畢業綜合訓練任務及要求(根據題目性質對學生提出具體要求)
設計基於單片機的打鈴裝置,用DS1302對時、分、秒計時和設置打鈴時間,采
用三線串列數據傳輸介面與STC89C52進行同步通信,用矩陣鍵盤來設置時間值,
並通過8255晶元讀入設置值,最後通過89C52單片機晶元綜合控制[1],把當前
時間送到數碼管顯示,到點把信號送入蜂鳴器,實現打鈴,撰寫畢業論文。
2.畢業綜合訓練的原始資料及依據(包括做調研的背景,研究條件、
應用環境等)
3.主要參考資料、文獻
[1] 張鑫. 單片明宏機原理及應用[M].北京:電子工業出版社,2005.8.
[2] 康光華. 電子技術基礎. 模擬部分[M].北京:高等教育出版社,2006.1.
[3] 康光華. 電子技術基礎. 數字部分[M].北京:高等教育出版社,2006.1.
[4] 祁偉, 楊亭. 單片機C51程序設計教程與實驗[M].北京:北京航空航天大學出版社,
2006.
[5] 樓然苗. 李光飛. 單片機課程設計指導[M].北京:北京航空航天大學出版社,2007.4
[6] 單片機學習網
指導教師
年 月 日
摘 要
隨著科學技術的飛速發展,單片機應用的范圍越來越廣,本設計正是基於STC89C52型單片機為核心,加上適當的外圍部件,設計而成的簡易自動打鈴系統。
簡易自動打鈴系統的設計以STC89C52單片機晶元和8255晶元的拓展I/0引腳為核心部件,用定時器中斷系統進行計時、數碼管顯示當前時間、蜂鳴器實現打鈴功能、矩陣鍵盤調整顯示時間、電源電路為整個系統提供5V 工作電壓,由以上模塊構成了本系統。根據設計要求,該簡易自動打鈴系統可以進行計時和激拿冊顯示,設置當前時間,實現定點打鈴等功能。該設計簡單、實用、操作便捷。
關鍵字:單片機;自動定點打鈴;設置時間;中斷;矩陣鍵盤;I/O擴展;
目錄
摘 要............................................................................................................................ I
第一章 方案論證與對比.............................................................................................. 1
1.1方案一 採用時鍾晶元和鍵盤實現功能 .............................................................. 1
1.2方案二:採用中斷定時實現功能 ........................................................................ 1
1.3方案比較 ................................................................................................................ 2
第二章 單元電路設計與論證...................................................................................... 3
2.1單片敏旁機、I/O拓展 . ..................................................................................................... 3
2.2打鈴電路設計 . ............................................................................................................ 4
2.3數碼管電路設計 . ........................................................................................................ 4
第三章 程序設定.......................................................................................................... 5
3.1主程序工作流程..................................................................................................... 5
3.2定時器中斷子程序 ................................................................................................ 5
3.3時間設定子程序 . ........................................................................................................ 6
第四章 系統功能實際測試 ......................................................................................... 7
4.1程序實際編譯測試 . .................................................................................................... 7
4.2系統實際測試 . ............................................................................................................ 7
4.3 軟體調試步驟 ............................................................................................................ 7
4.4子程序調試步驟 . ........................................................................................................ 7
4.5調試結果 . .................................................................................................................... 8
4.6系統誤差及性能分析 . ................................................................................................ 8
第五章 設計總結 ......................................................................................................... 9
第六章 詳細儀器清單 ............................................................................................... 10
參考文獻 ..................................................................................................................... 11
附錄1 詳細程序......................................................................................................... 12
第一章 方案論證與對比
1.1方案一 採用時鍾晶元和鍵盤實現功能
方案一原理框圖如圖1.1所示:
圖 1.1 採用時鍾晶元定時實現功能
該系統用DS1302對時、分、秒計時和設置打鈴時間,採用三線串列數據傳輸介面與STC89C52進行同步通信,用矩陣鍵盤來設置時間值,並通過8255晶元讀入設置值,最後通過89C52單片機晶元綜合控制[1],把當前時間送到數碼管顯示,到點把信號送入蜂鳴器,實現打鈴。
1.2方案二:採用中斷定時實現功能
方案二原理框圖如圖1.2
所示:
圖 1.2 採用中斷定時實現功能
該系統以STC89C52單片機為核心控制部件。用8255做I/O拓展晶元,數碼管接8255的PA 、PB 引腳,用動態掃描的方式顯示當前時間。蜂鳴器與單片機的P3.3口相連,當打鈴時間到時,由STC89C52發出打鈴指令。以外部INT0和INT1中斷按鈕實現調時功能。
1.3方案比較
本設計要求能實現基本計時和打鈴功能。計時和打鈴時間設計,方案一中用到了DS1302時鍾晶元計時和打鈴時間設置;方案二中採用定時器中斷來計時並結合軟體設置打鈴時間。上述兩種方案中:方案一的外圍硬體電路設計復雜,而且時鍾晶元沒有得到充分利用,而方案二的軟體計時具有硬體開銷小,成本低,外圍電路設計簡單等優點。上述兩種方案中:方案一的軟體設計比方案二的難度系數大,使程序易讀性不強。綜合對計時的精密程度要求不高的本系統,本設計採用方案一來實現功能。
第二章 單元電路設計與論證
2.1硬體設計總框圖
本設計主要由STC89C52單片機晶元與8255晶元組成的模塊為控制核心、蜂鳴器電路模塊實現打鈴功能、矩陣鍵盤模塊調整當前時間、數碼管顯示模塊顯示時間,由以上四大模塊構成了本系統,詳細電路圖見附錄一,硬體設計總框圖如圖2.1:
圖2.1硬體設計總框圖
2.1單片機、I/O拓展
圖 2.2 主控電路框圖
STC89C52RC 是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP的可反復擦寫1000次的Flash 只讀程序存儲器,器件採用ATMEL 公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及80C51引腳結構,晶元內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的STC89C52可為許多嵌入式控制應用系統提供高性價比的解決方案。STC89C52具有如下特點:40個引腳,8k Bytes Flash片內程序存儲器,256 bytes的隨機存取數據存儲器(RAM ),32個外部雙向輸入/輸出(I/O)口,5個中斷優先順序2層中斷嵌套中斷,2個16位可編程定時/計數器,2個全雙工串列通信口,看門狗
(WDT )電路,片內時鍾振盪器。其主要特性[1]如有:與MCS-51 兼容;8k 可反復擦寫(>1000次)Flash ROM;全靜態工作:0Hz~24MHz;三級程序存儲器鎖定;256*8位內部RAM ;32可編程I/O線;2個16位可編程定時/計數器;5個中斷源;可編程串列通道;低功耗的空閑和掉電模式。I/O拓展採用8255晶元,單片機用89C52,電路框圖如圖2-2所示。
2.2打鈴電路設計
採用P 型三極體為蜂鳴器提供5V 電源,並把STC89C52的P2.0口與三極體的基極相連接,當P2.0口有低電平輸入出時,三極體導通[2],蜂鳴器響應,從而實現打鈴功能。電路框圖如圖2.4所示:
圖2.3打鈴電路框圖
2.3數碼管電路設計
8255的PA 口控制數碼管的位選,低電平有效;PB 口做為段選輸出,接1K 歐姆的限流電阻[3]。如圖2.4所示:
圖2.4數碼管顯示電路框圖
第三章 程序設定
3.1主程序工作流程
主程序首先設置8255模式,並打開中斷0,設置中斷為邊沿觸發模式;其次在死循環中執行讀秒顯示子程序,當定時器滿一秒時,在顯示緩沖區中時間加一,等待送入數碼管顯示;再次按鍵掃描子程序,如果有中斷0或中斷1按鈕被按下時,則轉入相應功能的子程序中;最後如果當前顯示時間滿足預設打鈴條件,通過打鈴判斷子程序跳入對應的打鈴方式中執行[4]。詳細主程序見附錄二,主程序流程圖如圖3.1。
圖 3.1 主程序流程圖
3.2定時器中斷子程序
此子程序為本設計的核心之一,首先初始化定時器T0,設置T0為工作方式1,其初始值為3CB0H (既每次溢出定時50ms ),並對其循環20次,然後把時間加1s ,並送入顯示緩沖區等待顯示[5]。顯示時,先取出內存地址中的數據,然後查得對應的顯示用段碼從PB 口輸出,PA 口將對應的數碼管選中供電,就能顯示緩沖區中的數據值。為了顯示秒位和上下午標志在數碼管顯示上特加了「—」、「A 」、「P 」這三個特殊字元子。程序流程圖如圖3.2:
圖 3.2定時器中斷顯示子程序流程圖
3.3時間設定子程序
時間設定模塊的設計要點是按鍵的去抖處理與「一鍵多態」
[5]
的處理。即
只涉及2個鍵完成了6位時間參數的設定。「一鍵多態」即多種功能的實現思想史,根據按鍵時刻的系統狀態,決定按鍵採取何種動作,即何種功能。
圖 3.3 鍵盤掃描子程序流程圖
第四章 系統功能實際測試
4.1程序實際編譯測試
在Keil C51編譯環境下編譯過程中所產生的誤差主要是在重裝初值的過程中大約需要8個機器周期,本設計採用在程序開始時對定時器賦初值多加8個機器周期來消除此誤差。
最後在Keil C51編譯環境下編譯通過,0警告,0錯誤。
4.2系統實際測試
通過實驗測試,數碼管顯示,按鍵調時,定時打鈴均符合預期,測試成功。
4.3 軟體調試步驟
1、打開軟體後, 在Project 菜單中選擇New Project命令,打開一個新項目。保存此項目,輸入工程文件名後,並保存工程文件的目錄。
2、為項目文件選擇一個目標器件,即選擇8051的類型。在Data base 列表框中選擇「ATML 89C52」,確定。
3、上述設置好後,創建源程序文件並輸入程序代碼。輸入好代碼後點擊「文件/保存」。
4、把源文件添加到項目中,用滑鼠指在目標工作區的目標1,點擊右鍵在彈出的菜單中選擇添加文件到源代碼組,在彈出的添加文件框中,選擇需要添加到項目中的文件。
5、開始編譯,對項目文件進行編譯。若沒有錯誤後進行硬體調試。
4.4子程序調試步驟
子程序調試應一個模塊一個模塊地進行,首先單獨調試各功能子程序,檢查程序是否能夠實現預期的功能,介面電路的控制是否正常等;最後逐步將各子程序連接起來進行總調試。故調試步驟[6]如下:
A 、蜂鳴器的調試
調試方法:先把打鈴程序下載到單片機,讓蜂鳴器發聲,看是否在正確的時間內實現打鈴。
B 、數碼管程序調試
正確的顯示時間是整個程序的關鍵之一。調試方法:先把程序下載到單片機,讓數碼管顯示,是否正確的顯示時間的變化。
C 、鍵盤調時序
正確的顯示所調的時間是整個程序的關鍵之一。調試方法:先把鍵盤程序和顯示程序下載到單片機,讓數碼管顯示,是否正確的所調時間的變化。
4.5調試結果
實現計時和顯示功能(12小時制),可設置當前時間(包括上下午標志,時、分的數字顯示),能在上午7:45和下午10:00定點打鈴,且每次打鈴均為響鈴3s ,停1s ,再響3s 。
4.6系統誤差及性能分析
經測試該簡易自動打鈴系統在一天內會出現時間誤差,該誤差主要是由於晶振自身的誤差所造成的。另外在中斷的過程中,只會在第一次計時時產生時間的偏移,而它所產生累積誤差很小,可以忽略。
第五章 設計總結
通過這次課程設計,我們得到了很多收獲和體會,懂得了團隊合作的重要性和必要性,以及工程設計的大體過程。第一,鞏固和加深了對單片機基本知識和理解,提高了綜合運用所學知識的能力。第二,增強了根據課程需要選學參考資料,查閱手冊,圖表和文獻資料的自學能力。通過獨立思考,深入研究有關問題,學會自己分析解決問題的方法。第三,通過實際方案的分析比較,設計計算,安裝調試等環節,初步掌握了簡單使用電路的分析方法和工程設計方法。第四,在這次課程設計過程中,光有理論知識是不夠的,還必須懂一些實踐中的知識。所以在課程設計的實踐中,我們應將實驗課與課堂教學結合起來,鍛煉自己的理論聯系實際的能力與實際動手能力。第五,掌握了比較常用的儀器的使用方法,提高了動手能力。第六,培養了嚴謹的工作作風和科學態度。
總之這次課程設計,培養了我們綜合應用單片機原理及應用的理論知識和理論聯系實際的能力;在設計的過程中還培養了我們的團隊精神,同學共同協作,一齊商量討論,解決了許多問題。這一切都令我們受益匪淺,在今後的學習工作中我們會一如既往,不斷努力。
第六章 詳細儀器清單
圖6.1詳細儀器清單
參考文獻
[1] 張鑫. 單片機原理及應用[M].北京:電子工業出版社,2005.8. [2] 康光華. 電子技術基礎. 模擬部分[M].北京:高等教育出版社,2006.1. [3] 康光華. 電子技術基礎. 數字部分[M].北京:高等教育出版社,2006.1.
[4] 祁偉, 楊亭. 單片機C51程序設計教程與實驗[M].北京:北京航空航天大學出版社,2006. [5] 樓然苗. 李光飛. 單片機課程設計指導[M].北京:北京航空航天大學出版社,2007.4 [6] 單片機學習網
附錄1 詳細程序
#include #include
#define uchar unsigned char #define uint unsigned int
sbit RING=P3^3;
#define HOR_UP 0x18 //定義鍵值意義 #define MIN_UP 0x28 #define HOR_DOWN 0X14 #define MIN_DOWN 0x24 #define AM_PM 0X48 #define NO_KEY_DOWN 0XFF
uchar xdata PA _at_ 0xD9FF, PB _at_ 0XDBFF, PC _at_ 0XDDFF, //定義外部變數,強制分配地址 EX_PORT_CON _at_ 0XDFFF;
uchar code LED_CODE[]={0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA, //LED段碼(0~9外加一個全滅, 一個A ,一個P) 0X20,0X28,0XFF,0X30,0X70};
uint code RING_TIME[]={465,1320}; //開啟時間(分)
uchar COUNT=0,KEY=NO_KEY_DOWN,HOR=0,MIN=0,SEC=0; //軟計時-游標-鍵值
void Display(); //顯示 void Time_Go(); //時間進位 void Time_Set(); //時間設置 void Ring_Control(); //繼電器控制 void Delay(uint A); //簡單延時 uchar Key_Scan(); //鍵盤掃描
void main() {
EX_PORT_CON=0X81; //8255初始化(PA,PB ,PC_H輸出,PC_L輸入)
PC=0xF0; //鍵盤初始化 TH0=0X3C; //定時器初始化
TH1=TL1=0; TR1=0;
TMOD=0X21;
EA=ET0=TR0=ET1=1; while(1) { Display(); Time_Go();
KEY=Key_Scan(); Ring_Control(); Time_Set(); } }
void Display() {
PB=0XFF; //消影 PA=0XFe; //發送位碼
if(HOR>=12)PB=LED_CODE[12]; //發送段碼 else PB=LED_CODE[11]; Delay(200); //延時
PB=0XFF; //消影 PA=0XFd; if(HOR>12) //發送位碼 PB=LED_CODE[(HOR-12)/10]; else PB=LED_CODE[HOR/10]; //發送段碼 Delay(200); //延時
PB=0XFF; PA=0xfb;
if(HOR>12)PB=LED_CODE[(HOR-2)%10]; else PB=LED_CODE[HOR%10]; Delay(200);
PB=0XFF; //中間橫桿 PA=0XF7;
if(COUNT>10)//在顯示實時時鍾時閃爍,為01秒/周期 PB=0XFF; else
Delay(200);
PB=0XFF; PA=0Xef;
PB=LED_CODE[MIN/10]; Delay(200);
PB=0XFF; PA=0XdF;
PB=LED_CODE[MIN%10]; Delay(130); }
void Timer() interrupt 1 {
TH0=0X3C; //重裝初值 TL0=0XB2;
COUNT++; //軟計時 }
void Ring() interrupt 3 {
RING=~RING; }
void Time_Go() //時間進位 {
if(COUNT>=20) //計數到達20次,即:定時器50MS*20=1S { COUNT=0; //軟計時清零 SEC+=1; // 秒加1 if(SEC>=60) //秒是否到達60 { SEC=0; //清秒位 MIN+=1; //分鍾加1 if(MIN>=60)//分鍾是否到達60 { MIN=0; //清分位 HOR+=1; //小時加1 if(HOR>=24)//小時是否到達24 HOR=0; //清小時位 } } }
}
void Time_Set() {
if(KEY==HOR_UP){if(HOR>=23)HOR=0;else HOR++;}
else if(KEY==HOR_DOWN){if(HOR==0)HOR=23;else HOR--;} else if(KEY==MIN_UP){if(MIN>=59)MIN=0;else MIN++;} else if(KEY==MIN_DOWN){if(MIN==0)MIN=59;else MIN--;} else if(KEY==AM_PM){if(HOR>=12)HOR-=12;else HOR+=12;} }
void Ring_Control() //繼電器控制 {
uint RTC_MIN;
RTC_MIN=HOR*60+MIN; //將實時時鍾 化成 分鍾 if((RTC_MIN==RING_TIME[0])||(RTC_MIN==RING_TIME[1])) { if(((SEC>=3)&&(SEC=7)){TR1=0;RING=1;} else TR1=1; } }
void Delay(uint A) {
while(A--); }
uchar Key_Scan() {
uchar A=4,ROW=0x08,T=NO_KEY_DOWN; if(PC!=0XF0) //是否有鍵按下 {Delay(200); //消抖 if(PC!=0XF0) while(A--) //查詢,逐列 { ROW
if(T!=0X00) //但前列是否有鍵被按下
{
T=(T+(ROW&0XF0)); //計算鍵值
do {Display();Time_Go();} //防止數碼管在按鍵按下時閃爍
while((PC&0X0F)!=0); //鬆手檢測 peak; //跳出循環
}
} PC=0xf0; //鍵盤初始化
}
return T;
} //返回鍵值
16
7. 基於MCS-51單片機的精密溫度控制系統的設計與實現
上傳內容
僅供學習與參考
摘要
本檢測系統硬體設計以AT89C51單片機為核心,用溫度感測器DS18B20實現溫度控制,用數碼管顯示實際溫度和預設溫度,製作數字溫度計,並可以實現溫度預警控制。
單片機系統的軟體編程採用單片機匯編進行編程。應用軟體採用KEIL和PROTEUS模擬軟體模擬實現控制過程。
溫度控制系統是基於單片機的計算機檢測技術的軟硬體開發和面向對象的高級可視化程序開發的有機結合。對溫度控制的發展有很大的好處。如果投入生產,不僅會創造良好的經濟效益,還可提高溫控的簡單化。
關鍵詞 單片機;DS18B20;調節;溫度
Abstract
This examination system hardware design take at89C51 monolithic integrated circuit as a core, realizes the temperature control with temperature sensor DS18B20, Demonstrates the actual temperature and the preinstall temperature with the nixie tube,manufactures the simple intelligence temperature control system - - digit thermometer,And may realize the temperature early warning control.
. The monolithic integrated circuit system's software programming uses the monolithic integrated circuit assembly to carry on the programming. The superior machine application software uses KEIL and the PROTEUS simulation software simulation realizes the controlled process.
This article develops the intelligence temperature control system is based on monolithic integrated circuit's computer examination technology software and hardware development and face the object high-level visualization procere development organic synthesis. Has the very big advantage to temperature control's development. If place in operation, not only will create the good economic efficiency, but may also propose the simplification which the high temperature will control.
Keywords microcontroller;DS18B20;measure;temperture
目錄
摘要 I
Abstract II
第1章 緒論 4
1.1 溫度感測器發展概述 4
1.2 單片機技術簡介 4
1.3 溫度檢測技術的發展 5
第2章 溫度感測器的選擇 8
2.1 測溫方法 8
2.2 DS18B20簡介 9
第3章 軟硬體設計 10
3.1 單片機的選擇 10
3.2 溫度感測器的選擇 10
3.3 模擬軟體的選擇 11
3.4 編譯軟體的選擇 11
3.5 PROTEUS 模擬電路圖 12
第4章 匯編語言程序 13
4.1 主程序和溫度值轉換成顯示值子程序的流程圖 13
4.2 DS18B20溫度子程序和顯示子程序的流程圖 14
4.3 匯編語言源程序 14
第1章 緒論
1.1 溫度感測器發展概述(略)
1.2 單片機技術簡介(略)
1.3 溫度檢測技術的發展(略)
第2章 溫度感測器的選擇
2.1 測溫方法
溫度是一個很重要的物理參數,鋼鐵的冶煉、石油的分餾、塑料的合成以
及農作物的生長等等都必須在一定的溫度范圍內進行,各種構件、材料的體積、電阻、強度以及抗腐蝕等物理化學性質,一般也都會隨溫度而變化。人們利用各種能源為人類服務,也往往是使某些介質通過一定的溫度變化來實現的。所以在生產和化學試驗中,人們經常會碰到溫度測量的問題。
溫度感測器是檢測溫度的器件,其種類最多,應用最廣,『發展最快。眾所周知,日常使用的材料及電子元件大部分都隨溫度而變化,資料【5】中介紹了作為實用感測器必須滿足的一些條件:
(1)在使用溫度范圍內溫度特性曲線要求達到的精度能符合要求:為了能
在較寬的溫度范圍內進行檢測,溫度系數不宜過大,過大了就難以使用,但對
於狹窄的溫度范圍或僅僅定點的檢測,其溫度系數越大,檢測電路也能越簡單。
(2)為了將它用於電子線路的檢測裝置,要具有檢測便捷和易於處理的特
性。隨著半導體器件和信號處理技術的進步,對溫度感測器所要求的輸出特性
應能滿足要求。
(3)特性的偏移和蠕變越小越好,互換性要好。
(4)對於溫度以外的物理量不敏感。
(5)體積小,安裝方便:為了能正確地測量溫度,感測器的溫度必須與被
測物體的溫度相等。感測器體積越小,這個條件越能滿足。
(6)要有較好的機械、化學及熱性能。這對於使用在振動和有害氣體的環
境中特別重要。
(7)無毒、安全以及價廉、維修、更換方便等。
溫度測量的方法很多,根據溫度感測器的使用方式,通常分為接觸式測溫
法與非接觸式測溫法兩類。
(1)接觸式測溫法
由熱平衡原理可知,兩個物體接觸後,經過足夠長時間的熱交換達到熱平
衡,則它們的溫度必然相等。如果其中之一為溫度計,就可以用它對另一個物體實現溫度測量,這種測溫方式稱為接觸式測溫法。接觸式測溫的優點顯而易
見,它簡單,可靠,測量精度高,但同時也存在不足:溫度計要與被測物體有
良好的熱接觸,並充分換熱,從而產生了測溫滯後現象;測溫組件可能與被測
物體發生化學反應;由於受到耐高溫材料的限制,接觸式測溫儀表不可能應用
於很高溫度的測量。
(2)非接觸式測溫法
由於測量組件與被測物體不接觸,利用物體的熱輻射能隨溫度變化的原理
測定物體溫度。因而測量范圍原則上不受限制,測溫速度較快,還可以在運動
中測量。這種測溫方式稱為非接觸式測溫法。它的特點是:不與被測物體接觸,也不改變被測物體的溫度分布,熱慣性小。從原理上看,用這種方法測溫無上限。通常用來測定1000℃以上的移動、旋轉或反應迅速的高溫物體的溫度或表面溫度。
2.2 DS18B20簡介
2.2.1技術性能描述
單線介面方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。測溫范圍 -55℃~+125℃,固有測溫解析度0.5℃。支持多點組網功能,多個DS18B20可以並聯在唯一的三線上,實現多點測溫。工作電源: 3~5V直流電源。
在使用中不需要任何外圍元件,測量結果以9~12位數字量方式串列傳送。適用於DN15~25, DN40~DN250各種介質工業管道和狹小空間設備測溫。
2.2.2應用范圍
該產品適用於冷凍庫,糧倉,儲罐,電訊機房,電力機房,電纜線槽等測溫和控制領域,軸瓦,缸體,紡機,空調,等狹小空間工業設備測溫和控制。
2.2.3接線說明
特點有一線介面,只需要一條口線通信 多點能力,簡化了分布式溫度感測應用 無需外部元件 可用數據匯流排供電,電壓范圍為3.0 V至5.5 V 無需備用電源 測量溫度范圍為-55 ° C至+125 ℃ 。華氏相當於是-67 ° F到257華氏度 -10 ° C至+85 ° C范圍內精度為±0.5 ° C。
溫度感測器可編程的解析度為9~12位 溫度轉換為12位數字格式最大值為750毫秒 用戶可定義的非易失性溫度報警設置 應用范圍包括恆溫控制,工業系統,消費電子產品溫度計,或任何熱敏感系統描述該DS18B20的數字溫度計提供9至12位(可編程設備溫度讀數。信息被發送到/從DS18B20 通過1線介面,所以中央微處理器與DS18B20隻有一個一條口線連接。為讀寫以及溫度轉換可以從數據線本身獲得能量,不需要外接電源。 因為每一個DS18B20的包含一個獨特的序號,多個DS18B20可以同時存在於一條匯流排。這使得溫度感測器放置在許多不同的地方。它的用途很多,包括空調環境控制,感測建築物內溫設備或機器,並進行過程監測和控制。【6】
第3章 軟硬體設計
3.1 單片機的選擇
單片機系統由單片機AT89C51、74HC245等晶元構成,完成數據採集、處理、通訊以及所有的功能,是整個系統的核心模塊。
單片機是整個系統的核心,對系統起監督、管理、控製作用,並進行復雜的信號處理,產生測試信號及控制整個檢測過程。所以在選擇單片機時,參考了以下標准。
(1)運行速度。單片機運行速度一般和系統匹配即可。
(2)存儲空間。單片機內部存儲器容量,外部可以擴展的存儲器(包括1/0口)空間。
(3)單片機內部資源。單片機內部存儲資源越多,系統外接的部件就越少,這可提高系統的許多技術指標。
(4)可用性。指單片機是否能很容易地開發和利用,具體包括是否有合適的開發工具,是否適合於大批量生產:、性能價格比,是否有充足的資源,是否有現成的技術資源等。
(5)特殊功能。一般指可靠性、功耗、掉電保護、故障監視等。
從硬體角度來看,與MCS-51指令完全兼容的新一一代AT89CXX系列機,比在片外加EPROM才能相當的8031-2單片機抗干擾性能強,與87C51-2單片機性能相當,但功耗小。程序修改直接用+5伏或+12伏電源擦除,更顯方便、而且其工作電壓放寬至2.7伏一6伏,因而受電壓波動的影響更小,而且4K的程序存儲器完全能滿足單片機系統的軟體要求。故AT89C51單片機是構造本檢測系統的更理想的選擇。本系統選用ATMEL生產的AT89C51單片機,其特性如下:
(1) 4K位元組可編程閃速程序存儲器;1000次循環寫/擦
(2)全靜態工作:OHz-24MHz
(3)三級程序存儲器鎖定
(4) 128 X 8位內部數據存儲器,32條可編程1/0線
(5)兩個十六位定時器/計數器,六個中斷源
(6)可編程串列通道,低功耗閑置和掉電模式
該器件採用了ATMEL的高密度非易失性的存儲器工藝,並且可以與工業標準的MCS-51指令集和輸出管腳兼容。由於將多功能8位CPU與閃速式存儲器組合在單個晶元中,AT89C51是一種高效的微控制器,為很多嵌入式系統提供了高靈活性且價廉的方案。
3.2 溫度感測器的選擇
DS18B20是美國達拉斯半導體公司的產品,與其他產品相比較它的性能有如下特點:①採用單匯流排專用技術,既可通過串列口線,也可通過其它I/O口線與微機介面,無須經過其它變換電路,直接輸出被測溫度值(9位二進制數,含符號位),②測溫范圍為-55℃-+125℃,測量解析度為0.0625℃,③內含64位經過激光修正的只讀存儲器ROM,④適配各種單片機或系統機,⑤用戶可分別設定各路溫度的上、下限,⑥內含寄生電源。所以在本設計中,我採用了DS18B20作為溫度感測器。【8】
3.3 模擬軟體的選擇
Proteus 是英國Labcenter公司開發的電路分析與實物模擬軟體。它運行於Windows操作系統上,可以模擬、分析(SPICE)各種模擬器件和集成電路,該軟體的特點是:
①實現了單片機模擬和SPICE電路模擬相結合。具有模擬電路模擬、數字電路模擬、單片機及其外圍電路組成的系統的模擬、RS232動態模擬、I2C調試器、SPI調試器、鍵盤和LCD系統模擬的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。
②支持主流單片機系統的模擬。目前支持的單片機類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍晶元。
③提供軟體調試功能。在硬體模擬系統中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變數、寄存器等的當前狀態,因此在該軟體模擬系統中,也必須具有這些功能;同時支持第三方的軟體編譯和調試環境,如Keil C uVision2、MPLAB等軟體。【9】
3.4 編譯軟體的選擇
KEIL C51標准C編譯器為8051微控制器的軟體開發提供了C語言環境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強,使你可以更加貼近CPU本身,及其它的衍生產品。C51已被完全集成到uVision2的集成開發環境中,這個集成開發環境包含:編譯器,匯編 器,實時操作系統,項目管理器,調試器。uVision2 IDE可為它們提供單一而靈活的開發環境。
C51 V7版本是目前最高效、靈活的8051開發平台。它可以支持所有8051的衍生產品,也可以支持所有兼容的模擬器,同時支持其它第三 方開發工具。因此,C51 V7版本無疑是8051開發用戶的最佳選擇。
uVision2集成開發環境具有如下功能:
一、項目管理
工程(project)是由源文件、開發工具選項以及編程說明三部分組成的。
一個單一的uVision2工程能夠產生一個或多個目標程序。產生目標程序的源文件構成「組」。開發工具選項可以對應目標,組或單個文件。
uVision2包含一個器件資料庫(device database),可以自動設置匯編器、編譯器、連接定位器及調試器選項,來滿足用戶充分利用特定 微控制器的要求。此資料庫包含:片上存儲器和外圍設備的信息,擴展數據指針(extra data pointer)或者加速器(math accelerator)的特 性。
uVision2可以為片外存儲器產生必要的連接選項:確定起始地址和規模。
二、集成功能
uVision2的強大功能有助於用戶按期完工。
1.集成源極瀏覽器利用符號資料庫使用戶可以快速瀏覽源文件。用詳細的符號信息來優化用戶變數存儲器。
2.文件尋找功能:在特定文件中執行全局文件搜索。
3.工具菜單:允許在V2集成開發環境下啟動用戶功能。
4.可配置SVCS介面:提供對版本控制系統的入口。
5.PC-LINT介面:對應用程序代碼進行深層語法分析。
6.Infineon的EasyCase介面:集成塊集代碼產生。【10】
3.5 PROTEUS 模擬電路圖
圖1是基於單片機的智能溫度檢測系統電路原理圖。控制加熱熱水器電源電路用LED燈模擬代替,取消無水報警電路。裝上水後接通電源,下方LED數碼管顯示當前水溫。上方LED數碼管顯示預設水溫。操作「個位」鍵和「十位」鍵可預設水溫(如99℃)控制點。該電路具有如下功能:
(1) 測量水溫,精度為1℃,范圍為0~99℃;
(2) 三位數碼管實時顯示水溫;
(3) 可預設水溫(如99℃)控制點,當水加熱到該水溫時自動斷電,當水溫低於該水溫時自動上電加熱;
(4) 無水自動斷電和報警功能(略)。
圖1 基於單片機的智能溫度檢測系統電路原理圖
第4章 匯編語言程序
4.1 主程序和溫度值轉換成顯示值子程序的流程圖
4.2 DS18B20溫度子程序和顯示子程序的流程圖
4.3 匯編語言源程序
ORG 0
LJMP MAIN1
ORG 0003H
LJMP ZINT0
ORG 13H
LJMP ZINT1
TMPH: EQU 28H
FLAG1: EQU 38H
DATAIN: BIT P3.7
MAIN1: SETB IT0
SETB EA
SETB EX0
SETB IT1
SETB EX1
SETB P3.6
SETB P3.2
MOV 74H,#0
MOV 75H,#0
MOV 76H,#0
MOV 77H,#0
MAIN: LCALL GET_TEMPER
LCALL CVTTMP
LCALL DISP1
AJMP MAIN
INIT_1820:
SETB DATAIN
NOP
CLR DATAIN
MOV R1,#3
TSR1: MOV R0,#107 ;保持642ms
DJNZ R0,$
DJNZ R1,TSR1
SETB DATAIN ;釋放DS18B20匯流排
NOP
NOP
NOP
MOV R0,#25H
TSR2: JNB DATAIN,TSR3
DJNZ RO,TSR2
CLR FLAG1
SJMP TSR2
TSR3: SETB FLAG1 ;標志位置1,證明DS18b20存在
CLR P1.7
MOV R0,#117
TSR6: DJNZ R0,$
TSR7: SETB DATAIN
RET ;延時254us
GET_TEMPER:
SETB DATAIN
LCALL INIT_1820
JB FLAG1,TSS2
NOP
RET ;DS18B20檢測程序
TSS2: MOV A,#0CCH ;跳過ROM,使用存儲器
LCALL WRITE_1820
MOV A,#44H ;對RAM操作,開始溫度轉換
LCALL WRITE_1820
ACALL DISP1
LCALL INIT_1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_1820;讀暫存器中的溫度數值
RET
WRITE_1820:
MOV R2,#8
CLR C
WR1: CLR DATAIN
MOV R3,#6
DJNZ R3,$
RRC A
MOV DATAIN,C
MOV R3,#23
DJNZ R3,$
SETB DATAIN
NOP
DJNZ R2,WR1
SETB DATAIN
RET
READ_1820:
MOV R4,#2
MOV R1,#29H
RE00: MOV R2,#8
RE01: CLR C
SETB DATAIN
NOP
NOP
CLR DATAIN
NOP
NOP
NOP
SETB DATAIN
MOV R3,#9
RE10: DJNZ R3,RE10
MOV C,DATAIN
MOV R3,#23
RE20: DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
CVTTMP: MOV A,TMPH
ANL A,#80H ;判斷溫度正負,正不變,負則取反加1
JZ TMPC1
CLR C
MOV A,TMP1
CPL A
ADD A,#1
MOV TMP1,A
MOV A,TMPH
CPL A
ADDC A,#0
MOV TMPH,A
MOV 73H,#0BH
SJMP TMPC11
TMPC1: MOV 73H,#0AH
TMPC11: MOV A,TMP1
ANL A,#0FH
MOV DPTR,#TMPTAB
MOVC A,@A+DPTR
MOV 70H,A
MOV A,TMP1
ANL A,#0FH
SWAP A
ORL A,TMPL
B2BCD: MOV B,#100
DIV AB
JZ B2BCD1
MOV 73H,A
B2BCD: MOV A,#10
XCH A,B
DIV AB
MOV 72H,A
MOV 71H,B
TMPC12: NOP
DISBCD: MOV A,73H
ANL A,#0FH
CJNE A,#1,DISBCD0
SJMP DISBCD1
DISBCD0: MOV A,72H
ANL A,#0FH
JNZ DISBCD1
MOV A,73H
MOV 72H,A
MOV 73H,#0AH
DISBCD1: RET
TMPTAB: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
DISP1: MOV R1,#70H
MOV R0,#74H
MOV R5,#0FEH ;顯示實際溫度
PLAY: MOV P1,#0FFH
MOV A,R5
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
MOV P1,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV A,R5
JB ACC.1,LOOP1
JB P1.7
CLR P1.7
CLR P0.7 ;顯示小數點
LOOP1: LCALL DL1MS
INC R1
INC R0
MOV A,R5
JNB ACC.3,ENDOUT
RL A
MOV R5,A
MOV A,73H
CJNE A,#1,DD2
SJMP LEDH
DD2: MOV A,72H
CJNE A,72H,DDH
SJMP DD1
DDH: JNE PLAY1
LEDH: CLR P3.6
SJMP PLAY
PLAY1: SETB P3.6
SJMP PLAY
ENDOUT: MOV P1,#0FFH
MOV P2,#0FFH
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H,0FFH,0BFH
DL1MS: MOV R6,#14H
DL1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL1
RET
ZINT0: PUSH A
INC 75H
MOV A,,75H
CJNE A,#10,ZINT01
MOV 75H,#0
ZINT01: POP A
RETI
ZINTT1: PUSH A
INC 76H
MOV A,76H
CJNE A,#10,ZINT11
MOV 76H,#0
ZINT11: POP A
RETI