久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19344|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的校園打鈴系統(tǒng)設(shè)計(jì)論文

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

信息職業(yè)技術(shù)學(xué)院

畢業(yè)設(shè)計(jì)說明書(論文)

設(shè)計(jì)題目:基于單片機(jī)的校園打鈴系統(tǒng)設(shè)計(jì)


專    業(yè):應(yīng)用電子技術(shù)

班    級(jí):應(yīng)電08-2              

學(xué)    號(hào):

姓    名:

指導(dǎo)教師:


信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)任務(wù)書
學(xué) 生
姓 名

學(xué)號(hào)

班級(jí)
應(yīng)電08-2
專業(yè)
應(yīng)用電子技術(shù)
設(shè)計(jì)(或論文)題目
基于單片機(jī)的校園打鈴系統(tǒng)設(shè)計(jì)
指導(dǎo)教師姓名
職  稱
工作單位及所從事專業(yè)
聯(lián)系方式
備 注

工程師
學(xué)
01

設(shè)計(jì)(論文)內(nèi)容:利用單片機(jī)做為主控器件,設(shè)計(jì)一校園打鈴系統(tǒng)的硬件部分:
1.實(shí)現(xiàn)打鈴時(shí)間的設(shè)置和修改;
2.顯示當(dāng)前日期、時(shí)間;
3.掉電情況下計(jì)時(shí)工作正常進(jìn)行、能保存以前設(shè)置的時(shí)刻。
基本要求:
1.正確選擇元器件完成相應(yīng)功能;  
2.設(shè)計(jì)整機(jī)電路、明晰系統(tǒng)工作原理;
3.系統(tǒng)仿真;                     
4.完成說明書撰寫。
進(jìn)度安排:
第3~6周:選題及查找相關(guān)資料主要查找與課題相關(guān)的資料;
第7周:相關(guān)資料的整理并對(duì)其進(jìn)行理解;
第8周:對(duì)畢業(yè)論文的資料進(jìn)行初步的整理;
第9周:期中檢查;                                
第10周:對(duì)論文進(jìn)行修改及進(jìn)行仿真實(shí)驗(yàn);
第11周:對(duì)畢業(yè)論文進(jìn)行排版;                  
第12周:檢查排版及內(nèi)容;
第13周:加深對(duì)畢業(yè)論文的理解準(zhǔn)備答辯;  
第14周:檢查畢業(yè)設(shè)計(jì)論文的地方準(zhǔn)備答辯;        
第15周:答辯。
主要參考文獻(xiàn)、資料(寫清楚參考文獻(xiàn)名稱、作者、出版單位):
[1]蘇平.單片機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社,2003
[2]林伸茂.8051單片機(jī)徹底研究實(shí)習(xí)篇.北京:人民郵電出版社,2005
[3]韓志軍.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2005
[4]陳坤.電子設(shè)計(jì)技術(shù).成都:電子科技大學(xué)出版社,1997
[5]鄭應(yīng)光.模擬電子線路(一).南京:東南大學(xué)出版社,2005
[6]李秀忠.單片機(jī)應(yīng)用技術(shù).北京:人民郵電出版社,2007
教研室負(fù)責(zé)人:
年   月   日











備注:任務(wù)書由指導(dǎo)教師填寫,一式二份。其中學(xué)生一份,指導(dǎo)教師一份。


目  錄

摘 要.................................................................... 1

第1章 緒論.............................................................. 2

第2章 方案設(shè)計(jì)與論證.................................................... 3

2.1 系統(tǒng)方案選擇與比較.................................................. 3

2.1.1 控制模塊方案選擇................................................ 3

2.1.2 顯示模塊方案選擇................................................ 4

2.2.3 存儲(chǔ)模塊方案選擇................................................ 4

2.2 總體方案設(shè)計(jì)思想.................................................... 5

第3章 硬件電路設(shè)計(jì)...................................................... 6

3.1 控制模塊設(shè)計(jì)........................................................ 6

3.1.1 單片機(jī)AT89C51簡介.............................................. 6

3.1.2 單片機(jī)時(shí)鐘電路復(fù)位電路介紹...................................... 7

3.2 打鈴模塊............................................................ 8

3.3 存儲(chǔ)模塊............................................................ 8

3.3.1 實(shí)時(shí)時(shí)鐘DS1302簡介............................................. 8

3.3.2 存儲(chǔ)器24C02C................................................... 10

3.4 鍵控模塊........................................................... 12

3.4.1 獨(dú)立式鍵盤介紹................................................. 12

3.4.2 鍵盤接口及鍵位的功能介紹....................................... 13

3.5 顯示模塊........................................................... 13

3.5.1 數(shù)碼管的組成及工作原理......................................... 14

3.5.2 數(shù)碼管的顯示................................................... 14

第4章 整機(jī)原理......................................................... 16

4.1 整機(jī)原理圖......................................................... 16

4.2 整機(jī)電路原理....................................................... 16

第5章 軟件設(shè)計(jì)......................................................... 18

5.1 打鈴系統(tǒng)流程圖..................................................... 18

5.2 讀時(shí)間日期顯示流程圖............................................... 18

5.3 LED顯示流程圖..................................................... 19

5.4 主程序流程圖....................................................... 20

第6章 仿真和調(diào)試....................................................... 21

6.1 調(diào)試軟件的介紹..................................................... 21

6.2 調(diào)試的操作步驟..................................................... 21

6.3 仿真軟件對(duì)于本設(shè)計(jì)的仿真........................................... 22

結(jié) 論................................................................... 25

參考文獻(xiàn)................................................................. 26

附錄1  整機(jī)原理圖....................................................... 27

附錄2 元件明細(xì)表....................................................... 28

附錄3  源程序........................................................... 29



摘 要

本設(shè)計(jì)以單片機(jī)AT89C51為控制核心,與DS1302、24C02C和LED等組成校園打鈴系統(tǒng),運(yùn)用實(shí)時(shí)時(shí)鐘芯片DS1302實(shí)現(xiàn)時(shí)間控制,同時(shí)運(yùn)用LED七段數(shù)碼管完成當(dāng)前的年、月、日、時(shí)、分、秒和星期以及打鈴時(shí)間的顯示,再利用鍵盤可以對(duì)系統(tǒng)當(dāng)前時(shí)間以及打鈴時(shí)間進(jìn)行調(diào)節(jié)、存儲(chǔ)、清空操作,并且使用外部存儲(chǔ)器24C02C完成打鈴時(shí)間的存儲(chǔ)。此設(shè)計(jì)在系統(tǒng)掉電狀態(tài)下仍可以正常的打鈴、時(shí)間設(shè)定、數(shù)據(jù)保持,整體性好、人性化強(qiáng)、可靠性高、功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn)。

關(guān)鍵詞 單片機(jī);AT89C51;DS1302;24C02C打鈴



第1章 緒論

校園打鈴系統(tǒng)就是利用現(xiàn)代計(jì)算機(jī)、通訊等技術(shù),以傳統(tǒng)的鈴聲系統(tǒng)為基礎(chǔ),根據(jù)用戶對(duì)鈴聲系統(tǒng)功能的要求,由單片機(jī)來控制、管理、播放的系統(tǒng)。

通過把播放的內(nèi)容以數(shù)字形式存放在存儲(chǔ)器中,然后單片機(jī)通過控制軟件,按照學(xué)校設(shè)定的播放時(shí)間和內(nèi)容控制單片機(jī)自動(dòng)將存儲(chǔ)器中的數(shù)字音樂文件播放出來。鈴聲控制系統(tǒng)整體由兩部分組成:主控中心和終端電鈴。主控中心以單片機(jī)為核心,包括控制電路、顯示電路、鍵盤電路和存儲(chǔ)電路。終端電鈴為響應(yīng)控制設(shè)備,通過其自身的控制系統(tǒng)可以獲得清晰、響亮的聲響。

單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛,并且在很多電子產(chǎn)品中也將其用到校園鈴聲和廣播控制。單片機(jī)又稱單片微控制器,是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。 現(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞—“智能型”,如智能型洗衣機(jī)等。

本次設(shè)計(jì)是實(shí)現(xiàn)一個(gè)單片機(jī)的校園打鈴系統(tǒng),能過設(shè)置打鈴時(shí)間,同時(shí)要求能夠在系統(tǒng)掉電時(shí),時(shí)間能夠繼續(xù),數(shù)據(jù)能夠保持,能夠?qū)崿F(xiàn)打鈴。



第2章 方案設(shè)計(jì)與論證2.1 系統(tǒng)方案選擇與比較2.1.1 控制模塊方案選擇

校園打鈴系統(tǒng)設(shè)計(jì)方案有多種,下面提出兩種電路方案。

方案一:主要是由石英晶體振蕩電路和分頻器電路組成的脈沖發(fā)生器、校時(shí)電路、報(bào)時(shí)電路以及時(shí)、分、秒計(jì)數(shù)器和譯碼顯示電路等電路組成,其中采用計(jì)數(shù)器74LS290、譯碼器74LS49、分頻器和八段數(shù)碼管顯示器等器件組成的校園打鈴系統(tǒng),整個(gè)系統(tǒng)有控制簡單,調(diào)試容易等優(yōu)點(diǎn),但是其顯示功能單一、電路復(fù)雜。其組成方框圖如下2-1所示:

圖2-1 方案一組成方框圖

方案二:采用ATC公司的單片機(jī)ATC89C51作為控制器。單片機(jī)運(yùn)算能力強(qiáng),軟件編程靈活,自由度大。它是MCS-51系列單片機(jī)的派生產(chǎn)品,在指令系統(tǒng)、硬件結(jié)構(gòu)和片內(nèi)資源上與標(biāo)準(zhǔn)8051單片機(jī)完全兼容,使用時(shí)容易掌握;采用ATC89S52單片機(jī)穩(wěn)定可靠、應(yīng)用廣泛、通用性強(qiáng)。

圖2-2 方案二組成方框圖

方案選擇:采用方案一實(shí)現(xiàn)的校園打鈴控制系統(tǒng)調(diào)試容易,價(jià)格相對(duì)較為便宜,但是電路結(jié)構(gòu)復(fù)雜,控制單一,且整個(gè)系統(tǒng)性能不是很高,倒計(jì)時(shí)不是非常精確,功能不完整,如果要求系統(tǒng)調(diào)節(jié)打鈴時(shí)間時(shí)不容易調(diào)整。采用方案二實(shí)現(xiàn)的校園打鈴系統(tǒng)其電路結(jié)構(gòu)簡單,可實(shí)現(xiàn)多功能控制,計(jì)時(shí)精確,全自動(dòng)化實(shí)現(xiàn)其所用功能,并且能在斷電的情況下任能正常的實(shí)現(xiàn)打鈴。因而對(duì)于完成此題目,方案二完全能實(shí)現(xiàn)設(shè)計(jì)要求,并且容易掌握,此方案是利用編程來實(shí)現(xiàn),易于調(diào)整時(shí)間,且I/O接口很多,易于擴(kuò)展外圍電路,故選擇方案二。

2.1.2 顯示模塊方案選擇

該系統(tǒng)要求完成當(dāng)下年、月、日、時(shí)、分、秒、星期的顯示等功能。基于上述原因,考慮了三種方案。

方案一:完全采用點(diǎn)陣式LED 顯示。這種方案實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作;但功能強(qiáng)大,可方便的顯示各種英文字符,漢字,圖形等。

方案二:用七段LED數(shù)碼管完成年、月、日、時(shí)、分、秒、星期顯示,這種方案只能顯示數(shù)字、英文字符及一些簡單的數(shù)學(xué)符號(hào),但價(jià)格相對(duì)便宜。

方案比較:相對(duì)比較而言,方案二比方案一更符合此設(shè)計(jì)要求,方案一采用點(diǎn)陣式LED顯示的方法,而設(shè)計(jì)只要求年、月、日、時(shí)、分、秒、星期的顯示輸出。因此這種方案既軟件工作量大,又價(jià)格相對(duì)較貴,因此權(quán)衡利弊,選擇方案二。

2.2.3 存儲(chǔ)模塊方案選擇

存儲(chǔ)器是整個(gè)系統(tǒng)的“連接線”,它是系統(tǒng)穩(wěn)定工作的保障,為使各個(gè)模塊穩(wěn)定工作,須有可靠存儲(chǔ)器。下面考慮了兩種電源方案。

方案一:采用單片機(jī)存儲(chǔ)器。該方案的優(yōu)點(diǎn)是存儲(chǔ)方便,節(jié)約成本;缺點(diǎn)是斷電后存儲(chǔ)數(shù)據(jù)消失。

方案二:采用存儲(chǔ)器24C02C。該方案保證設(shè)置的打鈴時(shí)間數(shù)據(jù)在掉電時(shí)也不會(huì)丟失,同時(shí)實(shí)現(xiàn)在系統(tǒng)運(yùn)行時(shí)能夠修改打鈴時(shí)間,采用開關(guān)電源作為整個(gè)系統(tǒng)的供電,它具有多路電源輸出,缺點(diǎn)是價(jià)格較貴。

方案比較:方案一只采用單片機(jī)自身的存儲(chǔ)是不行的,而方案二雖然要給另外購買,但卻能在斷電的情況下仍能存儲(chǔ)數(shù)據(jù)并且繼續(xù)計(jì)數(shù)。故選擇第二種方案。

2.2 總體方案設(shè)計(jì)思想

根據(jù)校園打鈴系統(tǒng)的設(shè)計(jì),可將本系統(tǒng)分為四個(gè)模塊,第一個(gè)模塊是控制模塊,主要負(fù)責(zé)整個(gè)系統(tǒng)工作的控制和運(yùn)算,從而使各模塊正常工作;第二個(gè)模塊為顯示模塊,主要是對(duì)現(xiàn)時(shí)刻內(nèi)年、月、日、時(shí)、分、秒和星期的直觀顯示;第三個(gè)模塊是鍵控模塊,它的主要作用是輔助控制模塊,相當(dāng)于輸入裝置,利用它可以對(duì)打鈴時(shí)間進(jìn)行調(diào)節(jié);第四個(gè)模塊是存儲(chǔ)模塊,它是整個(gè)系統(tǒng)的連接線,負(fù)責(zé)給各模塊提供合適的信息,讓各模塊能穩(wěn)定工作。其系統(tǒng)設(shè)計(jì)結(jié)構(gòu)如圖2-3所示。


圖2-3 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖



第3章 硬件電路設(shè)計(jì)3.1 控制模塊設(shè)計(jì)

AT89C51在此設(shè)計(jì)中起到非常重要的作用,它就像一個(gè)人的大腦,控制著整個(gè)設(shè)計(jì)的所有系統(tǒng)。此設(shè)計(jì)的控制模塊由單片機(jī)、復(fù)位電路、時(shí)鐘電路組成的。

3.1.1 單片機(jī)AT89C51簡介

AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPER-OM-Flash Programmable and Erasable Read Only Memory)的低電壓。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種商效微控制器,AT89C51是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。

圖3-1 AT89C51引腳圖

AT89C51單片機(jī)引腳分布如圖3-1所示。

P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。

P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。

P3.0(RXD):串行輸入口

P3.1(TXD):串行輸出口

3.1.2 單片機(jī)時(shí)鐘電路復(fù)位電路介紹

1.時(shí)鐘電路模塊

單片機(jī)的時(shí)鐘信號(hào)用來為單片機(jī)芯片內(nèi)部的各種操作提供時(shí)間基準(zhǔn)。

時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,作為單片機(jī)工作的時(shí)間基準(zhǔn),典型的晶體管振蕩頻率為12MHz。

AT89C51單片機(jī)內(nèi)有時(shí)鐘振蕩電路,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體和微調(diào)電容,就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),具體電路設(shè)計(jì)如圖3-2所示。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,其值為5~30pF,在此選擇30pF;晶振X1的振蕩頻率范圍在1.2~12MHz之間選擇。

圖3-2 單片機(jī)時(shí)鐘、復(fù)位電路

2.復(fù)位電路模塊

復(fù)位電路使單片機(jī)或系統(tǒng)中的其他部件處于某種確定的狀態(tài)。

當(dāng)在單片機(jī)的RST引腳處引入高電平并保持2個(gè)機(jī)器周期,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。實(shí)際應(yīng)用中,復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。在單片機(jī)運(yùn)行期間,可以利用此按鍵完成復(fù)位操作。具體電路設(shè)計(jì)如上圖3-2所示。

3.2 打鈴模塊

電鈴工作在交流電220V下,單片機(jī)工作電壓為直流電+5V,所以單片機(jī)引腳不能直接控制電鈴工作,因此我們使用單片機(jī)控制電鈴工作電路的通斷。由于單片機(jī)驅(qū)動(dòng)能力有限,因而需要硬件將單片機(jī)輸出的高、低電平變成控制電鈴?fù)〝嗟碾娐罚軌蚓唧w實(shí)現(xiàn)該功能的電路有多種。常見的方式是采用將單片機(jī)輸出信號(hào)放大后驅(qū)動(dòng)繼電器,用繼電器的觸頭控制電鈴電路的接通和斷開,如圖3-3所示。

三極管在電路當(dāng)中起開關(guān)作用,管型為PNP型。單片機(jī)的P1.7通過三極管驅(qū)動(dòng)繼電器,當(dāng)P1.7腳輸出高電平時(shí),給三極管基極送入高電壓。此時(shí),三極管呈截止?fàn)顟B(tài),繼電器不吸合電鈴?fù)V勾蜮彛划?dāng)P1.7腳輸出低電平時(shí),給三極管基極送入的是低電壓。此時(shí),三極管呈導(dǎo)通狀態(tài),促使繼電器吸合,電鈴打鈴。

繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開關(guān)”。當(dāng)輸入量達(dá)到規(guī)定值時(shí),使被控制的輸出電路導(dǎo)通或斷開的電器。繼電器線圈在斷電時(shí)會(huì)產(chǎn)生一個(gè)很大的反感生電動(dòng)勢,這個(gè)電壓會(huì)損失繼電器或者電路中的元件,在繼電器線圈上反向并聯(lián)一個(gè)二極管,可將產(chǎn)生的反感生電動(dòng)勢通過二極管回路釋放掉、保護(hù)繼電器線圈和電路中的電子元件不受高壓損壞。

圖3-3 聲音控制電路圖

3.3 存儲(chǔ)模塊3.3.1 實(shí)時(shí)時(shí)鐘DS1302簡介

    它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。

1.引腳功能及結(jié)構(gòu)

圖3-4 DS1302引腳圖

如圖3-4所示,DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過RST輸入高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK始終是輸入端。

2.實(shí)時(shí)時(shí)鐘DS1302的控制字節(jié)

DS1302的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。

3.數(shù)據(jù)輸入輸出(I/O)

在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。

4.實(shí)時(shí)時(shí)鐘DS1302的寄存器

DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字。

此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。

5.引腳連接圖

圖3-5 DS1302引腳連接圖

在學(xué)校正常上課中,不可能保證學(xué)校隨時(shí)都有電,為了不影響學(xué)校的正常運(yùn)轉(zhuǎn),同學(xué)們能夠正常的上、下課。所以就采用能在學(xué)校停電時(shí)借助電池也能工作的芯片,而DS1302能夠在學(xué)校掉電時(shí),Vcc2無法給實(shí)時(shí)時(shí)鐘DS1302供電,只有通過干電池B1給實(shí)時(shí)時(shí)鐘DS1302的Vcc1提供電量讓DS1302繼續(xù)工作,系統(tǒng)能夠繼續(xù)計(jì)時(shí)。而這時(shí)的其它電路停止工作,但存儲(chǔ)器中的打鈴時(shí)間不會(huì)因?yàn)闆]有電而丟失。其與單片機(jī)連接方式如上圖3-5所示。

3.3.2 存儲(chǔ)器24C02C

要保證設(shè)置的打鈴時(shí)間數(shù)據(jù)在掉電時(shí)也不會(huì)丟失,同時(shí)實(shí)現(xiàn)在系統(tǒng)運(yùn)行時(shí)能夠修改打鈴時(shí)間,在本系統(tǒng)中采用I2C總線的串行存儲(chǔ)器24C02C存儲(chǔ)打鈴數(shù)據(jù)。

1.存儲(chǔ)器24C02C的引腳介紹

考慮到串口線、穩(wěn)定性等方面,本系統(tǒng)采用串行數(shù)據(jù)傳輸存儲(chǔ)器。其容量計(jì)算如下:若以打鈴次數(shù)較多的校園為例,每天按12節(jié)課計(jì)算,每節(jié)課打鈴2次,再加上起床和熄燈的次數(shù),打鈴大約在20次左右。這樣每個(gè)信息單元占8個(gè)字節(jié),存儲(chǔ)時(shí)均按照非壓縮型BCD碼存儲(chǔ),則需要存儲(chǔ)空間大約在160個(gè)字節(jié)左右,選用256字節(jié)的存儲(chǔ)器就能夠滿足容量的要求,可以采用ATMEL公司的24C02C。根據(jù)硬件電路的設(shè)計(jì)可得24C02C的I2C硬件地址為:0A2H/0A3H。

(1)行數(shù)據(jù)(SDA)引腳

串行數(shù)據(jù)引腳為雙向引腳,用于把地址和數(shù)據(jù)輸入/輸出期間。該引腳為漏極開路。因此,SDA總線要求在該引腳與VCC之間接入上拉電阻(通常頻率為100KHz時(shí)該電阻阻值為10K,頻率為400KHz和1MHz時(shí),阻值為2K)。

對(duì)于正常的數(shù)據(jù)傳輸,只允許在SCL為低電平期間改變SDA電平。而SDA電平在SCL高電平期間若發(fā)生變化,表明起始和停止條件產(chǎn)生。

(2)寫保護(hù)(WP)引腳

該引腳必須連接到VSS或者VCC。如果連接到VSS,寫操作使能。如果連接到VCC,寫操作被禁止,但讀操作不受影響

2.引腳連接方法

引腳采用I2C總線連接方法,這種方法能夠節(jié)約I/O輸出端口。它主要的特點(diǎn)有:

(1)總線只有兩根線,即串行時(shí)鐘線和串行數(shù)據(jù)線,這在設(shè)計(jì)中大大簡化了硬件接口;

(2)每個(gè)連接到總線上的器件地址同時(shí)由芯片內(nèi)部硬件電路和外部地址引腳決定,避免了片選線的線連接方法,并建立簡單的主從關(guān)系,主器件既可以作為發(fā)送器,又可作為接收器;

(3)它是一個(gè)真正的多主總線,帶有競爭監(jiān)測和仲裁電路,多個(gè)主機(jī)可以任意發(fā)送而不破壞總線上的數(shù)據(jù);

(4)同步時(shí)鐘可以作為停止或重新啟動(dòng)串行口發(fā)送的握手方式;

(5)連接到同一總線的集成電路數(shù)量只受400pF最大總線電容的限制。

學(xué)校設(shè)定的系統(tǒng)時(shí)間和打鈴時(shí)間存儲(chǔ)在24C02C中。24C02C的三個(gè)地址端口A0、A1、A2都接地,因而其存儲(chǔ)地址為A000H-A6FFH,共1KB的存儲(chǔ)空間。其中,WP是24C02C的寫保護(hù)控制引腳,WP為低電平時(shí),串行存儲(chǔ)器可以正常地讀/寫;WP為高電平時(shí),對(duì)串行存儲(chǔ)器內(nèi)部的數(shù)據(jù)進(jìn)行寫保護(hù)。在系統(tǒng)掉電時(shí)不會(huì)丟失其中的內(nèi)容,保證了設(shè)置的打鈴時(shí)間不會(huì)因系統(tǒng)掉電而需要重新設(shè)置。如圖3-6所示。

圖3-6 24C02C引腳連接圖

3.4 鍵控模塊

鍵盤是一組按鍵的組合,它是各種儀表中最常用的輸入設(shè)備。操作人員可通過鍵盤輸入數(shù)據(jù)或命令,實(shí)現(xiàn)簡單的人機(jī)對(duì)話。在單片機(jī)應(yīng)用系統(tǒng)中,有的是單個(gè)按鍵,有的是矩陣式的按鍵,即行列式按鍵。按鍵是一種常開型按鈕開關(guān),常態(tài)時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開狀態(tài),按下鍵時(shí)它們才閉合。根據(jù)本設(shè)計(jì)本的要求,我們選用獨(dú)立式鍵盤實(shí)現(xiàn)整個(gè)功能。

3.4.1 獨(dú)立式鍵盤介紹

圖3-7 獨(dú)立式按鍵結(jié)構(gòu)

獨(dú)立式鍵盤的按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其他按鍵的工作狀態(tài)。這種按鍵軟件程序簡單,但占用I/O口線較多(一根口線只能接一個(gè)鍵),適用于鍵盤應(yīng)用數(shù)量較少的系統(tǒng)中。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。獨(dú)立式按鍵結(jié)構(gòu)圖如圖3-7所示。

3.4.2 鍵盤接口及鍵位的功能介紹

按鍵功能介紹:

模式按鍵:它的主要功能就是選擇時(shí)鐘芯片里的年、月、日、時(shí)、分、秒,當(dāng)按下模式這個(gè)鍵時(shí),它從年到月依次往后的選中,這時(shí)按調(diào)節(jié)按鈕就能從當(dāng)前的時(shí)間往上調(diào)。

調(diào)節(jié)按鍵:它的主要功能就是想改變當(dāng)前的系統(tǒng)時(shí)間首先要按模式鍵,選中要修改的時(shí)間,再按調(diào)節(jié)鍵就能控制當(dāng)前系統(tǒng)時(shí)間遞增。

存入按鍵:它的主要功能就是把系統(tǒng)不正確的時(shí)間修改后按下存入鍵,系統(tǒng)的時(shí)間就為按下那瞬間的時(shí)間。

清空按鍵:它的主要功能就是當(dāng)學(xué)校要重新輸入打鈴時(shí)間的時(shí)候,就先按下清空鍵,再輸入新的時(shí)間。

通過上述每個(gè)按鍵的功能介紹,實(shí)現(xiàn)對(duì)打鈴系統(tǒng)的打鈴時(shí)間設(shè)置。與單片機(jī)具體鏈接圖,如圖3-8所示。

圖3-8 鍵盤的接口連接
3.5 顯示模塊

在本系統(tǒng)中因?yàn)橐@示年、月、日、星期、時(shí)、分、秒,如果用發(fā)光二極管不能具體的顯示出來,所以采用了七段數(shù)碼顯示管來作為顯示元件。

3.5.1 數(shù)碼管的組成及工作原理

數(shù)碼管由8個(gè)發(fā)光二極管構(gòu)成,可以用來顯示數(shù)字、字符等它在家電及工業(yè)控制中有著很廣泛的應(yīng)用。數(shù)碼管實(shí)際上是由7個(gè)發(fā)光管組成“8”字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a、b、c、d、e、f、g、dp來表示。數(shù)碼管的引腳結(jié)構(gòu)如圖3-9 所示,其中COM引腳為公共端,用來控制數(shù)碼管顯示的打開或關(guān)閉,既起到“使能”作用。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看到的字樣。

根據(jù)公共端接法方式的不同,數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu)的二極管,分別如下:

共陽極就是將8個(gè)LED的陽極連接到一起組成公共端COM,接到正極,當(dāng)相應(yīng)字段為低電平“0”時(shí),可以點(diǎn)亮該字段;但相應(yīng)字段為高電平“1”時(shí),該字段不亮。

共陰極就是將8個(gè)LED的陰極連接到一起組成公共端COM,接負(fù)極,當(dāng)相應(yīng)字段為高電平“1”時(shí),可以點(diǎn)亮該字段;當(dāng)相應(yīng)字段為低電平“0”時(shí),該字段不亮。

圖3-9 LED數(shù)碼管引腳

數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。

3.5.2 數(shù)碼管的顯示

數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。

圖3-10 數(shù)碼管動(dòng)態(tài)顯示電路

動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃“a、b、c、d、e、f、g、dp”的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。數(shù)碼管動(dòng)態(tài)顯示連接,如圖3-10所示。



第4章 整機(jī)原理4.1 整機(jī)原理圖

圖4-1 整機(jī)原理圖

4.2 整機(jī)電路原理

電路中采用I2C總線的串行存儲(chǔ)器24C02C,在系統(tǒng)掉電時(shí)不會(huì)丟失其中的內(nèi)容,保證了設(shè)置的打鈴時(shí)間不會(huì)因系統(tǒng)掉電而需要重新設(shè)置。24C02C的三個(gè)地址端口A0、A1、A2都接地,因而其存儲(chǔ)地址為A000H-A6FFH,共1KB的存儲(chǔ)空間。其中,WP是24C02C的寫保護(hù)控制引腳,WP為低電平時(shí),串行存儲(chǔ)器可以正常地讀/寫;WP為高電平時(shí),對(duì)串行存儲(chǔ)器內(nèi)部的數(shù)據(jù)進(jìn)行寫保護(hù)。

實(shí)時(shí)時(shí)鐘芯片DS1302采用3V的電池作為后備電源,使DS1302內(nèi)部的時(shí)鐘不會(huì)因?yàn)橄到y(tǒng)掉電而停止。在系統(tǒng)正常供電時(shí),DS1302通過內(nèi)部的涓流充電電阻給后備電池充電,能保證系統(tǒng)電池的長時(shí)間工作。

掉電情況下:由BAT1干電池通過DS1302的引腳VCC1供電,系統(tǒng)時(shí)間不會(huì)因?yàn)闆]有電而停止工作,顯示電路、鍵盤電路、存儲(chǔ)電路、聲音控制電路因?yàn)锳T89C51沒有電,所以停止工作。來電時(shí),數(shù)碼管上顯示的系統(tǒng)時(shí)間不會(huì)是停電時(shí)刻的時(shí)間,系統(tǒng)繼續(xù)工作。

正常情況下:按鍵按鈕通過AT89C51的P1.3、P1.4、P1.5、P1.6腳進(jìn)行調(diào)節(jié)、存入、清空系統(tǒng)當(dāng)前時(shí)間和打鈴時(shí)間和模式選擇。當(dāng)前系統(tǒng)時(shí)間在數(shù)碼管上顯示系統(tǒng)時(shí)間和打鈴時(shí)間,學(xué)校設(shè)置的打鈴時(shí)間存儲(chǔ)在外部存儲(chǔ)器24C02C中。DS1302時(shí)鐘芯片為單片機(jī)提供實(shí)時(shí)時(shí)間并與24C02C中的打鈴時(shí)間進(jìn)行比較來控制AT89C51的P1.7腳輸出高、低電平。如果當(dāng)前系統(tǒng)與打鈴時(shí)間不一致,AT89C51中的P1.7腳就輸出高電平,三極管Q1截止,繼電器斷開,電鈴電路不導(dǎo)通。如果當(dāng)前系統(tǒng)時(shí)間與打鈴時(shí)間一致,AT89C51中的P1.7腳就輸出低電平,三極管Q1導(dǎo)通,繼電器閉合,電鈴電路導(dǎo)通打鈴。


第5章 軟件設(shè)計(jì)

本系統(tǒng)中軟件部分應(yīng)承擔(dān)日期時(shí)間顯示、按鍵掃描、系統(tǒng)狀態(tài)設(shè)置、打鈴時(shí)間判斷等功能。

5.1 打鈴系統(tǒng)流程圖

打鈴系統(tǒng)程序打鈴是是調(diào)用存儲(chǔ)器中存儲(chǔ)的打鈴時(shí)間,把鬧鈴值與計(jì)時(shí)值的時(shí)、分單元比較,看是否相等,如果不相等就不打鈴,如果相等就啟動(dòng)鬧鈴,鬧鈴延時(shí)時(shí)間為12秒。程序流程圖如圖5-1所示。


圖5-1 打鈴系統(tǒng)流程圖(附件中剛有圖片)

5.2 讀時(shí)間日期顯示流程圖

讀時(shí)間日期顯示程序是先對(duì)時(shí)間日期進(jìn)行初始化,再對(duì)是顯示年月日還是顯示時(shí)分秒進(jìn)行判斷,并利用總線加以顯示。程序流程圖如圖5-2所示。


圖5-2 讀時(shí)間日期顯示流程圖

5.3 LED顯示流程圖

顯示子程序采用動(dòng)態(tài)掃描法實(shí)現(xiàn)三位數(shù)碼管的數(shù)值顯示。測量數(shù)據(jù)在顯示時(shí)需轉(zhuǎn)換成10進(jìn)制BCD碼放在24C02C存儲(chǔ)器中,再轉(zhuǎn)換成十進(jìn)制進(jìn)過總線輸出,經(jīng)由單片機(jī)控制LED顯示。程序流程圖如圖5-3所示。




圖5-3 LED顯示的流程圖

5.4 主程序流程圖

主程序比較簡單,初始化完成后,調(diào)用按鍵掃描程序,取得鍵值,并根據(jù)當(dāng)前系統(tǒng)狀態(tài)調(diào)用相應(yīng)的子程序。這里有五個(gè)基本的子程序供調(diào)用,分別對(duì)應(yīng)系統(tǒng)的各種功能狀態(tài)。分別是打鈴時(shí)間設(shè)置子程序、當(dāng)前時(shí)間顯示子程序、鍵盤模塊子程序、打鈴校準(zhǔn)子程序等。程序流程圖如圖5-4所示。


圖5-4 控制模塊的流程圖


第6章 仿真和調(diào)試

下面用keil與porteus仿真軟件實(shí)現(xiàn)校園打鈴的仿真與調(diào)試。

6.1 調(diào)試軟件的介紹

Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。

Keil C51 µVision2集成開發(fā)環(huán)境是Keil Software,Inc/Keil Elektronik GmbH開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺(tái),內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具,可以完成從工程建立到管理、編譯、鏈接、目標(biāo)代碼的生成、軟件仿真、硬件仿真等完整的開發(fā)流程尤其是C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平,而且可以附加靈活的控制選項(xiàng),在開發(fā)大型項(xiàng)目時(shí)非常理想。

Proteus是目前最好的模擬單片機(jī)外圍器件的工具,它不僅能仿真單片機(jī)CPU的工作情況,也能仿真單片機(jī)外圍電路或沒有單片機(jī)參與的其它電路的工作情況。可以仿真51系列、AVR,PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達(dá),LED,AD/DA,部分SPI器件,部分IIC器件)。

6.2 調(diào)試的操作步驟

1.在uVision集成開發(fā)環(huán)境中創(chuàng)建新項(xiàng)目(Project),擴(kuò)展文件名為UV2,并為該項(xiàng)目選定合適的單片機(jī)CPU器件。

2.用uVision的文本編輯器編寫源文件,可以是匯編文件(.ASM),也可以使C語言文件(擴(kuò)展名.C),并將該文件添加到項(xiàng)目中去。一個(gè)項(xiàng)目文件可以包含多個(gè)文件,除了源程序文件外,還可以是庫文件、頭文件或文本說明文件。

3.通過uVision2的相關(guān)選擇項(xiàng),配置編譯環(huán)境、連接定位器以及Debug調(diào)試器的功能。

4.對(duì)項(xiàng)目中的源文件進(jìn)行編譯連接,生成絕對(duì)目標(biāo)代碼和可選的HEX文件,如果出現(xiàn)編譯連接錯(cuò)誤則返回到第2步,修改源文件中的錯(cuò)誤后重構(gòu)整個(gè)項(xiàng)目。

5.對(duì)沒有語法錯(cuò)誤的程序進(jìn)行仿真調(diào)試,調(diào)試成功后將HEX文件寫入到單片機(jī)應(yīng)用系統(tǒng)的ROM中。

6.下一步就可以在Proteus軟件中將HEX文件燒入單片機(jī)。

6.3 仿真軟件對(duì)于本設(shè)計(jì)的仿真

通過以上步驟,來實(shí)現(xiàn)校園打鈴系統(tǒng)設(shè)計(jì)的仿真:

狀態(tài)1:LED數(shù)碼管對(duì)年、月、日顯示的仿真效果如圖6-1所示。

圖6-1 當(dāng)前年、月、日的顯示

狀態(tài)2:LED數(shù)碼管對(duì)時(shí)、分、秒和星期顯示的仿真效果如圖6-2所示。

圖6-2 當(dāng)前年、月、日的顯示

Proteus的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機(jī),元件庫齊全,使用方便,是不可多得的專業(yè)的單片機(jī)軟件仿真系統(tǒng)。

表6-1 器件庫及所選器件

器件庫
器件名稱
Microprocessor ICs
89C51
Memory ICs
24C02C
Switches&Relays
BUTTON
Memory ICs
DS1302
Optoelectronics
7SEG-MPX8-CA
Optoelectronics
LAMP
Resistors
MINRES200R
Diodes
1N4148
Transistors
2N2905
Switches&Relays
RELAY
Miscellaneous
BATTERY
Terminals Mode
POWER

操作步驟如下:

1.進(jìn)入proteusISIS集成環(huán)境,在工作前,在systerm菜單下設(shè)置界面的顏色、圖形界面大小等項(xiàng)目,我采用了系統(tǒng)默認(rèn)值。

2.通過工具欄中的P(從庫中選擇元件命令)命令,在pickdevices窗口中選擇電路所需的元件,放置元件到編輯區(qū)并調(diào)整其相對(duì)位置,進(jìn)行元件參數(shù)設(shè)置,元器件間連線。器件庫如表6-1所示。



結(jié) 論

本次是通過51單片機(jī)實(shí)現(xiàn)校園打鈴系統(tǒng)的設(shè)計(jì),設(shè)計(jì)的目的是能過通過按鍵系統(tǒng)的功能對(duì)打鈴時(shí)間的更改、存儲(chǔ)、清除等操作,能通過數(shù)碼管顯示低昂前系統(tǒng)的時(shí)間,并顯示具體的打鈴時(shí)間。單片機(jī)的存儲(chǔ)容量小,所以采用了I2C總線的串行存儲(chǔ)器24C02C,并通過始終芯片DS1302進(jìn)行時(shí)鐘控制,最后經(jīng)過三極管的開關(guān)性能控制繼電器進(jìn)而控制鈴聲。

通過本次設(shè)計(jì),鞏固了單片機(jī)原理及應(yīng)用這門課的所學(xué)的知識(shí)與技能,更加了解單片機(jī)的功能及應(yīng)用,最開始拿到這個(gè)課題的時(shí)候,腦袋里只是白茫茫的一片,說不懂吧,好像又有點(diǎn)懂,說全懂吧,好像又有些不懂。其實(shí)這次設(shè)計(jì)說難也不是很難,但也不會(huì)簡單哪里去。只是要把以前學(xué)的東西融合起來變成自己需要的東西。這次畢業(yè)設(shè)計(jì)我認(rèn)為不僅僅是一次簡單的設(shè)計(jì),同時(shí)也教會(huì)我們學(xué)以致用的道理,很多知識(shí)我們學(xué)過卻沒有應(yīng)用到實(shí)踐中,很可能就荒廢了,但通過這次設(shè)計(jì)讓我加深知識(shí)的理解,真正將知識(shí)與實(shí)踐結(jié)合,達(dá)到了理論的升華,同時(shí)也是一次熟悉知識(shí)、改正錯(cuò)誤、提升自己的機(jī)會(huì)。

這次畢業(yè)設(shè)計(jì)提高了我的查閱資料的能力,同時(shí)也使我的能力也得到了提升,提高是有限的但提高也是全面的,正是這一次設(shè)計(jì)讓我積累了無數(shù)實(shí)踐經(jīng)驗(yàn),使我的頭腦更好的被知識(shí)武裝了起來。同時(shí)我也學(xué)會(huì)了僅憑個(gè)人的知識(shí)是有限的,需要多思多問。這也是學(xué)習(xí)需要的效果。也必然會(huì)讓我在未來的工作學(xué)習(xí)中表現(xiàn)出更高的應(yīng)變能力、更強(qiáng)的溝通力和理解力。

這次設(shè)計(jì)是我第一次用單片機(jī)運(yùn)用到實(shí)際生活當(dāng)中,所以在很多地方都有不足之處。希望各位老師給我更多的建議,以便我在將來的設(shè)計(jì)中做的更好,誠心希望老師的指點(diǎn)。



參考文獻(xiàn)

[1] 蘇平主編.單片機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社,2003

[2] 林伸茂主編.8051單片機(jī)徹底研究實(shí)習(xí)篇.北京:人民郵電出版社,2005

[3] 韓志軍主編.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2005

[4] 陳坤.電子設(shè)計(jì)技術(shù).成都:電子科技大學(xué)出版社,1997

[5] 李秀忠主編.單片機(jī)應(yīng)用技術(shù).北京:人民郵電出版社,2007

[6] 肖洪兵主編.跟我學(xué)單片機(jī).北京:北京航空航天大學(xué)出版社,2002

[7] 張國鋒主編.單片機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2009

[8] 張旭濤.單片機(jī)原理及應(yīng)用.北京:北京理工大學(xué)出版社,2007

[9] 張偉.單片機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2005



附錄1  整機(jī)原理圖

附錄2 元件明細(xì)表


項(xiàng)目
代號(hào)
名稱、型號(hào)、規(guī)格
數(shù)量
備注
更改

AT89C51
單片機(jī)芯片
1


12MHz
晶振
1


7SEG
LED顯示器
1


LS1
揚(yáng)聲器
1


200
電阻
9


30pF
瓷片電容
2


10pF
電解電容
1


3V
電池
1


24C02C
外部存儲(chǔ)器
1


DS1302
時(shí)鐘芯片
1


2N2905
三極管
1


1N4148
二極管
1


220V
繼電器
1


220V
燈泡
1


BUTTON
按鍵
4



舊底圖






















更改標(biāo)記
數(shù)量
更改單號(hào)
簽名








底圖號(hào)
擬制

基于
單片
機(jī)的
校園
打鈴
系統(tǒng)
設(shè)計(jì)


審校

日期





等級(jí)標(biāo)記
第1張
共1張
簽名
標(biāo)準(zhǔn)化




梁雪英
批準(zhǔn)
























附錄3  源程序


  1. #include "REGX51.H"
  2. #include "DS1302.H"
  3. #include "M24XX.H"
  4. #define uchar unsigned char
  5. #define LED_abc P0
  6. #define LED_123 P2
  7. sbit key_mode=P1^3;
  8. sbit key_change=P1^4;
  9. sbit key_Wr_2402=P1^5;
  10. sbit key_clr_2402=P1^6;
  11. sbit L_OUT=P1^7;                     
  12. //數(shù)碼管顯示:       0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F  
  13. uchar code dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
  14. //                0.   1.   2.   3.   4.   5.   6.   7.   8.   9.   A.   B.   C.   D.   E.   F.                  0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e,
  15. //                 Y    L    J    黑  全亮    點(diǎn)    -
  16.                   0x91,0xc7,0xe1,0xFF,0x00,  0x7f, 0xbf};
  17. uchar disp_buf[8];     //顯示緩沖區(qū)
  18. uchar time[7];        //時(shí)間緩沖區(qū)
  19. //延時(shí)子程序
  20. void delay(unsigned int a)
  21. {
  22.   while(--a);
  23. }
  24. //顯示子程序
  25. void display()
  26. {  uchar i;     uchar ik;                           //賦初值
  27. ik=0x01;                                         //初始化為1
  28.     for(i=0;i<8;i++)
  29.     {
  30.         LED_abc=dis[disp_buf[i]];                    //顯示數(shù)碼管數(shù)字
  31.         LED_123=ik;   delay(100);                  //選擇數(shù)碼管位數(shù)  延時(shí)
  32.         LED_123=0x00;                            //賦值為0
  33. ik<<=1;                                         //右移一位
  34.     }  
  35. }                                 
  36. uchar BCD_INC(uchar a)                            //BCD加1,不判斷進(jìn)位
  37. {
  38.     uchar temp;
  39.     temp=(a>>4)*10+(a&0x0F)+1;                    //變成16進(jìn)制并加1
  40.     temp=temp/10*0x10+temp%10;                   //轉(zhuǎn)回BCD碼
  41.     return temp;                                    //退出
  42. }
  43. bit yh;                                  //顯示標(biāo)志,0=時(shí)分鈔星期,1=年月日
  44. uchar mode_N=0;   //工作模式,0=常態(tài),1=校分,2=校時(shí),3=星期,4=校日,5=校月,6=校年
  45. void TimeToDisplay()                     //讀時(shí)間日期送顯示緩
  46. {
  47.     time[0]=Read_DS1302(year);          //年year
  48.     time[1]=Read_DS1302(month);         //月month
  49.     time[2]=Read_DS1302(date);          //日date
  50.     time[3]=Read_DS1302(week);          //星期week
  51.     time[4]=Read_DS1302(hour);          //時(shí)hour
  52.     time[5]=Read_DS1302(minute);            //分minute
  53.     time[6]=Read_DS1302(second);        //秒second
  54.     if(yh || mode_N>3)
  55.     {
  56.         disp_buf[0]=0x02;                    //顯示年月日
  57.         disp_buf[1]=0x00;
  58.         disp_buf[2]=time[0]/0x10;
  59.         disp_buf[3]=time[0]%0x10|0x10;
  60.         disp_buf[4]=time[1]/0x10;
  61.         disp_buf[5]=time[1]%0x10|0x10;
  62.         disp_buf[6]=time[2]/0x10;
  63.         disp_buf[7]=time[2]%0x10;      
  64.     }
  65.     else
  66.     {
  67.         disp_buf[0]=time[4]/0x10;               //顯示時(shí)分鈔星期
  68.         disp_buf[1]=time[4]%0x10|0x10;
  69.         disp_buf[2]=time[5]/0x10;
  70.         disp_buf[3]=time[5]%0x10|0x10;
  71.         disp_buf[4]=time[6]/0x10;
  72.         disp_buf[5]=time[6]%0x10;
  73.         disp_buf[6]=0x23;
  74.         disp_buf[7]=(time[3]-1)%0x10;
  75.     }
  76. }
  77. //分析是否打鈴
  78. bit Dll_OK()
  79. {
  80.     uchar i,j,k[2];
  81.     RW24XX(&i,1,0,0xa1, M2402);              //讀指針
  82.     for(j=1;j<i;j+=2)
  83.     {
  84.         RW24XX(k,2,j,0xa1, M2402);
  85.         if(time[4]==k[0]&&time[5]==k[1]) return 1;
  86.     }      
  87.     return 0;
  88. }
  89. //主函數(shù)
  90. void main(void)
  91. { uchar temp,count20=0,count100=0,Qtime=0;  //工作模式:0=正常時(shí)鐘;1=校分;2=校時(shí)
  92.    bit Dll_Symbolize=0;                      //打鈴標(biāo)志
  93. //寫保護(hù)Write_eabled:0x00可寫,0x80保護(hù);充電Trickle(如:0xa5);年year;月month;日date;星期week;時(shí)hour;分minute;秒second
  94.    if(Read_DS1302(second)>0x60)             //如果秒大于60,執(zhí)行初始化
  95.    {  Write_DS1302(Write_eabled,0);          //0
  96.        Write_DS1302(Trickle,0xA5);           //年顯示20
  97.        Write_DS1302(year,0x10);             //年顯示10
  98.        Write_DS1302(month,0x010);           //月10
  99.        Write_DS1302(date,0x20);             //日20
  100.        Write_DS1302(week,4);                //星期4
  101.        Write_DS1302(hour,0x12);             //時(shí)12
  102.        Write_DS1302(minute,0);              //分0
  103.        Write_DS1302(second,0);              //秒0
  104.        Write_DS1302(Write_eabled,0x80);      //8
  105. }
  106.    while(1)
  107.    {                                      //模式鍵-
  108.       if(!key_mode)                           // 鍵是否按下
  109.       { delay(100);                            //延時(shí)1ms
  110.         if(!key_mode)                          //鍵是否按下
  111.         { mode_N++;                          //按鍵次數(shù)加
  112.           if(mode_N==7) mode_N=0;             //按鍵次數(shù)等于7次數(shù)清零
  113.           while(!key_mode) display();             //鍵是否按下   延時(shí)
  114.         }
  115. }                              
  116.       if(!key_change)                           //調(diào)整鍵------
  117.       { delay(100);                             //延時(shí)1ms
  118.         if(!key_change)                         //調(diào)整鍵鍵是否按下
  119.         { Write_DS1302(Write_eabled,0);           //寫允許
  120.            switch(mode_N)                      //判斷按鍵次數(shù)
  121.            { case 1:                              //校分
  122.                 temp=BCD_INC(time[5]);
  123.                 if(temp>=0x60) temp=0;
  124.                 Write_DS1302(second,0);
  125.                Write_DS1302(minute,temp);break;
  126.               case 2:                            //校時(shí)
  127.                 temp=BCD_INC(time[4]);
  128.                 if(temp>=0x24) temp=0;
  129.                 Write_DS1302(hour,temp);break;
  130.               case 3:                            //校星期
  131.                 temp=BCD_INC(time[3]);
  132.                 if(temp>=0x08) temp=1;  
  133. Write_DS1302(week,temp);break;
  134.               case 4:                             //校日
  135.                 temp=BCD_INC(time[2]);
  136.                 if(temp>=0x32) temp=1;
  137.                Write_DS1302(date,temp);break;
  138.               case 5:                               //校月
  139.                 temp=BCD_INC(time[1]);
  140.                 if(temp>=0x13) temp=1;
  141.                Write_DS1302(month,temp);break;
  142.               case 6:                               //校年
  143.                 temp=BCD_INC(time[0]);
  144.                 if(temp>=0x30) temp=0;
  145.                Write_DS1302(year,temp) }
  146.                Write_DS1302(Write_eabled,0x80);       //寫禁止
  147.            while(!key_change) display();
  148.           }
  149. }                 
  150.       TimeToDisplay();
  151.       if(count20<4)                                //顯示模式----
  152.       { switch(mode_N)
  153.           {case 1:
  154. disp_buf[2]=0x23;disp_buf[3]=0x23;break;
  155. case 2:
  156. disp_buf[0]=0x23;disp_buf[1]=0x23;break;
  157. case 3:
  158. case 4:
  159. disp_buf[6]=0x23;disp_buf[7]=0x23;break;
  160. case 5:
  161. disp_buf[4]=0x23;disp_buf[5]=0x23;break;
  162. case 6:
  163. disp_buf[0]=0x23;disp_buf[1]=0x23;disp_buf[2]=0x23;
  164. disp_buf[3]=0x23;break;
  165. }
  166.       if(count20>=20)                              //主循環(huán)計(jì)次-------
  167.       { count20=0;
  168.          if(count100>=40)
  169.          {count100=0; }
  170.          else
  171.          {++count100; }     }
  172.       else
  173.       {++count20;  }
  174.       if(mode_N==0)
  175.       { yh=count100<20?1:0; }
  176.       else
  177.       {yh=0; }              //"清空"存儲(chǔ)器--首字節(jié)為計(jì)數(shù),其余為打鈴時(shí)間點(diǎn).
  178.       if(!key_clr_2402)
  179. {display();display();display();display();display();display();
  180.             if(!key_clr_2402) //鍵確認(rèn)
  181.            {uchar i,k;
  182.              k=0xFF;
  183.              for(i=0xFF;i>0;i--)
  184.                 {RW24XX(&k,1,i,0xa0, M2402);}
  185.             k=0;RW24XX(&k,1,0,0xa0, M2402);
  186.            while(!key_clr_2402)display(); }  }           //寫入顯示時(shí)間為打鈴點(diǎn)-
  187. if(!key_Wr_2402) {display();display();display();display();display();display();
  188. if(!key_Wr_2402)
  189.            {uchar i;
  190. RW24XX(&i,1,0,0xa1, M2402);                  //讀指針
  191. if(i<=252)
  192. {RW24XX(&time[4],2,(i+1),0xa0, M2402);     //寫入時(shí)間,2字節(jié)
  193. i+=2; RW24XX(&i,1,0,0xa0, M2402);           //修改指針
  194. }
  195. while(!key_Wr_2402)display();
  196. }
  197. }
  198. //打鈴--------------------------------------------
  199.           if(Qtime!=time[5])
  200.       {                                 //分有更新,判斷是否打鈴
  201.           Qtime=time[5];                 //判斷現(xiàn)在時(shí)間是否等于存儲(chǔ)時(shí)間
  202.           if(Dll_OK())                   //如果相等
  203.           {
  204.             Dll_Symbolize=1;             //實(shí)現(xiàn)打鈴
  205.           }
  206.           else                           //否則
  207.           {
  208.             Dll_Symbolize=0;              //不打鈴



  209. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

完整論文下載(word格式 可編輯 完整圖片):
基于單片機(jī)的校園打鈴系統(tǒng)設(shè)計(jì).doc (638.13 KB, 下載次數(shù): 150)



</i;j+=2)

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
renjiuzhou + 5 絕世好帖!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:171106 發(fā)表于 2018-1-3 22:50 | 只看該作者
厲害厲害 學(xué)習(xí)學(xué)習(xí)~~~~
回復(fù)

使用道具 舉報(bào)

板凳
ID:256738 發(fā)表于 2018-4-23 11:30 | 只看該作者
請問您還有打鈴器的proteus仿真嗎,跪求
回復(fù)

使用道具 舉報(bào)

地板
ID:329718 發(fā)表于 2018-6-11 16:07 | 只看該作者
請問這#include "DS1302.H"、#include "M24XX.H"兩個(gè)頭文件是什么呢?
回復(fù)

使用道具 舉報(bào)

5#
ID:390536 發(fā)表于 2018-8-27 18:59 | 只看該作者
正好需要
回復(fù)

使用道具 舉報(bào)

6#
ID:423807 發(fā)表于 2018-11-11 16:08 | 只看該作者
樓主辛苦了,感謝你的分享!
回復(fù)

使用道具 舉報(bào)

7#
ID:529357 發(fā)表于 2019-5-27 13:37 | 只看該作者

請問這#include "DS1302.H"、#include "M24XX.H"兩個(gè)頭文件是什么呢?
回復(fù)

使用道具 舉報(bào)

8#
ID:549278 發(fā)表于 2019-5-28 14:43 | 只看該作者
照著原理圖連著是對(duì)的
回復(fù)

使用道具 舉報(bào)

9#
ID:550322 發(fā)表于 2019-5-29 16:35 | 只看該作者
沒有頭文件嗎
回復(fù)

使用道具 舉報(bào)

10#
ID:315554 發(fā)表于 2019-7-17 12:50 | 只看該作者
學(xué)習(xí)一下24C02存儲(chǔ)代碼,高深,慢慢消化了,
回復(fù)

使用道具 舉報(bào)

11#
ID:714797 發(fā)表于 2020-3-24 15:09 | 只看該作者
想看下整體框圖啊
回復(fù)

使用道具 舉報(bào)

12#
ID:1131765 發(fā)表于 2025-5-4 19:49 | 只看該作者

想看下整體框圖啊
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲视频 | 9191成人精品久久 | 国产成人网 | 毛片一级片 | 五月天天色 | 欧美一级在线免费观看 | 91精品国产一区二区三区 | 精品视频在线观看 | 午夜av一区二区 | 美女黄色在线观看 | 91视频电影 | 国产玖玖| 午夜在线视频一区二区三区 | av中文字幕网站 | 欧美日韩综合一区 | 91亚洲国产 | 国产一区视频在线 | 亚洲 欧美 日韩 在线 | 欧美在线日韩 | 国产精品久久久久久久久久久新郎 | 激情五月婷婷 | 国产一区www| 久久成人av电影 | 国产精品电影网 | 中文字幕视频在线免费 | 久久精品二区 | 91网在线播放 | 欧美精品一区在线发布 | 久热久| 日韩精品四区 | 色av一区二区 | 操久久久 | 国产精品久久久亚洲 | 日韩av在线免费 | 日本精品一区二区在线观看 | 国产精品久久久久无码av | 国产精品免费在线 | hdfreexxxx中国妞 | 日本天堂一区 | 99自拍视频 | 在线观看国产视频 |