C51單片機實現(xiàn)電子鬧鐘_第1頁
C51單片機實現(xiàn)電子鬧鐘_第2頁
C51單片機實現(xiàn)電子鬧鐘_第3頁
C51單片機實現(xiàn)電子鬧鐘_第4頁
C51單片機實現(xiàn)電子鬧鐘_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

課程名稱課程名稱 單片機原理與接口技術(shù)實踐單片機原理與接口技術(shù)實踐 設(shè)計課題 設(shè)計課題 基于基于 MCS 51 單片機實現(xiàn)電單片機實現(xiàn)電 子鬧鐘功能的設(shè)計子鬧鐘功能的設(shè)計 學(xué)學(xué) 院 電子與信息工程學(xué)院院 電子與信息工程學(xué)院 專專 業(yè) 通信工程業(yè) 通信工程 小組成員 小組成員 電子鬧鐘在科學(xué)技術(shù)高度發(fā)展的今天 千家萬戶都少不了它 所以很多家庭 個人都需要有一個電子鬧鐘 為人們提供報時方便 但普通電子鬧鐘不夠方便實 用 本文給出了一種基于 MCS51 單片機實現(xiàn)電子鬧鐘功能的設(shè)計方法 從而給 人們帶來更為方便的工作與生活 一一 電子鬧鐘簡介電子鬧鐘簡介 我們設(shè)計的電子鬧鐘是以 MCS 51 單片機中的計時器作為時鐘 用 8 位數(shù)碼 管顯示當(dāng)前時間 并且可以設(shè)置鬧鐘時間 并在設(shè)置的時間點發(fā)出鬧鈴 簡易鬧鐘具有以下功能 1 時鐘能準(zhǔn)確地走時 并可以通過數(shù)碼管進行顯示 2 復(fù)位后可以進行當(dāng)前時間的設(shè)置 3 可以隨意設(shè)置鬧鐘時間 鬧鐘會在設(shè)置時間響鈴 整個系統(tǒng)的任務(wù)要求 1 輸入數(shù)字按鍵的功能 保證數(shù)字的輸入 2 復(fù)位電路的功能 所有時間回到初始化狀態(tài) 用于啟動設(shè)定時間參數(shù) 調(diào)時或設(shè)定鬧鐘時間 3 顯示電路的功能 當(dāng)輸入數(shù)字時顯示 24 小時時間功能 4 鬧鈴功能 設(shè)置鬧鈴的時間后 能按設(shè)置好的時間準(zhǔn)時鬧鈴 二二 系統(tǒng)方案的設(shè)計要求系統(tǒng)方案的設(shè)計要求 根據(jù)以上各模塊并結(jié)合顯示屏的功能及元器件材料的情況 決定采用 AT89C51 為內(nèi)核顯示設(shè)計方案 先進行系統(tǒng)的整體規(guī)劃確定整個系統(tǒng)的功能 然后按照每個功能的具 體要求 進行各個模塊的實物設(shè)計并逐個調(diào)試 待全部通過后 進行整個 系統(tǒng)的聯(lián)調(diào) 最終實現(xiàn)一個完整的系統(tǒng) 整個系統(tǒng)的設(shè)計步驟如下 在單片機最小系統(tǒng)的基礎(chǔ)上 完成按鍵電路和復(fù)位電路的設(shè)計 完成顯示電路 數(shù)字按鍵 單片機時鐘電路 硬件設(shè)計 系統(tǒng)硬件的設(shè)計可以根據(jù)系統(tǒng)的各個功能 把整個系統(tǒng)劃分成若干個 模塊 分別對這些模塊來進行設(shè)計 然后在通過單片機程序來實現(xiàn)對各個 硬件模塊功能的調(diào)度 本系統(tǒng)涉及到的硬件模塊有 按鍵電路 數(shù)碼管顯示電路 單片機時 鐘電路 蜂鳴器電路 各部分實現(xiàn)功能如下 按鍵電路 提供按鍵信號 單片機時鐘電路 復(fù)位電路 提供內(nèi)部時鐘 數(shù)碼管驅(qū)動顯示電路 顯示當(dāng)前時間 蜂鳴器電路 鬧鐘報時 軟件設(shè)計 本系統(tǒng)的軟件部分主要完成功能 時分秒的進位算法處理 數(shù)碼管的時間 顯示 時間調(diào)整設(shè)置 鬧鐘功能 根據(jù)軟件的功能劃分軟件設(shè)計模塊結(jié)構(gòu) 如下所示 主程序模塊 按鍵驅(qū)動模塊LED驅(qū)動模塊時間處理模塊 其中各個模塊具體任務(wù)如下 按鍵驅(qū)動模塊 對各個按鍵的功能進行相關(guān)的定義 LED 驅(qū)動模塊 根據(jù)系統(tǒng)需要顯示相應(yīng)的數(shù)字時間 時間處理模塊 時 分 秒的進位算法處理 三三 系統(tǒng)硬件電路的設(shè)計系統(tǒng)硬件電路的設(shè)計 1 根據(jù)確定的硬件方案設(shè)計硬件框圖 如下圖所示 單 片 機 蜂鳴器電路 晶振電路 復(fù)位電路 按鍵電路 數(shù)碼管驅(qū)動 及顯示 2 系統(tǒng)原理圖的設(shè)計 系統(tǒng)總的硬件電路如下圖所示 實際要用到 5 個按鍵 受空間限制仿真電路中只畫出 4 個 單片機管腳資源分配 P0 口為數(shù)碼管段選信號輸出口 P3 口為數(shù)碼管位選信號輸出口 P1 0 P1 1 P1 2 P1 3 P1 4 為鍵盤的輸入信號 P3 6 為蜂鳴器信號的輸出口 下面分別介紹各個電路 1 1 數(shù)碼管驅(qū)動及顯示電路 數(shù)碼管驅(qū)動及顯示電路 本設(shè)計采用 8 位 7 段共陽極數(shù)碼管用來顯示時間 為了將時間在 LED 數(shù) 碼管上顯示可采用動態(tài)顯示法 通過對每位數(shù)碼管的依次掃描 使對應(yīng)數(shù)碼 管亮 同時向該數(shù)碼管送對應(yīng)的字碼使其顯示數(shù)字 由于數(shù)碼管掃描周期很 短 而且人眼有視覺暫留效應(yīng) 所以數(shù)碼管看起來總是亮的從而實現(xiàn)了數(shù)字 的同時顯示 數(shù)碼管主要包括位選和段選信號線 位選是用來選通數(shù)碼管的 只有位 選信號有效該數(shù)碼管才會亮并顯示要現(xiàn)實的數(shù)字 段選是選擇數(shù)碼管 7 段的 那一筆亮 從而顯示不同的數(shù)字 本設(shè)計中單片機 P0 口輸出段選數(shù)據(jù) P3 口輸出位選數(shù)據(jù) 數(shù)碼管與單片機相連的電路如下圖所示 電路中使用了芯片 74ls245 該芯片用來驅(qū)動 LED 其片選引腳要接地 使其一 致為低電平 芯片一直可以工作 2 2 晶振電路 晶振電路 晶體以及電容 C1 C2 構(gòu)成并聯(lián)諧振電路 接在放大器的反饋回路中構(gòu)成內(nèi)部 單片機內(nèi)部時鐘 晶體可在 1 2MHz 12MHz 之間任選 電容 C1 C2 的典型值為 通常選擇為 30pF 左右 這時對應(yīng)的始終頻率為 12MHz 單片機內(nèi)部晶振電路圖及連接電路如下 3 3 按鍵電路 按鍵電路 本設(shè)計采用行列式按鍵電路 它由行線和列線組稱成 按鍵位于行列的交 叉點 一個 4 4 的行列結(jié)構(gòu)可以構(gòu)成一個 16 個按鍵的鍵盤 如下圖所示 在按 鍵數(shù)目較多的場合 行列式按鍵可以節(jié)省很多 的 I O 口線 按鍵的識別是通過掃描來實現(xiàn)的 單片機 會依次掃描每一行和每一列 通過行線和列線 的電平高低即可判斷哪個按鍵被按下 本設(shè)計中用到四個按鍵 P1 0 P1 1 P1 2 P1 3 P1 4 分別用于時 間校準(zhǔn)設(shè)置 定鬧設(shè)置 秒分時切換 加 1 調(diào) 整 減 1 調(diào)整 按鍵與單片機相連電路如下 由原理圖可以明顯看出 當(dāng)按鍵未被按下時 對應(yīng)引腳為高電平 按鍵被按下 時為低電平 通過掃描即可辨別哪一個按鍵被按下 本題畫出的雖然是獨立按鍵 但是內(nèi)部驅(qū)動依然是行列式按鍵的驅(qū)動 這里只 是為了畫圖方便 4 4 復(fù)位電路復(fù)位電路 當(dāng)按下復(fù)位鍵時單片機進入復(fù)位狀態(tài) 可以進行時間的設(shè)置等 電路圖如下所示 四四 系系統(tǒng)軟統(tǒng)軟 件部分件部分的設(shè)的設(shè) 計計 本設(shè)計的軟件系統(tǒng)用來配合硬件電路實現(xiàn)特定的功能 程序主要包含 鍵盤掃描模塊 時間處理模塊 和數(shù)碼管顯示程序 3 大部分 程序大致流程如下 開始 是否按下設(shè)置鍵 是 設(shè)置時間和鬧鐘的時間 否 1 1 時間處理模塊時間處理模塊 單片機晶振頻率為 12MHz 一個機器周期等于 12 個振蕩脈沖周期 因此機 器時序頻率是振蕩頻率的 1 12 即 1MHz 所以一個機器周期為 1 s 本設(shè)計用的是計時器 0 的方式 1 對于方式 1 計數(shù)個數(shù) M 與計數(shù)初值 N 的關(guān)系為 M 2 16 N 定時時間 t 與計數(shù)個數(shù) M 和初值 N 的關(guān)系為 t M 機 器周期 2 16 N 時鐘周期 12 計時過程中 秒 sec 等于 60 時清零 分 min 加一 分 min 等于 60 時清零 小 時 hour 加一 當(dāng)小時大于 24 時 置為 0 時分秒的進位算法代碼如下 void timecontrol sec if sec 60 秒 sec 到 60 清零 分 min 加一 sec 0 min if min 60 分 min 到 60 清零 時 hour 加一 min 0 hour if hour 24 小時 hour 等于 24 時清零 時鐘開始正常走時 當(dāng)前時間等于鬧鐘 時間 是 鬧鈴響 否 hour 0 定時器的先關(guān)設(shè)置 void main TMOD 0 x01 定時器 0 工作在方式 1 TH0 65536 45872 256 裝初值 50ms TL0 65536 45872 256 EA 1 總中斷允許 ET0 1 T0 中斷允許 TR0 1 開定時器 0 while 1 keyscan settime keyscan time buz 2 2 數(shù)碼管顯示模塊數(shù)碼管顯示模塊 本設(shè)計中以 P0 口作為數(shù)碼管的段選輸出 P3 口為位選信號輸出 由于所用數(shù)碼管為共陽極連接 所以要點亮的數(shù)碼管位選端為高電平 1 位選信號的 I O 口聲明 include define uchar unsigned char define uint unsigned int sbit s1 P3 0 數(shù)碼管位選控制端的定義 sbit s2 P3 1 sbit s3 P3 2 sbit s4 P3 3 sbit s5 P3 4 sbit s6 P3 5 sbit s7 P3 6 段碼表 uchar code mum 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 共陽數(shù)碼管 0 9 編碼 數(shù)碼管顯示函數(shù)如下 void display uchar zs uchar zm uchar zh 數(shù)碼管顯示函 數(shù) s1 1 P3 即 S 系列輸出位選信號 P0 mum zh 10 P0 輸出段選信號 顯示小時的十位 delayms 5 s1 0 s2 1 P0 mum zh 10 顯示時的個位加上小數(shù)點 delayms 5 s2 0 s3 1 P0 mum zm 10 顯示分的十位 delayms 5 s3 0 s4 1 P0 mum zm 10 分的個位加上小數(shù)點 delayms 5 s4 0 s5 1 P0 mum zs 10 秒的十位 delayms 5 s5 0 s6 1 P0 mum zs 10 秒的個位 delayms 5 s6 0 3 3 鍵盤掃描模塊鍵盤掃描模塊 首先要聲明各個按鍵的功能以及對應(yīng)的 I O 口 然后驅(qū)動程序?qū)Π存I進行 掃描以識別被按下的鍵 按鍵對應(yīng) I O 口聲明 k1 設(shè)置時間 k2 定時 k3 時分秒選擇 k4 加數(shù)字 k5 減數(shù)字 sbit k1 P1 0 sbit k2 P1 1 sbit k3 P1 2 sbit k4 P1 3 sbit k5 P1 4 鍵盤掃描以進行時間設(shè)置 void keyscan settime 時間設(shè)置模塊 uchar st mt ht if k1 0 delayms 10 延遲一段時間再次掃描以達(dá)到軟件消抖的目的 if k1 0 st sec mt min ht hour TR0 0 關(guān)閉定時器 while k1 0 等待用戶按鍵 display st mt ht if k3 0 delayms 10 if k3 0 while k3 ss if ss 3 ss 0 通過 ss 選擇時分秒設(shè)置 if k4 0 加數(shù) delayms 10 if k4 0 while k4 switch ss case 0 st if st 60 st 0 break case 1 mt if mt 60 mt 0 break case 2 ht if ht 24 ht 0 break default if k5 0 減數(shù) delayms 10 if k5 0 while k5 switch ss case 0 if st 0 st else st 0 break case 1 if mt 0 mt else mt 0 break case 2 if ht 0 ht else ht 0 break default TR0 1 設(shè)置完畢 開啟定時器 sec st min mt hour ht display sec min hour 用戶定鬧鐘時間模塊 void keyscan time 用戶定時模塊 if k2 0 delayms 10 if k2 0 s sec m min h hour while k2 0 開始定時設(shè)置 display s m h if k3 0 delayms 10 if k3 0 while k3 ss if ss 3 ss 0 通過 ss 選擇時分秒設(shè)置 if k4 0 加一 delayms 10 if k4 0 while k4 switch ss case 0 s if s 60 s 0 break case 1 m if m 60 m 0 break case 2 h if h 24 h 0 break default if k5 0 減一 delayms 10 if k5 0 while k5 switch ss case 0 if s 0 s else s 0 break case 1 if m 0 m else m 0 break case 2 if h 0 h else h 0 break default 4 4 其他程序其他程序 1 delay 延時函數(shù) void delayms uint k 延時函數(shù) uint i j for i k i 0 i for j 110 j 0 j 該函數(shù)是一個循環(huán) 對于輸入的 k 值 本程序?qū)⒀h(huán) k 110 次以達(dá)到延時 的目的 2 鬧鈴函數(shù) void buz if hour h delayms 20 s7 1 當(dāng)鬧鐘走時與用戶設(shè)置的鬧鐘時間相等時 時分秒都相等 s7 對應(yīng)的 I O 口輸出低電平 蜂鳴器響 一段時間后 s7 輸出變?yōu)楦唠娖?停止響 3 中斷入口程序 void T0 ms interrupt 1 中斷入口程序 TH0 65536 45872 256 重新裝初值 TL0 65536 45872 256 count if count 20 判定 1s 時間是否已到 count 0 timecont

溫馨提示

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

評論

0/150

提交評論