電子倒計時定時器設(shè)計畢業(yè)設(shè)計論文_第1頁
電子倒計時定時器設(shè)計畢業(yè)設(shè)計論文_第2頁
電子倒計時定時器設(shè)計畢業(yè)設(shè)計論文_第3頁
電子倒計時定時器設(shè)計畢業(yè)設(shè)計論文_第4頁
電子倒計時定時器設(shè)計畢業(yè)設(shè)計論文_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、江蘇信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(論文) 題目: 電子倒計時定時器設(shè)計摘要隨著時代的進步,電子技術(shù)的發(fā)展,倒計時定時器得到了越來越廣泛的應(yīng)用,給人們?nèi)粘5纳睢W(xué)習(xí)、工作、娛樂帶來便利,電子定時器相比普通的定時器來事具有體積小、重量輕、造價低、精度高等特點。本設(shè)計主要采用51系列單片機,通過硬件電路設(shè)計和軟件編程設(shè)計來實現(xiàn),硬件主要包括主控模塊,時間顯示模塊,鍵盤設(shè)置模塊,報警器模塊的設(shè)計,軟件編程主要采用C語言,雖然程序條數(shù)比較多,但是設(shè)計起來比較方便,可通過Keils軟件進行調(diào)試。此次倒計時定時器采用單片機AT89S51為核心,利用時鐘芯片DS1302來顯示一天的時間,系統(tǒng)通電后利用數(shù)碼管自動

2、顯示當(dāng)前時間,通過鍵盤可以調(diào)整時間,分別對時、分、秒進行加減,也可以通過鍵盤轉(zhuǎn)換成倒計時模式,最大倒計時時間為59分59秒,而且誤差很小,當(dāng)?shù)褂嫊r為零時蜂鳴器進行報警,指示燈變亮,倒計時功能關(guān)閉則顯示當(dāng)前時間,操作簡單方便。關(guān)鍵詞:時鐘芯片;AT89S51;倒計時;DS1302目錄摘 要1第1章緒論51.1課題的學(xué)術(shù)背景及其實際意義51.2相關(guān)領(lǐng)域的成果及存在的不足51.3課題來源及主要研究內(nèi)容5第2章倒計時定時器的結(jié)構(gòu)、原理及設(shè)計方案72.1 單片機的發(fā)展概況72.2 51單片機的內(nèi)部結(jié)構(gòu)72.3 設(shè)計要求、方案及框圖9設(shè)計要求9設(shè)計方案9設(shè)計框圖10第3章硬件電路設(shè)計113.1ATS89C

3、51單片機介紹113.2時鐘模塊13DS1302簡介13DS1302電路設(shè)計14時鐘電路設(shè)計15時鐘復(fù)位電路153.3鍵盤模塊163.4顯示模塊17LED數(shù)碼管介紹17LED數(shù)碼管電路設(shè)計193.5報警模塊21第4章軟件程序設(shè)計224.1Keil軟件介紹224.2軟件程序流程圖22第5章系統(tǒng)調(diào)試25結(jié) 論30參考文獻31附 錄32附錄1 主程序32附錄 2 電路原理圖49附錄3 PCB圖50致 謝51緒論 課題的學(xué)術(shù)背景及其實際意義倒計時定時器已經(jīng)成為人們?nèi)粘I钪斜夭豢缮俚奈锲罚S著技術(shù)的發(fā)展,廣泛的應(yīng)用于各個公共場所,給人們?nèi)粘5纳?、學(xué)習(xí)、工作、娛樂帶來便利,但是由于原先簡單的報時功能已

4、經(jīng)不能夠被人們所滿足,希望出一些新的功能新的產(chǎn)品來滿足人們的需要,例如重要日子的倒計時、秒表等等,這些都能帶來更大的方便。而所有的這些都是以倒計時定時器為基礎(chǔ)的。因此,研究倒計時定時器有著非常重要的意義和實用價值。電子定時器在家用電器中經(jīng)常用于延時自動關(guān)機、定時。延時自動關(guān)機可用于:收音機、電視機、錄音機、催眠器、門燈、路燈、汽車頭燈、轉(zhuǎn)彎燈以及其他電器的延時斷電及延時自停電源等。定時可用于:照相定時曝光、定時閃光、定時放大、定時調(diào)速、定時烘箱、冰箱門開定時報警、水位定時報警、延時催眠器、延時電鈴、延時電子鎖、觸摸定時開關(guān)等。例如:空調(diào)中的定時器,在工作一段時間之后便能自動切斷電源停止工作。夏

5、季夜間使用,入睡前先頂好時間,等睡熟后到了預(yù)定時間,空調(diào)自動關(guān)機,方便節(jié)能。定時器除了應(yīng)用于家用電器外,還廣泛地用于工業(yè)農(nóng)業(yè)生產(chǎn)和服務(wù)設(shè)施等等。相關(guān)領(lǐng)域的成果及存在的不足在電子技術(shù)突飛猛進的今天,電子倒計時定時器也慢慢的被廣大的家庭所接受,這些都方便了每個人的生活和工作。傳統(tǒng)的定時器絕大多數(shù)都是發(fā)條驅(qū)動式、電機傳動式或電鐘式等機械定時器,部分電子器械中也有用時間繼電器的。相對于傳統(tǒng)的定時器,電子定時器的體積小、重量輕、造價低、精度高、壽命長、而且安全可靠、調(diào)整方便、適于頻繁使用。所以電子定時器的發(fā)展必定大有前途。同時隨著現(xiàn)代電子技術(shù)的發(fā)展,電子定時器也在不斷的進步,朝向著更多用途、更高精度、更

6、小體積發(fā)展著。 課題來源及主要研究內(nèi)容本課題是通過老師挑選的幾個課題當(dāng)中自主選擇的,雖然倒計時定時器已經(jīng)很常見了,但是自己親自動手制作,把所學(xué)到的知識應(yīng)用的實際操作中,通過這個過程一定會有很大的收獲,鞏固加深了單片機應(yīng)用的知識面,提高了自己的動手能力和解決問題的能力。本課題主要研究的內(nèi)容要了解電子倒計時定時器的基本結(jié)構(gòu)原理,調(diào)研并查找相關(guān)資料,選擇實現(xiàn)電子倒計時定時器的方案,進行完整的倒計時的硬件電路、系統(tǒng)軟件以及實物結(jié)構(gòu)的設(shè)計并進行電路仿真、軟件編程、系統(tǒng)調(diào)試。倒計時定時器的結(jié)構(gòu)、原理及設(shè)計方案2.1 單片機的發(fā)展概況 微型計算機的出現(xiàn)是電子數(shù)字計算機廣泛應(yīng)用到人們?nèi)粘9ぷ骱蜕铑I(lǐng)域中去的一

7、個重大轉(zhuǎn)折點。它已經(jīng)深入應(yīng)用到非微型計算機所無法應(yīng)用的領(lǐng)域,對社會產(chǎn)生了極大的影響。單片微型計算機是微型計算機發(fā)展的一個重要分支,它以其獨特的機構(gòu)和性能,越來越普遍的應(yīng)用到國民經(jīng)濟建設(shè)的各個領(lǐng)域。單片機全稱為單片微型計算機(Single Chip Microcomputer)。因為單片機主要用于控制系統(tǒng)中,所以又稱微控制器(Microcontroller Unit,MCU)或嵌入式控制器(Embedded Controller)。它具有嵌入式應(yīng)用系統(tǒng)所要求的體系結(jié)構(gòu),微處理器,指令系統(tǒng),總線方式,管理模式等。他把計算機的基本部件都微型化集成到一塊芯片上了,通常片內(nèi)部都含有中央處理部件(CPU)

8、,數(shù)據(jù)存儲器(RAM),程序存儲器(ROM,EPROM,F(xiàn)lsh ROM),定時器/計數(shù)器和各種輸入/輸出(I/O)接口他們之間的相互連接結(jié)構(gòu)2.2 51單片機的內(nèi)部結(jié)構(gòu)51單片機內(nèi)部有一個8位的CPU,同時CPU內(nèi)部包含了運算器,控制器及若干寄存器。1、運算器(ALU)的主要功能A)算術(shù)和邏輯運算,可對半字節(jié)(一個字節(jié)是8位,半個字節(jié)就是4位)和單字節(jié)數(shù)據(jù)進行操作。B)加、減、乘、除、加1、減1、比較等算術(shù)運算。C)與、或、異或、求補、循環(huán)等邏輯運算。D)位處理功能(即布爾處理器)。由于ALU內(nèi)部沒有寄存器,參加運算的操作數(shù),必須放在累加器A中。累加器A也用于存放運算結(jié)果。例如:執(zhí)行指令 A

9、DD A,B  執(zhí)行這條指令時,累加器A中的內(nèi)容通過輸入口In_1輸入ALU,寄存器B通過內(nèi)部數(shù)據(jù)總線經(jīng)輸入口In_2輸入ALU,A+B的結(jié)果通過ALU的輸出口Out、內(nèi)部數(shù)據(jù)總線,送回到累加器A。2、程序計數(shù)器PCPC的作用是用來存放將要執(zhí)行的指令地址,共16位,可對64K ROM直接尋址,PC低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。也就是說,程序執(zhí)行到什么地方,程序計數(shù)器PC就指到哪里,它始終是跟躥著程序的執(zhí)行。我們知道,用戶程序是存放在內(nèi)部的ROM中的,我們要執(zhí)行程序就要從ROM中一個個字節(jié)的讀出來,然后到CPU中去執(zhí)行,那么ROM具體執(zhí)行到哪一條呢?這就需要我們的程

10、序計數(shù)器PC來指示。程序計數(shù)器PC具有自動加1的功能,即從存儲器中讀出一個字節(jié)的指令碼后,PC自動加1(指向下一個存儲單元)。 3、指令寄存器IR指令寄存器的作用就是用來存放即將執(zhí)行的指令代碼。在這里我們先簡單的了解下CPU執(zhí)行指令的過程,首先由程序存儲器(ROM)中讀取指令代碼送入到指令寄存器,經(jīng)譯碼器譯碼后再由定時與控制電路發(fā)出相應(yīng)的控制信號,從而完成指令的功能。關(guān)于指令在單片機內(nèi)部的執(zhí)行過程,我們在后面將會以另一節(jié)課來進行詳細的講解。 4、指令譯碼器ID用于對送入指令寄存器中的指令進行譯碼,所謂譯碼就是把指令轉(zhuǎn)變成執(zhí)行此指令所需要的電信號。當(dāng)指令送入譯碼器后,由譯碼器對該指令進行譯碼,根

11、據(jù)譯碼器輸出的信號,CPU控制電路定時地產(chǎn)生執(zhí)行該指令所需的各種控制信號,使單片機正確的執(zhí)行程序所需要的各種操作。5、地址寄存器AR(16位)AR的作用是用來存放將要尋址的外部存儲器單元的地址信息,指令碼所在存儲單元的地址編碼,由程序計數(shù)器PC產(chǎn)生,而指令中操作數(shù)所在的存儲單元地址碼,由指令的操作數(shù)給定。從上圖中我們可以看到,地址寄存器AR通過地址總線AB與外部存儲器相連。6、數(shù)據(jù)寄存器DR用于存放寫入外部存儲器或I/O端口的數(shù)據(jù)信息??梢姡瑪?shù)據(jù)寄存器對輸出數(shù)據(jù)具有鎖存功能。數(shù)據(jù)寄存器與外部數(shù)據(jù)總線DB直接相連。7、程序狀態(tài)字PSW用于記錄運算過程中的狀態(tài),如是否溢出、進位等。例如,累加器A的

12、內(nèi)容83H,執(zhí)行:ADD A,#8AH   ;累加器A與立即數(shù)8AH相加,并把結(jié)果存放在A中。指令后,將產(chǎn)生和的結(jié)果為10DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放結(jié)果中的最高位B8。為些,在CPU內(nèi)設(shè)置一個進位標志位C,當(dāng)執(zhí)行加法運算出現(xiàn)進位時,進位標志位C為1。8、時序部件由時鐘電路和脈沖分配器組成,用于產(chǎn)生微操作控制部件所需的定時脈沖信號。2.3 設(shè)計要求、方案及框圖設(shè)計要求 這個倒計時定時器的設(shè)計采用倒計時的方式,初始值由鍵盤設(shè)定,最大定時為59分59秒,8位LED顯示時間,定時到進行聲光報警。設(shè)計方案主控模塊(1)采用AT89C51單片機為核心,

13、通過程序來實現(xiàn)時間的顯示,用定時器實現(xiàn)鬧鐘功能的設(shè)定,通過LED數(shù)碼管顯示時間。如圖2-1:鍵盤模塊顯示模塊電源模塊報警模塊圖2-1系統(tǒng)框圖本設(shè)計采用AT89C51單片機不如AT89S52精確高,長時間工作會導(dǎo)致誤差很大,并且C語言設(shè)計起來相當(dāng)麻煩,調(diào)整起來麻煩而且不方便實現(xiàn)對系統(tǒng)的擴展。(2)采用AT89S52單片機為核心,倒計時功能采用C語言編程利用單片機內(nèi)部定時器來實現(xiàn),通過時鐘芯片DS1302利用LED數(shù)碼管顯示當(dāng)前時間,并通過鍵盤控制模式的轉(zhuǎn)換和時間的調(diào)整,當(dāng)時間到了經(jīng)行報警,這個設(shè)計使整個系統(tǒng)可編程,靈活性大大增加了,雖然多了個芯片但是加大了精度,因此選擇這個方案。 設(shè)計框圖利用單

14、片機定時器及計數(shù)器產(chǎn)生定時效果通過編程形成倒計時效果,在通過LED數(shù)碼管顯示數(shù)據(jù)。系統(tǒng)供電后,實現(xiàn)小時、分鐘、秒的顯示,通過按鍵校對時間、倒計時的設(shè)定和顯示,當(dāng)定時時間到的時候,單片機通過報警器實現(xiàn)聲光報警。如圖2-2:時鐘模塊主控模塊報警模塊鍵盤模塊顯示模塊電源模塊圖2-2系統(tǒng)框圖硬件電路設(shè)計ATS89C51單片機介紹AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,

15、俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且。外形及引腳排列如圖所示 主要特性: 與MCS-51 兼容  ·4K字節(jié)可編程閃爍存儲器 ·壽命:1000寫/擦循環(huán) 

16、83;數(shù)據(jù)保留時間:10年 ·全靜態(tài)工作:0Hz-24MHz  ·三級程序存儲器鎖定 ·128×8位內(nèi)部RAM ·32可編程I/O線 ·兩個16位定時器/計數(shù)器 ·5個中斷源 ·可編程串行通道  ·低功耗的閑置和掉電模式 ·片內(nèi)振蕩器和時鐘電路 2管腳說明: VCC:供電電壓。 GND:接地。 時鐘模塊DS1302簡介美國閏同步通信時鐘信號寄存器片選線數(shù)據(jù)傳送移位寄存器數(shù)據(jù)傳送數(shù)據(jù)傳送DS1302電路設(shè)計本設(shè)計要求在不進行倒計時的時候可以顯示一天的時間,所以采用的時鐘芯片DS

17、1302為核心來實現(xiàn)這個問題,DS1302的X1、X2端口連接一個32.768kHz的晶振,Vcc1、Vcc2連接電源,串行數(shù)據(jù)IO端口連接單片機的P1.5引腳,串行時鐘SCLK端口連接單片機的P1.6引腳,復(fù)位RST端口連接單片機的P1.4引腳。電路圖3-2:圖3-2 DS1302電路設(shè)計時鐘電路設(shè)計時鐘電路對單片機是不可缺的,單片機的每個功能都要以時鐘電路為基礎(chǔ)工作。單片機內(nèi)部自帶一個時鐘電路,外部接入定時控制元件即可構(gòu)成一個穩(wěn)定的自己振蕩器。其中機器周期共有12個振蕩脈沖周期,因此,機器周期是時鐘周期的12倍。本實驗使用的晶振是12MHz,則時鐘周期為(1/12)us,機器周期為1us。

18、兩個端口分別連在單片機XLAL1、XLAL2引腳上實驗圖3-3:圖3-3 時鐘電路時鐘復(fù)位電路復(fù)位操作有上電自動復(fù)位、按鍵電平復(fù)位和外部脈沖復(fù)位三種方式,本次實驗用的是按鍵電平復(fù)位,利用電容的充放電公式來選擇所需的電容、電阻,能保證復(fù)位信號高電平持續(xù)時間大于2個機器周期。電路圖3-4:圖3-4 復(fù)位電路設(shè)計鍵盤模塊本設(shè)計要用數(shù)碼管顯示當(dāng)前時間和倒計時時間,這就需要由鍵盤來設(shè)定,鍵盤分為獨立連接式和矩陣式,本實驗采用五個獨立的鍵盤設(shè)計,連在單片機的P3口,第一個按鍵控制工作模式的選擇,系統(tǒng)通電后顯示當(dāng)前時間,按下則顯示倒計時狀態(tài),第二個按鍵為設(shè)置模式選擇,不管是倒計時還是顯示時間都能對當(dāng)前的時間

19、進行設(shè)置,第三、四個按鍵主要是對時、分、秒進行加減,第五個按鍵主要的功能是啟動和停止倒計時。電路設(shè)計如圖3-5:圖3-5 鍵盤模塊設(shè)計顯示模塊LED數(shù)碼管介紹數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本元件是發(fā)光二極管。圖3-6 LED數(shù)碼管數(shù)碼管的分類數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管

20、的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。數(shù)碼管的驅(qū)動方式 數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅(qū)動,或者使用如BCD碼二-十進制譯

21、碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×840根I/O端口來驅(qū)動,要知道一個89S521單片機可用的I/O端口才32個呢:),實際應(yīng)用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復(fù)雜性。 動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟

22、是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。LED數(shù)碼管電路設(shè)計本設(shè)計主要采用8位LED數(shù)碼管顯示,與單片機的IO口連接,但是單片

23、機的IO口電流有限,只有幾毫安,但是數(shù)碼管的驅(qū)動電流要幾十毫安到幾百毫安,所以在實驗中選擇了單片機74LS245和單片機74LS138進行驅(qū)動和段選。單片機74LS245介紹和電路設(shè)計74LS245是我們常用的芯片,用來驅(qū)動led或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù),還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)單片機AT89SC52單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅(qū)動器。當(dāng)片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當(dāng)CE為高電平時,

24、A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動器輸入線對應(yīng)相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。8051的/RD和/PSEN相與后接DIR,使得RD且PSEN有效時,74LS245輸入(P0.1D1),其它時間處于輸出(P0.1D1)。通過單片機74LS245來擴大電流輸出來給數(shù)碼管進行驅(qū)動,電路設(shè)計如圖3-7:圖3-7 74LS245電路設(shè)計譯碼器74LS138介紹和電路設(shè)計74LS138為3線到8線譯碼器,共有54LS138和74LS138兩種線路結(jié)構(gòu)模式。當(dāng)一個選通端(E1)為高電平,另兩個選通端

25、((/E2)和/(E3))為低電平時,可將地址端(A0、A1、A2)的二進制編碼在Y0至Y7對應(yīng)的輸出端以低電平譯出。比如:A2A1A0=110時,則Y6輸出端輸出低電平信號。利用 E1、E2和E3可級聯(lián)擴展成 24 線譯碼器;若外接一個反相器還可級聯(lián)擴展成 32 線譯碼器。若將選通端中的一個作為數(shù)據(jù)輸入端時,74LS138還可作數(shù)據(jù)分配器??捎迷?086的譯碼電路中,擴展內(nèi)存。因為本設(shè)計采用的8位數(shù)碼管為共陰極數(shù)碼管,單片機74LS138的IO口輸出是低電平,所以單片機和數(shù)碼管可以配合在一起使用,來完成數(shù)碼管的段選。它的電路設(shè)計如圖3-7:圖3-8單片機74LS138電路設(shè)計報警模塊本設(shè)計在

26、倒計時時間到的時候為了提醒用戶而采用的聲光報警,電路主要有一個蜂鳴器、一個三極管組成,在倒計時完成時通過控制端口P3.0給三極管送入低電平使其導(dǎo)通,報警器報警,指示燈點亮。如圖3-6:圖3-9 聲光報警電路設(shè)計軟件程序設(shè)計Keil軟件介紹圖4-1 Keil軟件軟件程序流程圖主程序開始初始化變量初始化定時器顯示子函數(shù)鍵盤子函數(shù)判斷鍵盤是否按下報警器報警、指示燈閃亮啟動停止倒計時中斷1中斷2定時器中斷圖4-2 軟件流程圖系統(tǒng)中設(shè)置了五個按鍵,當(dāng)程序掃描到“復(fù)位”鍵時,單片機重新讀入撥碼盤數(shù)據(jù),意即新的一輪計時開始,當(dāng)程序掃描到“走”鍵時,若原計時停止,則啟動計時,否則無效,同樣,當(dāng)程序掃描到“?!?/p>

27、鍵時,若原計時已啟動,則停止計時,否則無效。對于本系統(tǒng)來說,秒計時的準確性和主從機的通信的可靠性是程序的關(guān)鍵,以下分別對這兩個程序的設(shè)計進行描述。在硬件電路中因未設(shè)計硬件計時功能,秒的產(chǎn)生只有依靠軟件來完成。本系統(tǒng)中采用系統(tǒng)定時P計數(shù)器T0 來產(chǎn)生。最大定時時間計算方法如下:TMAX = 216 ×12foscs ,其中fosc 為系統(tǒng)時鐘頻率,本系統(tǒng)中的時鐘頻率為1110592MHz , 經(jīng)計算TMAX 為7111ms ,為了計算的方便,取TMAX = 50ms ,軟件計數(shù)至20 次為1s。系統(tǒng)調(diào)試本次倒計時定時器設(shè)計包括硬件電路設(shè)計和軟件設(shè)計,軟件主要是通過C語言進行編程,將程序

28、編輯編譯完成后,將生成的hex文件通過串口下載軟件下載到STC89C52單片機芯片中去。通過Proteus軟件進行仿真,實驗過程中仿真可以正常運行,但是總是比現(xiàn)實顯示的時間慢,而且報警的時候聲音也是一卡一卡的,檢查各個端口也沒有發(fā)現(xiàn)問題,通過與老師的溝通,覺得是Proteus軟件的問題,結(jié)果還是很好的完成了仿真的工作。如下圖所示:圖5-1 時間顯示模式仿真圖圖5-2 倒計時模式仿真圖硬件設(shè)計首先檢查印制板及焊接的質(zhì)量情況,在檢查無誤后通電檢查數(shù)碼管的點亮狀況。至于鍵盤的調(diào)試,關(guān)鍵是把握好按鍵的去抖效果。當(dāng)出現(xiàn)按鍵“不靈”情況,一般是由于程序中用于按鍵去抖的延時時間不夠。在進行LED數(shù)碼管焊接的

29、時候,也出現(xiàn)的點問題,因為任務(wù)書要求的是8位數(shù)碼管,做板子的時候是兩個四位的連在一起,數(shù)碼管引腳就比較混亂,做過了一個板子但是沒有正常工作,經(jīng)過了一些調(diào)試還是沒有顯示出來時間,決定直接買了一個數(shù)碼管模塊,直接與單片機的幾個引腳連接就可以完成實驗要求的功能,最后連接一起通電試了試,可以完成現(xiàn)在的要求,雖然板子有點簡陋看起來有點省事,但是過程還是學(xué)到了不少的東西。不過現(xiàn)在還有個問題就是誤差有點大,準備弄得更加精確。圖5-3 硬件時間顯示狀態(tài)圖5-4 硬件倒計時狀態(tài)系統(tǒng)開始調(diào)試,通電后數(shù)碼管顯示時間,在通過鍵盤進行時間的調(diào)整和工作模式的選擇,下表是對系統(tǒng)倒計時時間的測試結(jié)果?,F(xiàn)實時間實驗時間誤差5分

30、鐘4分55秒5秒10分鐘9分43秒17秒15分鐘14分18秒42秒表1 系統(tǒng)倒計時時間測試表誤差分析:本設(shè)計的計時和倒計時功能主要是通過單片機內(nèi)部的計時器來完成,而且程序設(shè)計也使用的延時語句,不可避免的會出現(xiàn)一些誤差。但是本設(shè)計的時間顯示的誤差很小,倒計時時間越長誤差就越大,電路板也已經(jīng)從手焊的換成印制板,還在尋找原因。結(jié) 論本文主要先對核心芯片做了個概述,并且簡單的介紹了各個管腳的功能,闡述了設(shè)計要求、選擇的方案以及最后能夠完成的功能。然后通過硬件和軟件部分的介紹,詳細的說明了我做畢設(shè)的步驟以及各個部分的選擇,如何實現(xiàn)的,用什么軟件實現(xiàn)的,最后列出了實驗的誤差以及PCB、原理圖等等的實驗過程

31、。雖然畢業(yè)設(shè)計可以完成實驗要求,但是這僅僅是一小部分,還有很多問題沒有解決,硬件設(shè)計的過于簡單,導(dǎo)致了誤差的出現(xiàn),這都是我以后要努力地方向。從這次畢業(yè)論文設(shè)計中,無論對于單片機還是定時器,都進一步清晰了設(shè)計概念、學(xué)習(xí)了專業(yè)理論、掌握了芯片知識,而且還增長了實踐經(jīng)驗,提高了認知水平,促進了自學(xué)能力。從諸多方面獲得了很大的收益。參考文獻1 23 4 5 6 鄭步生,吳渭Multisim200l電路設(shè)計及仿真入門與應(yīng)用M北京:電子工業(yè)出版社,20027 樓然苗,李光飛51系列單片機設(shè)計實例M北京:北京航空航天大學(xué)出版社,20038 梁純,王軍基于MCS一51單片機的LED點陣圖文顯示屏設(shè)計J工礦自動

32、化,2005(6)9夏路易、石宗義編著 電路原理圖與電路板設(shè)計教程 北京希望電子出版社 200210吳國經(jīng)主編 單片機應(yīng)用技術(shù) 中國電力出版社 200411徐泳龍主編 單片機原理及應(yīng)用 機械工業(yè)出版社 2004附 錄附錄1 主程序#include<reg52.h>#include "ds1302.h" / DS1302的驅(qū)動頭文件#define uchar unsigned char#define uint unsigned int/ 設(shè)置模式選擇sbit key1=P13;/ +sbit key2=P14;/ -sbit key3=P15;/ 系統(tǒng)工作模式選擇

33、sbit key4=P16;/ 倒計時開始/停止sbit key5=P17;/ 報警sbit BEEP = P37;/ LEDsbit LED = P34;unsigned char ll = 0;unsigned char kk,i;/ 臨時變量/共陰數(shù)碼管"0-9","滅","-"編碼uchar code dis=0x3F,0X30,0X5b,0X4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/位選編碼uchar code wei=0x80,0x81,0x82,0x83,0x84,0x85,

34、0x86,0x87;/時分秒顯示緩沖區(qū)uchar data dis1=0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00;/時分秒初值uchar data chuzhi=0x23,0x59,0x50;/送十六進制數(shù)/ 讀取的時間值uchar data time1302=0x00,0x00,0x00;/ 倒計時的分鐘,秒signed char Count_minutes = 0;signed char Count_seconds = 0;/ 系統(tǒng)工作模式選擇位1: 時間顯示模式 0:倒計時模式bit Work_Flag = 1;/延時1ms子程序void delay(

35、uint z)uint x,y;for(x=z;z>0;z-)for(y=110;y>0;y-);/ 顯示子函數(shù)void display()uchar k;if(Work_Flag)/ 時間模式下的顯示dis17=chuzhi2%10;/ 秒的十位dis16=chuzhi2/10;/ 秒的個位dis14=chuzhi1%10;/ 分的十位dis13=chuzhi1/10;/ 分的個位dis11=chuzhi0%10;/ 時的十位dis10=chuzhi0/10;/ 時的個位for(k=0;k<8;k+) / 循環(huán)刷新各個位P2 = weik;P0 = disdis1k;del

36、ay(1);/讓數(shù)碼管正常顯示出來else/ 倒計時模式下的顯示dis13 = Count_seconds/10;/ 得到分鐘的1十位dis14 = Count_seconds%10;/ 得到分鐘的個位dis10 = Count_minutes/10;dis11 = Count_minutes%10;for(k=0;k<5;k+)P2 = weik;P0 = disdis1k;delay(1);/鍵盤掃描子函數(shù)void kscan()uchar temp;/ 系統(tǒng)工作模式選擇if(key4 = 0) delay(10);if(key4 = 0) while(key4 = 0);Work_

37、Flag = !Work_Flag; / 按下鍵 在兩個工作模式間切換 if(key1=0)/ 時間顯示模式下的選擇鍵按下delay(10);if(key1=0)while(key1=0);/ 等待釋放if(Work_Flag)kk+; / 模式標識if(kk=1)/ 為1,則對時進行設(shè)置temp = chuzhi2/10*16+chuzhi2%10;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x80,0x80|temp); /時鐘暫停Write1302 (0x8e,0x80); /允許寫保護elsell +;if(ll = 2)ll = 0;if(!Wo

38、rk_Flag)/ 設(shè)置倒計時的初始時間 / 倒計時秒設(shè)置模式 if(ll = 0) if(key2 = 0)/ +delay(10);if(key2 = 0)while(key2 = 0);Count_seconds +;if(Count_seconds = 60)/ 加到60,分加1,秒為Count_seconds = 0;Count_minutes +;if(Count_minutes = 60)Count_minutes = 0;if(key3 = 0)delay(10);if(key3 = 0)while(key3 = 0);if(Count_minutes) Count_secon

39、ds -;if(Count_seconds < 0)Count_seconds = 59;Count_minutes -;elseif(Count_seconds)Count_seconds -;elseCount_seconds = 0; / 倒計時模式下,分設(shè)置模式if(ll = 1)if(key2 = 0)/ +delay(10);if(key2 = 0)while(key2 = 0);Count_minutes +;if(Count_minutes = 60)Count_minutes = 0; if(key3 = 0) / -delay(10);if(key3 = 0)whil

40、e(key3 = 0);Count_minutes -;if(Count_minutes < 0)Count_minutes = 59; switch (kk)/ 工作模式選擇case 1:/ 秒設(shè)模式if(key2=0)/ 如果+按下delay(10); / 防抖if(key2=0)/ while(key2=0);/ 等待按鍵釋放temp=(chuzhi2+1)/10*16+(chuzhi2+1)%10;/10進制轉(zhuǎn)BCDif(temp>=96) /96對應(yīng)16進制60temp=0;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x80,0x80

41、|temp); /秒初始化Write1302 (0x8e,0x80); /允許寫保護if(key3=0)/ -按下delay(10);/ 防抖if(key3=0)while(key3=0);/ 等待按鍵釋放temp=(chuzhi2-1)/10*16+(chuzhi2-1)%10;/10進制轉(zhuǎn)BCDif(chuzhi2=0)temp=89;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x80,0x80|temp); /秒初始化Write1302 (0x8e,0x80); /允許寫保護break;case 2:/ 分設(shè)置模式if(key2=0)/ +鍵按下de

42、lay(10);if(key2=0)while(key2=0);temp=(chuzhi1+1)/10*16+(chuzhi1+1)%10;/10進制轉(zhuǎn)BCDif(temp>=96) /96對應(yīng)16進制60temp=0;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x82,temp); /分初始化Write1302 (0x8e,0x80); /允許寫保護if(key3=0)/ '-'按下 delay(10);if(key3=0)while(key3=0);temp=(chuzhi1-1)/10*16+(chuzhi1-1)%10;/10

43、進制轉(zhuǎn)BCDif(chuzhi1=0)temp=89;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x82,temp); /分初始化Write1302 (0x8e,0x80); /允許寫保護break;case 3:/ 時設(shè)置模式if(key2=0)/ '+'按下delay(10);if(key2=0)while(key2=0);temp=(chuzhi0+1)/10*16+(chuzhi0+1)%10;/10進制轉(zhuǎn)BCDif(temp>=36) /36對應(yīng)16進制24temp=0;Write1302 (0x8e,0X00); /禁止寫保護Write1302 (0x84,temp); /時初始化Write1302 (0x8e,0x80); /允許寫保護if(key3=0)/'-'按下delay(10);if(key3=0)while(key3=0);temp=(chuzhi0-1)/10*16+(chuzhi0-1)%10;/10進制轉(zhuǎn)BCDif(chuzhi0=0)temp=35; /35對應(yīng)16進制23Write1302 (0x8e,0X00); /禁止寫保護Write

溫馨提示

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

評論

0/150

提交評論