單片機課程設計論文_第1頁
單片機課程設計論文_第2頁
單片機課程設計論文_第3頁
單片機課程設計論文_第4頁
單片機課程設計論文_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘 要 數字電子鐘的設計方法有多種,其中,利用單片機實現的電子鐘具有編程靈活,便于電子鐘功能的擴充,即可用該電子鐘發出各種控制信號,精確度高等特點,同時可以用該電子鐘發出各種控制信號。本文主要介紹用單片機內部的定時/計數器來實現電子時鐘的方法,本設計由單片機AT89C51芯片、DS18B20芯片和8位LCD液晶顯示屏為核心,輔以必要的電路和74LS164、74LS244等芯片,構成了一個單片機電子時鐘。它的計時周期為24小時,另外具有校時功能、鬧鈴功能和顯示溫度功能等特點。此電子鐘嚴格按照要求設計,最終達到預期的效果,能夠正確顯示時、分、秒的計時,以及溫度的顯示,算是一次比較成功的設計。關鍵詞

2、:電子鐘 單片機 溫度測量 DS18B20芯片 液晶目 錄摘 要第1章 概述21.1 基本要求21.2 原理描述21.2.1 原理框圖21.2.2 基本原理3第2章 硬件電路的設計42.1 時鐘基本電路42.2 溫度傳感器芯片42.2.1 DS18B20特性42.2.2 DS18B20D的外形和內部結構42.2.3 DS18B20工作原理52.3 數碼管驅動電路52.4 鍵盤接口電路62.5 電路原理圖6第3章 軟件程序的設計73.1 軟件仿真73.2 程序調試7結論9參考文獻9附錄11致謝23第1章 概述1.1 基本要求數字電子鐘設計與制作可采用數字電路實現,也可以采用單片機來完成。若用數字

3、電路完成,所設計的電路相當復雜,大概需要十幾片數字集成塊,其功能也主要依賴于數字電路的各功能模塊的組合來實現,焊接的過程比較復雜,成本也非常高。若用單片機來設計制作完成,由于其功能的實現主要通過軟件編程來完成,那么就降低了硬件電路的復雜性,而且其成本也有所降低,所以在該設計與制作中采用單片機AT89C51,它是低功耗、高性能的CMOS型8位單片機。另外, 我們采用了能采集溫度的DS18B20溫度采集芯片和一些芯片組成的一個簡單的外圍電路,構成一個完整的電路。實現以下功能:1.24小時計時功能用6位LCD液晶屏顯示時、分、秒。2. 時間調整功能用功能移位鍵、功能加鍵和功能減鍵實現時間的調整。3.

4、 鬧鈴功能用定鬧鍵配合功能移位鍵、功能加鍵和功能減鍵三個按鍵設定鬧鈴,并用蜂鳴器實現響鈴功能。4. 環境溫度采集與顯示功能選用溫度傳感器DS18B20采集環境溫度,并用2位LCD液晶屏顯示環境溫度。1.2 原理描述 原理框圖本設計的總圖原理框圖如圖1.1所示:圖1.1 系統總體框圖 基本原理C51單片機作為微處理器MCU,是系統設計的核心部分。顯示模塊為八位的數碼管,前六位用于時間的顯示,后兩位顯示當前的溫度值。按鍵部分位5個獨立的按鍵,用于時間的調整和定時。溫度采集模塊的核心部件是數字溫度傳感器DS1820。鬧鈴部分用蜂鳴器來實現。系統的工作原理是單片機的內部定時器模擬時鐘信號,作為時間信息

5、傳給數碼管的前六位,同時單片機一定的時間間隔分別采集溫度傳感器的溫度信息并送至數碼管的后兩位和掃描鍵盤,若發現某個鍵盤被按下,則作出相應的處理。定時時間到時,蜂鳴器發出響聲,響1分鐘后自動停止。第2章 硬件電路的設計2.1 時鐘基本電路該電子鐘是以單片機AT89C51為核心來完成的,在硬件電路中采用P0口作為8位LCD液晶屏的驅動接口。因為共陽的LCD液晶屏它的驅動電流是分開的,在單片機進行動態掃描的時候不會影響彼此的電流,故該電路中的8位LCD液晶屏均用共陽極。在8位LCD顯示時,為了簡化電路,降低成本, 8個LCD液晶顯示器共用一個8位的I/O, 8位LCD液晶的位選線分別由相應的P0.

6、0P0. 7控制,而將其相應的段選線并聯在一起,由一個8位的I/O口控制,即P2口。在電路中還設有五個按鍵分別用來進行定時、選時和調時的選擇,他們分別與單片機的P3.2, P2.4, P2.5,P2.6,P2.7口相連接。P2.2口與蜂鳴器相連接。2.2 溫度傳感器芯片 DS18B20特性1. 適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數據線供電。 2. 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。 3. DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫。 4. D

7、S18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。 5. 溫范圍55125,在-10+85時精度為±0.5。 6. 可編程的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫。 7. 在9位分辨率時最多在93.75ms內把溫度轉換為數字,12位分辨率時最多在750ms內把溫度值轉換為數字,速度更快。 8. 測量結果直接輸出數字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。 9. 負壓特性:電源極性接反時,芯片不會因發熱而燒毀

8、,但不能正常工作。 2.2.2 DS18B20D的外形和內部結構 DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。DS18B20的外形及管腳排列如下圖:圖2.1 DS18B20引腳圖DS18B20引腳定義:  (1)DQ為數字信號輸入/輸出端;     (2)GND為電源地;     (3)VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。2.2.3 DS18B20工作原理DS18B20的讀寫時序和測溫原理與DS1820相同,只是得

9、到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s減為750ms。 DS18B20測溫原理如圖3所示。圖中低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在55所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所

10、測溫度。圖3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器1的預置值。2.3 數碼管驅動電路本設計用的數碼管為LG5641BH,是四位一體的共陽極紅色數碼管。數碼管采用動態掃描的方式顯示。寄存器74LS244用與數碼管的位選信號的控制,移位寄存器74LS164用于段信號的產生,即若要某一位數碼管點亮,需要74LS244產生該位的選通信號同時需要74LS164產生一定的段點亮信號。這些信號都是有單片機控制產生的。本設計使用的數碼管是共陽極的,要點亮某一位數碼管,需要74LS244產生一個高電平的位選通信號,同時74LS164的八個輸出引腳輸出對應的數碼管編碼信號。2.4 鍵

11、盤接口電路第一個按鍵用于時間的調整,接在了單片機的外部中斷0端,按鍵信號的產生由外部中斷源產生,把時間調整鍵設為外部中斷是因為,調整時間的時候時間不應該仍在走動,而中斷正好符合這一特點。其余四個鍵盤分別接單片機的P2.4P2.7口,用掃描的方式檢測按鍵是否被按下。具體的操作如下:調整時間:SetTime用于調整時間,Hour用于“時”的設定,Minute用于“分”的設定,最后OK用于確認設定有效。定時:Clocking用于定時,Hour用于“時”的設定,Minute用于“分”的設定,最后OK用于確認設定有效。2.5 電路原理圖圖2.2 電路原理圖第3章 軟件程序的設計3.1 軟件仿真仿真軟件使

12、用的是proteus,使用該軟件仿真系統可以將程序代碼加載進單片機內,實現較好的仿真效果。加載的文件要以.hex為后綴的文件。加載的方法是在單片機上雙擊,打開Edit Component對話框,在Program File項選擇要加載的文件,加載完單擊對話框右側的OK鍵即可。加載完文件以后,就可以進行系統仿真了。仿真的方法是分別單擊軟件界面左下方的 可以開啟仿真、單步執行、暫停仿真和停止仿真。系統仿真圖如圖3.1所示:圖3.1 電路仿真圖3.2 程序調試編譯軟件使用Keil軟件,調試的基本步驟為:新建一個工程命名并保存、新建一個源程序文件命名并保存、將源文件添加進工程、向源文件中輸入源程序、編譯

13、調試。若出現什么錯誤,修改后重新編譯,直至最后沒有錯誤為止。用Keil軟件調試程序的界面如圖3.2所示:圖3.2 程序調試界面結論經過二周的單片機課程設計,我組成員已基本完成課題要求。功能上基本達標:時鐘的顯示,秒表顯示,定時功能,調時功能。時鐘顯示功能,精確度完全可以滿足日常生活顯示時間的需要;調時功能,方便快捷;定時功能準確可靠,還有擴展成音樂鬧鐘的余地。硬件設施合乎要求,軟件設計可以配合硬件實現要求功能。從這次的課程設計中,我們真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的練習的過程中才能提高,我想這就是我在這次

14、課程設計中的最大收獲。參考文獻1 張迎新.單片微型計算機原理、應用接口技術. 北京:國防工業出版社,2004.12 何利民.單片機高級教程. 北京:航空航天大學出版社,2000.83 謝維成.單片機原理及應用與51程序設計. 北京:清華大學出版社,2006.84 曹洪奎,馬瑩瑩.基于Proteus單片機系統設計與仿真.遼寧工學院學報07年04期5 侯玉寶.基于Proteus的51系列單片機設計與仿真M.電子工業出版社,2008.2702886 蔡希彪,曹洪奎.單片機電子時鐘系統的設計與仿真J.中國科技信息,2007年04期附錄源程序如下/*電子鐘設計源程序*/#include<reg52

15、.h>/*位定義*/sbit bee=P22;sbit DQ=P21;sbit R=P20;sbit K2=P24;/按鍵sbit K3=P25;sbit OK=P26;sbit Ring=P27;bit mark1,mark2;/*數碼管編碼*/char hour,minute,second,A,clockH,clockMin,aa;char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/*函數原型聲明*/void display_hour(char);void display_minute(char);vo

16、id display_second(char);void display_temp(char);void display(char,char,char,char);void chu_shi_hua();void Clocking();void delay(int);unsigned char templow_byte,temphi_byte;unsigned char ow_reset(void);unsigned char read_bit(void);void write_bit(char bitval);unsigned char read_byte(void);void write_b

17、yte(char val);void wendu();/main函數/void main()char choice;chu_shi_hua();while(1)wendu();if(Ring=0)delay(100);if(Ring=0)choice=1; /定時鍵按下,則定時 else choice=0;switch(choice)case 0:display(hour,minute,second,A);break;case 1: Clocking();/*函數名:display(char hour,char minute,char second,char A)*調用:display_hou

18、r(hour)、display_minute(minute)、display_second(second) display_temp(A)*作用:顯示時間信息和溫度信息*/void display(char hour,char minute,char second,char A)display_hour(hour); display_minute(minute);display_second(second);display_temp(A);if(hour=clockH&&minute=clockMin) /鬧鐘bee=0;delay(100);bee=1;/*函數名:displ

19、ay_hour(char hour)*調用:delay()*作用:顯示時*/void display_hour(char hour) /顯示時char h1,h2;h1=hour/10;h2=hour%10;R=0;R=1;SBUF=tableh1;while(!TI);P1=0x01;delay(20);P1=0;TI=0;R=0;R=1;SBUF=tableh2;while(!TI);P1=0x02;delay(20);P1=0;TI=0;/*函數名:display_minute(char minute) *調用:delay()*作用:顯示分*/void display_minute(ch

20、ar minute) /顯示分char min1,min2;min1=minute/10;min2=minute%10;R=0;R=1;SBUF=tablemin1;while(!TI);P1=0x04;delay(20);P1=0;TI=0;R=0;R=1;SBUF=tablemin2;while(!TI);P1=0x08;delay(20);P1=0;TI=0;/*函數名:display_second(char second)*調用:delay()*作用:顯示秒*/void display_second(char second) /顯示秒char sec1,sec2;sec1=second

21、/10;sec2=second%10;R=0;R=1;SBUF=tablesec1;while(!TI);P1=0x10;delay(20);P1=0;TI=0;R=0;R=1;SBUF=tablesec2;while(!TI);P1=0x20;delay(20);P1=0;TI=0;/*函數名:display_temp(char A)*調用:delay()*作用:顯示溫度*/void display_temp(char A) /顯示溫度char shi,ge;shi=A/10;ge=A%10;R=0;R=1;SBUF=tableshi; /向發送緩沖器SBUF中寫數據while(!TI);

22、/直到發送完8位數據P1=0x40;delay(20);P1=0;TI=0;R=0;R=1;SBUF=tablege;while(!TI);P1=0x80;delay(20);P1=0;TI=0;/*函數名:chu_shi_hua() *調用:*作用:初始化一些參數*/void chu_shi_hua() /初始化函數SM0=0; /串行口設置為工作方式0SM1=0;aa=0;mark1=1;mark2=1;hour=12;minute=0;second=30;clockH=0;clockMin=0;K2=1; /鍵盤讀之前先置1K3=1;OK=1;TMOD=0X01;TH0=(65535-5

23、0000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;EX0=1;IT0=0; /外部中斷0為電平觸發方式PX0=1; /外部中斷為高優先級中斷/*函數名:SetTime()*調用:*作用:中斷函數,用于調整時間*/void SetTime() interrupt 0 /調整時間函數while(OK) display_hour(hour); display_minute(minute);if(K2=0)delay(100);if(K2=0)while(!K2);delay(100);while(!K2);hour+;if(hour=24)hour=0

24、;if(K3=0)delay(100);if(K3=0)while(!K3);delay(100);while(!K3);minute+;if(minute=60)minute=0;/*函數名:timer0()*調用:*作用:中斷函數,用于模擬時間信息*/void timer0() interrupt 1 /定時器0中斷函數TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa+;if(aa=20)aa=0;second+;if(second=60)second=0;mark1=0;if(mark1=0)mark1=1;minute+;if(minute=

25、60)minute=0;mark2=0;if(mark2=0)mark2=1;hour+;if(hour=24)hour=0;/*函數名:Clocking()*調用:display_hour(clockH)、display_minute(clockMin)*作用:用于定時*/void Clocking() /定時函數while(OK) display_hour(clockH); display_minute(clockMin);if(K2=0)delay(100);if(K2=0)while(!K2);delay(100);while(!K2);clockH+;if(clockH=24)clockH=0;if(K3=0)delay(100);if(K3=0)while(!K3);delay(100);while(!K3);clockMin+;if(clockMin=60)clockMin=0;/溫度采集函數/延時函數void delay(int us)int s;for(s=0;s<us;s+);/復位函數unsigned char ow_reset(void)unsigned char presence;DQ=0;delay(29);DQ=1;delay(3);presence=DQ;delay(25);return(presence);/讀位函數unsign

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論