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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19225|回復: 10
打印 上一主題 下一主題
收起左側(cè)

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

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:208235 發(fā)表于 2017-6-5 23:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

信息職業(yè)技術學院

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

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


專    業(yè):應用電子技術

班    級:應電08-2              

學    號:

姓    名:

指導教師:


信息職業(yè)技術學院畢業(yè)設計(論文)任務書
學 生
姓 名

學號

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

工程師
01

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











備注:任務書由指導教師填寫,一式二份。其中學生一份,指導教師一份。


目  錄

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

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

第2章 方案設計與論證.................................................... 3

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

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

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

2.2.3 存儲模塊方案選擇................................................ 4

2.2 總體方案設計思想.................................................... 5

第3章 硬件電路設計...................................................... 6

3.1 控制模塊設計........................................................ 6

3.1.1 單片機AT89C51簡介.............................................. 6

3.1.2 單片機時鐘電路復位電路介紹...................................... 7

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

3.3 存儲模塊............................................................ 8

3.3.1 實時時鐘DS1302簡介............................................. 8

3.3.2 存儲器24C02C................................................... 10

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

3.4.1 獨立式鍵盤介紹................................................. 12

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

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

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

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

第4章 整機原理......................................................... 16

4.1 整機原理圖......................................................... 16

4.2 整機電路原理....................................................... 16

第5章 軟件設計......................................................... 18

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

5.2 讀時間日期顯示流程圖............................................... 18

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

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

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

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

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

6.3 仿真軟件對于本設計的仿真........................................... 22

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

參考文獻................................................................. 26

附錄1  整機原理圖....................................................... 27

附錄2 元件明細表....................................................... 28

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



摘 要

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

關鍵詞 單片機;AT89C51;DS1302;24C02C打鈴



第1章 緒論

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

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

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

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



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

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

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

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

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

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

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

2.1.2 顯示模塊方案選擇

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

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

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

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

2.2.3 存儲模塊方案選擇

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

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

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

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

2.2 總體方案設計思想

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


圖2-3 系統(tǒng)設計結(jié)構圖



第3章 硬件電路設計3.1 控制模塊設計

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

3.1.1 單片機AT89C51簡介

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

圖3-1 AT89C51引腳圖

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

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

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

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

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

3.1.2 單片機時鐘電路復位電路介紹

1.時鐘電路模塊

單片機的時鐘信號用來為單片機芯片內(nèi)部的各種操作提供時間基準。

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

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

圖3-2 單片機時鐘、復位電路

2.復位電路模塊

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

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

3.2 打鈴模塊

電鈴工作在交流電220V下,單片機工作電壓為直流電+5V,所以單片機引腳不能直接控制電鈴工作,因此我們使用單片機控制電鈴工作電路的通斷。由于單片機驅(qū)動能力有限,因而需要硬件將單片機輸出的高、低電平變成控制電鈴通斷的電路,能夠具體實現(xiàn)該功能的電路有多種。常見的方式是采用將單片機輸出信號放大后驅(qū)動繼電器,用繼電器的觸頭控制電鈴電路的接通和斷開,如圖3-3所示。

三極管在電路當中起開關作用,管型為PNP型。單片機的P1.7通過三極管驅(qū)動繼電器,當P1.7腳輸出高電平時,給三極管基極送入高電壓。此時,三極管呈截止狀態(tài),繼電器不吸合電鈴停止打鈴;當P1.7腳輸出低電平時,給三極管基極送入的是低電壓。此時,三極管呈導通狀態(tài),促使繼電器吸合,電鈴打鈴。

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

圖3-3 聲音控制電路圖

3.3 存儲模塊3.3.1 實時時鐘DS1302簡介

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

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

圖3-4 DS1302引腳圖

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

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

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

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

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

4.實時時鐘DS1302的寄存器

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

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

5.引腳連接圖

圖3-5 DS1302引腳連接圖

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

3.3.2 存儲器24C02C

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

1.存儲器24C02C的引腳介紹

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

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

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

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

(2)寫保護(WP)引腳

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

2.引腳連接方法

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

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

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

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

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

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

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

圖3-6 24C02C引腳連接圖

3.4 鍵控模塊

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

3.4.1 獨立式鍵盤介紹

圖3-7 獨立式按鍵結(jié)構

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

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

按鍵功能介紹:

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

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

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

清空按鍵:它的主要功能就是當學校要重新輸入打鈴時間的時候,就先按下清空鍵,再輸入新的時間。

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

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

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

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

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

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

共陽極就是將8個LED的陽極連接到一起組成公共端COM,接到正極,當相應字段為低電平“0”時,可以點亮該字段;但相應字段為高電平“1”時,該字段不亮。

共陰極就是將8個LED的陰極連接到一起組成公共端COM,接負極,當相應字段為高電平“1”時,可以點亮該字段;當相應字段為低電平“0”時,該字段不亮。

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

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

3.5.2 數(shù)碼管的顯示

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

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

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



第4章 整機原理4.1 整機原理圖

圖4-1 整機原理圖

4.2 整機電路原理

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

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

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

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


第5章 軟件設計

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

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

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


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

5.2 讀時間日期顯示流程圖

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


圖5-2 讀時間日期顯示流程圖

5.3 LED顯示流程圖

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




圖5-3 LED顯示的流程圖

5.4 主程序流程圖

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

6.3 仿真軟件對于本設計的仿真

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

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

圖6-1 當前年、月、日的顯示

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

圖6-2 當前年、月、日的顯示

Proteus的ISIS是一款Labcenter出品的電路分析實物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機,元件庫齊全,使用方便,是不可多得的專業(yè)的單片機軟件仿真系統(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.進入proteusISIS集成環(huán)境,在工作前,在systerm菜單下設置界面的顏色、圖形界面大小等項目,我采用了系統(tǒng)默認值。

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



結(jié) 論

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

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

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

這次設計是我第一次用單片機運用到實際生活當中,所以在很多地方都有不足之處。希望各位老師給我更多的建議,以便我在將來的設計中做的更好,誠心希望老師的指點。



參考文獻

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

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

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

[4] 陳坤.電子設計技術.成都:電子科技大學出版社,1997

[5] 李秀忠主編.單片機應用技術.北京:人民郵電出版社,2007

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

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

[8] 張旭濤.單片機原理及應用.北京:北京理工大學出版社,2007

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



附錄1  整機原理圖

附錄2 元件明細表


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

AT89C51
單片機芯片
1


12MHz
晶振
1


7SEG
LED顯示器
1


LS1
揚聲器
1


200
電阻
9


30pF
瓷片電容
2


10pF
電解電容
1


3V
電池
1


24C02C
外部存儲器
1


DS1302
時鐘芯片
1


2N2905
三極管
1


1N4148
二極管
1


220V
繼電器
1


220V
燈泡
1


BUTTON
按鍵
4



舊底圖






















更改標記
數(shù)量
更改單號
簽名








底圖號
擬制

基于
單片
機的
校園
打鈴
系統(tǒng)
設計


審校

日期





等級標記
第1張
共1張
簽名
標準化




梁雪英
批準
























附錄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    黑  全亮    點    -
  16.                   0x91,0xc7,0xe1,0xFF,0x00,  0x7f, 0xbf};
  17. uchar disp_buf[8];     //顯示緩沖區(qū)
  18. uchar time[7];        //時間緩沖區(qū)
  19. //延時子程序
  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ù)  延時
  32.         LED_123=0x00;                            //賦值為0
  33. ik<<=1;                                         //右移一位
  34.     }  
  35. }                                 
  36. uchar BCD_INC(uchar a)                            //BCD加1,不判斷進位
  37. {
  38.     uchar temp;
  39.     temp=(a>>4)*10+(a&0x0F)+1;                    //變成16進制并加1
  40.     temp=temp/10*0x10+temp%10;                   //轉(zhuǎn)回BCD碼
  41.     return temp;                                    //退出
  42. }
  43. bit yh;                                  //顯示標志,0=時分鈔星期,1=年月日
  44. uchar mode_N=0;   //工作模式,0=常態(tài),1=校分,2=校時,3=星期,4=校日,5=校月,6=校年
  45. void TimeToDisplay()                     //讀時間日期送顯示緩
  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);          //時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;               //顯示時分鈔星期
  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=正常時鐘;1=校分;2=校時
  92.    bit Dll_Symbolize=0;                      //打鈴標志
  93. //寫保護Write_eabled:0x00可寫,0x80保護;充電Trickle(如:0xa5);年year;月month;日date;星期week;時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);             //時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);                            //延時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();             //鍵是否按下   延時
  114.         }
  115. }                              
  116.       if(!key_change)                           //調(diào)整鍵------
  117.       { delay(100);                             //延時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:                            //校時
  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)計次-------
  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; }              //"清空"存儲器--首字節(jié)為計數(shù),其余為打鈴時間點.
  178.       if(!key_clr_2402)
  179. {display();display();display();display();display();display();
  180.             if(!key_clr_2402) //鍵確認
  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(); }  }           //寫入顯示時間為打鈴點-
  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);     //寫入時間,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)在時間是否等于存儲時間
  202.           if(Dll_OK())                   //如果相等
  203.           {
  204.             Dll_Symbolize=1;             //實現(xiàn)打鈴
  205.           }
  206.           else                           //否則
  207.           {
  208.             Dll_Symbolize=0;              //不打鈴



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

復制代碼

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



</i;j+=2)

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

請問這#include "DS1302.H"、#include "M24XX.H"兩個頭文件是什么呢?
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费观看成人鲁鲁鲁鲁鲁视频 | 国产做a爱片久久毛片 | 天天爱天天操 | 亚洲精品一区国产精品 | 97视频免费 | 一区二区三区视频在线观看 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产成人一区二区三区 | 欧洲一区视频 | 国产一区二区三区四区 | 精品国产色| 一级毛片观看 | 毛片一区二区三区 | 亚洲视频免费观看 | 亚洲性在线| 犬夜叉在线观看 | 日韩精品一区二区三区视频播放 | 免费午夜剧场 | 91精品国产乱码麻豆白嫩 | 亚洲免费在线观看 | 黄色大片免费看 | 久久国产精品99久久久久 | www.日韩欧美 | 欧美精品一二三 | 九九免费观看视频 | 久久午夜视频 | 97超碰人人草 | 亚洲国产一区二区三区四区 | 日韩视频在线一区 | 亚洲欧美中文日韩在线v日本 | 亚洲欧美国产精品久久 | 亚洲一二三视频 | 搞av.com| 成人精品一区二区三区 | 国产精品欧美日韩 | 婷婷狠狠| 国产小u女发育末成年 | 国产精品日产欧美久久久久 | 欧美成人一级 | 日韩成人免费视频 | 日韩欧美中文在线 |