




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、內(nèi)蒙古工業(yè)大學本科畢業(yè)設(shè)計說明書學校代碼: 10128學 號:200820203066 本科畢業(yè)設(shè)計說明書(題 目:基于單片機的定時器的設(shè)計與實現(xiàn)學生姓名:吳萬山學 院:信息工程系 別:電子信息工程專 業(yè):電子信息工程班 級:電子08-1指導教師:紀松波 副教授二 一 二 年 六 月摘 要近年來隨著計算機在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應(yīng)用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領(lǐng)域,單片機往往是作為一個核心部件來使
2、用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。數(shù)子時鐘在日常生活中最常見,應(yīng)用也最廣泛。本次做的數(shù)子時鐘是以單片機(AT89C51)為核心,結(jié)合相關(guān)的元器件(時鐘芯片DS1302、LCD液晶顯示器),達到制作簡易數(shù)字時鐘的目的,文章的核心主要是硬件設(shè)計和軟件編程兩個大的方面。硬件電路設(shè)計由包括中央處理單元電路、液晶顯示電路、人機接口電路等幾部分組成,軟件用匯編語言來實現(xiàn)。其硬件部分難點在于元器件的選擇、布局及焊接。關(guān)鍵詞:單片機AT89C51 LCD液晶顯示器 時鐘芯片DS1302AbstractRecent years , the use of singlechip
3、is moving toward deeply with the filter of computer in the society and the development of the large scale integrated circuit. Singlechip is especially equal to the system relation to the control because of its strong funtion 、samll volume、low power consumption、inexpensive price、credibility work and
4、its handy.it is used in the area of automata、Intelligent instrument、appearance、data acquisition、production of war industry 、domestic appliance and so on.the singlechip is used usually as the centerpiece,It can be perfect bases the specific Hardware infrastructureand aim at the integrated hardware an
5、d software device of the specific complexion.Digital clock is the most common and the most widely used in our daily lives.The singlechip is the hardcore in the digital clock made in this timethe digital clock can reach the purpose of facility digital clock with the correlation parts of an apparatus(
6、Real Time Clock chip DS1302, Display-panel LCD an so on) To achieve the purpose of making simple digital clock.The core part of this article incluedes two aspeacts, one is hardware design,the other is software programming. The hardware design circuit consists of the central processing unit circuit、t
7、he liquid crystal display circuit、the man-machine interface circuit.The difficulites of the hardware part are choice and layout of components,and the components of welding.Keywords: singlechip AT89C51 real time clock chip DS1302, LCD Monitor目 錄引 言1第一章 硬件介紹31.1AT89C51簡介31.2AT89C51結(jié)構(gòu)圖51.3DS1302時鐘芯片簡介5
8、1.4 LCD1602液晶顯示器簡介81.4.1 概述81.4.2 LCD16029第二章 硬件設(shè)計132.1系統(tǒng)硬件框圖132.1.1框圖說明:132.2電路原理圖142.2.1系統(tǒng)電路說明15第三章 軟件設(shè)計183.1程序流程圖183.2軟件仿真圖193.2按鍵功能子程序流程圖20總結(jié)21參考文獻22附錄23源程序23致謝49內(nèi)蒙古工業(yè)大學本科畢業(yè)設(shè)計說明書引 言20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。 時間對人們來說總是那么
9、寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能造成無可挽回的重大損失。所以精確的報時系統(tǒng)顯得尤為重要。單片機由于將cpu,內(nèi)存和一些必要的接口集成到一個芯片上,并且針對面向控制功能將結(jié)構(gòu)做了一定的優(yōu)化,所以它具備通用芯片不具有的特點。目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。因此,單片機被廣泛應(yīng)用于測控系統(tǒng),智能儀表儀器,機電一體化產(chǎn)品,智能接口以及單片機的多系統(tǒng)等領(lǐng)域。 它的應(yīng)用主要表現(xiàn)在以下幾個方
10、面:(1)單片機在智能儀表中的應(yīng)用 單片機廣泛地用于各種儀器儀表,使儀器儀表智能化,并可以提高測量的自動化程度和精度,簡化儀器儀表的硬件結(jié)構(gòu),提高其性能價格比。 (2)單片機在機電一體化中的應(yīng)用 機電一體化是機械工業(yè)發(fā)展的方向。機電一體化產(chǎn)品是指集成機械技術(shù)、微電子技術(shù)、計算機技術(shù)于一體,具有智能化特征的機電產(chǎn)品,例如微機控制的車床、鉆床等。單片機作為產(chǎn)品中的控制器,能充分發(fā)揮它的體積小、可靠性高、功能強等優(yōu)點,可大大提高機器的自動化、智能化程度。 (3)單片機在實時控制中的應(yīng)用 單片機廣泛地用于各種實時控制系統(tǒng)中。例如,在工業(yè)測控、航空航天、尖端武器、機器人等各種實時控制系統(tǒng)中,都可以用單片
11、機作為控制器。單片機的實時數(shù)據(jù)處理能力和控制功能,可使系統(tǒng)保持在最佳工作狀態(tài),提高系統(tǒng)的工作效率和產(chǎn)品質(zhì)量。 (4)單片機在分布式多機系統(tǒng)中的應(yīng)用在比較復(fù)雜的系統(tǒng)中,常采用分布式多機系統(tǒng)。多機系統(tǒng)一般由若干臺功能各異的單片機組成,各自完成特定的任務(wù),它們通過串行通信相互聯(lián)系、協(xié)調(diào)工作。單片機在這種系統(tǒng)中往往作為一個終端機,安裝在系統(tǒng)的某些節(jié)點上,對現(xiàn)場信息進行實時的測量和控制。單片機的高可靠性和強抗干擾能力,使它可以置于惡劣環(huán)境的前端工作。 (5)單片機在人類生活中的應(yīng)用 自從單片機誕生以后,它就步入了人類生活,如洗衣機、電冰箱、電子玩具、收錄機等家用電器配上單片機后,提高了智能化程度,增加了
12、功能,倍受人們喜愛。單片機將使人類生活更加方便、舒適、豐富多彩。 綜合所述,單片機已成為計算機發(fā)展和應(yīng)用的一個重要方面。另一方面,單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機模塊中最常見的是數(shù)子時鐘,數(shù)子時鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。數(shù)子時鐘是采用數(shù)字電路實現(xiàn)對時,分,秒,數(shù)字顯示的計
13、時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)子時鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)子時鐘及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。 49第一章 硬件介紹1.1AT89C51簡介AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFa
14、lsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖1-1為AT89C51單片機的管腳圖圖1-1單片機管腳圖5.1.1主要管腳說明VCC:供電電壓.GND:接地.P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1
15、口的管腳第一次寫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口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上
16、拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT8
17、9C51的一些特殊功能口,如下所示:口管腳 備選功能P3.0 RXD 串行輸入口P3.1 TXD 串行輸出口P3.2 /INT0 外部中斷0P3.3 /INT1 外部中斷1P3.4 T0 記時器0外部輸入P3.5 T1 記時器1外部輸入P3.6 /WR 外部數(shù)據(jù)存儲器寫選通P3.7 /RD 外部數(shù)據(jù)存儲器讀選通P3口同時為閃爍編程和編程校驗接收一些控制信號。1.2AT89C51結(jié)構(gòu)圖圖1-2AT89C51結(jié)構(gòu)圖1.3DS1302時鐘芯片簡介 DS1302是 DALLAS 公司推出的涓流充電時鐘芯片,內(nèi)含一個實時時鐘/日歷和31字節(jié)靜 態(tài) RAM,可以通過串行接口與單片機進行通信。實時時鐘/日歷
18、電路提供秒、分、時、日、 星期、月、年的信息,每個月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過 AM/PM 標 志位決定采用24或12小時時間格式。DS1302與單片機之間能簡單地采用同步串行的方式進 行通信,僅需三根 I/O 線:復(fù)位(RST)、I/O 數(shù)據(jù)線、串行時鐘(SCLK)。時鐘/RAM 的讀/寫數(shù)據(jù)以一字節(jié)或多達31字節(jié)的字符組方式通信。DS1302工作時功耗很低,保持數(shù)據(jù)和時鐘信息時,功耗小于1mW。 圖1-3DS1302管腳圖各引腳的功能為:Vcc1:主電源;Vcc2:備份電源。當 Vcc2>Vcc1+0.2V 時, 由 Vcc2向 DS1302供電,當 Vcc2<
19、; Vcc1時,由 Vcc1向 DS1302供電。SCLK:串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出;I/O:三線接口時的雙向數(shù)據(jù)線;CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩 個功能:第一,CE 開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒?。時時鐘以及 RAM。雖然數(shù)據(jù)分成兩種,但是對單片機的程序而言,其實是一樣的,就是對特定的地址進行讀寫操作。圖1-4 DS1302的內(nèi)部結(jié)圖DS1302含充電電路,可以對作為后備電源的可充電電池充電,并可選擇充電使能和串 入的二極管數(shù)目,以調(diào)節(jié)電池充電電壓。不過對我們目前而言,最需要熟悉的是和時鐘相關(guān) 部分的
20、功能,對于其它參數(shù)請參閱數(shù)據(jù)手冊。DS1302的工作原理 DS1302工作時為了對任何數(shù)據(jù)傳送進行初始化,需要將復(fù)位腳(RST)置為高電平且 將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時鐘(SCLK)的上升沿串行輸入,前8位指 定訪問地址,命令字裝入移位寄存器后,在之后的時鐘周期,讀操作時輸出數(shù)據(jù),寫操作時 輸出數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下為8加最多可達248的數(shù)據(jù)。DS1302的寄存器和控制命令 對 DS1302的操作就是對其內(nèi)部寄存器的操作,DS1302內(nèi)部共有12個寄存器,其中有7 個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為 BCD 碼形
21、式。此外,DS1302還有年份寄存器、 控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與 RAM 相關(guān)的寄存器等。時鐘突發(fā)寄存器可 一次性順序讀寫除充電寄存器以外的寄存器。日歷、時間寄存器及控制字如表1所示:表1-1:日歷、時鐘寄存器與控制字對照表最后一位 RD/W 為“0”時表示進行寫操作,為“1”時表示讀操作。DS1302內(nèi)部寄存器列表如表2所示:表1-2:DS14302內(nèi)部主要寄存器分布表寄存器名稱命令字取值范圍各位內(nèi)容寫讀765 432 1 0秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小時寄存器84H85H01-12或00-2312/2
22、40A HRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-12000-10MMONTH周寄存器8AH8BH01-07000 00DAY年份寄存器8CH8DH00-9910YEARYEAR DS1302內(nèi)部的 RAM 分為兩類,一類是單個 RAM 單元,共31個,每個單元為一個8位 的字節(jié),其命令控制字為 COHFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方 式下的 RAM,此方式下可一次性讀寫所有的 RAM 的31個字節(jié),命令控制字為 FEH(寫)、 FFH(讀)。 我們現(xiàn)在已經(jīng)知道了控制寄存器和 RAM 的邏輯地址,接著就需
23、要知道如何通過外部接 口來訪問這些資源。單片機是通過簡單的同步串行通訊與 DS1302通訊的,每次通訊都必須 由單片機發(fā)起,無論是讀還是寫操作,單片機都必須先向 DS1302寫入一個命令幀,這個幀 的格式如表1所示,最高位 BIT7固定為1,BIT6決定操作是針對 RAM 還是時鐘寄存器,接 著的5個 BIT 是 RAM 或時鐘寄存器在 DS1302的內(nèi)部地址,最后一個 BIT 表示這次操作是讀 操作抑或是寫操作。 物理上,DS1302的通訊接口由3個口線組成,即 RST,SCLK,I/O。其中 RST 從低電 平變成高電平啟動一次數(shù)據(jù)傳輸過程,SCLK 是時鐘線,I/O 是數(shù)據(jù)線。具體的讀寫
24、時序參 考圖5,但是請注意,無論是哪種同步通訊類型的串行接口,都是對時鐘信號敏感的,而且 一般數(shù)據(jù)寫入有效是在上升沿,讀出有效是在下降沿(DS1302正是如此的,但是在芯片手 冊里沒有明確說明),如果不是特別確定,則把程序設(shè)計成這樣:平時 SCLK 保持低電平, 在時鐘變動前設(shè)置數(shù)據(jù),在時鐘變動后讀取數(shù)據(jù),即數(shù)據(jù)操作總是在 SCLK 保持為低電平 的時候,相鄰的操作之間間隔有一個上升沿和一個下降沿。圖1-5 DS1302的命令字構(gòu)1.4 LCD1602液晶顯示器簡介1.4.1 概述液晶(Liquid Crystal)是一種高分子材料,因其特殊的物理、化學、光學特性,廣泛應(yīng)用輕薄顯示器上。液晶顯
25、示器(Liquid Crystal Display,LCD)的主要原理是以電流刺激液晶分子產(chǎn)生點、線、面并配合背部燈管構(gòu)成畫面。各種型號的液晶通常是按照顯示字符的行數(shù)或液晶點陣的行、列數(shù)來命名。例如,1602表示每行顯示16個字符,一共可以顯示兩行。這類液晶通常稱為字符型液晶,只能顯示ASCII碼字符。12232表示液晶顯示畫面由122列、32行組成,共有122*32個點來顯示各種圖形。用戶可以通過程序控制這些點中任何一個點顯示或不顯示,從而構(gòu)成各種圖形畫面。因此,12232稱為圖形型液晶。液晶體積小,功耗低,顯示操作簡單。但其有致命的弱點,即使用溫度范圍很窄。通用型液晶工作溫度為0到+55攝
26、氏度,存儲溫度為-20到+60攝氏度。1.4.2 LCD1602 1 1602的外形尺寸(毫米)圖1-6LCD1602外形尺寸2 主要技術(shù)參數(shù)圖1-7LCD1602主要技術(shù)參數(shù)3 接口信號說明表1-3LCD1602接口信號說明4 基本操作時序讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0D7=狀態(tài)字寫指令:輸入:RS=L,RW=L,D0D7=指令碼,E=高脈沖 輸出:無讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0D7=數(shù)據(jù)寫數(shù)據(jù):輸入:RS=H,RW=L,D0D7=數(shù)據(jù),E=高脈沖 輸出:無5 RAM地址映射圖控制器內(nèi)部帶有80B的RAM緩沖區(qū)。對應(yīng)關(guān)系如下圖所示。圖1-8緩沖區(qū)
27、對應(yīng)關(guān)系圖向圖中的000F、404F地址中的任意處寫入顯示數(shù)據(jù)時,液晶可立即顯示出來;當寫入到1027或5067地址時,必須通過移屏指令將他們一移入可顯示區(qū)域方可正常顯示。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如下表所示。表1-4 CGROM和CGRAM中字符代碼與字符圖形對應(yīng)關(guān)系這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。6 狀態(tài)字說明表1-5狀態(tài)字說明ST
28、A7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0STA06當前數(shù)據(jù)地址指針的數(shù)值STA7讀寫操作使能1: 禁止 0:允許說明:原則上每次對控制器進行讀寫操作前,都必須進行讀寫檢測,確保STA7為0。實際上,由于單片機的操作速度慢于液晶控制器的反應(yīng)速度,因此可以不進行檢測,或只進行簡短的延時即可。7 指令說明 1602液晶模塊內(nèi)部的控制器共有11條控制指令。(1) 顯示模式設(shè)置表1-6顯示模塊設(shè)置指令碼功能00111000設(shè)置16×2顯示,5×7點陣,8位數(shù)據(jù)接口(2) 顯示開/關(guān)及光標設(shè)置表1-7顯示開/關(guān)及光標設(shè)置指令碼功能00
29、001DCBD=1 開顯示; D=0 關(guān)顯示C=1 顯示光標;C=0 不顯示光標B=1 光標閃爍; B=0 光標不顯示000001NSN=1 當讀或?qū)懸粋€字符后地址指針加一,且光標加一N=0 當讀或?qū)懸粋€字符后地址指針加一,且光標減一S=1 當寫一個字符,整幕顯示左移(N=1)或右移(N=0)S=0當寫一個字符,整屏顯示不移動(2) 數(shù)據(jù)指針設(shè)置表1-8數(shù)據(jù)指針設(shè)置指令碼功能80H+地址碼(027H,4067H)設(shè)置數(shù)據(jù)地址指針(4)其它設(shè)置表1-9其它設(shè)置指令碼功能01H顯示清屏:1.數(shù)據(jù)指針清零 2所有顯示清零02H顯示回車:1.數(shù)據(jù)指針清零8.控制接口時序說明:表1-10時序參數(shù)第二章
30、硬件設(shè)計2.1系統(tǒng)硬件框圖圖2.1系統(tǒng)硬件框圖2.1.1框圖說明:本設(shè)計核心部件為AT89C51單片機芯片,配合外部配件如專用日歷時鐘芯片DS1302,鍵盤,LCD1602液晶顯示器,聲光報警器,以及一些外部輔助電路,以實現(xiàn)日期、時間的顯示及定時器的功能。很具有實際意義。有廣泛的應(yīng)用性。2.2電路原理圖圖2-2電路原理圖2.2.1系統(tǒng)電路說明:本系統(tǒng)由五個部分組成:按鍵模塊、復(fù)位電路模塊、晶振電路模塊、(注:上圖由于只要仿真,所以沒有添加復(fù)位電路和晶振電路模塊,不會影響到仿真結(jié)果)發(fā)聲模塊、時間模塊。晶振模塊負責給單片機提供時鐘周期,復(fù)位電路模塊負責上電后自動復(fù)位,或按鍵后強制復(fù)位。上電后,由
31、單片機內(nèi)部定時器計時,同時通過動態(tài)顯示函數(shù)自動將時、分、秒顯示到LCD上。同時,按鍵掃描函數(shù)一直掃描按鍵引腳狀態(tài),一旦掃描到按鍵被按下,即進入到相應(yīng)的功能函數(shù)。如果檢測到定時時間到,則驅(qū)動蜂鳴器發(fā)聲。單片機的晶振電路模塊如圖2-3所示:圖2-3晶振電路模塊 石英晶振也連接在引腳的輸入和輸出之間,等效為一個并聯(lián)諧振回路,振蕩頻率應(yīng)該是石英晶體并聯(lián)諧振頻率,晶體旁邊的兩個電容接地,實際上就是電容三點式電路的分壓電容,接地點就是分壓點。以接地點即分壓為參考點,振蕩引腳的輸入和輸出是反相的,但從并聯(lián)諧振回路即石英晶體兩端來看,形成一個正反饋以保證電路持續(xù)振蕩。復(fù)位電路如下:圖2-4復(fù)位電路當AT89C
32、51單片機的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開關(guān)復(fù)位。上電或開關(guān)復(fù)位要求電源接通后,單片機自動復(fù)位,并且在單片機運行期間,用開關(guān)操作也能是單片機復(fù)位。常用的上電或開關(guān)復(fù)位電路如圖所示,上電后,由于電容C3的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當單片機已在運行當中時,按下復(fù)位開關(guān)后松開,能使RST為一段時間的高電平,從而實現(xiàn)上電或開關(guān)復(fù)位的操作。發(fā)聲模塊:圖2.5發(fā)聲模塊喇叭由PNP三極管驅(qū)動,當Buzzer管腳(P2_4)為高時,三極管be級沒電壓差,三極管截止;反之,三極管導通,有電流流經(jīng)喇叭,喇叭發(fā)聲
33、。按鍵模塊圖2-6按鍵模塊在該模塊,采用四個按鍵作為電子時鐘的控制輸入,通過按鍵來實現(xiàn)時鐘的時間設(shè)置置、定時、秒表功能。電路中將四個按鍵的一端接公共地,而單片機的P1默認為高電平,一旦按鍵被按下,則該按鍵對應(yīng)的管腳被拉低,通過軟件掃描按鍵即可知道用戶所要實現(xiàn)的功能調(diào)用相應(yīng)的按鍵子程序來完成該操作。按鍵的去抖動有軟件來實現(xiàn)。第三章 軟件設(shè)計3.1程序流程圖主程序流程圖如下:否否是是開始鬧鐘響初始化定時器設(shè)置時間按鍵功能子程序顯示時間是否有鍵按下定時時間到圖3-1主程序流程圖3.2軟件仿真圖圖3-2軟件仿真圖3.2按鍵功能子程序流程圖圖3-2按鍵功能主程序流程圖本次設(shè)計中,關(guān)鍵程序采用模塊化設(shè)計,
34、這樣的好處在與程序的修改和編寫,還有程序運行的穩(wěn)定性。主要模塊部分有主程序模塊,時鐘調(diào)整子程序模塊,顯示子程序模塊等。總結(jié)通過兩個月的學習和調(diào)試過程,終于完成了基于單片機的數(shù)字時鐘的工作。并且使字數(shù)子時鐘的軟件部分能夠順利運行,完成了預(yù)期的目標。從單片機模塊數(shù)字時鐘的設(shè)計過程中也找到了一些單片機開發(fā)的規(guī)律:先了解所有元件的具體內(nèi)容,從而畫出其電路圖,使數(shù)字時鐘從簡易變成多功能的方式,雖沒有做出多功能數(shù)字時鐘,卻知曉了其方法。從而讓我踏入了單片機應(yīng)用領(lǐng)域的第一步。參考文獻1張毅坤、陳善久、裘雪紅 單片機微型計算機原理及應(yīng)用西安電子科技大學出版社 1998年9月第一版2裴巖、劉利民 單片機系統(tǒng)綜合
35、設(shè)計與實踐 內(nèi)蒙古大學出版社3張俊謨 單片機中級原理及應(yīng)用 北京航空航天大學出版社 2002年8月第2版4任為民 電子技術(shù)基礎(chǔ)課程設(shè)計中央廣播電視大學大學出版社 1997年5月第1版5閆石 數(shù)字電子技術(shù)基礎(chǔ)高等教育出版社 6童詩白 模擬電子技術(shù)基礎(chǔ)高等教育出版社7王曉明,曾紅 單片機教程東北大學出版社8張毅剛等 MCS-51單片機教程 哈爾濱工業(yè)大學出版社9李廣弟 單片機基礎(chǔ)北京航空航天大學出版社10張洪潤,蘭清華 單片機應(yīng)用教程 清華大學出版社 11John.F.WakerlyM DIGITAL DESIGN 北京高等出版社12Intel,Microcontroller HandbookZ,
36、198913TTL Logical Advenced BiCMOS Technology Data Book.Texas Instruments1997.附錄 源程序/* 文件名稱:main.c版 本:Keil uVision4控 制 器: AT89C51/12MHz說 明:基于單片機的DS1302數(shù)字時鐘*/*includes-*/ #include <reg52.h>#include <intrins.h>#include <DS1302.h>#include <LCD1602.h> #include <BuzzePhone.h>
37、#include <Push_Button.h>/*defines-*/#define Time0_TH0 0xc6 /定義計數(shù)器0計數(shù)寄存器裝載的高8位值,可自行修改#define Time0_TL0 0x0d /定義計數(shù)器0計數(shù)寄存器裝載的低8位值,可自行修改#define State_Clock 0 /定義空閑狀態(tài)#define State_AdjustWeek 1 /定義星期調(diào)整狀態(tài)#define State_AdjustYear 2 /定義年份調(diào)整狀態(tài)#define State_AdjustMonth 3 /定義月份調(diào)整狀態(tài)#define State_AdjustDay
38、4 /定義日份調(diào)整狀態(tài)#define State_AdjustHour 5 /定義時調(diào)整狀態(tài)#define State_AdjustMinute 6 /定義分調(diào)整狀態(tài)#define State_AdjustSecond 7 /定義秒調(diào)整狀態(tài)#define State_AdjustAlarmHour 8 /定義鬧鐘時調(diào)整狀態(tài)#define State_AdjustAlarmMinute 9 /定義鬧鐘分調(diào)整狀態(tài)/*variable-*/unsigned char data SetTime = 9,9,9,9,3,1,12;unsigned char data CurrentTime7;stati
39、c unsigned char Button_Value; /定義按鍵狀態(tài)值變量static unsigned char Function_State; /定義功能狀態(tài)變量static unsigned char Value_AdjustWeek; /定義星期調(diào)整變量static unsigned char Value_AdjustYear; /定義年份調(diào)整變量static unsigned char Value_AdjustMonth; /定義月份調(diào)整變量static unsigned char Value_AdjustDay; /定義日份調(diào)整變量static unsigned char V
40、alue_AdjustAlarmHour; /定義鬧鐘時調(diào)整變量static unsigned char Value_AdjustAlarmMinute ; /定義鬧鐘分調(diào)整變量static unsigned char Value_AdjustHour; /定義時調(diào)整變量static unsigned char Value_AdjustMinute; /定義分調(diào)整變量static unsigned char Value_AdjustSecond; /定義秒調(diào)整變量static unsigned char AlarmHour = 0x08; /定義鬧鐘時鐘變量static unsigned ch
41、ar AlarmMinute =0x0a; /定義鬧鐘分鐘變量static unsigned char SweepInterval_ShowTime; /定義顯示掃描時間變量static unsigned char SweepInterval_Alarm; /定義警告掃描時間變量static unsigned char SweepInterval_Button; /定義按鍵掃描時間變量static unsigned char State_RealtimeClock; /定義警告掃描時間變量static bit Flag_ShowTime = 0; /定義顯示掃描標志變量static bit F
42、lag_Alarm = 0; /定義警報掃描標志變量static bit Flag_Button = 0; /定義按鍵掃描標志變量static bit Flag_buzzer = 0; /定義蜂鳴器掃描標志變量static bit Flag_ManualOperation = 0; /定義手動控制掃描標志變量/* 函數(shù)名稱:Time0_Initialization(void)函數(shù)功能:定時器0初始化函數(shù)備 注:定時器工作于方式1,定時器計數(shù)寄存器16位全部用于計數(shù) */ void Time0_Initialization(void)TMOD=0x21; /T0,工作方式1TH0=Time0_T
43、H0; /裝載定時器0寄存器高8位值TL0=Time0_TL0; /裝載定時器0寄存器低8位值TR0=1; /開啟T0定時器ET0=1; /允許T0定時器中斷EA=1; /開啟總中斷允許/*函數(shù)名稱:UART_Initialization()函數(shù)功能:串口初始化函數(shù),定時器1作為波特率時鐘發(fā)生器備 注:在系統(tǒng)時鐘為12MHZ時,設(shè)定串口波特率為1200bit/s或2400bit/s備 注:在系統(tǒng)時鐘為11.0592MHZ時,設(shè)定串口波特率為9600bit/s*/void UART_Initialization(void) SCON = 0x50; /選擇串口工作方式1,打開接收允許 TMOD
44、= 0x21; /定時器1工作在方式2,定時器0工作在方式1 TH1 = 0xe6; /實現(xiàn)波特率2400(系統(tǒng)時鐘12MHZ)TCON = 0x40; /定時器1開始計數(shù) PCON = 0x80; /波特率倍頻RI = 0; /清接收標志TI = 1; /清發(fā)送標志 TR1 = 1; /啟動定時器T1/*函數(shù)名稱:UART_SendByte(unsigned char SendByte)入口參數(shù):unsigned char SendByte出口參數(shù):無函數(shù)功能:通過串口發(fā)送一個8位字節(jié)的數(shù)據(jù)備 注:16進制顯示*/void UART_SendByte(unsigned char SendBy
45、te) SBUF = SendByte; /輸出字符 while(!TI); /判斷是否發(fā)完 TI=0; /清TI/* 函數(shù)名稱:RealtimeClock_ShowCurrentTime(void)入口參數(shù):void 出口參數(shù):void 函數(shù)功能:實時時鐘顯示當前時間 */void RealtimeClock_ShowCurrentTime(void)DS1302_ReadTime(CurrentTime);LCD1602_DisplayTwoNumber( 2,0,CurrentTime5);/顯示星期LCD1602_DisplayTwoNumber( 8,0,CurrentTime6);
46、/顯示年份LCD1602_DisplayTwoNumber(11,0,CurrentTime4);/顯示月份LCD1602_DisplayTwoNumber(14,0,CurrentTime3);/顯示日份LCD1602_DisplayTwoNumber( 8,1,CurrentTime2);/顯示時鐘LCD1602_DisplayTwoNumber(11,1,CurrentTime1);/顯示分鐘LCD1602_DisplayTwoNumber(14,1,CurrentTime0);/顯示秒鐘LCD1602_SetCursorPosition(16,1);/* 函數(shù)名稱:KeyHandle_
47、UpAdjust(void)入口參數(shù):void 出口參數(shù):void 函數(shù)功能:調(diào)整按鍵有效處理*/void KeyHandle_UpAdjust(void)switch(Function_State)case State_Clock: LCD1602_SetCursorPosition(16,1);Flag_ManualOperation = 1;/置位手動控制標志變量 break;case State_AdjustWeek: DS1302_ReadTime(CurrentTime);/讀取當前時間Value_AdjustWeek = CurrentTime5;if(Value_AdjustW
48、eek >= 7) Value_AdjustWeek = 7;elseValue_AdjustWeek+;LCD1602_DisplayTwoNumber(2,0,Value_AdjustWeek);/顯示星期LCD1602_SetCursorPosition(1,0);/LCD1602光標回到星期調(diào)整位閃爍 SetTime5 = Value_AdjustWeek;DS1302_SetTime(SetTime);break;case State_AdjustYear:DS1302_ReadTime(CurrentTime);/讀取當前時間Value_AdjustYear = CurrentTime6;if(Value_AdjustYear >= 99) Value_AdjustYear= 99;elseValue
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)詢會主持流程
- 工程地質(zhì)培訓
- 新媒體培訓課件
- 腫瘤危重癥高血鈣癥護理
- VTE護理教學查房
- 罪犯教育適應(yīng)區(qū)
- 如何提高團隊凝聚力
- 與心靈相約 與健康同行-心理健康主題演講稿
- 我國農(nóng)業(yè)機械化智能化產(chǎn)業(yè)現(xiàn)狀與區(qū)域發(fā)展差異分析報告
- 2025年海上風力發(fā)電場運維管理與技術(shù)創(chuàng)新策略深度報告
- 邊坡噴護檢驗批質(zhì)量驗收記錄表
- GB∕T 31062-2014 聚合物多元醇
- 氧、氬、二氧化碳氣體充裝企業(yè)風險點分級管控資料
- 醫(yī)學專題杏林中人乳腺穴位敷貼
- 公路水運工程施工安全標準化指南(42頁)
- 人教版 2021-2022學年 五年級下冊數(shù)學期末測試試卷(一)含答案
- 錫槽缺陷手冊(上
- (完整版)全國校園籃球特色學校申報材料
- 西門子SAMA圖DEH邏輯講解
- 施工現(xiàn)場安全、文明施工檢查評分表
- 管道支架重量計算表常用圖文精
評論
0/150
提交評論