自動報(bào)時(shí)系統(tǒng)_第1頁
自動報(bào)時(shí)系統(tǒng)_第2頁
自動報(bào)時(shí)系統(tǒng)_第3頁
自動報(bào)時(shí)系統(tǒng)_第4頁
自動報(bào)時(shí)系統(tǒng)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-作者xxxx-日期xxxx自動報(bào)時(shí)系統(tǒng)【精品文檔】 畢 業(yè) 設(shè) 計(jì)題目 自動報(bào)時(shí)系統(tǒng) 系別 機(jī)電系 專業(yè) 機(jī)電一體化 班級 機(jī)電0501 姓名 學(xué)號指導(dǎo)教師日期 2007年12月 【精品文檔】設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:自動報(bào)時(shí)系統(tǒng)設(shè)計(jì)要求:1. 設(shè)計(jì)的自動報(bào)時(shí)系統(tǒng),在自動計(jì)時(shí)時(shí),由6位LED顯示器由左到右依次來顯示時(shí)、分、秒;2. 設(shè)計(jì)的自動報(bào)時(shí)系統(tǒng),它應(yīng)具有準(zhǔn)確走時(shí)、定時(shí)、鬧鐘定時(shí)、到時(shí)鈴響等功能。時(shí)鐘走到23:59:59,再加一秒則全部清零,重新計(jì)時(shí);3. 設(shè)計(jì)出自動報(bào)時(shí)系統(tǒng)的硬件電路;4. 設(shè)計(jì)自動報(bào)時(shí)系統(tǒng)的軟件電路;5. 上機(jī)調(diào)試程序并連接試驗(yàn)箱。設(shè)計(jì)進(jìn)度要求:第一周:查找、搜集資料,確定

2、設(shè)計(jì)題目;第二周:在老師的幫助下查找資料,設(shè)計(jì)硬件電路;第三周:在老師的指點(diǎn)下,進(jìn)行軟件電路的設(shè)計(jì);第四周:連接試驗(yàn)箱進(jìn)行程序調(diào)試,修改錯(cuò)誤;第五周:按照畢業(yè)設(shè)計(jì)要求,制作電子稿;第六周:在老師的幫助下,修改電子稿;第七周:交電子稿,讓老師批閱;第八周:打印電子稿,進(jìn)行畢業(yè)答辯。 指導(dǎo)教師(簽名): 摘 要本設(shè)計(jì)是利用單片機(jī)原理設(shè)計(jì)的自動報(bào)時(shí)系統(tǒng)。其中,自動報(bào)時(shí)系統(tǒng)以AT89C51單片機(jī)為核心,采用4個(gè)獨(dú)立式按鍵來調(diào)整時(shí)間和設(shè)置鬧鈴,用共陰極動態(tài)六段LED動態(tài)顯示來顯示時(shí)間,計(jì)時(shí)方案采用時(shí)鐘芯片DS1302。以8路反向動態(tài)緩沖器74LS240作為LED的動態(tài)掃描的段碼控制驅(qū)動信號,用P2.02

3、.5外接一片集電極開路反向門電路7406(OC門)做6位LED的位選信號驅(qū)動口,6個(gè)數(shù)碼管的8根段選線分別接74LS240的輸出,LED共陰極端與7406的輸出端相連,從左到右依次來顯示時(shí),分,秒。正文中首先簡單描述了硬件系統(tǒng)的工作原理,且附以硬件系統(tǒng)的設(shè)計(jì)框圖,論述了本次畢業(yè)設(shè)計(jì)所應(yīng)用的各種硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過程, 并具體描述了外接電路接口的軟、硬件調(diào)試。本文撰寫的主導(dǎo)思想是軟、硬件相結(jié)合,以硬件為基礎(chǔ),來進(jìn)行各功能模塊的編寫。關(guān)鍵詞:單片機(jī),自動報(bào)時(shí)系統(tǒng),位碼,段碼,顯示目 錄設(shè)計(jì)任務(wù)書I1 前言12 硬件系統(tǒng)設(shè)計(jì)22.1 總體框圖設(shè)計(jì)22.2 單片機(jī)選型22.3 獨(dú)立

4、式按鍵控制電路52.4 LED動態(tài)顯示電路72.5 時(shí)鐘芯片DS1302112.6 電路原理143 軟件設(shè)計(jì)153.1 設(shè)計(jì)思路15主程序模塊15顯示程序模塊173.4 DS1302的寫時(shí)鐘程序模塊18按鍵程序模塊193.6 定時(shí)器程序模塊204 系 統(tǒng) 調(diào) 試22結(jié) 論25致 謝26參考文獻(xiàn)27附 錄A281 前言隨著半導(dǎo)體集成工藝的不斷發(fā)展,單片機(jī)的集成度將更高、體積將更小、功能將更強(qiáng)。在單片機(jī)家族中,80C51系列是其中的佼佼者,加之Intel公司將其MCS 51系列中的80C51內(nèi)核使用權(quán)以專利互換或出售形式轉(zhuǎn)讓給全世界許多著名IC制造廠商,如Philips、 NEC、Atmel、AM

5、D、華邦等,這些公司都在保持與80C51單片機(jī)兼容的基礎(chǔ)上改善了80C51的許多特性。這樣,80C51就變成有眾多制造廠商支持的、發(fā)展出上百品種的大家族,現(xiàn)統(tǒng)稱為80C51系列。80C51單片機(jī)已成為單片機(jī)發(fā)展的主流。專家認(rèn)為,雖然世界上的MCU品種繁多,功能各異,開發(fā)裝置也互不兼容,但是客觀發(fā)展表明,80C51可能最終形成事實(shí)上的標(biāo)準(zhǔn)MCU芯片。本設(shè)計(jì)采用的是ATMEL公司的AT89C51芯片,此芯片根據(jù)了充分的靜止CMOS 控制器與三級節(jié)目記憶鎖,共有:32 條I/O 線, 2 定時(shí)計(jì)數(shù)器, 6 個(gè)中斷來源,4 K 閃存, 128 個(gè)字節(jié)在芯片RAM。由于本設(shè)計(jì)所做的是一個(gè)自動報(bào)時(shí)系統(tǒng)簡單

6、,所以要用到單片機(jī)的最小應(yīng)用系統(tǒng)模塊1,還需要用獨(dú)立式鍵盤和動態(tài)顯示模塊。而我的硬件設(shè)計(jì)詳見第二章,主要介紹了需要哪幾部分硬件電路和硬件系統(tǒng)的概敘。在2.1節(jié)介紹了主要的硬件框架;2.2節(jié)簡單的介紹了單片機(jī)最小應(yīng)用系統(tǒng)的性能和附屬電路;2.3節(jié)詳細(xì)介紹了鍵盤控制電路;2.4節(jié)介紹了動態(tài)顯示電路。2.5介紹了DS1302芯片。在第三章中我們詳細(xì)的解說了軟件系統(tǒng)的設(shè)計(jì)。3.1節(jié)介紹了我們做這個(gè)設(shè)計(jì)的程序設(shè)計(jì)思路;3.2節(jié)介紹了主程序模塊及其框圖;3.3節(jié)介紹了顯示程序模塊及其框圖。第四章是我對此設(shè)計(jì)的調(diào)試過程和結(jié)果顯示。第五章就是我對此設(shè)計(jì)的總體概括,體會和心得。我所設(shè)計(jì)的這個(gè)自動報(bào)時(shí)系統(tǒng)簡單,實(shí)

7、用性強(qiáng),成本低,使用維護(hù)方便,軟件功能強(qiáng),運(yùn)行穩(wěn)定可靠等優(yōu)點(diǎn)。2 硬件系統(tǒng)設(shè)計(jì)2.1 總體框圖設(shè)計(jì)我所設(shè)計(jì)的是一個(gè)自動報(bào)時(shí)系統(tǒng),自動報(bào)時(shí)系統(tǒng)用到的單片機(jī)芯片是AT89C51芯片,除此之外還包括:晶振電路和復(fù)位電路構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng);還有獨(dú)立式按鍵電路;動態(tài)顯示電路等等;總體設(shè)計(jì)框圖如圖2.1所示。AT89C51LED動態(tài)顯示蜂鳴器按鍵電路路晶振電路DS130芯片電路復(fù)位電路圖2.1總體設(shè)計(jì)框圖2.2 單片機(jī)選型2.2.1 AT89C51的特點(diǎn)AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Onl

8、y Memory)的低電壓,高性能、CMOS、8位單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。AT89C51的管腳圖如圖2.2所示。圖2.2 AT89C51管腳圖主要特性:1、與MCS-51 兼容 2、4K字節(jié)可編程閃爍存儲器3、壽命:1000寫/擦循環(huán)4、數(shù)據(jù)保留時(shí)間:10年5、全靜態(tài)工作:0Hz-24Hz6、三級程序存儲器鎖定7、128*8位內(nèi)部RAM8、32可編程I/O線9、兩個(gè)16位定時(shí)器/計(jì)數(shù)器10、5個(gè)中斷源11、可編程串行通道12、低功耗的閑置和掉電模式13、片內(nèi)振蕩器和時(shí)鐘電路2.2.2 單片機(jī)附屬電路單片機(jī)附屬電

9、路主要有晶體振蕩電路和復(fù)位電路。一、晶體振蕩電路1晶體振蕩器的作用 石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。 2本設(shè)計(jì)所用的晶體振蕩電路如圖2.3所示: 圖2.3 晶體振蕩電路此晶振電路所選用的石英晶振頻率為12MHZ。時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時(shí)間周期就是1/12 us),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動作。對于某種單片機(jī),若采用了1MHZ的時(shí)鐘頻率,則時(shí)鐘周期為1us;若采用4MHZ的時(shí)鐘頻率,則時(shí)鐘周期為us。由于時(shí)鐘脈沖是單片機(jī)的基本工作脈沖,它控

10、制著單片機(jī)的工作節(jié)奏(使單片機(jī)的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機(jī)型的單片機(jī),時(shí)鐘頻率越高,單片機(jī)的工作速度就越快。但是,由于不同的單片機(jī)的硬件電路和器件不完全相同,所以其需要的時(shí)鐘頻率范圍也不相同。我們學(xué)習(xí)的51系列單片機(jī)的時(shí)鐘范圍是1.2MHz-12MHz。二、復(fù)位電路單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC0000H,使單片機(jī)從第個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位,所以我們必須弄清楚MCS-51型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。單片機(jī)復(fù)位的條件是:必須使RST/

11、Vpd或RST引腳加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。例如,若時(shí)鐘頻率為12MHz,每機(jī)器周期為1us,則只需2us以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個(gè)機(jī)器周期執(zhí)行復(fù)位。單片機(jī)常用的復(fù)位電路如圖2.4(a)和圖2.4(b)所示: 圖2.4(a) 復(fù)位電路 圖2.4(b) 與單片機(jī)相連的復(fù)位電路圖2.4(a) 復(fù)位電路,其電阻阻值的選擇和電容容量的選擇都是經(jīng)過計(jì)算的,而最后計(jì)算的結(jié)果時(shí)間常數(shù)可以滿足我們的需求。其計(jì)算過程如下:×1000×10×10-6此值遠(yuǎn)遠(yuǎn)大于2us,所以此復(fù)位電路可用。圖2.4(b)是我設(shè)計(jì)中用到的復(fù)位單路,為按鍵復(fù)

12、位電路。該電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖中的RESET鍵,此時(shí)電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生復(fù)位高電平。2.3 獨(dú)立式按鍵控制電路獨(dú)立式鍵盤的接口電路:在單片機(jī)應(yīng)用系統(tǒng)中,有時(shí)只需要幾個(gè)簡單的按鍵向系統(tǒng)輸入信息。這時(shí),可將每個(gè)按鍵直接接在一根I/O接口線上,這種連接方式的鍵盤稱為獨(dú)立式鍵盤。如圖2.5所示,每個(gè)獨(dú)立按鍵單獨(dú)占有一根I/O接口線,每根I/O接口線的工作狀態(tài)不會影響到其他I/O接口線。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O線,I/O接口線浪費(fèi)較大。故只在按鍵數(shù)量不多時(shí)采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有

13、效。上拉電阻保證了按鍵斷開時(shí),I/O接口線有確定的高電平。當(dāng)I/O接口內(nèi)部有上拉電阻時(shí),外電路可以不配置上拉電阻。獨(dú)立式按鍵具體在自動報(bào)時(shí)系統(tǒng)中的應(yīng)用,在2.3.1中有詳細(xì)介紹。.圖2.5 獨(dú)立式鍵盤電路2.3.1 自動報(bào)時(shí)系統(tǒng)的按鍵接口及功能工作原理在自動報(bào)時(shí)系統(tǒng)中采用4個(gè)獨(dú)立的鍵盤,其中一個(gè)為功能鍵;一個(gè)為數(shù)字調(diào)整鍵;一個(gè)為取消設(shè)置鍵,用來設(shè)定時(shí)間;一個(gè)為ALM鍵,用來設(shè)定定時(shí)時(shí)間。按鍵的接口由P1.7、P1.6、P1.5、P1.4來完成。1時(shí)間調(diào)整:按下功能鍵,系統(tǒng)停止計(jì)時(shí)顯示,進(jìn)入時(shí)間設(shè)定狀態(tài),系統(tǒng)只顯示小時(shí)的內(nèi)容,其余4位LED處于全暗狀態(tài),等待按鍵設(shè)置。此時(shí)按動數(shù)字調(diào)整鍵后小時(shí)將會

14、加1,按動取消鍵后又重新回到原來的時(shí)間顯示狀態(tài);若再按動功能鍵則用來調(diào)整分鐘,此時(shí)小時(shí)和秒的4位LED指示全暗,按數(shù)字調(diào)整鍵后可以對分鐘增1調(diào)整,按動取消鍵后又重新回到原來的時(shí)間顯示狀態(tài);再按動功能鍵則用來調(diào)整秒,此時(shí)小時(shí)和分鐘的4位LED指示全暗,秒顯示當(dāng)前的秒數(shù),暗數(shù)字調(diào)整鍵可以對秒進(jìn)行增1調(diào)整,按動取消鍵后又重新回到原來的時(shí)間顯示狀態(tài),按動功能鍵后系統(tǒng)將自動由設(shè)定后的時(shí)間開始計(jì)時(shí)顯示。2鬧鐘設(shè)置/啟鬧:按下ALM鍵,系統(tǒng)繼續(xù)計(jì)時(shí),但顯示為00:00:00,此時(shí)再按動功能鍵后進(jìn)入鬧鐘設(shè)置狀態(tài),設(shè)置過程和時(shí)間調(diào)整相同,但是最后按功能鍵確定后顯示定時(shí)時(shí)間30S后自動啟動定時(shí)鬧鐘功能,并恢復(fù)時(shí)間

15、顯示。定時(shí)時(shí)間到,蜂鳴器鳴叫1min后自動停鬧,每次設(shè)置時(shí)只能定一次,下次需重新設(shè)置。2.3.2 按鍵開關(guān)的去除抖動功能目前,MCS51單片機(jī)應(yīng)用系統(tǒng)上的按鍵常采用機(jī)械觸點(diǎn)式按鍵,它在斷開、閉.可以看出機(jī)械觸點(diǎn)在閉合及斷開瞬間均有抖動過程,時(shí)間長短與開關(guān)的機(jī)械特性有關(guān),一般為510ms。由于抖動,會造成被查詢的開關(guān)狀態(tài)無法準(zhǔn)確讀出。例如,一次按鍵產(chǎn)生的正確開關(guān)狀態(tài),由于鍵的抖動,CPU多次采集到底電平信號,會被誤認(rèn)為按鍵被多次按下,就會多次進(jìn)行鍵輸入操作,這是不允許的。為了保證CPU對鍵的一次閉合僅在按鍵穩(wěn)定時(shí)作一次鍵輸入處理,必須消除產(chǎn)生的前沿(后沿)抖動影響。所以我在軟件設(shè)計(jì)中作了相應(yīng)設(shè)計(jì)

16、。 圖2.6 按鍵過程2.4 LED動態(tài)顯示電路2.4.1 數(shù)碼管簡介1 數(shù)碼管結(jié)構(gòu)數(shù)碼管由8個(gè)發(fā)光二極管(以下簡稱字段)構(gòu)成,通過不同的組合可用來顯示數(shù)字0 9、字符A F及小數(shù)點(diǎn)“·”。數(shù)碼管的外形結(jié)構(gòu)如圖2.7(a)所示。數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu),分別如圖2.7(b)和圖2.7(c)所示。(a) 外型結(jié)構(gòu);(b) 共陰極;(c)共陽極圖2.7 數(shù)碼管結(jié)構(gòu)圖2 數(shù)碼管工作原理由于我們采用的是共陰極數(shù)碼管,所以介紹共陰極數(shù)碼管的工作原理如下: 共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起。通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動電路輸出端。當(dāng)某段

17、驅(qū)動電路的輸出端為高電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。共陽極數(shù)碼管的工作原理與共陰極的正好相反。3 數(shù)碼管字形編碼 要使數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應(yīng)的字形編碼。LED顯示字型碼表見表2.1:表2.1 LED顯示字型碼表顯示字符共陰極共陽極顯示字符共陰極共陽極03FHC0H96FH90H106HF9HA77H88H25BHA4HB7CH83H34FHB0HC39HC6H466H99HD5EHA1H56DH92HE79H86H6

18、7DH82HF71H8EH707HF8H87FH80H2.4.2 顯示的種類1 靜態(tài)顯示概念 靜態(tài)顯示是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨(dú)立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個(gè)數(shù)碼管的8個(gè)字段分別與一個(gè)8位I/O口地址相連,I/O口只要有段碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式的優(yōu)點(diǎn):較小的電流即可獲得較高的亮度,且占用CPU時(shí)間少,編程簡單,顯示便于監(jiān)測和控制,但其占用的接口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場合。2 動態(tài)顯示概念 動態(tài)顯示是一位一位地輪流點(diǎn)亮各

19、位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制。動態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示,必須采用掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼。依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符。雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人以同時(shí)顯示的感覺。采用動態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示方式簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)

20、較多時(shí),CPU要依次掃描,占用CPU較多的時(shí)間。我們這個(gè)設(shè)計(jì)所使用的顯示屬于動態(tài)顯示,其顯示電路圖形如圖2.8所示:.圖2.8 動態(tài)顯示電路顯示器由6個(gè)共陰極數(shù)碼管組成。同時(shí)采用動態(tài)掃描方式依次循環(huán)點(diǎn)亮數(shù)碼管,即構(gòu)成多位動態(tài)顯示電路。圖中,6位數(shù)碼管均采用共陰極LED,P0接口外接8路反相三態(tài)緩沖器74LS240作LED動態(tài)掃描的段碼控制驅(qū)動信號,用P1接口的P1.0-P1.3外接一片集電極開路反相門電路74LS07做為8位LED的位選信號驅(qū)動口, LED共陰極端與74LS06的輸出端相連。74LS240的功能74LS240是原碼三態(tài)輸出的8緩沖數(shù)碼驅(qū)動器,其管腳分布圖如圖2.9所示,G為控制

21、端,又稱為使能端其工作原理如下: 當(dāng)G=0時(shí),A輸入為低電平時(shí),Y輸出也為低電平。當(dāng)G=0時(shí),A輸入為高電平時(shí), Y輸出為高電平。當(dāng)G=1時(shí),A不論輸入高電平還是低電平Y(jié)為高阻狀態(tài)。圖2.9 74LS240管腳圖 74LS06的功能74LS06是六緩沖的數(shù)碼驅(qū)動器,它是有6個(gè)集電極開路的非門所組成,當(dāng)使能端為低電平時(shí),輸入為高電平時(shí)輸出也為高電平,當(dāng)輸入為低電平時(shí)輸出也為低電平,其邏輯表達(dá)式為:Y=A 。2.5 時(shí)鐘芯片DS13022.5.1 DS1302芯片具有以下特點(diǎn)1、實(shí)時(shí)時(shí)鐘/日歷:實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)日星期月和年等信息,每月天數(shù)以及閏年能自動調(diào)整,時(shí)鐘可以才用24h或AM/P

22、M的12h格式。2、31字節(jié)的靜態(tài)RAM:用于存儲數(shù)據(jù)。3、帶慢速充電控制備份電源的充電特性。4、簡單的三線串行接口:該芯片使用同步串行通信。與時(shí)鐘/RAM通信供需3根線:復(fù)位、數(shù)據(jù)線、串行時(shí)鐘。數(shù)據(jù)可以以每次1個(gè)字節(jié)的形式傳送到時(shí)鐘/RAM或從其讀出。2.5.2 它的引腳圖和引腳功能DS1302的引腳結(jié)構(gòu)見圖2.10,引腳功見表2.2。 圖2.10 DS1302引腳圖引腳號引腳名稱功能1Vcc2主電源2、3X1、X24GND地5RST復(fù)位兼片選端6I/O串行數(shù)據(jù)輸入/輸出7SCLK串行時(shí)鐘輸入端8Vcc1后備電源表2.2 DS1302的引腳功能2.5.3 DS1302的工作原理1、DS130

23、2組成:串行時(shí)鐘芯片主要由移位寄存器、控制邏輯、振蕩器、實(shí)時(shí)時(shí)鐘、RAM、電源組成,如圖2.11所示。圖2.11 DS1302內(nèi)部結(jié)構(gòu)組成入移位寄存器;其2、復(fù)位時(shí)鐘:為了初始化任何的數(shù)據(jù)傳送,通過把RST輸入驅(qū)至高電平來啟動所有的數(shù)據(jù)傳送。RST有兩種功能,首先,RST接通控制邏輯,允許地址/命令序列送次,RST提供了單字節(jié)或多字節(jié)數(shù)據(jù)傳送的手段。時(shí)鐘SCLK是上升沿后繼以下降沿的序列。數(shù)據(jù)輸入時(shí),在時(shí)鐘的上升沿前必須有效,而數(shù)據(jù)位在時(shí)鐘的下降沿之后輸出。如果RST輸入為低電平,則I/O引腳變?yōu)楦咦锠顟B(tài),終止數(shù)據(jù)傳輸。通電時(shí),VCC2.5V,RST由0至1狀態(tài)時(shí),SCKL必須為邏輯0。3、操

24、作方式:芯片的操作受地址/命令字節(jié)控制,每一組數(shù)據(jù)的傳送由命令字節(jié)初始化。地址/命令字節(jié)格式如圖2.12所示。位7必須為邏輯1,如果它是0,禁止寫DS1302;位6邏輯0,指定為時(shí)鐘/日歷數(shù)據(jù),為邏輯1,指定為RAM數(shù)據(jù);位15指定輸入或輸出的寄存器單元地址;位0指定輸入/輸出數(shù)據(jù)。命令字節(jié)總是從最低有效位開始輸入。4、數(shù)據(jù)輸入:當(dāng)命令字節(jié)為寫命令時(shí),最低位為0,在下8個(gè)SCLK周期的上升沿輸入字節(jié),數(shù)據(jù)從最低位開始輸入;數(shù)據(jù)輸出:當(dāng)命令字節(jié)為讀命令時(shí),最低位為1,在下8個(gè)SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。這時(shí)被傳送的第一數(shù)據(jù)為發(fā)生在命令字節(jié)的最后一位之后的第一個(gè)下降沿,所以,在非多字節(jié)方式,

25、每次讀或?qū)懙拿}沖個(gè)數(shù)為16個(gè),前8個(gè)為命令脈沖,后8個(gè)為讀或?qū)懙拿}沖。這樣在單字節(jié)傳送數(shù)據(jù)時(shí),每次命令為16個(gè)脈沖即可完成,多余的脈沖將忽略不計(jì)。通過對地址31尋址,可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)讀寫方式,讀或?qū)懭詮牡刂?單元的最低位開始。當(dāng)以多字節(jié)方式寫時(shí)鐘寄存器時(shí),必須按數(shù)據(jù)的次序?qū)懽钕鹊?個(gè)寄存器。這樣8個(gè)時(shí)鐘字節(jié)的讀或?qū)懝残?2個(gè)脈沖時(shí)鐘,31個(gè)RAM的讀或?qū)懝残?56脈沖時(shí)鐘。其時(shí)序如圖2.13所示:圖2.13 DS1302的時(shí)序2.6 電路原理電路的核心是89C51單片機(jī),其內(nèi)部帶有4KB的FlashROM,無須擴(kuò)展程序存儲器;電腦沒有大量的運(yùn)算和暫存數(shù)據(jù),現(xiàn)有的128

26、B片內(nèi)RAM已能滿足要求,也不必?cái)U(kuò)展片外RAM。系統(tǒng)配備6位LED顯示和4個(gè)單接口鍵盤,采用P0接口外接8路反相三態(tài)緩沖器74LS240作LED動態(tài)掃描的段碼控制驅(qū)動信號,用P2接口的P2.0-P2.5外接一片集電極開路反相門電路74LS06做為6位LED的位選信號驅(qū)動口, 6個(gè)數(shù)碼管的8根段選線分別與74LS06的輸出端相連;LED共陰極端與7406的輸出端相連;按鍵接口由P1.7、P1.6、P1.5、P1.4來完成。DS1302實(shí)時(shí)時(shí)鐘芯片接口由P1.0、P1.1、P1.2來控制,P3口接鬧鐘小喇叭。其硬件原理總圖見附錄A。3 軟件設(shè)計(jì)3.1 設(shè)計(jì)思路因?yàn)槲易龅氖亲詣訄?bào)時(shí)系統(tǒng),它需要具有校

27、時(shí),調(diào)時(shí),定時(shí),鬧鐘,等功能,而且用到了DS1302芯片,此芯片具有自動記時(shí)功能所以編寫程序簡單。所以我們考慮到用單片機(jī)語言來做我們的設(shè)計(jì)。對于程序我們的設(shè)計(jì)思路是:1在此設(shè)計(jì)中用定時(shí)器來完成動態(tài)掃描顯示。用定時(shí)器T0定2ms的時(shí)間間隔,每次定時(shí)時(shí)間到時(shí)就輸出一個(gè)LED信號,即顯示一位。定時(shí)器每中斷6次后循環(huán)到第一位LED顯示。這樣動態(tài)顯示占用CPU的時(shí)間只有輸出段碼和輸出位碼的有限時(shí)間,提高了CPU的工作效率。2. 要有主程序程序。3本設(shè)計(jì)使用按鍵來對DS1302寫入時(shí)間校時(shí),對時(shí),設(shè)定時(shí)間的,所以要有DS1302的寫時(shí)鐘程序。4系統(tǒng)資源分配:1)定時(shí)器:定時(shí)器T0用做顯示定時(shí),按方式1工作

28、,每隔2ms溢出中斷一次。2)片內(nèi)RAM及標(biāo)志位的分配:a)顯示緩沖區(qū):使用(30H35H)6個(gè)RAM作LED的顯示緩沖區(qū),每一個(gè)緩沖區(qū)對應(yīng)一個(gè)LED,在定時(shí)時(shí)間到時(shí)就把6個(gè)緩沖區(qū)中的數(shù)送給相應(yīng)的LED顯示。b)時(shí)間緩沖區(qū):使用(36H3BH)6個(gè)RAM來保存當(dāng)前從DS1302中讀出來的時(shí)間,在主程序運(yùn)行時(shí)大約每一秒鐘把其中的數(shù)據(jù)更新到顯示緩沖區(qū)用以顯示。c)定時(shí)緩沖區(qū):使用(40H45H)6個(gè)RAM保存設(shè)定的定時(shí)時(shí)間,并在時(shí)間緩沖區(qū)的內(nèi)容更新的同時(shí)進(jìn)行比較,若相同則表明定時(shí)時(shí)間到了,開始調(diào)用報(bào)時(shí)子程序。主程序與按鍵控制,讀時(shí)間并對定時(shí)時(shí)間進(jìn)行判斷。主程序初始化后,就開始進(jìn)行對DS1302的讀

29、時(shí)間;讀完后送顯示緩沖區(qū),同時(shí)并對定時(shí)時(shí)間進(jìn)行判斷比較;然后開始依次掃描4個(gè)按鍵來判別是否進(jìn)入相應(yīng)的按鍵子程序中;再對DS1302讀時(shí)間完成主循環(huán)程序。流程圖如下:LCALL KEY-SETLCALL ALM- SETLCALL ALMMOV ADDR-1302,#85HLCALL READ-CLOCKMOV A,DATA-1302ANL A,#10HMOV 36H,AMOV A,DATA-1302ANL A,#0FHMOV 37H,AMOV ADDR-1302,#83HLCALL READ-CLOCKMOV A,DATA-1302ANL A,#0F0HMOV 38H,AMOV A,DATA-

30、1302ANL A,#0FHMOV 39H,AMOV ADDR-1302,#81HLCALL READ-CLOCKMOV A,DATA-1302ANL A,#70HMOV 3AH,AMOV A,DATA-1302ANL A,#OFHMOV 3BH,AMOV R4,#6顯示程序采用動態(tài)顯示,由位碼控制那一個(gè)數(shù)碼管顯示,由段碼控制數(shù)碼管顯示什么數(shù)值,根據(jù)中斷程序顯示時(shí)間來查表顯示數(shù)值,從第一位到第六位逐個(gè)點(diǎn)亮,同時(shí)每顯示一位判斷一次六位顯示完了嗎?沒有顯示完進(jìn)行顯示下一位,顯示完了從頭開始再循環(huán)。顯示子程序的流程圖如所示: 圖3.2 顯示子程序流程圖 DESPLAY:MOV R2 ,#01H ;將

31、位碼送R2MOV R0,#30 ;將段碼送R0NEXT3:MOV A,R0 MOV DPTR,#TAB2MOVC A,A+DPTRMOV P0,A ;將段碼送R0MOV P1,R2 ;將位碼送R2LCALL DELAY1 ;調(diào)用延時(shí)程序MOV A,R2JB ACC.3,U2 ;顯示完轉(zhuǎn)U2RL A ;未顯示完,將未碼左移MOV R2,A ;將位碼重送、R2中INC R0 ;指向31HLJMP NEXT3 U2:RET ;顯示返回3.4 DS1302的寫時(shí)鐘程序模塊DS1302的寫時(shí)程序:WRITE-CLOCK: NOP ;DS1302的寫時(shí)鐘程序,入口:ADDR-1302作地址 :DATA-1

32、302作數(shù)據(jù);功能:在ADDR地址單元中寫入DATA數(shù)據(jù)CLR CLKCLK RST; NOPSETB RSTMOV R3,ADDR-1302 LCALL CLOCK-OUTMOV R3,DATA-1302LCALL CLOCK-OUTCLR RSTSETB CLKRST進(jìn)入按鍵程序,判斷有鍵按下嗎?沒有,則調(diào)用延時(shí)重新判斷,如果到了,調(diào)用延時(shí)去抖程序,再次判斷有鍵按下否,沒有則返回延時(shí)程序,如果有按鍵,則判斷鍵號,堆棧,判斷鍵是否釋放,沒有,繼續(xù)判斷,釋放了,則輸入鍵號送往累加器,然后返回主程序。KEY: ACALL KS ;調(diào)用KS判斷有鍵按下嗎JNZ K1 ;有鍵按下則轉(zhuǎn)移ACALL D

33、L6ms ;無鍵按下則調(diào)用延時(shí)子程序AJMP KEY ;延時(shí)返回K1:ACALL DL6ms ;調(diào)用延時(shí)程序、3.6 定時(shí)器程序模塊為定時(shí)器T0中斷服務(wù)子程序,主要是完成循環(huán)顯示。定時(shí)器T0每隔2ms溢出中斷一次,則循環(huán)中斷6次,循環(huán)點(diǎn)亮6個(gè)LED數(shù)碼管各一次。系統(tǒng)使用12MHZ的晶振,定時(shí)器0工作方式1,則2ms定時(shí)對應(yīng)的定時(shí)器初值可有下式計(jì)算得到:定時(shí)時(shí)間=(216定時(shí)器T0初值)×(12/振蕩周期)因此,定時(shí)器T0初值=0F830H,即TH0=0F8H,TL0=30H,當(dāng)系統(tǒng)使用其他頻率的晶振時(shí),也可以由以上式計(jì)算相應(yīng)的定時(shí)器T0處治。如單片機(jī)的主脈沖頻率為,經(jīng)過分頻方式0定時(shí)

34、時(shí)間213×方式1定時(shí)時(shí)間216 ×秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問題,定時(shí)器需定時(shí)50毫秒,故0工作于方式1,定時(shí)20次,就可定時(shí)一秒。定時(shí)器程序:T0-TIMER:NOPPUSH ACCPUSH PSWSETB RS0DJNZ DIS-COUNT,T0-TIMER1MOV DIS- COUNT ,#6MOV DUAN-ADDR,#30HMOV WEI MA,#00100000BT0-TIMER1:NOPMOV R0,DUAN-ADDRMOV P2,#0MOV A,R0MOV DPTR,#TABMOVC A,A+DP

35、TRMOV P0,AMOV P2,WEI-MAINC R0MOV A,WEI-MARR AMOV WEI-MA,AMOV TH0,#0F8HMOV TL1,#30HPOP PSWPOP ACC4 系 統(tǒng) 調(diào) 試完成了硬件的設(shè)計(jì)、制作和軟件編程之后,要使系統(tǒng)能夠按設(shè)計(jì)意圖正常運(yùn)行,必須進(jìn)行系統(tǒng)調(diào)試。系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試兩個(gè)部分。不過,作為一個(gè)單片機(jī)系統(tǒng),其運(yùn)行是軟硬件相結(jié)合的,因此,軟硬件的調(diào)試也是絕對不可能分開的。 程序的調(diào)式應(yīng)一個(gè)模塊一個(gè)模塊地進(jìn)行,單獨(dú)調(diào)試各功能子程序,檢驗(yàn)程序是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制是否正常等;最后逐步將各個(gè)子程序連接起來總調(diào)。聯(lián)調(diào)需要注意的是,各

36、程序模塊間能否正確傳遞參數(shù),特別要注意各子程序的現(xiàn)場保護(hù)與恢復(fù)。調(diào)試的基本步驟如下:1、通過偉福仿真軟件和Keil軟件來驗(yàn)證程序。打開偉福軟件模擬器,首先進(jìn)行仿真器設(shè)置,如下圖4.1、4.2所示:選擇E6000/L仿真器POD-8ISIP仿真頭選擇8751CPU。然后再進(jìn)行通信設(shè)置、目標(biāo)文件以及語言的設(shè)置。最后點(diǎn)擊“好”,完成仿真器的設(shè)置。2、在偉福軟件中輸入程序,進(jìn)行編譯,有好幾處錯(cuò)誤程序沒有通過編譯,然后我就查找錯(cuò)誤的所在,一一更改之后終于通過編譯,如下圖4.3所示:3、對編譯通過的程序進(jìn)行跟蹤執(zhí)行,看執(zhí)行結(jié)果,如下圖所示:4、在偉福內(nèi)調(diào)試通過以后,進(jìn)入KEIL軟件編輯器,對程序進(jìn)行下載運(yùn)

37、行,并連接試驗(yàn)箱,查看實(shí)驗(yàn)效果。在Keil中下載到實(shí)驗(yàn)箱上進(jìn)行驗(yàn)證,顯現(xiàn)出所要求的效果。而在Keil中也要進(jìn)行一些參數(shù)的設(shè)置,首先打開Keil仿真軟件,首先要新建一個(gè)項(xiàng)目,點(diǎn)菜單ProjectNew Project,在彈出的對話框中選擇保存的路徑并輸入項(xiàng)目名稱“qqqq”示:在彈出的對話框中選所示:結(jié) 論經(jīng)過這段時(shí)間的設(shè)計(jì),終于完成了我的設(shè)計(jì),雖然只是一個(gè)非常簡單的自動報(bào)時(shí)系統(tǒng),我可是經(jīng)過了一翻很大的努力才完全達(dá)到設(shè)計(jì)要求的,從心底里說,還是挺高興的,畢竟這次設(shè)計(jì)所要求的東西都做了出來,然而高興之余不得不深思呀!本設(shè)計(jì)采用AT89C51單片機(jī)的設(shè)計(jì),計(jì)以單片機(jī)為核心部件的自動報(bào)時(shí)系統(tǒng),利用74LS244作為斷碼驅(qū)動器,74LS07作為位碼驅(qū)動,LED六斷數(shù)碼管作為計(jì)時(shí)顯示用,用發(fā)光二極管指示計(jì)時(shí),用按鍵進(jìn)行校時(shí)調(diào)整鬧鈴時(shí)間,使時(shí)間得到調(diào)整和使鬧鈴開啟和關(guān)閉。依據(jù)本論文設(shè)計(jì)以89C51單片機(jī)為核心的電子時(shí)鐘,經(jīng)過近2個(gè)月的設(shè)計(jì),最

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論