電子鬧鐘畢業設計說明_第1頁
電子鬧鐘畢業設計說明_第2頁
電子鬧鐘畢業設計說明_第3頁
電子鬧鐘畢業設計說明_第4頁
電子鬧鐘畢業設計說明_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 I / 24電子鬧鐘畢業設計電子鬧鐘畢業設計摘要:摘要:本設計是以 89C51 單片機作為控制核心的鬧鈴系統。 本文大致可以分為三個章節,第一章節講了用單片機來制作電子鬧鐘所帶來的優勢,還有電子鬧鐘在電子產品中未來的趨勢以與本次設計所要實現的課題目標。第二章節講了設計的一些思路和該產品包含的一些硬件電路組成。第三章節講了各個軟件模塊之間的設計以與該產品的程序代碼。最后是一些結論體會部分和附錄圖。關鍵詞:關鍵詞:PC 機;單片機 89C51;串行通信;數碼顯示 II / 24目目 錄錄第一章緒論 11.1 引言 11.2 鬧鐘的發展趨勢 11.3 本次設計所要實現的目標 1第二章系統總體設計

2、22.1 系統總體設計思路 22.2 總體硬件組成框圖 22.3 AT89C51 的簡介 32.4 系統功能的確定 42.5 時鐘電路 52.6 復位電路 52.7 鍵盤電路 62.8 數碼顯示電路 7第三章系統軟件設計 83.1 數據單元分配 83.2 時鐘程序設計步驟 83.3 計時子程序模塊的實現 93.4 時鐘設定子程序模塊的實現 103.5 程序說明 113.6 實現方式 123.7 源程序設計 12結論與體會 20主要參考材料:21附錄 1:系統原理圖 22附錄 2:PCB 圖 23 1 / 24第一章第一章 緒論緒論1.11.1 引言引言電子鬧鐘是一種應用非常廣泛的日常計時工具,

3、數字顯示的日歷鐘已經越來越流行,特別是適合在家庭居室、辦公室、大廳、會議室、車站和廣場等使用,壁掛式 LED 數碼管顯示的日歷鐘逐漸受到人們的歡迎。 單片機電子鬧鐘是集電子技術、數字顯示技術為一體的高產品,具有按時鬧鈴,顯示清晰直觀、走時準確等優點。 首先介紹設計電子鬧鐘所涉與的主要硬件和特性,然后說明軟件設計的思路,程序結構與流程,并在測試軟件上進行調試和修改,以完成電子鬧鐘的基本要求,即可以隨意設定起始時間,有秒顯示功能,有 12/24 世制選擇,可以設定鬧鐘,停電時由電池供電等功能。 現代社會電子鬧鐘發揮著很大的作用,也是它存在和發展的一個重要方面,尤其是在代表集成電路技術的發展方面,通

4、過不斷提高電子鬧鐘的計時的精確度可以極大促進定時技術芯片的發展。同時電子鬧鐘與其他嵌入式電子產品一樣是微處理器的應用,通過電子鬧鐘的設計可以很好的掌握電子設計技術。1.21.2 鬧鐘的發展趨勢鬧鐘的發展趨勢 隨著電子技術的飛速發展,家用電器和辦公電子設備逐漸增多,不同的設備都有自己的控制器,使用起來很不方便。這些具有人們所需要的智能化特性的產品減輕了人的勞動,擴大了數字化的圍,為家庭數字化提供了可能。基于單片機的電子鬧鐘就是新一代的產品,能夠實現遠程控制等功能。它功能強大、體積小、質量輕、靈活好用。1.31.3 本次設計所要實現的目標本次設計所要實現的目標 設計一個電子鬧鐘1)能隨意設定走時起

5、始時間2)螚指示秒節奏,即秒指示3)能通過 PC 機實現遠程控制4)時間預設,定時關機的功能 2 / 24第二章第二章 系統總體設計系統總體設計2.12.1 系統總體設計思路系統總體設計思路先進行系統的整體規劃確定整個系統的功能,然后按照每個功能的具體要求,進行各個模塊的實物設計并逐個調試,待全部通過后,進行整個系統的聯調,最終實現一個完整的系統,并制成印刷線路板。 整個系統的設計步驟如下: 在單片機最小系統的基礎上,完成按鍵電路和復位電路的設計。 完成顯示電路、數字按鍵、復位電路。 具有 3 個功能按鍵: 1)在復位后的待機狀態下,用于啟動設定時間參數(對時或定鬧) ;2)在設定時間參數狀態

6、而且不是設定最低位(即分個位)的狀態下,用于結束當前位的設定,當前設定位下移; 3)在設定最低位(分個位)的狀態下,用于結束本次時間設定。 2)鍵,用于對當前設定位(編輯位)進行加 1 操作,根據正在編輯的當前位的含義(時十位、時個位、分十位、分個位)自動進行數據的上限和下限判斷。例如,對 12 小時制,小時的十位只能是 0、1,如果當前值為 0,則按1 鍵后為 1,再按1 鍵則又回復到 0。 把以上各個模塊聯結起來,整體調試功能。2.22.2 總體硬件組成框圖總體硬件組成框圖整個系統的原理框圖如圖 2.1 所示圖 2.1 系統原理框圖 3 / 242.32.3 AT89C51AT89C51

7、的簡介的簡介2.3.1AT89C512.3.1AT89C51 簡介簡介 AT89C51 是一個低功耗,高性能 CMOS 8 位單片機,片含 4k Bytes ISP(In-system programmable)的可反復擦寫 1000 次的 Flash 只讀程序存儲器,器件采用 ATMEL 公司的高密度、非易失性存儲技術制造,兼容標準 MCS-51 指令系統與80C51 引腳結構,芯片集成了通用 8 位中央處理器和 ISP Flash 存儲單元,功能強大的微型計算機的 AT89C51 可為許多嵌入式控制應用系統提供高性價比的解決方案。2.3.22.3.2 引腳介紹引腳介紹AT89C51 具有如

8、下特點:40 個引腳,4k Bytes Flash 片程序存儲器,128 bytes 的隨機存取數據存儲器(RAM) ,32 個外部雙向輸入/輸出口,5 個中斷優先級 2 層中斷嵌套中斷,2 個 16 位可編程定時計數器,2 個全雙工串行通信口,看門狗(WDT)電路,片時鐘振蕩器。圖 2.2 為 AT89C51 引腳圖圖 2.2 AT89C51 引腳圖此外,AT89C51 設計和配置了振蕩頻率可為 0Hz 并可通過軟件設置省電模式。空閑模式下,CPU 暫停工作,而 RAM 定時計數器,串行口,外中斷系統可繼續工作,掉電模式凍結振蕩器而保存 RAM 的數據,停止芯片其它功能直至外中斷激活或硬件復

9、位。同時該芯片還具有 PDIP、TQFP 和 PLCC 等三種封裝形式,以適應不同產品的需求。 4 / 24主要功能特性: 兼容 MCS-51 指令系統 32 個雙向 I/O 口 2 個 16 位可編程定時/計數器 全雙工 UART 串行中斷口線 2 個外部中斷源 中斷喚醒省電模式 看門狗(WDT)電路 靈活的 ISP 字節和分頁編程 4k 可反復擦寫(1000 次)ISP Flash ROM 4.5-5.5V 工作電壓 時鐘頻率 0-33MHz128x8bit 部 RAM 低功耗空閑和省電模式 3 級加密位 軟件設置空閑和省電功能 雙數據寄存器指針2.42.4 系統功能的確定系統功能的確定2

10、.4.12.4.1 基本功能基本功能系統具有時間、日期、三路定時功能,并可以對時間、日期、定時進行設定,有定時提示音。要求計時精度盡量提高。顯示格式為:時間:“時” (第 1、2 位) 、 “分” (第 3、4 位) 、 “秒” (第 5、6 位) ;日期:“年” (第 1、2 位,如 2007 年顯示為 07) 、 “月” (第 3、4 位) 、“日” (第 5、6 位) ;定時:“時” (第 1、2 位) 、 “分” (第 3、4 位) 、 “狀態標志” (第 5、6 位) 。鍵盤與數碼管排列如圖 2.3 所示。2.4.22.4.2 擴展功能擴展功能該系統可以增加溫度傳感器,實現溫度測量,

11、以實時顯示溫度,用 1、2 位 5 / 24數碼管顯示;還可以增加濕度傳感器,實現濕度測量,以實時顯示濕度,用5、6 位數碼管顯示。多路定時器功能也可擴展為對多種家電等電氣產品的自動控制,比如電飯煲等;也可利用溫度對某些電氣產品進行自動控制,比如空調等;還可利用濕度傳感器對濕度進行調節。如圖 2.3 所示。圖 2.3 系統功能圖2.52.5 時鐘電路時鐘電路實驗板的時鐘振蕩源電路如圖 2.4 所示。其中 JT 為 11.0592MHz 的晶振,改變兩電容 CB 的值即可對此晶振頻率進行調節。該電路提供單片機工作所需的振蕩頻率,計算定時器初值即需此晶振頻率,在通信時也需知道晶振頻率,以對波特率進

12、行計算。圖 2.4 時鐘電路2.62.6 復位電路復位電路如圖 2.5 所示為實驗板的復位電路,當 RESET 信號為低電平時,實驗板為工作狀態,當 RESET 信號為高電平時,實驗板為復位或下載程序狀態。由于AT89S52 具有 ISP 的功能,即可以通過并口線直接將程序下載到單片機,因此, AT89S52 具有兩種狀態,下載程序狀態和運行狀態。該復位電路能實現上電自動復位,也能手動復位,一般復位時 RESET 應保持 20 毫秒以上高電平,此復位時間由接地電容控制。 6 / 24圖 2.5 復位電路2.72.7 鍵盤電路鍵盤電路如圖 2.6 所示為陣列按鍵電路,各設置與轉換信號由此電路輸入

13、,實驗板提供了 16 個按鍵,由 P1 口經 SN74F244(驅動芯片)輸出擴展成 44 的陣列按鍵,P1.0P1.3 為行線,P1.4P1.7 為列線。SN74F244 有一片選信號線,G當此口線為低電平時,A1A4 與 Y1Y4 接通,反之,A1A4 與 Y1Y4 斷開。此鍵盤用掃描工作方式,若有鍵按下,則相應位端口被拉低為低電平,由于本系統只用了 4 個按鍵,所以只需對 4 個按鍵進行掃描。掃描時,先置 P3.3口為高電平,向 P1 口送 0EFH(MOV P1,#0EFH) ,再置 P3.3 口為低電平,讀P1 口(MOV A,P1) ,最后判斷 P1 口低 4 位哪位是低電平,若某

14、位為低電平,則相應按鍵被按下,如 P1.0 為低電平(ACC.0=0) ,則 K1 鍵被按下。圖 2.6 陣列按鍵2.82.8 數碼顯示電路數碼顯示電路如圖 2.7 所示為數碼顯示電路,實驗板使用了 6 個共陽數碼管,P0 口為段碼信號線,B1B6 為位控線,是 P1 口經 SN74F573(反向驅動芯片,即輸入為高電平,則輸出為低電平,反之則輸出為高電平,該芯片也有一片選信號 C,當此信號為高電平時有效)反向得到,再由 B1B6 控制晶體管 Q1Q6,以達 7 / 24到控制每位數碼管的目的。系統采用動態顯示,先向 P0 口送第一位數碼管需要顯示的段碼值,再給P1 口送 0FEH,延時 1

15、毫秒使第一位數碼管顯示,又向 P0 口送第二位數碼管需要顯示的段碼值,P1 口送 0FDH,延時 1 毫秒,使第二位數碼管顯示。依次遞推,直到最后一位數碼管,然后再循環。改變延時時長可以調節數碼管顯示的亮度,由于單片機執行速度很快(微秒級) ,所以看上去數碼管一直亮著。圖 2.7 數碼顯示電路第三章第三章 系統軟件設計系統軟件設計3.13.1 數據單元分配數據單元分配數據存儲單元分配如表 3.1 所示:表 3.1 數據存儲單元分配項目秒分時日月年存儲單元30H31H32H33H34H35H項目定時 1:開關定時 1:分定時 1:時定時 2:開關定時 2:分定時 2:時存儲單元36H37H38H

16、39H3AH3BH項目定時 3:開關定時 3:分定時 3:時存顯示首地址堆棧起始單元存儲單元3CH3DH3EH3FH50H標志位單元(20H)分配如表 3.2 所示:表 3.2 標志位單元(20H)分配 8 / 24位單元項目位單元項目01H08H定時 1 顯示標志位02H1、2 位數碼管閃爍標志位09H定時 2 顯示標志位03H0AH定時 3 顯示標志位04H3、4 位數碼管閃爍標志位0BH定時 1 響鈴標志位05H0CH定時 2 響鈴標志位06H5、6 位數碼管顯示標志位0DH定時 3 響鈴標志位07H日期顯示標志位0EH總響鈴標志位3.23.2 時鐘程序設計步驟時鐘程序設計步驟系統采用模

17、塊化結構,主程序只需調用各個子程序模塊即可實現相應功能。其模塊結構圖如圖 3.1 所示。圖 3.1 模塊結構圖3.33.3 計時子程序模塊的實現計時子程序模塊的實現當 T0 中斷時,執行本程序,因 T0 設為 50 毫秒中斷,故中斷 20 次為 1 秒。中斷程序分別有 20 次計數(1 秒) ,60 次計數(1 分) ,60 次計數(1 小時) ,24 次計數(1 天) ,28、29、30、31 次計數(1 個月) ,12 次計數(1 年) 。當前位到設定數值時寫 0 或 1,下一位加 1。由于本世紀是 21 世紀,年位前兩位是4 的倍數,故判斷閏年時只需對年的后兩位進行計算,能被 4 整除為

18、閏年,否則為平年,年位只進行加 1,大于 99 時又重新開始。計時中斷流程圖如圖 3.2所示。 9 / 24 圖 3.2 計時子程序流程圖 圖 3.3 顯示子程序流程圖3.43.4 時鐘設定子程序模塊的實現時鐘設定子程序模塊的實現 當設定時間時,斷開 T0 中斷,秒單元清 0,進入時、分單元設定。設定好后重裝 T0 初值,開 T0 中斷。流程圖如圖 3.4 所示。 10 / 24圖 3.4 時鐘設定子程序流程圖3.53.5 程序說明程序說明3.5.13.5.1 定時器初值計算定時器初值計算因定時器工作于方式 1,需要 50ms 的中斷,所以計數初值:=216 - tfosc12=65536 -

19、 5010-311.059210612=19456表示成十六進制為 =4C00H,故(TH0)=4CH, (TL0)=00H。3.5.23.5.2 程序初始化程序初始化程序初始化時,清相應存單元(20H4FH 共 48 個單元) ,送時間(00 時00 分 00 秒) 、日期(07 年 10 月 01 日)初值,送定時器 T0、T1 初值,TH0= TH1=4CH,TL0= TL1=00H,特殊寄存器(SP=50H、TMOD=11H)值等。3.5.33.5.3 誤差分析與校正誤差分析與校正當 T0 中斷時,需重裝定時初值,且要加上從斷開 T0 中斷到允許 T0 中斷共有 13 個周期,以減小誤

20、差,故理論重裝定時初值為(TH0)=4CH, (TL0)=13H。但該外接晶振電路的晶振頻率可調,可能出現誤差,所以實際不是這個值。經調試,當定時初值為(TH0)=4CH, (TL0)=06H 時,24 小時約慢 2 秒,所以每當計時 24 小時之后,給秒單元(30H)送 02H,使秒累加時從 2 加起,24 小時就少加 2 秒,即可使時間得到校正。3.5.43.5.4 實現閃動設定實現閃動設定閃動可選用段碼送 00H 實現,也可禁止當前位顯示,選通位送 0 實現。本設計選用后者實現閃動,用定時器 T1 進行控制。 11 / 243.5.53.5.5 實現連續加實現連續加 1 1先判斷鍵是否松

21、開,若松開,則只執行一次加 1 程序段,進行單次加 1;若未松開則連續執行加 1 程序段,實現連續加 1。每執行一次加 1 程序段就調用顯示子程序進行延時,以對調節速度進行控制。本系統以 5Hz 的速度連續加1,這樣能快速對時間、日期、定時進行設定。3.63.6 實現方式實現方式該時鐘程序的功能模塊先后實現的順序為:主程序時間模塊顯示模塊鍵盤模塊時間設定與其顯示模塊日期與其顯示模塊日期設定與其顯示模塊定時與其顯示模塊定時設定與其顯示模塊定時提示音與與顯示相沖突的協調模塊。每完成一個模塊就與前一個已完成的模塊結合起來調試,直至實現相應功能,再編寫下一模塊程序。在與主程序銜接時,主程序和各子程序也

22、需作相應的改動,以便與子程序更好的銜接,特別是顯示子程序需作較大改動,以便對不同容進行顯示。3.73.7 源程序設計源程序設計#include#include#define uchar unsigned char#define uint unsigned intsbit dula=P10;sbit wela=P11;sbit key1=P20;sbit key2=P21;sbit key3=P23;sbit key4=P23;sbit key5=P24;uchar temp,tt,sec,min,hour; 12 / 24uchar code table=0 x3f,0 x06,0 x5b,0

23、 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;void init();void keyscan();void counter();void delay(uint z);void main()init();wela=1;P0=0 xfe;temp=P0;wela=0;dula=1;P0=0 x3f;dula=0;while(1)wela=1;P0=temp;wela=0;if(temp=0 xfe)/1111 1110dula=1;P0=tablesec%10;dula=0; 13 / 2

24、4if(temp=0 xfd)/1111 1101dula=1;P0=tablesec/10;dula=0; if(temp=0 xfb)/1111 1011dula=1;P0=0 x40;dula=0;if(temp=0 xf7)/1111 0111 dula=1;P0=tablemin%10;dula=0;if(temp=0 xef)/1110 1111dula=1;P0=tablemin/10;dula=0; 14 / 24 if(temp=0 xdf)/1101 1111dula=1;P0=0 x40;dula=0;if(temp=0 xbf)/1011 1111dula=1;P0=t

25、ablehour%10;dula=0;if(temp=0 x7f)/0111 1111dula=1;P0=tablehour/10;dula=0;delay(2);temp=_crol_(temp,1);if(temp=0 xff)temp=0 xfe;keyscan(); counter(); 15 / 24 void delay(uint z) /延時子函數uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void init()/系統初始化tt=0; wela=0;dula=0; EA=1;ET0=1;TR0=1;TMOD=0 x01;TH0=(65536-5

26、0000)/256; TL0=(65536-50000)%256;void timer0() interrupt 1 /定時器 0 中斷TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;void counter() /計時子函數 16 / 24if(tt=20) tt=0; sec+; if(sec=60)sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;void keyscan()/鍵盤掃描 if(key1=1)delay(5);if(key1=1) 17 / 24 TR0=0; while(key1);delay(5);while(key1); if(key2=1)delay(5);if(key2=1) sec+; while(key2);delay(5);while(key2); if(key3=1)delay(5);if(key3=1) min+; while(key3);delay(5);while(key3); if(key4=1) 18 / 24delay(5);if(key4=1) hour+; while(key4);delay(5);while(ke

溫馨提示

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

評論

0/150

提交評論