版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.微機(jī)控制系統(tǒng)應(yīng)用方向?qū)W年設(shè)計(jì)任務(wù)書 學(xué) 院計(jì)算機(jī)與信息工程學(xué)院專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)課程名稱微機(jī)控制系統(tǒng)應(yīng)用方向題 目基于單片機(jī)控制的教學(xué)打鈴系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)完成期限2021年7月3日2021年8月29日共8周容及任務(wù)一、工程的目的1. 利用單片機(jī)設(shè)計(jì)簡單的教學(xué)打鈴系統(tǒng);2. 掌握設(shè)計(jì)文檔的撰寫技巧。二、工程任務(wù)的主要內(nèi)容和要求1. 能夠用7段數(shù)碼管或者LCD顯示時(shí)間;2. 能夠?qū)Ξ?dāng)前的時(shí)間設(shè)置進(jìn)展校正;3. 能夠按照學(xué)校當(dāng)前的作息時(shí)間進(jìn)展打鈴;4. 完成系統(tǒng)設(shè)計(jì)說明文稿。3、 工程設(shè)計(jì)研究思路1.7月3號到7月8號這段時(shí)間組織組員討論和分析本系統(tǒng)所需的功能,所需的硬件器件,并搭建電路;2.
2、7月9號到8月21號這段時(shí)間進(jìn)展本系統(tǒng)的程序設(shè)計(jì),完成該系統(tǒng)所需的功能模塊;3.8月22號到8月27號這段時(shí)間完成整個(gè)系統(tǒng)程序并進(jìn)展系統(tǒng)測試;4.8月28號8月29號編寫學(xué)年設(shè)計(jì)報(bào)告文檔。四、具體成果形式和要求1.本系統(tǒng)是在proteus仿真軟件里進(jìn)展測試;2.能通過7段數(shù)碼管顯示當(dāng)前時(shí)間;3.能利用蜂鳴器按照學(xué)校當(dāng)前的作息時(shí)間進(jìn)展打鈴;4.通過按鍵可以進(jìn)展當(dāng)前時(shí)間的校正以及作息時(shí)間的修改。進(jìn)度安排起止日期工作內(nèi)容12021年7月3日2021年7月8日全組人討論硬件環(huán)境設(shè)計(jì)的思路以及軟件設(shè)計(jì)的思路22021年7月9日2021年7月15日能夠在數(shù)碼管中顯示電子鐘并且到一定時(shí)間時(shí)自動(dòng)打鈴22021
3、年7月16日2021年8月21日實(shí)現(xiàn)能夠?qū)Ξ?dāng)前時(shí)間進(jìn)展校正以及對作息時(shí)間進(jìn)展修改32021年8月22日2021年8月27日完成整個(gè)打鈴程序的運(yùn)行42021年8月28日2021年8月29日編寫學(xué)年設(shè)計(jì)文檔主要參考資料1 X鳳言.電子電路根底M.:高等教育,1995.2 戴佳.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講M.:電子工業(yè),2021.3 孫江宏. Protel 99 電路設(shè)計(jì)與應(yīng)用M.:機(jī)械工業(yè),2001.4 王水富.基于8051的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)J.電腦編程技巧與維護(hù),2021,117:23-26.5 王書杰.基于校園網(wǎng)絡(luò)的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)J.科學(xué)技術(shù)與工程,2021,1131:204-20
4、7.6 王娟.基于單片機(jī)的多功能定時(shí)打鈴鐘設(shè)計(jì)J.XX農(nóng)機(jī),2021,45:85-86.7 于永51單片機(jī)C語言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講M:電子工業(yè),2007.指導(dǎo)教師意見簽字: ×年×月×日系教研室主任意見簽字: ×年×月×日基于單片機(jī)控制的教學(xué)打鈴系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)說明書封面 學(xué)院名稱: XX學(xué)院 班級名稱: 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)10級2班 學(xué)生XX: 方紀(jì)鋒、貝興芝、陳文君、陳丹丹、陳競 學(xué) 號:2021211081、2021211066、2021211073、2021211068、2021211070 題 目: 基于單
5、片機(jī)控制的教學(xué)打鈴系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 指導(dǎo)教師 姓 名: 姚光順 起止日期: 2021年7月3日2021年8月29日 . v.目錄第一局部:正文局部1一、緒論11 設(shè)計(jì)背景12 主要工作和方法13 本文構(gòu)造2二、相關(guān)知識(shí)21 單片機(jī)介紹22 顯示器簡介43 蜂鳴器簡介5三、系統(tǒng)設(shè)計(jì)51 需求分析52 系統(tǒng)硬件電路設(shè)計(jì)63 軟件設(shè)計(jì)流程圖94 顯示程序設(shè)計(jì)105 按鍵設(shè)定程序設(shè)計(jì)10四、系統(tǒng)實(shí)現(xiàn)111 功能模塊11五、系統(tǒng)測試與數(shù)據(jù)分析181 元件清單182 調(diào)試過程18六、結(jié)論19第二局部:參考文獻(xiàn)20第三局部: 指導(dǎo)教師評語21第四局部:成績評定21附錄22. v.基于單片機(jī)控制的教學(xué)打鈴系統(tǒng)
6、的設(shè)計(jì)與實(shí)現(xiàn)第一局部:正文局部一、緒論1 設(shè)計(jì)背景目前自動(dòng)打鈴系統(tǒng)廣泛應(yīng)用于生活、工作等方方面面,在人們的日常生活中起到重要作用。例如,在學(xué)校生活中,每天上下課都離不開打鈴器的使用。打鈴器可以為上下課的學(xué)生和教師們提供時(shí)間提醒,同時(shí),也可作為一個(gè)提醒學(xué)生們作息時(shí)間的時(shí)間表,讓大家有一個(gè)時(shí)間意識(shí),形成規(guī)律的生物鐘,對自身的安康也有很大的好處的。對于那些上課精力過于集中、知識(shí)面拓展比擬廣的教師的拖堂現(xiàn)象也給了一個(gè)下課時(shí)間提醒,以免耽誤學(xué)生們下一節(jié)課的上課時(shí)間。最原始的打鈴器是人工根據(jù)時(shí)間通過敲鐘來提醒,隨著技術(shù)的開展,開場有了機(jī)械式打鈴器。隨著二十世紀(jì)電子技術(shù)的開展和二十一世紀(jì)半導(dǎo)體技術(shù)和集成電路
7、的開展,電子技術(shù)開場滲入到各行各業(yè),打鈴器也更多的向著智能型轉(zhuǎn)變。設(shè)備的智能化離不開單片機(jī)的使用?;谝陨显?,本學(xué)年設(shè)計(jì)了一款基于單片機(jī)的自動(dòng)打鈴系統(tǒng),使用簡單方便。2 主要工作和方法 本系統(tǒng)主要完成以下工作: 能夠通過7段數(shù)碼管顯示時(shí)間;能夠通過按鍵對當(dāng)前的時(shí)間設(shè)置進(jìn)展校正; 能夠按照學(xué)校當(dāng)前的作息時(shí)間進(jìn)展打鈴; 能夠通過按鍵對學(xué)校當(dāng)前的作息時(shí)間進(jìn)展修改。3 本文構(gòu)造本文第1局部緒論主要說明了本文的設(shè)計(jì)背景、主要工作和實(shí)現(xiàn)方法。第2局部相關(guān)知識(shí)介紹了單片機(jī)的概念、構(gòu)造,數(shù)碼管的相關(guān)知識(shí),蜂鳴器的相關(guān)知識(shí)。第3局部系統(tǒng)設(shè)計(jì),闡述了需求分析、系統(tǒng)硬件設(shè)計(jì)和系統(tǒng)工作流程設(shè)計(jì)。第4局部系統(tǒng)實(shí)現(xiàn)介紹
8、了系統(tǒng)各個(gè)功能模塊。第5局部系統(tǒng)測試與數(shù)據(jù)分析,介紹了所用元件和調(diào)試過程。二、相關(guān)知識(shí)1 單片機(jī)介紹單片機(jī)概念本系統(tǒng)采用AT89C51系列單片機(jī)。AT89C51是一種帶4K字節(jié) FLASH存儲(chǔ)器FPEROMFlash Programmable and Erasable Read Only Memory的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方
9、案。 單片機(jī)構(gòu)造AT89C51的構(gòu)造如圖2-1所示:圖2-1 AT89C51管腳圖AT89C51的管腳說明如下: VCC:供電電壓。 GND:接地。 P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫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口被外部下拉
10、為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)展存取時(shí),P2口輸出地址的高八位。在給出地址“1時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)展讀寫時(shí),P2口輸出其特殊功能存放器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。 P3口:
11、P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流ILL這是由于上拉的緣故。P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。P3口也可作為AT89C51的一些特殊功能口,如表2-1所示:表2-1 AT89C51特殊功能表管腳備選功能P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2/INT0外部中斷0P3.3/INT1外部中斷1P3.4T0計(jì)時(shí)器0外部輸入P3.5T1計(jì)時(shí)器1外部輸入P3.6/WR外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7/RD外部數(shù)據(jù)存儲(chǔ)器讀選通 RST:復(fù)
12、位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想制止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE制止,置位無效。 /PSEN:外部程序存儲(chǔ)器的選通
13、信號。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),那么在此期間外部程序存儲(chǔ)器0000H-FFFFH,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源VPP。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入;XTAL2:來自反向振蕩器的輸出。2 顯示器件簡介本系統(tǒng)的顯示時(shí)間功能是按照一般電子表的顯示進(jìn)展設(shè)計(jì)的,讓其顯示6為數(shù)字時(shí)間信息即顯示時(shí)、分、秒
14、,再加上本錢等因素,所以我們選擇用7段數(shù)碼管進(jìn)展顯示。一般的七段數(shù)碼管擁有八個(gè)發(fā)光二極管用以顯示十進(jìn)制0至9的數(shù)字,也可以顯示英文字母,包括十六進(jìn)制和二十進(jìn)制中的英文至a至f。七段數(shù)碼管由四個(gè)直向、三個(gè)橫向及上右下角一點(diǎn)的發(fā)光二極管組成,由以上向條發(fā)光體組合出不同的數(shù)字。除七段數(shù)碼管外,還有十四及十六劃的顯示器,但現(xiàn)時(shí)已被點(diǎn)陣顯示器所取代。七段數(shù)碼管分為共陽極及共陰極,共陽極的七段數(shù)碼管的正極或陽極為八個(gè)發(fā)光二極管的共有正極,其他接點(diǎn)為獨(dú)立發(fā)光二極管的負(fù)極或陰極,使用者只需把正極接電,不同的負(fù)極接地就能控制七段數(shù)碼管顯示不同的數(shù)字。3 蜂鳴器簡介蜂鳴器是一種一體化構(gòu)造的電子訊響器,采用直流電壓
15、供電,廣泛應(yīng)用于電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。壓電式蜂鳴器工作原理:當(dāng)接通電源后1.515V直流工作電壓,多諧振蕩器起振,輸出1.52.5kHZ的音頻信號,阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。電磁式蜂鳴器工作原理:接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。三、系統(tǒng)設(shè)計(jì)1 需求分析 設(shè)計(jì)任務(wù) 能夠通過7段數(shù)碼管顯示時(shí)間; 能夠通過按鍵對當(dāng)前的時(shí)間設(shè)置進(jìn)展校正; 能夠按照學(xué)校當(dāng)前的作息時(shí)間進(jìn)展打鈴; 能夠通過按鍵對學(xué)校當(dāng)前的作息時(shí)間進(jìn)展修改。 根本要求該系統(tǒng)具備以下幾點(diǎn)根本要求:
16、 根本計(jì)時(shí)和顯示功能用24小時(shí)制進(jìn)展顯示。 能夠設(shè)置當(dāng)前時(shí)間。 能夠?qū)崿F(xiàn)根本打鈴功能, 按照表3-1顯示的時(shí)間進(jìn)展打鈴。表3-1 作息時(shí)間表上午下午晚上7:50預(yù)備鈴14:10預(yù)備鈴19:20預(yù)備鈴8:00第一節(jié)課上14:20第五節(jié)課上19:30第九節(jié)課上8:45第一節(jié)課下15:05第五節(jié)課下20:15第九節(jié)課下8:55第二節(jié)課上15:15第六節(jié)課上20:25第十節(jié)課上9:40第二節(jié)課下16:00第六節(jié)課下21:10第十節(jié)課下10:00第三節(jié)課上16:20第七節(jié)課上10:45第三節(jié)課下17:05第七節(jié)課下10:55第四節(jié)課上17:15第八節(jié)課上11:40第四節(jié)課下18:00第八節(jié)課下性能指標(biāo)該
17、系統(tǒng)具備以下性能指標(biāo): 時(shí)鐘:時(shí)2位、分2位、秒2位,時(shí)分秒用“-分開。 校對鍵:設(shè)置鍵,左移/右移鍵,加減鍵,確定/取消鍵,添加鍵。 響鈴:蜂鳴器。2 系統(tǒng)硬件電路設(shè)計(jì)分析完單片機(jī)教學(xué)打鈴系統(tǒng)原理及特點(diǎn)后,設(shè)計(jì)了以下硬件系統(tǒng)。 總體方案設(shè)計(jì)本系統(tǒng)是基于單片機(jī)AT89C51的教學(xué)打鈴系統(tǒng)。系統(tǒng)硬件電路包括:AT89C51單片機(jī)的最小系統(tǒng)硬件電路、時(shí)鐘電路、顯示電路、打鈴電路。本系統(tǒng)的構(gòu)造框圖如圖3-1所示:圖3-1 系統(tǒng)構(gòu)造圖 硬件電路圖 該系統(tǒng)的硬件電路如圖3-2所示:圖3-2 硬件電路圖 按鍵電路本系統(tǒng)接有8個(gè)按鍵,按鍵的一端接地。另一端分別單片機(jī)的P1.0P1.7口。按鍵從上到下的功能分
18、別是:設(shè)置按鍵、加按鍵、減按鍵,左移按鍵、右移按鍵、確定按鍵、取消按鍵和修改鬧鈴按鍵。按鍵電路模塊如圖3-3所示:圖3-3 按鍵電路模塊圖 顯示電路根據(jù)設(shè)計(jì)要求,該系統(tǒng)采用共陰極數(shù)碼管,其公共端接單片機(jī)的P0口。數(shù)碼管顯示電路使用AT89C51的動(dòng)態(tài)顯示功能,數(shù)碼管的八段a、b、c、d、e、f、g、dp接入單片機(jī)的P2口,數(shù)碼管分別顯示:“時(shí)、“、“分、“、“秒。數(shù)碼管顯示電路如圖3-4所示:圖3-4 顯示電路圖 打鈴電路打鈴電路接P3.7:當(dāng)前時(shí)間與程序設(shè)定時(shí)間一樣時(shí),P3.7端輸出高電平的方波,即打鈴。打鈴電路模塊如圖3-5所示:圖3-5 打鈴電路圖3 軟件設(shè)計(jì)流程圖圖3-6 主程序流程圖
19、4 顯示程序設(shè)計(jì)利用12MHz中斷做時(shí)鐘源進(jìn)展計(jì)時(shí),每20次中斷秒加1。流程圖如圖3-7 所示:s圖3-7 定時(shí)中斷程序流程圖5 按鍵設(shè)定程序設(shè)計(jì)本系統(tǒng)接有8個(gè)按鍵從上到下的功能分別是:設(shè)置按鍵、加按鍵、減按鍵,左移按鍵、右移按鍵、確定按鍵、取消按鍵和修改鬧鈴按鍵。當(dāng)P1口輸出低電平時(shí),按鍵被按下,執(zhí)行校正時(shí)鐘操作和修改作息時(shí)間操作。校正時(shí)鐘程序流程圖圖3-8 校正時(shí)鐘程序流程圖 修改作息時(shí)間流程圖圖3-9 修改作息時(shí)間流程圖四、系統(tǒng)實(shí)現(xiàn)1 功能模塊 時(shí)鐘顯示模塊設(shè)置確定時(shí)鐘是利用定時(shí)器T0 溢出中斷方式,通過設(shè)置T0參數(shù)確定計(jì)時(shí)的基數(shù),再對基數(shù)的計(jì)數(shù)確定出秒數(shù),分鐘數(shù)和時(shí)數(shù)。再用數(shù)碼管將時(shí)間
20、顯示出來,其模塊程序如下:/電子鐘中斷處理函數(shù)void time()interrupt 1 /定時(shí)器0中斷 TH0=(65536-50000)/256; /設(shè)置T0參數(shù),定時(shí)50ms TL0=(65536-50000)%256; if(temp>19)/定時(shí)20次,50ms*20=1s temp=0; second+; /秒加加if(second>59) second=0; minute+; /分加加if(minute>59) minute=0; hour+; /時(shí)加加 if(hour>23) hour=0; else temp+; /數(shù)碼管顯示函數(shù)void show(
21、) P0=dis0; P2=dis1second%10; delay(40); /顯示秒P0=dis1; P2=dis1second/10; delay(40);P0=dis2; P2=dis110; delay(40);P0=dis3; P2=dis1minute%10; delay(40); /顯示分P0=dis4; P2=dis1minute/10; delay(40);P0=dis5; P2=dis110; delay(40); P0=dis6; P2=dis1hour%10; delay(40); /顯示時(shí)P0=dis7; P2=dis1hour/10; delay(40);中斷處理
22、函數(shù)采用方式1,最大能計(jì)時(shí)65536次,所以在該函數(shù)中最大能定時(shí)50ms;由于顯示是按秒進(jìn)展顯示的,所以需要定時(shí)20次才能到達(dá)1s。然后再顯示函數(shù)中顯示當(dāng)前時(shí)間,其中P0口是用來選擇用哪個(gè)數(shù)碼管顯示,P2口是用來顯示當(dāng)前數(shù)碼管的數(shù)值。 時(shí)鐘校正模塊設(shè)置當(dāng)數(shù)碼管顯示的時(shí)間與實(shí)際時(shí)間不符時(shí),可對其數(shù)碼管顯示的時(shí)間進(jìn)展校正,點(diǎn)擊設(shè)置鍵進(jìn)入時(shí)間調(diào)整的狀態(tài),可用加減鍵,左移右移鍵對秒,分,時(shí)進(jìn)展調(diào)整。最后點(diǎn)擊確定或取消鍵完成時(shí)間校正。其模塊程序如下:/加時(shí)間void add() if(setflag>0) if(lr=0) /修改秒的個(gè)位 second+; if(second>=60) se
23、cond=0; if(lr=1) /修改秒的十位 second=second+10; if(second>=60) second=0; if(lr=3) /修改分的個(gè)位 minute+; if(minute>=60) minute=0; if(lr=4) /修改分的十位 minute=minute+10; if(minute>=60) minute=0; if(lr=6) /修改時(shí)的個(gè)位 hour+; if(hour>=24) hour=0; if(lr=7) /修改時(shí)的十位 hour=hour+10; if(hour>=24) hour=0; /減時(shí)間void
24、reduce() if(setflag>0) if(lr=0) /修改秒的個(gè)位 second-;if(second<0) second=0; if(lr=1) /修改秒的十位 second=second-10; if(second<0) second=0; if(lr=3) /修改分的個(gè)位 minute-; if(minute<0) minute=0; if(lr=4) /修改分的十位 minute=minute-10; if(minute<0) minute=0; if(lr=6) /修改時(shí)的個(gè)位 hour-; if(hour<0) hour=0; if(
25、lr=7) /修改分的十位 hour=hour-10; if(hour<0) hour=0; 時(shí)鐘校正的核心技術(shù)也就是對選擇的時(shí)間進(jìn)展加減來實(shí)現(xiàn)校正。為了方便對時(shí)、分、秒的校正,本模塊設(shè)計(jì)了左移、右移的功能,通過按鍵選擇要修改的時(shí)、分、秒。作息時(shí)間修改模塊設(shè)置 當(dāng)需要修改某個(gè)作息時(shí)間時(shí),可選擇某個(gè)作息時(shí)間進(jìn)展修改,先點(diǎn)擊修改鍵進(jìn)入作息時(shí)間修改的狀態(tài),再點(diǎn)擊左移右移鍵選擇修改哪個(gè)作息時(shí)間,然后點(diǎn)擊設(shè)置鍵對作息時(shí)間進(jìn)展調(diào)整,可用加減鍵,左移右移鍵對秒,分,時(shí)進(jìn)展調(diào)整。最后點(diǎn)擊確定或取消鍵完成作息時(shí)間修改。其模塊程序如下: switch(key_code) /判斷選擇哪個(gè)按鈕 case 0xf
26、e:set();break; /點(diǎn)擊設(shè)置按鈕 case 0xfd:add();break; /加時(shí)間case 0xfb:reduce();break; /減時(shí)間case 0xf7: lr+;if(lr>7)lr=0; break; /左移加case 0xef:lr-; if(lr<0)lr=7;break; /右移減case 0xdf:cancel();break; /取消時(shí)間的校正case 0xbf:save();break; /保存時(shí)間的校正void update() TR0=0; /停頓計(jì)時(shí) secondu=second;minuteu=minute;houru=hour;
27、hour=bell_hourchance; minute=bell_minutechance;second=0;此模塊中當(dāng)點(diǎn)擊設(shè)置鍵、加減鍵以及左移右移鍵的程序?qū)崿F(xiàn)同作息時(shí)間修改模塊設(shè)置里的設(shè)置鍵、加減鍵以及左移右移鍵的程序?qū)崿F(xiàn)。 打鈴模塊設(shè)置 將當(dāng)前的時(shí)間與設(shè)置的打鈴時(shí)間進(jìn)展比照,假設(shè)兩個(gè)時(shí)間一樣時(shí)那么開場打鈴,假設(shè)時(shí)間不一樣那么不打鈴,其模塊程序如下: /定時(shí)器1控制打鈴的時(shí)間void bellTime()interrupt 3 TH1=(65536-50000)/256; /設(shè)置定時(shí)器1的初始參數(shù) TL1=(65536-50000)%256; SPK=!SPK; /給蜂鳴器賦值,讓其響,
28、實(shí)現(xiàn)打鈴。 if(+time_count=400) /響鈴時(shí)間 time_count=0; Bell_Time=0; /到時(shí)間后關(guān)閉響鈴 /電子鐘中斷處理void time()interrupt 1 /定時(shí)器0中斷 uchar i; flag1=0;flag2=0;flag3=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(temp>19)/定時(shí)20次 temp=0;second+;if(second>59) second=0; minute+;if(minute>59)minute=0; hour+; if(hour&
29、gt;23) hour=0; else temp+; if(second=0) /用于判斷該時(shí)間是否為打鈴時(shí)間 flag1=1; if(t=0) /找到第一個(gè)打鈴的時(shí)間 for(i=t;i<23;i+)/找到第一個(gè)打鈴的時(shí)間 if(minute=bell_minutei) /判斷當(dāng)前的時(shí)間與目前打鈴的時(shí)間是否相等 flag2=1; if(hour=bell_houri) flag3=1; if(flag2=1&&flag3=1) t=i;/得到第一個(gè)打鈴時(shí)間在數(shù)組里的位置 break; if(t>0) /找到第一個(gè)鬧鈴后其他的鬧鈴按如下處理 if(bell_minu
30、tet=0&&bell_hourt=0) kk=1; if(minute=bell_minutet) flag2=1; if(hour=bell_hourt) flag3=1; if(flag1=1&&flag2=1&&flag3=1&&kk=0) /當(dāng)前時(shí)間與打鈴時(shí)間相等t+; Bell_Time=1;flag1=0;flag2=0;flag3=0;if(kk=1) t=0;為了更準(zhǔn)確的控制打鈴的時(shí)間,此模塊利用定時(shí)器控制打鈴的時(shí)間,每加一秒就進(jìn)展判斷當(dāng)前時(shí)間是否與打鈴時(shí)間相等,假設(shè)相等,這讓蜂鳴器響。五、系統(tǒng)測試與數(shù)據(jù)分析1
31、元件清單元件清單如表5-1所示:表5-1 元件清單表元件名稱個(gè)數(shù)AT89C5117SEG-MPX8-CC-BLUE1SOUNDER1BUTTON82 調(diào)試過程 時(shí)鐘顯示模塊 系統(tǒng)運(yùn)行時(shí)如圖5-1所示:圖5-1 時(shí)鐘顯示效果圖 校正時(shí)鐘模塊當(dāng)顯示時(shí)間與當(dāng)前時(shí)間不相符時(shí),需要校正時(shí)鐘。例如,系統(tǒng)顯示時(shí)間如圖5.2.1所示,當(dāng)前時(shí)間為8:00,調(diào)試過程如下: 按下設(shè)置鍵,時(shí)鐘停頓,進(jìn)入校正狀態(tài); 按下左移/右移鍵,選擇對時(shí)、分或秒的校正; 按下加/減鍵,校正時(shí)鐘到當(dāng)前的時(shí)間; 按下確定鍵,校正成功; 按取消鍵回到原本顯示時(shí)間。經(jīng)過以上調(diào)試過程,可以校正成功,此時(shí)系統(tǒng)如圖5-2所示:圖5-2 校正后顯
32、示效果圖修改作息時(shí)間模塊假設(shè)需要修改作息時(shí)間,按照如下調(diào)試過程: 按下修改鍵,時(shí)鐘顯示第一個(gè)打鈴時(shí)間; 按下左移/右移鍵,選擇要修改的打鈴時(shí)間; 按下設(shè)置鍵,進(jìn)入修改打鈴時(shí)間狀態(tài)此過程和校正時(shí)鐘過程一樣; 按下確定鍵,修改打鈴時(shí)間成功,顯示當(dāng)前時(shí)間; 按下取消鍵,顯示當(dāng)前時(shí)間。經(jīng)過以上調(diào)試過程,可以修改成功。打鈴模塊當(dāng)系統(tǒng)顯示時(shí)間與設(shè)定打鈴時(shí)間一樣時(shí),打鈴。六、結(jié)論本文闡述了自動(dòng)打鈴系統(tǒng)的工作原理、體系構(gòu)造等。并設(shè)計(jì)實(shí)現(xiàn)了一個(gè)自動(dòng)打鈴系統(tǒng),能夠校對當(dāng)前時(shí)間,選擇適宜的打鈴時(shí)間,適合學(xué)校、工廠等管理機(jī)構(gòu)。為了更好的實(shí)現(xiàn)自動(dòng)打鈴系統(tǒng),我們首先對本系統(tǒng)的功能需求進(jìn)展了分析并搭建了模擬電路;然后開場分
33、模塊進(jìn)展軟件設(shè)計(jì),第一步我們是實(shí)現(xiàn)時(shí)鐘顯示模塊即能夠在數(shù)碼管中顯示當(dāng)前的時(shí)間,第二步是實(shí)現(xiàn)打鈴模塊即按照作息時(shí)間表依次打鈴,第三步是實(shí)現(xiàn)校正當(dāng)前時(shí)鐘模塊,第四步是實(shí)現(xiàn)作息時(shí)間修改模塊;當(dāng)全部模塊都完成后,開場對實(shí)現(xiàn)的系統(tǒng)進(jìn)展測試,通過測試數(shù)據(jù)的分析,系統(tǒng)能夠很好的實(shí)現(xiàn)設(shè)計(jì)需求中的各種功能,但是程序還沒有到達(dá)最優(yōu),需要進(jìn)一步的優(yōu)化和開發(fā)。通過本次設(shè)計(jì),我們對所學(xué)的專業(yè)知識(shí)有了很好的回憶和實(shí)踐,提高了自己的動(dòng)手和思考能力,這對我們自身的開展有了很大的幫助,同時(shí)在此期間,我們查閱了很多的書籍和資料,從中我們學(xué)到了很多課本上沒有的知識(shí),拓展了自己的知識(shí)面,如果沒有前期的準(zhǔn)備工作是沒法很好的完成此次設(shè)計(jì)
34、的,所以多學(xué)、多看、多想、多動(dòng)手才是學(xué)好知識(shí)的必要素質(zhì),這對我們未來的開展和進(jìn)步有著至關(guān)重要的作用。第二局部:參考文獻(xiàn)1 X鳳言.電子電路根底M.:高等教育,1995.2 戴佳.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講M.:電子工業(yè),2021.3 孫江宏. Protel 99 電路設(shè)計(jì)與應(yīng)用M.:機(jī)械工業(yè),2001.4 王水富.基于8051的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)J.電腦編程技巧與維護(hù),2021,117:23-26.5 王書杰.基于校園網(wǎng)絡(luò)的自動(dòng)打鈴系統(tǒng)設(shè)計(jì)J.科學(xué)技術(shù)與工程,2021,1131:204-207. 6 王娟.基于單片機(jī)的多功能定時(shí)打鈴鐘設(shè)計(jì)J.XX農(nóng)機(jī),2021,45:85-86.7 于
35、永51單片機(jī)C語言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講M:電子工業(yè),2007.學(xué)生簽名: 填表日期: 年 月 日第三局部: 指導(dǎo)教師評語第四局部:成績評定指導(dǎo)教師簽名: 填表日期: 年 月 附錄/打鈴系統(tǒng)*include"reg51.h"*define uchar unsigned char*define uint unsigned intsbit SPK=P37;/蜂鳴器bit Bell_Time=0;/到打鈴時(shí)間標(biāo)志uchar temp=0;/記錄電子鐘的計(jì)數(shù)次數(shù)uint time_count=0;/記錄打鈴時(shí)間的計(jì)數(shù)次數(shù)char second,minute,hour;/記錄
36、時(shí)間uchar seconds,minutes,hours; /用于保存按下設(shè)置按鈕時(shí)的時(shí)間值uchar secondu,minuteu,houru;/ 用于保存按下修改按鈕時(shí)的時(shí)間值uchar flag1,flag2,flag3,t;/標(biāo)記是否可以打鈴uint code dis1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/共陰數(shù)碼管0-9,0xBF為“-,1表示點(diǎn)亮uchar code dis=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/選擇哪個(gè)數(shù)碼管,0表示選中uchar bell_
37、hour=7,8,8,8,9,10,10,10,11,14,14,15,15,16,16,17,17,18,19,19,20,20,21,0; /小時(shí)的時(shí)間uchar bell_minute=50,0,45,55,40,0,45,55,40,10,20,5,15,0,20,5,15,0,20,30,15,25,10,0; /分的時(shí)間,秒的時(shí)間都為0 char lr;/記錄左右移動(dòng)的位置uchar flag=0;/用于記錄點(diǎn)擊移動(dòng)按鈕后移到第一位讓其閃動(dòng)uchar lr1=0;/設(shè)置第一位的閃動(dòng)標(biāo)志uchar flag4=1; /用于記錄點(diǎn)擊取消按鈕后第一位不閃uchar ff=0;/用于判斷第
38、一次是右移后再次左移閃uchar key_code;/用于按鍵去抖時(shí)賦予P1口的值char chance,t1; /chance表示選擇哪個(gè)打鈴時(shí)間修改,t1用于標(biāo)志變量uchar setflag=0; /在使用加,減,保存,取消按鈕時(shí),用于和修改打鈴時(shí)間相區(qū)別uchar updateflag=0; uchar kk=0; /用于標(biāo)志到數(shù)組的0:0:0/延遲函數(shù)void delay(uint tt) uchar i,j;for(i=0;i<tt;i+) for(j=0;j<30;j+);/數(shù)碼管顯示函數(shù)void show() if(lr>=1) lr1=0; flag=1;/
39、用于記錄點(diǎn)擊移動(dòng)按鈕后再移到第一位讓其閃動(dòng)else/點(diǎn)擊移動(dòng)按鈕,當(dāng)lr>7,那么lr=0;即第一位閃 if(flag=1&&flag4=1) lr1=1; if(flag=1&&flag4=1&&ff=1) lr1=1; P0=dis0;P2=dis1second%10;if(lr1=1) delay(7);else delay(40);P0=dis1;P2=dis1second/10; if(lr=1)delay(7);else delay(40);P0=dis2;P2=dis110;delay(40);P0=dis3;P2=dis1m
40、inute%10;if(lr=3)delay(7);else delay(40);P0=dis4;P2=dis1minute/10;if(lr=4)delay(7); else delay(40);P0=dis5;P2=dis110;delay(40);P0=dis6;P2=dis1hour%10;if(lr=6)delay(7);else delay(40);P0=dis7;P2=dis1hour/10;if(lr=7)delay(7);else delay(40);/定時(shí)器1控制打鈴時(shí)間void bellTime()interrupt 3 TH1=(65536-50000)/256; TL
41、1=(65536-50000)%256; SPK=!SPK; if(+time_count=400) /響鈴時(shí)間 time_count=0; Bell_Time=0; /到時(shí)間后關(guān)閉響鈴 /電子鐘中斷處理void time()interrupt 1 /定時(shí)器0中斷 uchar i; flag1=0;flag2=0;flag3=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(temp>19)/定時(shí)20次 temp=0;second+;if(second>59) second=0;minute+;if(minute>59)m
42、inute=0; hour+; if(hour>23) hour=0; else temp+; if(second=0) /用于判斷該時(shí)間是否為打鈴時(shí)間 flag1=1; if(t=0) /找到第一個(gè)鬧鈴的時(shí)間,可能不是數(shù)組里的第一個(gè)值for(i=t;i<23;i+) if(minute=bell_minutei) flag2=1; if(hour=bell_houri) flag3=1; if(flag2=1&&flag3=1) t=i;/得到第一個(gè)鬧鈴在數(shù)組里的位置 break; if(t>0) /找到第一個(gè)鬧鈴后其他的鬧鈴按如下處理 if(bell_mi
43、nutet=0&&bell_hourt=0) kk=1; if(minute=bell_minutet) flag2=1; if(hour=bell_hourt) flag3=1; if(flag1=1&&flag2=1&&flag3=1&&kk=0)t+; Bell_Time=1;flag1=0;flag2=0;flag3=0;if(kk=1) /如果到0:0:0時(shí),將從第一個(gè)鬧鈴開場 t=0;/設(shè)置時(shí)間函數(shù)void set() TR0=0; lr1=1; seconds=second;minutes=minute;hours=
44、hour;/取消時(shí)回到原來的時(shí)間/修改作息時(shí)間函數(shù)void update() TR0=0; secondu=second;minuteu=minute;houru=hour; /用于點(diǎn)擊修改后回到點(diǎn)擊時(shí)的時(shí)間 hour=bell_hourchance;minute=bell_minutechance;second=0;/加時(shí)間函數(shù)void add() if(setflag>0) if(lr=0) second+; if(second>=60) second=0; if(lr=1) second=second+10; if(second>=60) second=0; if(lr
45、=3) minute+; if(minute>=60) minute=0; if(lr=4) minute=minute+10; if(minute>=60) minute=0; if(lr=6) hour+; if(hour>=24) hour=0; if(lr=7) hour=hour+10; if(hour>=24) hour=0; /減時(shí)間函數(shù)void reduce() if(setflag>0) if(lr=0) second-; if(second<0) second=0; if(lr=1) second=second-10; if(second<0) second=0; if(lr=3) minute-; if(minute<0) minute=0; if(lr=4) minute=minute-10; if(minute<0) minute=0; if(lr=6) hour-; if(hour<0) hour=0; if(lr=7) hour=hour-10; if(hour<0) hour=0; /確定按鈕函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)財(cái)務(wù)知識(shí)培訓(xùn)課件下載
- 2024招標(biāo)公司實(shí)習(xí)生項(xiàng)目運(yùn)營管理實(shí)習(xí)報(bào)告書3篇
- 專業(yè)展廳租賃服務(wù)協(xié)議范本版B版
- 中國戲曲學(xué)院《中小學(xué)心理健康與道德教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州工程技術(shù)學(xué)院《3維建模技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年進(jìn)口燕窩分銷協(xié)議3篇
- `2024年專用`0fOc電力設(shè)施建設(shè)施工合同3篇
- 《電纜直埋技術(shù)》課件
- 讀書活動(dòng)在幼兒園的創(chuàng)新方式計(jì)劃
- 雙十一旅游購物攻略模板
- 2025年度愛讀書學(xué)長定制化閱讀計(jì)劃合同2篇
- 2025年首都機(jī)場集團(tuán)公司招聘筆試參考題庫含答案解析
- 保健品購銷合同2025年
- 2024版光伏發(fā)電項(xiàng)目承包經(jīng)營權(quán)轉(zhuǎn)讓合同范本3篇
- 實(shí)習(xí)終止及解除協(xié)議書
- 河南省信陽市浉河區(qū)9校聯(lián)考2024-2025學(xué)年八年級上學(xué)期12月月考地理試題(含答案)
- 中國冠心病康復(fù)循證實(shí)踐指南(2024版)解讀
- 2024-2030年中國再生水行業(yè)發(fā)展前景預(yù)測規(guī)劃分析報(bào)告
- 城市公益性公墓建設(shè)項(xiàng)目施工組織設(shè)計(jì)
- 2022-2024年江蘇中考語文試題匯編:名著閱讀(教師版)
- 2024年秋季新人教版七年級上冊數(shù)學(xué)全冊教案
評論
0/150
提交評論