論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)_第1頁(yè)
論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)_第2頁(yè)
論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)_第3頁(yè)
論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)_第4頁(yè)
論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

年4月19日論基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)文檔僅供參考課程設(shè)計(jì)任務(wù)書(shū)分院信息科學(xué)與工程學(xué)院專業(yè)自動(dòng)化學(xué)生姓名王利偉學(xué)號(hào)設(shè)計(jì)題目基于單片機(jī)的作息時(shí)間控制鐘系統(tǒng)的設(shè)計(jì)——軟件設(shè)計(jì)課程設(shè)計(jì)內(nèi)容及要求:內(nèi)容:1設(shè)計(jì)電路,選擇器件2利用Protel畫(huà)原理圖3編程,調(diào)試4焊接電路,調(diào)試要求:1.系統(tǒng)時(shí)間設(shè)計(jì),設(shè)計(jì)以24小時(shí)為周期的時(shí)間鐘。2.LED數(shù)碼管顯示時(shí)間。3.設(shè)計(jì)鍵盤,經(jīng)過(guò)鍵盤修改時(shí)間、設(shè)定鬧鈴。進(jìn)度及安排:(10天)1.查資料(2天)2.設(shè)計(jì)電路畫(huà)電路圖(2天)3.編程與調(diào)試(2天)4.焊接硬件電路并調(diào)試(2天)5.寫(xiě)報(bào)告(2天)指導(dǎo)教師(簽字):年月日分院院長(zhǎng)(簽字):年月日摘要單片機(jī)作息時(shí)間控制系統(tǒng)設(shè)計(jì)的目的和意義:隨著計(jì)算機(jī)技術(shù)的發(fā)展和在控制系統(tǒng)中的廣泛應(yīng)用,以及設(shè)備向小型化、智能化發(fā)展,作為高新技術(shù)之一的單片機(jī)以其體積小、功能強(qiáng)、價(jià)格低廉、使用靈活等優(yōu)勢(shì),顯示出了很強(qiáng)的生命力。進(jìn)入21世紀(jì)以來(lái),開(kāi)發(fā)推出單片機(jī)的公司很多,各種高性能單片機(jī)芯片市場(chǎng)也異常活躍,新技術(shù)的不斷采用,更加使單片機(jī)的種類、性能以及應(yīng)用領(lǐng)域不斷擴(kuò)大和提高。因其功耗低,超高型,低成本,功能完整,在國(guó)內(nèi)越來(lái)越受到用戶的重視和廣泛使用。隨著科技的進(jìn)步和技術(shù)不斷的提升。一塊大而復(fù)雜的模擬電路花費(fèi)了您巨大的精力,繁多的元器件增加了您的成本。而現(xiàn)在,只需要一塊幾厘米見(jiàn)方的單片機(jī),寫(xiě)入簡(jiǎn)單的程序,就能夠使您以前的電路簡(jiǎn)單很多。相信您在使用并掌握了單片機(jī)技術(shù)后,不論在您今后開(kāi)發(fā)或是工作上,

一定會(huì)帶來(lái)意想不到的驚喜。

以AT89S52為核心控制器件的作息時(shí)間控制鐘,由鍵盤、聲音輸出模塊、電源轉(zhuǎn)換模塊和存儲(chǔ)模塊四部分組成。它利用AT89S52的定時(shí)/計(jì)數(shù)器來(lái)計(jì)算時(shí)間,并用存儲(chǔ)器記錄數(shù)據(jù),保證了系統(tǒng)的可靠性。AT89S52單片機(jī)是整個(gè)設(shè)計(jì)的核心控制器件,根據(jù)從鍵盤接受的數(shù)據(jù)控制整個(gè)系統(tǒng)的工作流程。整體性好,人性化強(qiáng)、可靠性高,實(shí)現(xiàn)了對(duì)時(shí)間控制的智能化,擺脫了傳統(tǒng)由人來(lái)控制時(shí)間的長(zhǎng)短的不便,是現(xiàn)代學(xué)校必不可少的設(shè)備。本次校園作息時(shí)間控制系統(tǒng)主要用于學(xué)校,對(duì)一些以24小時(shí)為周期的開(kāi)關(guān)量進(jìn)行自動(dòng)控制。如上下課打鈴及擴(kuò)音設(shè)備的開(kāi)與關(guān)。采用AT89S52單片機(jī)來(lái)實(shí)現(xiàn)對(duì)上述開(kāi)關(guān)量的控制,利用24C02芯片來(lái)存儲(chǔ)數(shù)據(jù),設(shè)有六位數(shù)碼管、能夠?qū)崟r(shí)顯示時(shí)間、系統(tǒng)還設(shè)有輸入鍵盤,用以修改實(shí)時(shí)時(shí)鐘,體現(xiàn)了系統(tǒng)簡(jiǎn)單、工作穩(wěn)定可靠、價(jià)廉、控制時(shí)間精確及系統(tǒng)體積小等優(yōu)點(diǎn)。關(guān)鍵詞:作息時(shí)間控制;AT89S52;24C02目錄2.4系統(tǒng)整體電路圖 43.3.1系統(tǒng)主程序 63.3.2系統(tǒng)數(shù)據(jù)讀寫(xiě)子程序 103.3.3顯示子程序 143.3.4報(bào)警掃描子程序 193.3.5鍵盤掃描子程序 203.3.6設(shè)置時(shí)鐘子程序 223.3.7T1定時(shí)器中斷子程序 25285結(jié)論 2940311緒論1.1背景介紹隨著計(jì)算機(jī)技術(shù)的發(fā)展和在控制系統(tǒng)中的廣泛應(yīng)用,以及設(shè)備向小型化、智能化發(fā)展,作為高新技術(shù)之一的單片機(jī)以其體積小、功能強(qiáng)、價(jià)格低廉、使用靈活等優(yōu)勢(shì),顯示出了很強(qiáng)的生命力。進(jìn)入21世紀(jì)以來(lái),開(kāi)發(fā)推出單片機(jī)的公司很多,各種高性能單片機(jī)芯片市場(chǎng)也異?;钴S,新技術(shù)的不斷采用,更加使單片機(jī)的種類、性能以及應(yīng)用領(lǐng)域不斷擴(kuò)大和提高。16位單片機(jī)的問(wèn)世,使得單片機(jī)的科技含量及應(yīng)用躍上一個(gè)新的臺(tái)階。因其功耗低,超高型,低成本,功能完整,在國(guó)內(nèi)越來(lái)越受到用戶的重視和廣泛使用。本設(shè)計(jì)是一個(gè)具有報(bào)時(shí)功能的作息時(shí)間控制鐘。它利用AT89S52單片機(jī)的定時(shí)器計(jì)時(shí),進(jìn)行時(shí)間計(jì)算;在進(jìn)行時(shí)間計(jì)算,分每加一時(shí),都與規(guī)定的作息時(shí)間比較,如果相等則進(jìn)行相應(yīng)的控制或動(dòng)作。由鍵盤和顯示部分組成,系統(tǒng)擴(kuò)展八個(gè)按鍵用于報(bào)時(shí)及校正時(shí)間。現(xiàn)代機(jī)關(guān)企業(yè),特別是學(xué)校要求對(duì)時(shí)間加以控制,要按時(shí)打鈴及播放廣播,以保證學(xué)習(xí)與工作的正常運(yùn)行。本設(shè)計(jì)實(shí)現(xiàn)了這些功能,給學(xué)校及其它機(jī)關(guān)企業(yè)帶來(lái)方便,整體性好,人性化強(qiáng)、可靠性高,實(shí)現(xiàn)了對(duì)時(shí)間控制的智能化。1.2作息時(shí)間控制鐘概述科技的進(jìn)步需要技術(shù)不斷的提升。一塊大而復(fù)雜的模擬電路花費(fèi)了您巨大的精力,繁多的元器件增加了您的成本。而現(xiàn)在,只需要一塊幾厘米見(jiàn)方的單片機(jī),寫(xiě)入簡(jiǎn)單的程序,就能夠使您以前的電路簡(jiǎn)單很多。相信您在使用并掌握了單片機(jī)技術(shù)后,不論在您今后開(kāi)發(fā)或是工作上,

一定會(huì)帶來(lái)意想不到的驚喜。該系統(tǒng)以AT89S52為主體的設(shè)計(jì),整體性好,人性化強(qiáng)、可靠性高,實(shí)現(xiàn)了對(duì)時(shí)間控制的智能化,擺脫了傳統(tǒng)由人來(lái)控制時(shí)間的長(zhǎng)短的不便,是現(xiàn)代學(xué)校必不可少的設(shè)備。2硬件介紹2.1硬件仿真環(huán)境介紹:Protues軟件是英國(guó)Labcenterelectronics公司出版的EDA工具軟件。它不但具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是當(dāng)前最好的仿真單片機(jī)及外圍器件的工具。雖然當(dāng)前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛(ài)好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開(kāi)發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是當(dāng)前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/DsPIC33、AVR、ARM、8086和MSP430等,即將增加Cortex和DSP系列處理器,并持續(xù)增加其它系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。支持當(dāng)前的主流單片機(jī),如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1)提供軟件調(diào)試功能2)提供豐富的外圍接口器件及其仿真RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。這樣很接近實(shí)際。在訓(xùn)練學(xué)生時(shí),能夠選擇不同的方案,這樣更利于培養(yǎng)學(xué)生。3)提供豐富的虛擬儀器利用虛擬儀器在仿真過(guò)程中能夠測(cè)量外圍電路的特性,培養(yǎng)學(xué)生實(shí)際硬件的調(diào)試能力。4)具有強(qiáng)大的原理圖繪制功能2.2系統(tǒng)整體設(shè)計(jì)根據(jù)設(shè)計(jì)要求畫(huà)出系統(tǒng)框圖,如圖1.1所示:上拉電阻單片機(jī)上拉電阻單片機(jī)數(shù)碼管電源數(shù)碼管電源驅(qū)動(dòng)電路時(shí)鐘驅(qū)動(dòng)電路時(shí)鐘存儲(chǔ)器存儲(chǔ)器復(fù)位電路復(fù)位電路響鈴鍵盤電路響鈴鍵盤電路圖2.1系統(tǒng)總體框圖該系統(tǒng)是由微處理器、存儲(chǔ)器、數(shù)碼顯示部分以及鍵盤輸入部分所組成。該控制系統(tǒng)用LED數(shù)碼管顯示時(shí)、分、秒時(shí)間,能夠顯示實(shí)時(shí)時(shí)鐘,顯示鬧鈴時(shí)間,盡量減少時(shí)間積累誤差,具有秒閃功能。顯示電路采用了7407芯片來(lái)完成驅(qū)的功能,利用上拉電阻共同驅(qū)動(dòng)數(shù)碼管顯示時(shí)間。系統(tǒng)采用AT89S52作為處理器,利用24C02芯片作為數(shù)據(jù)存儲(chǔ)器,打鈴時(shí)間點(diǎn)數(shù)據(jù)存儲(chǔ)于非易失存儲(chǔ)器存儲(chǔ)24C02中,防止掉電丟失數(shù)據(jù);能逐個(gè)檢查、修改、刪除已設(shè)置的打鈴時(shí)間點(diǎn)和增加打鈴時(shí)間點(diǎn)。系統(tǒng)還設(shè)有輸入鍵盤,用以校正實(shí)時(shí)時(shí)鐘,設(shè)定鬧鈴時(shí)間,鍵盤設(shè)計(jì)簡(jiǎn)單、易于操作。輸出驅(qū)動(dòng)電路部分,利用220V電源為系統(tǒng)提供供電,利用繼電器驅(qū)動(dòng),便于控制220V的電鈴。同時(shí)利用直流——交流轉(zhuǎn)換模塊為整個(gè)系統(tǒng)提供電源,更方便實(shí)際應(yīng)用。2.3控制鐘硬件設(shè)計(jì)按系統(tǒng)框圖分五個(gè)部分設(shè)計(jì)如下圖2.1。鍵盤鍵盤部分顯示部分單片機(jī)控制部分響鈴部分圖2.2硬件系統(tǒng)框圖系統(tǒng)以單片機(jī)為基本核心,利用24C02芯片能夠記錄40個(gè)鬧鈴時(shí)間,而且能夠長(zhǎng)時(shí)間記錄時(shí)間,不會(huì)造成時(shí)間混亂,能夠滿足正常的作息時(shí)間設(shè)置,簡(jiǎn)單實(shí)用,能夠滿足正常的生活。根據(jù)學(xué)校作息時(shí)間,能夠得到需要打鈴的時(shí)間如下表所示:表2.1作息時(shí)間控制表時(shí)間事件動(dòng)作8:00第一節(jié)課上課鈴響;延時(shí)20S8:45第一節(jié)課下課鈴響;延時(shí)20S8:55第二節(jié)課上課鈴響;延時(shí)20S9:40第二節(jié)課下課鈴響;延時(shí)20S10:00第三節(jié)課上課鈴響;延時(shí)20S10:45第三節(jié)課下課鈴響;延時(shí)20S10:55第四節(jié)課上課鈴響;延時(shí)20S11:40第四節(jié)課下課鈴響;延時(shí)20S13:00第五節(jié)課上課鈴響;延時(shí)20S13:45第五節(jié)課下課鈴響;延時(shí)20S13:55第六節(jié)課上課鈴響;延時(shí)20S14:40第六節(jié)課下課鈴響;延時(shí)20S14:50第七節(jié)課上課鈴響;延時(shí)20S15:35第七節(jié)課下課鈴響;延時(shí)20S15:45第八節(jié)課上課鈴響;延時(shí)20S16:30第八節(jié)課下課鈴響;延時(shí)20S16:40第九節(jié)課上課鈴響;延時(shí)20S17:25第九節(jié)課下課鈴響;延時(shí)20S17:35第十節(jié)課上課鈴響;延時(shí)20S18:20第十節(jié)課下課鈴響;延時(shí)20S2.4系統(tǒng)整體電路圖系統(tǒng)的整體的電路圖如下圖所示:圖2.3作息時(shí)間控制鐘系統(tǒng)整體電路圖3作息時(shí)間控制鐘軟件設(shè)計(jì)3.1總體介紹硬件平臺(tái)結(jié)構(gòu)一旦確定,大的功能框架即形成。軟件在硬件平臺(tái)上構(gòu)筑,完成各部分硬件的控制和協(xié)調(diào)。系統(tǒng)功能是由軟硬件共同實(shí)現(xiàn)的,由于軟件的可伸縮性,最終實(shí)現(xiàn)的系統(tǒng)功能可強(qiáng)可弱,差別可能很大。因此,軟件是本系統(tǒng)的靈魂。軟件采用模塊化設(shè)計(jì)方法,不但易于編程和調(diào)試,也可減小軟件故障率和提高軟件的可靠性。同時(shí),對(duì)軟件進(jìn)行全面測(cè)試也是檢驗(yàn)錯(cuò)誤排除故障的重要手段。本程序用匯編語(yǔ)言設(shè)計(jì)。3.2軟件環(huán)境介紹:KeiluVision2是美國(guó)KeilSoftware公司出品的51系列兼容C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),使用接近于傳統(tǒng)的語(yǔ)法來(lái)開(kāi)發(fā),與相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,而且大大的提高了工作效率和項(xiàng)目開(kāi)發(fā)周期,她還能嵌入?yún)R編,您能夠在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全界面,使您能在很短的時(shí)間內(nèi)就能學(xué)會(huì)使用keilc51來(lái)開(kāi)發(fā)您的單片機(jī)應(yīng)用程序。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)的優(yōu)勢(shì)。3.3流程圖介紹軟件設(shè)計(jì)以定時(shí)器T1、T2定時(shí)、內(nèi)存讀取、時(shí)鐘顯示、鍵盤掃描、報(bào)警程序?yàn)橹鞒绦颉T谠O(shè)計(jì)中利用單片機(jī)時(shí)鐘計(jì)時(shí)集成電路完成計(jì)時(shí)的任務(wù),并500ms向單片機(jī)發(fā)一個(gè)中斷,中斷子程序有時(shí)鐘顯示及時(shí)間比較,如比較相等,則說(shuō)明作息時(shí)間已到,發(fā)出指令控制電鈴開(kāi)、關(guān)操作。3.3.1系統(tǒng)主程序根據(jù)控制鐘的設(shè)計(jì)要求,設(shè)計(jì)的程序的主流程圖如圖所示:開(kāi)始設(shè)置定時(shí)器T1、T2設(shè)置定時(shí)器T1、T2調(diào)用讀取存儲(chǔ)器內(nèi)容程序調(diào)用讀取存儲(chǔ)器內(nèi)容程序顯示時(shí)間初值顯示時(shí)間初值調(diào)用動(dòng)態(tài)掃描程序調(diào)用動(dòng)態(tài)掃描程序調(diào)用報(bào)警掃描子程序調(diào)用報(bào)警掃描子程序調(diào)用鍵盤掃描子程序調(diào)用鍵盤掃描子程序不相等比較鍵值是否相等調(diào)用設(shè)置報(bào)警子程序調(diào)用設(shè)置時(shí)鐘子程序調(diào)用設(shè)置報(bào)警子程序調(diào)用設(shè)置時(shí)鐘子程序不等比較鍵值圖3.1主程序流程圖流程圖程序如下:TF2 EQU0CFH;T2中斷標(biāo)志控制位TR2 EQU 0CAH;T2啟動(dòng)/停止控制位ET2 EQU 0ADH;T2允許中斷控制位PT2 EQU 0BDH;T2優(yōu)先級(jí)控制位RCAP2L EQU 0CAH;T2自動(dòng)重載低位RCAP2H EQU 0CBH;T2自動(dòng)重載高位TL2 EQU 0CCH;T2計(jì)數(shù)器低位TH2 EQU 0CDH;T2計(jì)數(shù)器高位I2cStart EQU 55H;I2C開(kāi)始標(biāo)志I2cStop EQU 0AAH;I2C結(jié)束標(biāo)志SDA EQU 0B2H;I2C數(shù)據(jù)線SCL EQU 0B3H;I2C時(shí)鐘線SHOW_CODE EQU 80H;顯示段碼SHOW_BIT EQU 0A0H;顯示位碼KeyFlag EQU 00H;按鍵標(biāo)志位S_Flash EQU 01H;秒閃標(biāo)志位LED_FLAG EQU 02H;LDE顯示模式標(biāo)志位BeforKey EQU22H;上次采樣鍵值NowKey EQU 23H;現(xiàn)在次采樣鍵值LS_S EQU 24H;臨時(shí)變量1LS_M EQU 25H;臨時(shí)變量2LS_H EQU 26H;臨時(shí)變量3CLOCK_DATA0 EQU 27H;時(shí)鐘秒CLOCK_DATA1 EQU 28H;時(shí)鐘分CLOCK_DATA2 EQU 29H;時(shí)鐘時(shí)SHOW_MOUDE EQU 2AH;顯示模式SHOW_PC EQU 2BH;顯示數(shù)據(jù)指針RingCount EQU 2CH;報(bào)警數(shù)據(jù)個(gè)數(shù)ShowRing EQU 2DH;顯示報(bào)警數(shù)據(jù)地址RINGDATAH EQU2EH;報(bào)警數(shù)據(jù)高位起始地址RINGDATAL EQU 57H;報(bào)警數(shù)據(jù)低位起始地址 ORG0000H MOVSP,#10H SJMPSTART ORG0001BH AJMPINT_T1 ORG0002BH CPLP3.5 CLRTF2 RETI ORG00035HSTART: MOVTH2,#3CH ;設(shè)置T2定時(shí)50ms MOVTL2,#0B0H MOVRCAP2H,#3CH MOVRCAP2L,#0B0H SETBPT2 SETBET2 MOVTMOD,#60H;設(shè)置T1定時(shí)500ms(T2中斷10次,T1中斷5次) MOVTH1,#0FBH MOVTL1,#0FBH SETBET1 ACALLREAD_DATA SETBEA SETBTR2 SETBTR1 MOVCLOCK_DATA0,#0 MOVCLOCK_DATA1,#0 MOVCLOCK_DATA2,#12 SETBLED_FLAG CLRP3.4AGAIN: MOVSHOW_MOUDE,#0 ;顯示模式0 MOVSHOW_PC,#CLOCK_DATA0;顯示時(shí)鐘(傳時(shí)鐘地址指針) ACALLDISPLAY ;調(diào)用動(dòng)態(tài)掃描子程序 ACALLCOMP_DATA ;調(diào)用報(bào)警掃描子程序 MOVBeforKey,NowKey ACALLGETKEY ;調(diào)用鍵盤掃描子程序 MOVNowKey,A CJNEA,BeforKey,AGAIN CJNEA,#0,NEXT_KEY0 SETBKeyFlag SJMPAGAINNEXT_KEY0: JNBKeyFlag,AGAIN CLRKeyFlag CJNEA,#1,NEXT_KEY2 ACALLSetTimer ;調(diào)用設(shè)置時(shí)鐘子程序 SJMPAGAINNEXT_KEY2: CJNEA,#2,AGAIN ACALLSetRing ;調(diào)用設(shè)置報(bào)警子程序 SJMPAGAIN;//主程序結(jié)束//3.3.2系統(tǒng)數(shù)據(jù)讀寫(xiě)子程序系統(tǒng)中利用24C02存儲(chǔ)系統(tǒng)數(shù)據(jù),該芯片為單電源供電,工作電壓范圍為1.8-5.5V,低功耗CMOS技術(shù),自定時(shí)寫(xiě)周期,頁(yè)面寫(xiě)周期的典型值為2ms,具有硬件寫(xiě)保護(hù)。經(jīng)過(guò)串行I2C總線擴(kuò)展技術(shù)對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操作,節(jié)省了接口引腳數(shù),只利用兩根傳輸總線就能夠?qū)崿F(xiàn)全雙工同步數(shù)據(jù)傳送。其程序流程圖如下:開(kāi)始調(diào)用設(shè)置I2C起始子程序調(diào)用設(shè)置I2C起始子程序讀開(kāi)始錯(cuò)誤刷新24C02寫(xiě)入數(shù)據(jù)寫(xiě)入數(shù)據(jù)讀24C02高位讀24C02高位數(shù)據(jù)讀取結(jié)束讀取結(jié)束讀24C02低位讀24C02低位未讀完是否讀完結(jié)束圖3.2數(shù)據(jù)讀寫(xiě)子程序流程圖程序如下:I2C_START:;I2C開(kāi)始 SETBSDA SETBSCL NOP CLRSDANOP CLRSCL RETI2C_STOP:;I2C結(jié)束 CLRSDA NOP SETBSCLNOP SETBSDA RETI2C_SEND:;I2C發(fā)送一個(gè)字節(jié)MOVR7,#08 CLRCSEND_BIT: RLCA MOVSDA,CNOP SETBSCL NOP CLRSCLDJNZR7,SEND_BIT SETBSDANOP SETBSCL NOP CLRSCL RETI2C_RECEIVE: ;I2C接收一個(gè)字節(jié)MOVR7,#08RECEIVE_BIT: SETBSCL NOPMOVC,SDA RLCA CLRSCL DJNZR7,RECEIVE_BIT SETBSDA NOP SETBSCL NOP CLRSCL RETREAD_24C02: ;讀24C02 ACALLI2C_START MOVA,#0A0H ACALLI2C_SEND MOVA,R0 ACALLI2C_SEND ACALLI2C_START MOVA,#0A1H ACALLI2C_SEND ACALLI2C_RECEIVE ACALLI2C_STOP RETWRITE_24C02: ;寫(xiě)24C02 ACALLI2C_START MOVA,#0A0H ACALLI2C_SEND MOVA,R0 ACALLI2C_SEND MOVA,R1 ACALLI2C_SEND ACALLI2C_STOP RETREAD_DATA:;從24C02中讀取數(shù)據(jù)更新內(nèi)存 MOVR2,#10READ_START_AGAIN: ;讀開(kāi)始標(biāo)志位 MOVR0,#0 CLREA ACALLREAD_24C02 SETBEA CJNEA,#I2cSTART,READ_SUB SJMPWRITE_STOPREAD_SUB: DJNZR2,READ_START_AGAIN ;讀開(kāi)始位錯(cuò)誤刷新24C02WRITE_STOP: XRLA,#I2cSTART JZREAD_NEXT1 MOVR0,#0 MOVR1,#I2cStart CLREA ACALLWRITE_24C02 ;寫(xiě)開(kāi)始字節(jié) SETBEA MOVR7,#5 ACALLDelay1ms MOVR0,#1 MOVR1,#I2cStop CLREA ACALLWRITE_24C02 ;寫(xiě)結(jié)束字節(jié) SETBEA MOVR7,#5 ACALLDelay1msREAD_NEXT1: MOVR0,#1;讀數(shù)據(jù)地址;R1為間地址尋址寄存器 MOVR3,#0;讀數(shù)據(jù)總數(shù);R2為數(shù)據(jù)緩存器READ_DATA_AGAIN: CLREA ACALLREAD_24C02 ;讀高位 SETBEA INCR0 CJNEA,#I2cStop,READ_NEXT2 ;判斷是否是結(jié)束標(biāo)志 SJMPREAD_EXITREAD_NEXT2: MOVR2,A MOVA,#RINGDATAH ADDA,R3 MOVR1,A MOVA,R2 MOV@R1,A CLREA ACALLREAD_24C02 ;讀低位 SETBEA INCR0 MOVR2,A MOVA,#RINGDATAL ADDA,R3 MOVR1,A MOVA,R2 MOV@R1,A INCR3 CJNER3,#40,READ_DATA_AGAINREAD_EXIT: MOVRingCount,R3 ;更新報(bào)警數(shù)據(jù)個(gè)數(shù) RET3.3.3顯示子程序?qū)Χ辔籐ED顯示器的動(dòng)態(tài)顯示,一般都是采用動(dòng)態(tài)掃描的方法進(jìn)行顯示,即逐個(gè)循環(huán)點(diǎn)亮各位顯示器。這樣雖然在任一時(shí)刻只有一位顯示器被點(diǎn)亮,可是由于間隔時(shí)間較短,且人眼具有視覺(jué)殘留效應(yīng),看起來(lái)與全部顯示器持續(xù)點(diǎn)亮一樣。為了實(shí)現(xiàn)LED顯示器的動(dòng)態(tài)掃描,除了要給顯示器提供的輸入之外,還要對(duì)顯示器加位選擇控制,這就是一般所說(shuō)的段控和位控。因此多位LED顯示器接口電路需要有兩個(gè)輸出口,其中一個(gè)用于輸出8位信號(hào);另一個(gè)用于輸出段控制信號(hào)。其顯示模式有五種:0:正常顯示數(shù)據(jù);1:顯示調(diào)試模式(0,1位閃爍);2:顯示調(diào)試模式(2,3位閃爍);3:顯示調(diào)試模式(4,5位閃爍);4:顯示特殊字符模式。其程序流程圖如下:開(kāi)始A=0A=0調(diào)用得到位數(shù)據(jù)子程序調(diào)用得到位數(shù)據(jù)子程序未完全顯示顯示模式為4則顯示NULL數(shù)碼管顯示模式為4則顯示NULL顯示數(shù)據(jù)屏蔽顯示數(shù)據(jù)屏蔽顯示數(shù)據(jù)屏蔽顯示數(shù)據(jù)屏蔽結(jié)束圖3.3顯示子程序流程圖程序如下:SHOW_NUMBER:;段碼 DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DB40HSHOW_NULL:;空碼 DB00H,38H,38H,3EH,37H,00HSHOW_BIT_CODE:;位碼 DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH;DISPLAY:;顯示子程序 MOVR1,#6SHOW_AGAIN: MOVA,SHOW_MOUDE XRLA,#4 JZSHOW_CHAR MOVA,R1 ACALLGETCODE ;調(diào)用得到位數(shù)據(jù)子程序 MOVDPTR,#SHOW_NUMBER MOVCA,@A+DPTR SJMPSHOW_TO_CODESHOW_CHAR:;顯示模式為4則顯示字符NULL MOVDPTR,#SHOW_NULL MOVA,R1 DECA MOVCA,@A+DPTRSHOW_TO_CODE: MOVSHOW_BIT,#0FFH;顯示數(shù)據(jù)屏蔽 MOVSHOW_CODE,A MOVA,R1 MOVDPTR,#SHOW_BIT_CODE-1 MOVCA,@A+DPTR MOVSHOW_BIT,A MOVR7,#1 ACALLDelay1ms DJNZR1,SHOW_AGAIN MOVSHOW_BIT,#0FFH;顯示數(shù)據(jù)屏蔽 RETDelay1ms:;延時(shí)1MS MOVR5,#2DELAY: MOVR6,#0 DJNZR6,$ DJNZR5,DELAY DJNZR7,Delay1ms RETGETCODE:;得到位數(shù)據(jù)子程序 MOVB,#10 DECARLA MOVDPTR,#FIND_BIT JMP@A+DPTRFIND_BIT:;位散轉(zhuǎn) SJMPSHOW_0 SJMPSHOW_1 SJMPSHOW_2 SJMPSHOW_3 SJMPSHOW_4 SJMPSHOW_5SHOW_0: ;得到位0數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#1,SHOW_LED_0 JBS_Flash,SHOW_LED_0 MOVA,#10 RETSHOW_LED_0: MOVR0,SHOW_PC MOVA,@R0 DIVAB MOVA,B RETSHOW_1: ;得到位1數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#1,SHOW_LED_1 JBS_Flash,SHOW_LED_1 MOVA,#10 RETSHOW_LED_1: MOVR0,SHOW_PC MOVA,@R0 DIVAB RETSHOW_2: ;得到位2數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#2,SHOW_LED_2 JBS_Flash,SHOW_LED_2 MOVA,#10 RETSHOW_LED_2: MOVR0,SHOW_PC INCR0 MOVA,@R0 DIVAB MOVA,B RETSHOW_3: ;得到位3數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#2,SHOW_LED_3 JBS_Flash,SHOW_LED_3 MOVA,#10 RETSHOW_LED_3: MOVR0,SHOW_PC INCR0 MOVA,@R0 DIVAB RETSHOW_4: ;得到位4數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#3,SHOW_LED_4 JBS_Flash,SHOW_LED_4 MOVA,#10 RETSHOW_LED_4: MOVR0,SHOW_PC INCR0 INCR0 MOVA,@R0 DIVAB MOVA,B RETSHOW_5: ;得到位5數(shù)據(jù) MOVR0,SHOW_MOUDE CJNER0,#3,SHOW_LED_5 JBS_Flash,SHOW_LED_5 MOVA,#10 RETSHOW_LED_5: MOVR0,SHOW_PC INCR0 INCR0 MOVA,@R0 DIVAB RET3.3.4報(bào)警掃描子程序經(jīng)過(guò)掃描時(shí)鐘與定時(shí)時(shí)間是否相同來(lái)控制電鈴,其程序流程圖如下:開(kāi)始未到時(shí)間比較鈴響鈴響數(shù)據(jù)加一數(shù)據(jù)加一結(jié)束圖3.4報(bào)警掃描子程序流程圖程序如下:COMP_DATA: ;報(bào)警掃描子程序 MOVA,RingCount JZCOMP_EXIT MOVA,CLOCK_DATA0 JNZCOMP_EXIT MOVR2,RingCountCOMP_LOOP: MOVA,RINGDATAH CJNEA,CLOCK_DATA2,NEXT_COMP MOVA,RINGDATAL CJNEA,CLOCK_DATA1,NEXT_COMP SETBP3.4 SJMPCOMP_EXITNEXT_COMP: INCR0 INCR1 DJNZR2,COMP_LOOPCOMP_EXIT: RET3.2.5鍵盤掃描子程序系統(tǒng)利用獨(dú)立式鍵盤,作為系統(tǒng)的輸入設(shè)備,能夠?qū)崿F(xiàn)對(duì)時(shí)鐘的調(diào)整,以及對(duì)響鈴報(bào)警時(shí)間的設(shè)置,具有設(shè)計(jì)簡(jiǎn)單,方便,使用的特點(diǎn)。其流程圖如下:開(kāi)始鍵值相等與鍵值1比較與鍵值2比較與鍵值3比較與鍵值4比較與鍵值5比較與鍵值6比較與鍵值7比較與鍵值8比較結(jié)束圖3.5鍵盤掃描子程序流程圖程序如下:GETKEY:;掃描鍵盤得到鍵值子程序 MOVA,P1 CJNEA,#0FEH,GOTO_KEY2 MOVA,#1 RETGOTO_KEY2: CJNEA,#0FDH,GOTO_KEY3 MOVA,#2 RETGOTO_KEY3: CJNEA,#0FBH,GOTO_KEY4 MOVA,#3 RETGOTO_KEY4: CJNEA,#0F7H,GOTO_KEY5 MOVA,#4 RETGOTO_KEY5: CJNEA,#0EFH,GOTO_KEY6 MOVA,#5 RETGOTO_KEY6: CJNEA,#0DFH,GOTO_KEY7 MOVA,#6 RETGOTO_KEY7: CJNEA,#0BFH,GOTO_KEY8 MOVA,#7 RETGOTO_KEY8: CJNEA,#07FH,KEY_EXIT MOVA,#8 RETKEY_EXIT: MOVA,#0 RET3.3.6設(shè)置時(shí)鐘子程序:利用鍵盤設(shè)置,經(jīng)過(guò)模式左移右移來(lái)實(shí)現(xiàn)對(duì)時(shí)間的修改設(shè)置以及保存。其程序流程圖如下:開(kāi)始調(diào)用顯示掃描程序調(diào)用顯示掃描程序調(diào)用報(bào)警掃描子程序調(diào)用報(bào)警掃描子程序調(diào)用鍵值掃描程序調(diào)用鍵值掃描程序鍵值相等比較鍵值模式左移調(diào)整時(shí)間模式左移調(diào)整時(shí)間保存退出保存退出結(jié)束圖3.6設(shè)置時(shí)鐘子程序流程圖程序如下:SetTimer: ;時(shí)鐘設(shè)置子程序 MOVLS_S,CLOCK_DATA0 ;時(shí)鐘數(shù)據(jù)放臨時(shí)變量 MOVLS_M,CLOCK_DATA1 MOVLS_H,CLOCK_DATA2 MOVSHOW_MOUDE,#1 ;顯示模式1 MOVSHOW_PC,#LS_S ;顯示數(shù)據(jù)指針轉(zhuǎn)臨時(shí)變量SetTimer_Again: ACALLDISPLAY ;調(diào)用顯示掃描子程序 ACALLCOMP_DATA ;調(diào)用報(bào)警掃描子唾棄 MOVBeforKey,NowKey ACALLGETKEY ;調(diào)用鍵值掃描子程序 MOVNowKey,A CJNEA,BeforKey,SetTimer_Again CJNEA,#0,SetTimer_KEY0 SETBKeyFlag SJMPSetTimer_AgainSetTimer_KEY0: JNBKeyFlag,SetTimer_Again CLRKeyFlag ;健值控制 CJNEA,#03,SetTimer_KEY4 ;模式左移 MOVA,SHOW_MOUDE CJNEA,#3,SHOW_MOUDE_ADD MOVSHOW_MOUDE,#1 AJMPSetTimer_AgainSHOW_MOUDE_ADD: INCSHOW_MOUDE AJMPSetTimer_AgainSetTimer_KEY4: CJNEA,#04,SetTimer_KEY5 MOVA,SHOW_MOUDE CJNEA,#1,ADD_M ;秒加 MOVA,LS_S CJNEA,#59,NOT_RESET_S MOVLS_S,#0 AJMPSetTimer_AgainNOT_RESET_S: INCLS_S AJMPSetTimer_AgainADD_M: ;分加 CJNEA,#2,ADD_H MOVA,LS_M CJNEA,#59,NOT_RESET_M MOVLS_M,#0 AJMPSetTimer_AgainNOT_RESET_M: INCLS_M AJMPSetTimer_AgainADD_H: ;時(shí)加 MOVA,LS_H CJNEA,#23,NOT_RESET_H MOVLS_H,#0 AJMPSetTimer_AgainNOT_RESET_H: INCLS_H AJMPSetTimer_AgainSetTimer_KEY5: CJNEA,#05,SetTimer_KEY6 MOVA,SHOW_MOUDE CJNEA,#1,SUB_M ;秒減 MOVA,LS_S CJNEA,#0,NOT_SET_S MOVLS_S,#59 AJMPSetTimer_AgainNOT_SET_S: DECLS_S AJMPSetTimer_AgainSUB_M: ;分減 CJNEA,#2,SUB_H MOVA,LS_M CJNEA,#0,NOT_SET_M MOVLS_M,#59 AJMPSetTimer_AgainNOT_SET_M: DECLS_M AJMPSetTimer_AgainSUB_H: ;時(shí)減 MOVA,LS_H CJNEA,#0,NOT_SET_H MOVLS_H,#23 AJMPSetTimer_AgainNOT_SET_H: DECLS_H AJMPSetTimer_AgainSetTimer_KEY6: ;模式右移 CJNEA,#06,SetTimer_KEY7 MOVA,SHOW_MOUDE CJNEA,#1,SHOW_MOUDE_SUB MOVSHOW_MOUDE,#3 AJMPSetTimer_AgainSHOW_MOUDE_SUB: ;退出 DECSHOW_MOUDE AJMPSetTimer_AgainSetTimer_KEY7: CJNEA,#07,SetTimer_KEY8 SJMPEXIT_SetTimerSetTimer_KEY8: ;保存退出 CJNEA,#08,RETURN_SetTimer MOVCLOCK_DATA0,LS_S MOVCLOCK_DATA1,LS_M MOVCLOCK_DATA2,LS_H SJMPEXIT_SetTimerRETURN_SetTimer: AJMPSetTimer_AgainEXIT_SetTimer: RET3.3.7T1定時(shí)器中斷子程序主程序利用T1定時(shí)器的中斷來(lái)修改時(shí)間值,同時(shí)修改秒閃狀態(tài)、數(shù)碼管的閃爍,同時(shí)修改響鈴的狀態(tài),當(dāng)響鈴經(jīng)過(guò)20S后斷電。其流程圖如下:開(kāi)始堆棧操作堆棧操作A=1判斷數(shù)碼管標(biāo)志秒閃標(biāo)志位置1秒閃標(biāo)志位置1輸出秒閃原始狀態(tài)輸出秒閃原始狀態(tài)未達(dá)到判斷是否達(dá)到滿分滿秒時(shí)間置0時(shí)間置0時(shí)間加1時(shí)間加1鈴響20S結(jié)束鈴響20S結(jié)束結(jié)束圖3.7T1定時(shí)器中斷子程序流程圖程序如下:INT

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論