<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)

          基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)

          作者: 時(shí)間:2012-09-11 來源:網(wǎng)絡(luò) 收藏

          設(shè)計(jì)一個(gè)控制的簡易。要求根據(jù)設(shè)定的初始值(1-59秒)進(jìn)行倒計(jì)時(shí),當(dāng)計(jì)時(shí)到0時(shí)數(shù)碼管閃爍“00”(以1Hz閃爍),按鍵功能如下:
          (1)設(shè)定鍵:在倒計(jì)時(shí)模式時(shí),按下此鍵后停止倒計(jì)時(shí),進(jìn)入設(shè)置狀態(tài);如果已經(jīng)處于設(shè)置狀態(tài)則此鍵無效。
          (2)增一鍵:在設(shè)置狀態(tài)時(shí),每按一次遞增鍵,初始值的數(shù)字增1。
          (3)遞一鍵:在設(shè)置狀態(tài)時(shí),每按一次遞減鍵,初始值的數(shù)字減1。
          (4)確認(rèn)鍵:在設(shè)置狀態(tài)時(shí),按下此鍵后,按照新的初始值進(jìn)行倒計(jì)時(shí)及顯示倒計(jì)時(shí)的數(shù)字。如果已經(jīng)處于計(jì)時(shí)狀態(tài)則此鍵無效。
          3.1.2 模塊1:系統(tǒng)設(shè)計(jì)
          (1)任務(wù)分析與整體設(shè)計(jì)思路
          根據(jù)題目的要求,需要實(shí)現(xiàn)如下幾個(gè)方面的功能。
          :要實(shí)現(xiàn)則需要使用定時(shí)器來計(jì)時(shí),通過設(shè)置定時(shí)器的初始值來控制溢出中斷的時(shí)間間隔,再利用一個(gè)變量記錄定時(shí)器溢出的次數(shù),達(dá)到定時(shí)1秒中的功能。然后,當(dāng)計(jì)時(shí)每到1秒鐘后,倒計(jì)時(shí)的計(jì)數(shù)器減1。當(dāng)?shù)褂?jì)時(shí)計(jì)數(shù)器到0時(shí),觸發(fā)另一個(gè)標(biāo)志變量,進(jìn)入閃爍狀態(tài)。
          顯示功能:顯示倒計(jì)時(shí)的數(shù)字要采用動(dòng)態(tài)掃描的方式將數(shù)字拆成“十位”和“個(gè)位”動(dòng)態(tài)掃描顯示。如果處于閃爍狀態(tài),則可以不需要?jiǎng)討B(tài)掃描顯示,只需要控制共陰極數(shù)碼管的位控線,實(shí)現(xiàn)數(shù)碼管的滅和亮。
          鍵盤掃描和運(yùn)行模式的切換:主程序在初始化一些變量和寄存器之后,需要不斷循環(huán)地讀取鍵盤的狀態(tài)和動(dòng)態(tài)掃描數(shù)碼管顯示相應(yīng)的數(shù)字。根據(jù)鍵盤的按鍵值實(shí)現(xiàn)設(shè)置狀態(tài)、計(jì)時(shí)狀態(tài)的切換。
          (2)型號及所需外圍器件型號,單片機(jī)硬件電路原理圖
          選用MCS-51系列AT89S51單片機(jī)作為微控制器,選擇兩個(gè)四聯(lián)的共陰極數(shù)碼管組成8位顯示模塊,由于AT89S51單片機(jī)驅(qū)動(dòng)能力有限,采用兩片74HC244實(shí)現(xiàn)總線的驅(qū)動(dòng),一個(gè)74HC244完成位控線的控制和驅(qū)動(dòng),另一個(gè)74HC244完成數(shù)碼管的7段碼輸出,在輸出口上各串聯(lián)一個(gè)100歐姆的電阻對7段數(shù)碼管限流。
          由于鍵盤數(shù)量不多,選擇獨(dú)立式按鍵與P1口連接作為四個(gè)按鍵輸入。沒有鍵按下時(shí)P1.0-P1.3為高電平,當(dāng)有鍵按下時(shí),P1.0-P1.3相應(yīng)管腳為低電平。電路原理圖如圖3-1所示。

          基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)
          圖3-1 電路原理圖


          (3)程序設(shè)計(jì)思路,單片機(jī)資源分配以及程序流程
          ①單片機(jī)資源分配
          采用單片機(jī)的P3口作為按鍵的輸入,使用獨(dú)立式按鍵與P3.0-P3.3連接,構(gòu)成四個(gè)功能按鍵。
          中,需要三個(gè)變量分別暫存定時(shí)器溢出的次數(shù)(T1_cnt)、倒計(jì)時(shí)的初始值(init_val)以及當(dāng)前倒計(jì)時(shí)的秒數(shù)(cnt_val)。
          按鍵掃描功能中,需要兩個(gè)變量,一個(gè)變量(key_val_new)用來存儲當(dāng)前掃描的鍵值(若無按鍵按下則為255),另一個(gè)變量(key_val_old)用來存儲上一次掃描的鍵值。只有這兩個(gè)變量值不一樣時(shí),才能說明是一次新的按鍵按下或彈起了,同時(shí)將新的鍵值賦給key_val_old變量。
          在顯示功能中,需要定義一組數(shù)組(code類型),值為0-9數(shù)字對應(yīng)的數(shù)碼管7段碼。還需要定義一個(gè)變量(show_val)暫存要顯示的數(shù)據(jù),用于動(dòng)態(tài)掃描顯示中。
          在整個(gè)程序中,定義了一個(gè)狀態(tài)變量(state_val)用來存儲當(dāng)前單片機(jī)工作在哪種狀態(tài)。
          ②程序設(shè)計(jì)思路
          鑒于題目要求,存在三種工作模式:初始值設(shè)置模式、倒計(jì)時(shí)模式、計(jì)時(shí)到0時(shí)的閃爍模式。變量state_val為0時(shí),處于倒計(jì)時(shí)模式。變量state_val為1時(shí),處于初始值設(shè)置模式。變量state_val為2時(shí),處于閃爍模式。這些狀態(tài)的切換取決于按下哪一個(gè)鍵以及是否計(jì)時(shí)到0。狀態(tài)的切換圖如圖3-2

          基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)
          圖3-2 狀態(tài)的切換


          單片機(jī)復(fù)位之后,默認(rèn)處于倒計(jì)時(shí)模式,啟動(dòng)定時(shí)器,定時(shí)器每隔250us溢出一次,根據(jù)定時(shí)器溢出次數(shù)來計(jì)時(shí),到1秒時(shí)將時(shí)間的計(jì)數(shù)器減1。當(dāng)“設(shè)置鍵”按下時(shí),變量state_val由0變?yōu)?,切換到設(shè)置模式。可以使用“遞增鍵”“遞減鍵”對計(jì)時(shí)初始值進(jìn)行修改。按下“確認(rèn)鍵”時(shí),回到計(jì)時(shí)模式開始以新的初始值進(jìn)行倒計(jì)時(shí)。當(dāng)?shù)褂?jì)時(shí)到0時(shí),變量state_val由1變?yōu)?,處于閃爍狀態(tài),在這種狀態(tài)下,根據(jù)按鍵的情況分別又切換到計(jì)時(shí)和設(shè)置狀態(tài)。
          ③程序流程
          主程序首先需要初始化定時(shí)器的參數(shù)和一些變量,然后進(jìn)入一個(gè)循環(huán)結(jié)構(gòu),在循環(huán)中始終只做兩件事,一是鍵盤的掃描,二是數(shù)碼管的動(dòng)態(tài)掃描。
          在掃描鍵盤后,根據(jù)前一次按鍵的結(jié)果是否與本次鍵值相同。如果不同,表示有鍵按下或彈起,同時(shí)用本次按鍵值更新上一次的按鍵值。這樣設(shè)計(jì)旨在避免一個(gè)按鍵長時(shí)間按下時(shí)被重復(fù)判為有新鍵按下,使得當(dāng)前按下的鍵只有松開后,下一次按下時(shí)才算為一次新的按鍵。
          根據(jù)按鍵的值分別改變變量(state_val)的值或者在設(shè)置狀態(tài)時(shí)的倒計(jì)時(shí)初始值。完整的主程序圖如圖3-3所示。

          基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)
          圖3-3 主程序的流程圖


          在定時(shí)器的參數(shù)中,選擇定時(shí)器T1的8位自動(dòng)裝載模式,每250us產(chǎn)生一次溢出中斷,中斷服務(wù)程序如圖3-4所示。

          基于單片機(jī)的簡易定時(shí)報(bào)警器電路設(shè)計(jì)
          中斷服務(wù)程序流程圖

          (4)軟硬件調(diào)試方案
          軟件調(diào)試方案:偉福軟件中,在“文件新建文件”中,新建C語言源程序文件,編寫相應(yīng)的程序。在“文件新建項(xiàng)目”的菜單中,新建項(xiàng)目并將C語言源程序文件包括在項(xiàng)目文件中。
          在 “項(xiàng)目編譯”菜單中將C源文件編譯,檢查語法錯(cuò)誤及邏輯錯(cuò)誤。在編譯成功后,產(chǎn)生以 “*.hex”和“*.bin” 后綴的目標(biāo)文件。
          硬件調(diào)試方案:在設(shè)計(jì)平臺中,將單片機(jī)的P3.0-P3.3分別與獨(dú)立式鍵盤的相應(yīng)位通過插線連接起來。
          在偉福中將程序文件編譯成目標(biāo)文件后,運(yùn)行MCU下載程序,選擇相應(yīng)的flash 數(shù)據(jù)文件,點(diǎn)擊“編程”按鈕,將程序文件下載到單片機(jī)的Flash中。
          然后,上電重新啟動(dòng)單片機(jī),檢查所編寫的程序是否達(dá)到題目的要求,是否全面完整地完成試題的內(nèi)容。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();