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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論