![數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)_第1頁](http://file4.renrendoc.com/view/0de4b67dc827e79739ec714a875d1368/0de4b67dc827e79739ec714a875d13681.gif)
![數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)_第2頁](http://file4.renrendoc.com/view/0de4b67dc827e79739ec714a875d1368/0de4b67dc827e79739ec714a875d13682.gif)
![數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)_第3頁](http://file4.renrendoc.com/view/0de4b67dc827e79739ec714a875d1368/0de4b67dc827e79739ec714a875d13683.gif)
![數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)_第4頁](http://file4.renrendoc.com/view/0de4b67dc827e79739ec714a875d1368/0de4b67dc827e79739ec714a875d13684.gif)
![數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)_第5頁](http://file4.renrendoc.com/view/0de4b67dc827e79739ec714a875d1368/0de4b67dc827e79739ec714a875d13685.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)(可以直接使用,可編輯完整版資料,歡迎下載)
數(shù)字日歷時(shí)鐘設(shè)計(jì)(常用版)(可以直接使用,可編輯完整版資料,歡迎下載)數(shù)字日歷時(shí)鐘設(shè)計(jì)摘要本設(shè)計(jì)采用AT89S51單片機(jī)為核心,由DS1302時(shí)鐘芯片提供時(shí)鐘的控制,LED動(dòng)態(tài)掃描顯示屏顯示。AT89S51單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時(shí)鐘芯片是美國DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;數(shù)字顯示是采用的LED數(shù)碼管來顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒和溫度等信息。此外,該電子萬年歷也具有時(shí)間校準(zhǔn)等功能。關(guān)鍵字日歷時(shí)鐘動(dòng)態(tài)顯示微控制器THEDESIGNOFDIGITALCALENDERCLOCKABSTRACTThedesignusesAT89S51microcontrollerasthecore,providedbytheDS1302clockchipclock,DS18B20thetemperaturechipacquisitiontransitiontemperature,LEDdisplayshowsthedynamicscan.AT89S51single-chipmicrocomputerisintroducedbyAtmelCorporation,asmallpowerconsumption,voltagecanbeselected4~6Vpowersupplyvoltage;DS1302clockchipisintroducedDALLASfinewithtricklechargefunctionofcurrentlow-powerreal-timeclockchip,whichcanoftheyear,month,day,week,hour,minute,secondfortime,alsohasmultiplefunctions,suchasaleapyearcompensation,andlonglifeoftheDS1302,asmallerror;DS18B20temperaturechipisadigitaltemperaturesensorwithameasurementaccuracyhigh,asimplecircuittoconnectthecharacteristicsofsuchsensorsonlyneedadatacablefordatatransmission;digitalLEDdisplayisusedtodisplayLEDscreen,candisplayyear,month,day,week,hour,minute,secondandtemperature,rmation.Inaddition,theelectroniccalendarisalsoatime-calibrationfunctions.KEYWORDSclockcircuitdynamicscanningmicrocontroller目錄TOC\o"4-6"\h\z\u摘要 IABSTRACT II引言 11設(shè)計(jì)要求與方案論證 31.1設(shè)計(jì)要求 31.2本課題方案論證 31.3電路設(shè)計(jì)最終方案決定 52本系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn) 52.1數(shù)字日歷時(shí)鐘總設(shè)計(jì)框圖 52.2單元電路設(shè)計(jì)與分析 63數(shù)字日歷時(shí)鐘程序設(shè)計(jì) 103.1主程序設(shè)計(jì) 113.2子程序設(shè)計(jì) 11結(jié)論 16致謝 17參考文獻(xiàn) 18附錄1數(shù)字日歷時(shí)鐘程序清單 19附錄2數(shù)字日歷時(shí)鐘電路原理圖 26引言隨著社會(huì)的進(jìn)步和發(fā)展,人們的生活水平的提高和生活節(jié)奏的加快,對時(shí)間的要求也是越來的越高,精準(zhǔn)數(shù)字計(jì)時(shí)工具的要求也是越來越高。這是一個(gè)時(shí)間就是金錢的社會(huì),再多的金錢買不回來那流逝的時(shí)間。我們先從古代時(shí)鐘的發(fā)展歷程來說我們的祖先是怎么記錄和測量時(shí)間的,讓我們對時(shí)間記錄和表示工具有一個(gè)深刻的認(rèn)識(shí)。在古代的時(shí)候,人們利用水壺的滴水的方法來記錄時(shí)間,這種方法盡管可以基本的完成時(shí)間的記錄,不過誤差相當(dāng)?shù)拇?,如果沒有水的話,時(shí)間也隨之停止。慢慢的發(fā)展為利用太陽光在地面上的投影來記錄時(shí)間,這種方法比上一種的方法進(jìn)步了許多,也不用人們經(jīng)常的往水壺里放水了。但這個(gè)方法的最大缺點(diǎn)是晚上或者天氣不好時(shí)記錄或觀察的時(shí)間是相當(dāng)不準(zhǔn)確。隨著歷史的進(jìn)步和發(fā)展,進(jìn)入了十六世紀(jì)的中葉,在瑞典出現(xiàn)了擺鐘,利用彈簧的搖擺來對時(shí)間進(jìn)行記錄和顯示。對人類的社會(huì)發(fā)展起到非常重要的作用,讓人們有序的進(jìn)行各項(xiàng)的社會(huì)活動(dòng)和對歷史進(jìn)行準(zhǔn)確的記錄。不過這種進(jìn)步,也是有很大缺點(diǎn)的,隨著擺鐘使用壽命的變長,時(shí)間的記錄是越來越不精確。它的缺點(diǎn)也必然會(huì)促進(jìn)更加準(zhǔn)確的時(shí)鐘出現(xiàn)。20世紀(jì)的科學(xué)技術(shù)的發(fā)展,大大促進(jìn)了人們對于時(shí)間的精確要求。這就使許多的科學(xué)家對此產(chǎn)生了很大的興趣,在一個(gè)時(shí)間就是生命,時(shí)間就是金錢的社會(huì)。對于測量時(shí)間的工具——時(shí)鐘要求更高,1946年,美國軍方成功的研發(fā)出電子計(jì)算機(jī),不過當(dāng)時(shí)的計(jì)算機(jī)由于體積龐大,功能有限。被供養(yǎng)在特殊的軍方實(shí)驗(yàn)室和大學(xué)中。它的出現(xiàn)大大的提高了人們的科技研發(fā)實(shí)力,隨著微型計(jì)算機(jī),單片機(jī)的出現(xiàn)等等一大批科技成果的出現(xiàn),為數(shù)字日歷時(shí)鐘的出現(xiàn)奠定了必備的條件。
二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)工具就是數(shù)字日歷時(shí)鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的走時(shí)月差從分級(jí)縮小到秒級(jí)。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用(數(shù)字日歷時(shí)鐘),使計(jì)時(shí)產(chǎn)品的走時(shí)日差從分級(jí)縮小到1/600萬秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求。因此,數(shù)字日歷時(shí)鐘的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步??v觀時(shí)鐘的發(fā)展過程,可以看出:我們發(fā)明的數(shù)字日歷時(shí)鐘有很多種,總體上來說是以研究多功能數(shù)字日歷時(shí)鐘為主,使數(shù)字日歷時(shí)鐘除了原有的顯示時(shí)間,日期等基本功能外,還具有鬧鈴,報(bào)警等功能。而商家生產(chǎn)的數(shù)字日歷時(shí)鐘更從質(zhì)量,價(jià)格,實(shí)用上考慮,不斷的改進(jìn)數(shù)字日歷時(shí)鐘的設(shè)計(jì),使其更加的具有市場。本設(shè)計(jì)為軟硬件相結(jié)合的一組設(shè)計(jì)。在軟件設(shè)計(jì)過程中,應(yīng)對硬件部分有相關(guān)了解,這樣有助于對設(shè)計(jì)題目的更深了解,有助于軟件設(shè)計(jì)。基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的時(shí)鐘芯片外,還有采用MCU的方案,利用AT89系列單片微機(jī)制成數(shù)字日歷時(shí)鐘電路,采用軟硬件結(jié)合的方法,控制LED數(shù)碼管輸出,分別用來顯示年、月、日、時(shí)、分、秒,其最大特點(diǎn)是:硬件電路簡單,安裝方便易于實(shí)現(xiàn),軟件設(shè)計(jì)獨(dú)特,可靠。AT89S51是由ATMEL公司推出的一種小型單片機(jī)。其主要特點(diǎn)為采用Flash存貯器技術(shù),具有在線編程。降低了制造成本,其軟硬件與MCS-51完全兼容,可以很快被廣大愛好者接受。
本文介紹了基于AT89S51單片機(jī)設(shè)計(jì)的多功能數(shù)字日歷時(shí)鐘。首先我們在引言中簡單介紹了時(shí)鐘在人類社會(huì)的發(fā)展過程和數(shù)字日歷時(shí)鐘以及課題的開發(fā)意義;接著介紹了AT89S51單片機(jī)的硬件結(jié)構(gòu)和本畢業(yè)設(shè)計(jì)所要外擴(kuò)的LED顯示及其驅(qū)動(dòng)方法,并在此基礎(chǔ)上實(shí)現(xiàn)了多功能數(shù)字日歷時(shí)鐘基本電路的設(shè)計(jì);從而實(shí)現(xiàn)電子時(shí)鐘的正常工作,并具有鬧鐘,顯示溫度的功能。最后使用單片機(jī)C語言進(jìn)行數(shù)字日歷時(shí)鐘的軟件設(shè)計(jì),程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡單明了,維護(hù)方便。具體實(shí)現(xiàn)的功能為:1.顯示年月日時(shí)分秒及星期等信息;2.具有可以調(diào)整日期和時(shí)間功能;3.鬧鐘的功能和顯示即時(shí)的溫度情況。1設(shè)計(jì)要求與方案論證1.1設(shè)計(jì)要求隨著電子技術(shù)的發(fā)展,人們對科技的不斷的探索。不斷地研究,不斷的創(chuàng)新,數(shù)字時(shí)鐘也就隨即而誕生。它的設(shè)計(jì)已經(jīng)不再的局限于純硬件的形式,以電腦軟件或者電子產(chǎn)品形式出現(xiàn)得電子日歷時(shí)鐘,與傳統(tǒng)意義上的日歷來說,數(shù)字電子日歷有許多很優(yōu)秀的要點(diǎn),而且計(jì)時(shí)準(zhǔn)確,采用數(shù)字日歷時(shí)鐘已經(jīng)成為一種風(fēng)尚。目前的應(yīng)用的范圍是很大的,比如說學(xué)校,酒店,辦公場所等,但是多數(shù)的電子日歷時(shí)鐘的功能比較的單一,在這里我們要設(shè)計(jì)一個(gè)功能比較多的數(shù)字日歷時(shí)鐘。本文主要是采用AT89S51單片機(jī)的數(shù)字日歷方案,本方案以AT89S51單片機(jī)為主要的控制芯片,與時(shí)鐘芯片DS1302、按鍵、LED顯示、溫度傳感器DSl8B20等模塊組成硬件系統(tǒng),在硬件的系統(tǒng)中設(shè)置了獨(dú)立的調(diào)節(jié)鍵和LED顯示,使之能夠表達(dá)豐富的信息,根據(jù)使用者的要求,可以隨時(shí)的對時(shí)間進(jìn)行調(diào)整,和選擇時(shí)間來打理自己重要的事情。根據(jù)設(shè)計(jì)的要求是本數(shù)字日歷時(shí)鐘能夠表達(dá)的信息是年、月、日、星期、時(shí)、分、秒、定時(shí)、溫度等功能。1.2本課題方案論證單片機(jī)芯片選擇方案和論證方案一:采用89C51芯片作為硬件核心,采用FlashROM,內(nèi)部具有4KBROM存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備ISP在線編程技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對芯片的多次拔插會(huì)對芯片造成一定的損壞。方案二:采用AT89S51,片內(nèi)ROM全都采用FlashROM;能以3V的超底壓工作;同時(shí)也與MCS-51系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為8KBROM存儲(chǔ)空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對芯片多次拔插,所以不會(huì)對芯片造成損壞。所以選擇采用AT89S51作為主控制系統(tǒng).,方案一作為備用方案,第二種的方案成本具有在線編程,適合做設(shè)計(jì),降低了開發(fā)成本。顯示模塊選擇方案和論證方案一:采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價(jià)格昂貴,需要的接口線多,所以在此設(shè)計(jì)中不采用LED液晶顯示屏.方案二:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以也不用此種作為顯示.方案三:采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格適中,對于顯示數(shù)字最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。所以通過上述的比較了解可知:采用方案三動(dòng)態(tài)掃描的方式來顯示數(shù)字日歷時(shí)鐘的各種的信息,并且占用單片機(jī)的資源少,值得采用。時(shí)鐘芯片選擇方案和論證方案一:直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。方案二:采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA1.2.4溫度傳感器選擇方案與論證方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個(gè)相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。。此設(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測量誤差。方案二:采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以去除A/D模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點(diǎn)。1.3電路設(shè)計(jì)最終方案決定綜上各方案所述,對此次作品的方案選定:采用AT89S51作為主控制系統(tǒng);DS1302提供時(shí)鐘;數(shù)字式溫度傳感器;LED數(shù)碼管動(dòng)態(tài)掃描作為顯示,并配以蜂鳴器用于鬧鐘的鳴叫,提示人們?nèi)绾翁幚砭o要的事情,最重要的是可以作為鬧鈴的作用,提醒人們早起。2本系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)單片機(jī)是整個(gè)硬件電路設(shè)計(jì)的核心和關(guān)鍵,擔(dān)負(fù)著對這個(gè)電路的設(shè)計(jì)和控制,由于我們采用的是AT89S51單片機(jī),單片機(jī)AT89S51可以把有芯片DS18B20、DS1302中的數(shù)據(jù)利用軟件來進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實(shí)現(xiàn)溫度、日歷和鬧鈴的顯示。以LED數(shù)碼管為顯示模塊,把單片機(jī)傳來的的數(shù)據(jù)顯示出來,并且顯示多樣化,在顯示電路中,主要靠按鍵來實(shí)現(xiàn)各種顯示要求的選擇與切換。2.1數(shù)字日歷時(shí)鐘總設(shè)計(jì)框圖在本系統(tǒng)主要的電路部分是包括溫度采集,LED數(shù)碼管顯示,鍵盤的調(diào)整時(shí)間,鬧鈴電路,時(shí)鐘控制芯片等部分。數(shù)字日歷時(shí)鐘設(shè)計(jì)的系統(tǒng)框圖如圖2-1所示。AT89S51AT89S51溫度傳感器DS18B20鬧鈴電路LED顯示鍵盤時(shí)鐘芯片DS1302圖2-1數(shù)字日歷時(shí)鐘設(shè)計(jì)框圖通過系統(tǒng)的框圖我們可以知道此系統(tǒng)可以按照下面的幾大大部分組成,單片機(jī)主控制模塊電路、顯示部分、鍵盤輸入部分、溫度采集部分,鬧鈴提示電路組成。2.2單元電路設(shè)計(jì)與分析單片機(jī)主控制模塊電路設(shè)計(jì)在這里我們要了解一下關(guān)于AT89S51單片機(jī)的相關(guān)的資料從而使我們對AT89S51有一個(gè)深入理解和印象。AT89S51單片機(jī)具有在線調(diào)試的功能,可以很方面的用于實(shí)時(shí)的時(shí)鐘連接調(diào)試,在本系統(tǒng)中單片機(jī)的工作與復(fù)位電路圖。所采用的12M的晶振用于單片機(jī)的工作,采用上電的方式進(jìn)行復(fù)位。在數(shù)字日歷時(shí)鐘設(shè)計(jì)的的單片機(jī)AT89S51的工作電路連接圖如圖2-2所示。圖2-2AT89S51的工作電路連接圖其中對于單片機(jī)的復(fù)位電路,復(fù)位電路是用來幫助51單片機(jī)來復(fù)位,主要是復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。復(fù)位操作有上電復(fù)位、按鍵電平復(fù)位和外部脈沖復(fù)位三種方式,在本設(shè)計(jì)中采用的是上電復(fù)位,其中上電復(fù)位:上電復(fù)位電路是—種簡單的復(fù)位電路,只要在RST復(fù)位引腳接一個(gè)電容到VCC,接一個(gè)電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時(shí),復(fù)位電路通過電容加到RST復(fù)位引腳一個(gè)短暫的高電平信號(hào),這個(gè)復(fù)位信號(hào)隨著VCC對電容的充電過程而回落,所以RST引腳復(fù)位的高電平維持時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號(hào)必須維持足夠長的時(shí)間。時(shí)鐘電路模塊設(shè)計(jì)DS1302是美國DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘日歷芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小于31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。有主電源和備份電源雙引腳,而且備份電源可由大容量電容(>1F)來替代。需要強(qiáng)調(diào)的是,DS1302需要使用32.768KHz的晶振。數(shù)字時(shí)鐘芯片的詳細(xì)的介紹,通過單片機(jī)可以很方便的控制時(shí)鐘芯片的工作,下面看一下時(shí)鐘芯片DS1302與系統(tǒng)的連接圖如圖2-3所示。LED顯示電路模塊LED數(shù)碼管的分類有七段數(shù)碼管和八段數(shù)碼管。由于要使用到小數(shù)點(diǎn),所以本設(shè)計(jì)采用的是使用的八段數(shù)碼管。很方便的顯示到小數(shù)點(diǎn),用于溫度的采集!用單片機(jī)驅(qū)動(dòng)LED數(shù)碼管顯示有很多方法,按顯示方式分有靜態(tài)顯示和動(dòng)態(tài)顯示。我們對于靜態(tài)顯示和動(dòng)態(tài)顯示做一個(gè)詳細(xì)的介紹,進(jìn)而知道LED的顯示原理和本設(shè)計(jì)的理論依據(jù)。圖2-3時(shí)鐘芯片DS1302與系統(tǒng)的連接圖圖2-4顯示模塊與系統(tǒng)連接的電路圖本數(shù)字日歷時(shí)鐘所采用的是動(dòng)態(tài)的掃描的方法并在LED數(shù)碼管顯示所有要求的信息,數(shù)字日歷時(shí)鐘設(shè)計(jì)的基本的信息:年、月、日、時(shí)、分、秒和附加的功能溫度信息。顯示模塊與單片機(jī)連接的電路圖如下圖2-4所示。鍵盤輸入部分鍵盤在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤,鍵盤是人工干預(yù)計(jì)算機(jī)的主要手段。在鍵盤的設(shè)計(jì)過程中,一般采用非編碼鍵盤,在此的使用的過程中要注意消抖的問題,鍵盤的抖動(dòng)對系統(tǒng)正常的工作影響很大,所以一定要消抖。在本系統(tǒng)的設(shè)計(jì)過程中,共有四個(gè)鍵分別是功能移位鍵、時(shí)間的“+”鍵、時(shí)間的“—”鍵、特殊時(shí)間轉(zhuǎn)換鍵:與系統(tǒng)的連線圖如圖2-5下。圖2-5鍵盤與系統(tǒng)的連接圖溫度采集部分設(shè)計(jì)DS18B20數(shù)字溫度傳感器,該產(chǎn)品采用美國DALLAS公司生產(chǎn)的DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測量精度高,電路連接簡單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P0.7與DS18B20的I/O口連接加一個(gè)上拉電阻,VCC接電源,GND接地。溫度傳感器DS18B20在本設(shè)計(jì)中原理連接圖如圖2-6所示。圖2-6溫度傳感器與系統(tǒng)的連線圖2.2.6鬧鐘提示部分設(shè)計(jì)在本設(shè)計(jì)中,鬧鈴的功能也是非常的重要,在鬧鈴的電路中,蜂鳴器則是必須的,蜂鳴器是單片機(jī)中比較實(shí)用的提示元件,由于自身中帶有震蕩電路。當(dāng)送入高電平時(shí)就可以發(fā)出“滴滴”的提示聲,從而提示人去做自己預(yù)先準(zhǔn)備的重要的事情。在本課題中,由于本課題的一個(gè)鬧鐘的功能,可以提示人按時(shí)的睡覺和起床,在實(shí)際的工作和生活中有非常重要的作用。此部分在系統(tǒng)的設(shè)計(jì)的電路圖如下圖2-7所示。圖2-7鬧鈴電路與系統(tǒng)的連線圖系統(tǒng)的供電部分設(shè)計(jì)在本設(shè)計(jì)的過程中,要對單片機(jī)和芯片進(jìn)行供電,而在現(xiàn)實(shí)中,220V的交流電比較的常見,所以就采用220V交流電轉(zhuǎn)5V直流電的方案。在此設(shè)計(jì)中,利用了整流濾波,首先將220V的交流電降壓到9V,然后再進(jìn)行整流濾波穩(wěn)壓,最終形成5V的直流電,可以供電給單片機(jī)和芯片使用。系統(tǒng)的供電連線圖如圖2-8所示。圖2-8系統(tǒng)供電的連線圖3數(shù)字日歷時(shí)鐘程序設(shè)計(jì)C51單片機(jī)可以應(yīng)用匯編語言和C語言進(jìn)行編程。,匯編語言與機(jī)器指令一一對應(yīng)所以用匯編語言編寫的程序在單片機(jī)里運(yùn)行起來效率較高。C語言程序可讀性高,更便于理解。本設(shè)計(jì)使用C語言編程。3.1主程序設(shè)計(jì)第一次上電,系統(tǒng)先進(jìn)行初始化,LED顯示初始時(shí)間“08:00:00”,并開始走時(shí)。初始日期為2010年5月30日,此刻若按單片機(jī)依次開始調(diào)用鍵盤掃描子程序、DS1302子程序、DS18B20子程序、鬧鈴子程序,經(jīng)過延時(shí),返回程序開頭循環(huán)運(yùn)行。主程序流程圖如圖3-1所示。圖3-1數(shù)字日歷時(shí)鐘主程序流程圖3.2子程序設(shè)計(jì)實(shí)時(shí)時(shí)鐘日歷子程序設(shè)計(jì)該程序主要實(shí)現(xiàn)對DS1302寫保護(hù)、充電,對年、月、日、時(shí)、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因?yàn)樵诖型ㄐ艜r(shí)對時(shí)序要求比較高,而且在此是用I/O口軟件模擬串行時(shí)鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷。其流程圖如圖3-2。DS1302每次上電時(shí)自動(dòng)處于暫停狀態(tài),必須把秒寄存器的位7置位0,時(shí)鐘才開始計(jì)時(shí)。如果DS1302一直沒有掉電,則不存在此問題。DS1302的軟件設(shè)計(jì)與其他的芯片寫軟件時(shí)類似的,都需要初始化,寫入初值,然后讀取寄存器中的值。有LED數(shù)碼管顯示出來,人們可以查看時(shí)間等信息。在進(jìn)行寫操作時(shí),需要先解除寫保護(hù)寄存器的“禁止”狀態(tài)。當(dāng)用多字節(jié)模式進(jìn)行操作時(shí),必須寫夠8字節(jié),源程序見附錄1。圖3-2實(shí)時(shí)時(shí)鐘日歷子程序流程圖環(huán)境溫度采集子程序設(shè)計(jì)DS18B20是1—wire單線器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議來對讀寫數(shù)據(jù)提出嚴(yán)格的時(shí)序要求,而AT89S51單片機(jī)并不支持單線傳輸。因此,必須采用軟件的方法來模擬單線的協(xié)議時(shí)序。主機(jī)操作單線器件DS18B20必須遵循下面的順序。實(shí)現(xiàn)環(huán)境溫度采集轉(zhuǎn)換并讀取數(shù)據(jù)的程序流程圖參見圖3-3。源程序見附錄1。顯示子程序設(shè)計(jì)用74LS164驅(qū)動(dòng)LED數(shù)碼管靜態(tài)顯示電路,編程也很容易。只要將需要顯示的數(shù)字編輯成對應(yīng)的BCD碼,逐位送入74LS164的A、B串行輸入端,數(shù)碼管將正常顯示。關(guān)鍵之處是要實(shí)現(xiàn)根據(jù)鍵值顯示不同的數(shù)字。為了方便實(shí)現(xiàn)按鍵顯示,程序中調(diào)用的都是各個(gè)標(biāo)志位,通過判斷標(biāo)志位的“真”、“假”來決定顯示的內(nèi)容。鍵盤掃描子程序單片機(jī)對鍵盤掃描的方法有隨機(jī)掃描方式、定時(shí)掃描方式和中斷掃描方式。在隨機(jī)掃描方式中,CPU完成某特定任務(wù)后,即執(zhí)行鍵盤掃描程序,以確定鍵盤有無按鍵輸入,然后根據(jù)按鍵功能轉(zhuǎn)去執(zhí)行相應(yīng)的操作。在執(zhí)行鍵盤按鍵規(guī)定的功能中不理睬鍵盤輸入。定時(shí)掃描方式與隨機(jī)掃描方式基本相同,只是利用CPU內(nèi)的定時(shí)中斷,每隔一定時(shí)間掃描有無按鍵被按下,鍵盤反應(yīng)速度較快,在處理按鍵功能過程中,可以通過鍵盤命令進(jìn)行干預(yù),如取消、暫停等操作。前兩種掃描方式均會(huì)占用CPU大量時(shí)間。不管有沒有鍵入操作,CPU總要在一定的時(shí)間內(nèi)進(jìn)行掃描,這對于單片機(jī)控制系統(tǒng)是很不利的。本設(shè)計(jì)采用的是中斷掃描方式,進(jìn)行處理,實(shí)時(shí)性比較好。鍵盤掃描子程序的流程圖見圖3-4。鬧鈴子程序設(shè)計(jì)鬧鈴子程序最主要的任務(wù)是不斷用時(shí)鐘分(min)與時(shí)(hour)同設(shè)定的鬧鈴分(clk_min)與鬧鈴時(shí)(clk_hour)比較,只要滿足min等于clk_min、hour等于clk_hour,響鈴啟動(dòng)5分鐘,并根據(jù)外部按鍵執(zhí)行相應(yīng)貪睡任務(wù)。該程序流程圖參見圖3-5。圖3-3環(huán)境溫度采集子程序流程圖圖3-4鍵盤掃描子程序圖3-5鬧鈴子程序流程圖結(jié)論在本系統(tǒng)的設(shè)計(jì)過程中,相互的綜合各個(gè)方面的要求和深入的比較。我主要采用ATMEL公司生產(chǎn)的AT89S51單片機(jī)微處理器,時(shí)鐘控制芯片DS1302,溫度采集的芯片DS18B20和數(shù)碼管等各種器件設(shè)計(jì)出了數(shù)字日歷時(shí)鐘電路,配以程序可以實(shí)現(xiàn)年月日時(shí)分秒的顯示。另外還增加了比較實(shí)用的功能溫度采集和鬧鈴。在數(shù)字日歷時(shí)鐘的設(shè)計(jì)原理中,我的思路是通過單片機(jī)AT89S51來控制DALLAS公司生產(chǎn)的實(shí)時(shí)時(shí)鐘的芯片DS1302作為時(shí)鐘的控制部分。溫度實(shí)時(shí)的采集的芯片可以很方面顯示實(shí)時(shí)的溫度,給人們的出行提供了出門穿衣的一個(gè)參考。數(shù)碼管的優(yōu)點(diǎn)則是需要的驅(qū)動(dòng)電路比較的小,亮度也是比較的大,醒目,適合在各種的場合來確認(rèn)時(shí)間。鬧鈴的功能則是本系統(tǒng)的一大特點(diǎn),可以很方面的提醒人們要干的事情,使人們有條理的安排自己的日常事物。但是本設(shè)計(jì)也存在一些問題,所使用的數(shù)碼管僅僅能顯示一些簡單的字符,畫面不夠美觀和豐富,此設(shè)計(jì)的原理雖然沒有問題,缺點(diǎn)是設(shè)計(jì)出來的產(chǎn)品過于的龐大,不太適合向個(gè)人市場的推廣,不夠的小巧??梢韵蛞恍┕驳膱鏊茝V產(chǎn)品,比如學(xué)校,銀行,醫(yī)院等,這還是一款性價(jià)比的較高的產(chǎn)品,相當(dāng)?shù)木哂幸欢ǖ氖褂脙r(jià)值。致謝大四的下學(xué)期開始,我們都即將要畢業(yè)了。最后的工作就是要把畢業(yè)設(shè)計(jì)做好,可是大四的下學(xué)期的事情也是比較多,找工作,考研等其他的繁瑣事。不過需要自己做的事情必須是自己一定做的,慢慢的完成自己的任務(wù),我是考研一族,不過在馮老師的幫助下,順利的完成了需要自己做的畢業(yè)設(shè)計(jì)。大四的上學(xué)期我們開過一次畢業(yè)設(shè)計(jì)動(dòng)員會(huì),我知道畢業(yè)設(shè)計(jì)的重要性,一定要在思想上重視它。給大學(xué)來一個(gè)圓滿的句號(hào)。所以在畢業(yè)設(shè)計(jì)開始的時(shí)候我都努力的彌補(bǔ)自己知識(shí)的不足,查閱相關(guān)的資料,并實(shí)時(shí)地向馮老師答疑。馮老師也不厭其煩的回答我們在畢業(yè)設(shè)計(jì)中所遇到的問題。經(jīng)過前期的資料查閱,和馮老師的答疑,我終于完成了大學(xué)期間最后的也是最為重要的課外的作業(yè)——畢業(yè)設(shè)計(jì),心里是非常的激動(dòng),在完成畢業(yè)設(shè)計(jì)的過程中,我不斷的學(xué)習(xí)自己的知識(shí)并深入的思考,且又學(xué)到許多其他方面的知識(shí),具體而言即經(jīng)過了對數(shù)字日歷時(shí)鐘的深入的理解和設(shè)計(jì),我加深了單片機(jī)在實(shí)際生活中的應(yīng)用。和自己所學(xué)在學(xué)習(xí)和設(shè)計(jì)的過程,我了解并深入的掌握了Protel原理圖的繪畫。和單片機(jī)的編程方面的技巧和知識(shí),我通過對單片機(jī)的學(xué)習(xí)和了解。加深了對知識(shí)的崇尚,知識(shí)萬歲。在這里我要對在幫助我畢業(yè)設(shè)計(jì)的馮老師,真心的說一聲:“謝謝?!辈坏o予我們寬松的學(xué)習(xí)時(shí)間的掌控,而且對于知識(shí)進(jìn)行嚴(yán)謹(jǐn)?shù)闹v述。另外感謝我的同學(xué)和宿舍的室友們給了我一個(gè)安靜的學(xué)習(xí)環(huán)境和舒適的生活環(huán)境。在我做畢業(yè)設(shè)計(jì)的期間,為我提供了不少必要的資料幫助和支持,在這里,也說一聲“謝謝”。完成了畢業(yè)設(shè)計(jì),在經(jīng)過答辯,我就要離開親愛的母校了,心中的不舍之情與日劇增,能為母校做些事情的機(jī)會(huì)已經(jīng)不多,唯有認(rèn)真完成畢業(yè)設(shè)計(jì),這是我真心的表達(dá)。參考文獻(xiàn)[1]王新穎.單片機(jī)原理及應(yīng)用[M].北京:北京大學(xué)出版社,2021.[2]陳忠平.單片機(jī)基礎(chǔ)與最小系統(tǒng)實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2005.[3]李建忠.單片機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2004.[4]謝維成.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.[5]李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京:北京航空航天大學(xué)出版社,2003.[6]求是科技.單片機(jī)典型設(shè)計(jì)應(yīng)用[M].北京:人民郵電出版社,2006.[7]張毅剛.單片機(jī)原理及應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2001.[8]沈慶陽.8051單片機(jī)實(shí)踐與應(yīng)用[M].北京:清華大學(xué)出版社,2003.[9]侯玉寶.基于Proteus的51系列單片機(jī)設(shè)計(jì)與仿真[M]北京:電子工業(yè)出版社,2002.[10]陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教程[M].北京:清華大學(xué)出版社,2001.[11]郁慧娣.微機(jī)系統(tǒng)及其接口技術(shù)[M].南京:東南大學(xué)出版社,1999.[12]何立民.單片機(jī)高級(jí)教程[M].北京:北京航空航天大學(xué)出版社,2003.[13]王毓銀.?dāng)?shù)字電路邏輯設(shè)計(jì)[M].北京:高等教育出版社,2001.[14]李廣弟.單片機(jī)原理及應(yīng)用[M]北京:北京航空航天大學(xué)出版社,2004.
[15]謝嘉奎.電子線路[M].北京:高等教育出版社,1999.[16]陳小琳.日歷時(shí)鐘程序[J].天津成人高等學(xué)校聯(lián)合學(xué)報(bào),2001.[17]趙巖.實(shí)用多功能電子時(shí)鐘設(shè)計(jì)[J].吉林化工學(xué)院學(xué)報(bào),2001.[18]彭小軍.用單片機(jī)實(shí)現(xiàn)電子時(shí)鐘[J].新余高專學(xué)報(bào),2004.[19]余威明.MCU語音型電子萬年歷的開發(fā)[J].浙江工貿(mào)職業(yè)技術(shù)學(xué)報(bào),2004.[20]賈雪梅.日歷電子鐘的設(shè)計(jì)[J].西安航空高等專科學(xué)校學(xué)報(bào),2004.[21]崔山.2004年山東省大學(xué)生電子設(shè)計(jì)競賽一等獎(jiǎng)[J].校園電子,2005.[22]陳愛萍.利率、漢字、日歷時(shí)鐘電子顯示屏的設(shè)計(jì)[J].基礎(chǔ)自動(dòng)化,2006.[23]周功海.單片機(jī)控電子時(shí)鐘的設(shè)計(jì)[J].煤礦現(xiàn)代化,2007.[24]AtmelMicrocontroller89S51Handbook,2001.[25]DesignCompilerUserGuide,SynopsysInc,2000.附錄1數(shù)字日歷時(shí)鐘程序清單程序1.1主程序//主程序的功能是對子程序進(jìn)行調(diào)用,并設(shè)定顯示延時(shí)時(shí)間#include"reg51.h"http://頭文件;#include"typedef.h"#include"lcd.h"#include"key.h"#include"alarm_clock.h"#include"ds1302.h"sbitDAT=P1^0;//74LS164的A、B腳接單片機(jī)P1.0;sbitCLK=P1^1;//74LS164的CLOCK腳接單片機(jī)P1.1;sbitCalendar=P2^7;//定義日歷顯示按鍵K7接單片機(jī)P2.7;sbitWDZ=P2^6;//定義溫度顯示按鍵K6接單片機(jī)P2.6;sbitFUN=P2^5;//定義功能選擇鍵K5接單片機(jī)P2.5;sbitUP=P2^4;//定義加1鍵K4接單片機(jī)P2.4;sbitDOWN=P2^3;//定義減1鍵K3接單片機(jī)P2.3;sbitEnte_Snooze=P2^2;//定義確認(rèn)/貪睡鍵K2接單片機(jī)P2.2;sbitAlarm=P2^1;//定義鬧鈴開關(guān)鍵K1接單片機(jī)P2.1;sbitbeeper= P2^0;//定義鬧鈴接口P2.0;#defineuintunsignedint#defineucharunsignedchar#definetrue1//定義true=1;#definefalse0//定義false=0;#defineFUNCTION0xDF//定義FUN鍵值為DFH;#defineUP0xEF//定義UP鍵值為EFH;#defineDOWN0xF7 //定義DOWN鍵值為F7H;#defineALARM0xFB//定義ALARM鍵值為FBH;#defineEnte_Snooze0xFB//定義E/S鍵值為BFH;voidkey_task(void);voidprocess(ucharcurrent_key);externbitflash_flag;//定義全局變量(標(biāo)志位);externucharfunction_count;externbitalarm_flag;externbitkey_enable;voiddis();voidsendbyte();void reset_3w();void wbyte_3w(uchar);uchar rbyte_3w();void write_byte(ucharClock_Add,ucharClock_Data);ucharread_byte(uchar);voidwrite_clock_burst();voidds1302_init();voidds1302_task();voidlcd_disp_time1();voiddis_WD();voidds18b20();voidalarm_clock(void);voiddelay(unsignedinttime)//10ms延時(shí){unsignedchara,b,c;for(a=0;a<time;a++)for(b=0;b<10;b++)for(c=0;c<120;c++);}voidmain()//主程序;{ds1302_init();//初始化DS1302; beeper=1;//初始化鬧鈴管腳;while(1)//循環(huán); {key_task();//掃描鍵盤子程序; ds1302_task();//DS1302子程序;ds18b20();//DS18B20子程序;alarm_clock();//鬧鈴子程序; disp_time();//時(shí)間顯示子程序;delay(55);//延時(shí); beeper=1;//鬧鈴管腳置1;}}程序1.2電子時(shí)鐘程序//主要是對時(shí)鐘芯片DS1302初始化;#include"reg51.h"#include"typedef.h"#include"lcd.h"#include"ds1302.h"#include"key.h"void reset_3w();void wbyte_3w(uchar);uchar rbyte_3w();void write_byte(ucharClock_Add,ucharClock_Data);ucharread_byte(uchar);voidwrite_clock_burst();void ds1302_init();voidds1302_task();#defineuintunsignedint#defineucharunsignedchar/*定義初始化時(shí)間*/ucharsec=00;ucharmin=25;ucharhour=14;uchardate=12;ucharmonth=5;ucharyear=8;ucharday_of_week;ucharclk_hour=14;ucharclk_min=28;//-14:28-/*定義寄存器地址*/#defineREAD_SEC_ADD0x81//讀秒寄存器#defineREAD_MIN_ADD0x83//讀分寄存器#defineREAD_HOUR_ADD0x85//讀時(shí)寄存器#defineREAD_DATE_ADD0x87//讀日寄存器#defineREAD_MONTH_ADD0x89//讀月寄存器#defineREAD_DOW_ADD0x8B//讀周寄存器#defineREAD_YEAR_ADD0x8D//年寄存器#defineWRITE_SEC_ADD0x80//寫秒寄存器#defineWRITE_MIN_ADD0x82//寫分寄存器#defineWRITE_HOUR_ADD0x84//寫時(shí)寄存器#defineWRITE_DATE_ADD0x86//寫日寄存器#defineWRITE_MONTH_ADD0x88//寫月寄存器#defineWRITE_DOW_ADD0x8A//寫周寄存器#defineWRITE_YEAR_ADD0x8C//寫年寄存器#defineCLOCK_BURST_ADD0xBE//時(shí)鐘多字節(jié)傳送模式externvoidwrite_clock_burst();externvoid write_byte(ucharClock_Add,ucharClock_Data);voidsendbyte();void reset_3w();void wbyte_3w(uchar);uchar rbyte_3w();void write_byte(ucharClock_Add,ucharClock_Data);ucharread_byte(uchar);voidwrite_clock_burst();void ds1302_init();voidds1302_task();sbitSCLK=P3^5;//定義管腳SCLKsbitIO=P3^6;//定義管腳I/OsbitRST=P3^7;//定義管腳RSTucharsec,min,hour,date,month,year;ucharcodehex2bcd[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, /*00-09*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19, /*10-19*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, /*20-29*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39, /*30-39*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49, /*40-49*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59, /*50-59*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69, /*60-69*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79, /*70-79*/0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, /*80-89*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99, /*90-99*/};ucharcodebcd2hex[]={0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, /*00-09*/10,11,12,13,14,15,16,17,18,19,0,0,0,0,0,0, /*10-19*/20,21,22,23,24,25,26,27,28,29,0,0,0,0,0,0, /*20-29*/30,31,32,33,34,35,36,37,38,39,0,0,0,0,0,0, /*30-39*/40,41,42,43,44,45,46,47,48,49,0,0,0,0,0,0, /*40-49*/50,51,52,53,54,55,56,57,58,59,0,0,0,0,0,0, /*50-59*/60,61,62,63,64,65,66,67,68,69,0,0,0,0,0,0, /*60-69*/70,71,72,73,74,75,76,77,78,79,0,0,0,0,0,0, /*70-79*/80,81,82,83,84,85,86,87,88,89,0,0,0,0,0,0, /*80-89*/90,91,92,93,94,95,96,97,98,99,0,0,0,0,0,0, /*90-99*/};voidreset_3w() //復(fù)位子程序{SCLK=0;RST=0;//復(fù)位DS1302,中止數(shù)據(jù)傳送RST=1;//啟動(dòng)數(shù)據(jù)傳送}voidwbyte_3w(ucharW_Byte) //寫字節(jié)子程序{uchari; for(i=0;i<8;++i) {IO=0; if(W_Byte&0x01) {IO=1;} SCLK=0; SCLK=1; W_Byte>>=1;}}uchar rbyte_3w() //讀字節(jié)子程序{uchari; ucharR_Byte; ucharTmpByte; R_Byte=0x00; IO=1; for(i=0;i<8;i++) {SCLK=1; SCLK=0; TmpByte=(uchar)IO; TmpByte<<=7; R_Byte>>=1; R_Byte|=TmpByte;} returnR_Byte;}void write_byte(ucharClock_Add,ucharClock_Data) {reset_3w(); wbyte_3w(Clock_Add); wbyte_3w(Clock_Data); reset_3w();}voidwrite_clock_burst(){reset_3w();//復(fù)位 wbyte_3w(CLOCK_BURST_ADD); //寫多字節(jié)傳送模式寄存器 wbyte_3w(hex2bcd[sec]);//寫入初始化時(shí)間 wbyte_3w(hex2bcd[min]); wbyte_3w(hex2bcd[hour]); wbyte_3w(hex2bcd[date]); wbyte_3w(hex2bcd[month]); wbyte_3w(hex2bcd[day_of_week]); wbyte_3w(hex2bcd[year]); wbyte_3w(0); /*mustwritecontrolregisterinburstmode*/ reset_3w();}uchar read_byte(ucharClock_Add) //從DS1302讀一個(gè)字節(jié){ucharClock_Data; reset_3w(); wbyte_3w(Clock_Add); Clock_Data=rbyte_3w(); reset_3w(); return(Clock_Data);}void ds1302_init() /*initializetime&datefordefaultvalue*/{reset_3w(); wbyte_3w(0x8e); //寫保護(hù)寄存器 wbyte_3w(0); //去保護(hù) reset_3w(); wbyte_3w(0x90); //寫涓流充電寄存器wbyte_3w(0xab); //開涓流充電,在VCC1和VCC2之間串入2個(gè)二極管,8KΩ電阻 write_clock_burst();//寫入初始化時(shí)間}voidds1302_task(){if(!key_enable) {sec=bcd2hex[read_byte(READ_SEC_ADD)];//讀DS1302sec min=bcd2hex[read_byte(READ_MIN_ADD)];//讀DS1302min hour=bcd2hex[read_byte(READ_HOUR_ADD)];//讀DS1302hour date=bcd2hex[read_byte(READ_DATE_ADD)]; day_of_week=bcd2hex[read_byte(READ_DOW_ADD)]; month=bcd2hex[read_byte(READ_MONTH_ADD)];//讀DS1302month year=bcd2hex[read_byte(READ_YEAR_ADD)];//讀DS1302year}}程序1.3鬧鈴程序主要是設(shè)定鬧鈴的條件#include"reg51.h"#include"typedef.h"#include"lcd.h"#include"alarm_clock.h"#include"key.h"ucharfreq_count;voidalarm_clock(){unsignedchara,b,c; if((alarm_flag==true)&(clk_hour==hour)&(clk_min==min)) {freq_count++; if(freq_count<30) {beeper=false;} for(a=0;a<2;a++)for(b=0;b<10;b++)for(c=0;c<120;c++); if(freq_count>=30) {beeper=true;} if(freq_count==100) freq_count=0;}}程序1.4環(huán)境溫度采集顯示子程序//精度0.1℃#include"reg51.h"#include"intrins.h"http://_nop_();延時(shí)函數(shù)用#defineDisdataP0//段碼輸出口#definediscanP2//掃描口#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^4;//溫度輸入口sbitDAT=P1^0;//74LS164的A、B腳接單片機(jī)P1.0;sbitCLK=P1^1;//74LS164的CLOCK腳接單片機(jī)P1.1;sbitmusic=P2^0;sbithold=P2^6;uinth;uinttemp;unsignedcharpresence,flash=0;ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; //溫度小數(shù)部分用查表法ucharcodetab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00,0x02,0x02};//共陰LED段碼表"0""1""2""3""4""5""6""7""8""9""不亮""-"uintdatatemp_data[2]={0x00,0x00};//讀出溫度暫放uchardisplay[7];uchargsb,led,led1,jj;/*****************延時(shí)函數(shù)*************************/voiddelay_2(uintt){for(;t>0;t--);}/*蜂鳴器驅(qū)動(dòng)函數(shù)beep(){unsignedchari;for(i=0;i<100;i++){music=1;delay_2(20);music=0;delay_2(20);}}/****************DS18B20復(fù)位函數(shù)************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;Delay_2(50);//550μsDQ=1;delay(6);//66μspresence=DQ;//presence=0復(fù)位成功,繼續(xù)下一步}Delay_2(45);//延時(shí)500uspresence=~DQ;}DQ=1;//拉高電平}/****************DS18B20寫命令函數(shù)************************/voidwrite_byte(ucharval) //向1-WIRE總線上寫1個(gè)字節(jié){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出Delay_2(6);//66μsval=val/2;//右移1位}DQ=1;delay(1);}/****************DS18B20讀1字節(jié)函數(shù)************************/ucharread_byte(void)//從總線上取1個(gè)字節(jié){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4μsDQ=1;_nop_();_nop_();_nop_();_nop_();//4μsif(DQ)value|=0x80;delay_2(6);//66μs}DQ=1;return(value);}/****************讀出溫度函數(shù)************************/read_temp(){ow_reset();//總線復(fù)位if(presence==1){beep();flash=1;}//DS18B20不正常,蜂鳴器報(bào)警Delay_2(200);write_byte(0xcc);//發(fā)命令write_byte(0x44);//發(fā)轉(zhuǎn)換命令ow_reset();delay(1);write_byte(0xcc);//發(fā)命令write_byte(0xbe);temp_data[0]=read_byte();//讀溫度值的第字節(jié)temp_data[1]=read_byte();//讀溫度值的高字節(jié)temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//兩字節(jié)合成一個(gè)整型變量。returntemp;//返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)//字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)部分/********************************************************/work_temp(uinttem){ucharn=0;if(tem>6348)//溫度值正負(fù)判斷{tem=65536-tem;n=1;} //負(fù)溫度求補(bǔ)碼,標(biāo)志位置1display[6]=tem&0x0f;//取小數(shù)部分的值display[2]=ditab[display[6]];//存入小數(shù)部分顯示值display[6]=tem>>4; //取中間八位,即整數(shù)部分的值display[0]=13; display[1]=12;display[5]=(display[6])/100;//取百位數(shù)據(jù)暫存display[3]=(display[6])%100;//取后兩位數(shù)據(jù)暫存display[4]=(display[3])/10;//取十位數(shù)據(jù)暫存display[3]=(display[3])%10;/******************符號(hào)位顯示判斷**************************/if(!display[5]){display[5]=10;//最高位為0時(shí)不顯示if(!display[4]){display[4]=10;//次高位為0時(shí)不顯示}}if(n){display[5]=11;//負(fù)溫度時(shí)最高位顯示"}if(display[4]==1){beep();//當(dāng)溫度低于20℃}}disp(){for(gsb=0;gsb<4;gsb++) {led=tab[display[2+gsb]]; for(jj=0;jj<8;jj++) {led1=led&0x1; if(led1==0x1) DAT=1;//DATA=1 else DAT=0;//DATA=0 CLK=0;CLK=1;//clk=0~1 led=led>>1;}}}/****************溫度采集顯示子程序************************/ds18b20(){inti;Disdata=0xff;//初始化端口discan=0xff;hold=1;ow_reset();//開機(jī)先轉(zhuǎn)換一次write_byte(0xcc);//SkipROMwrite_byte(0x44);//發(fā)轉(zhuǎn)換命令while(1){if(flash)Disdata=0x00;//DS18B20不正常關(guān)閉顯示 if(hold==0) for(i=0;;i++) {disp();if(hold==1)break;}else{work_temp(read_temp());//處理溫度數(shù)據(jù) disp(); }//顯示溫度值 Delay_2(100); disp();delay(1000);delay(1000);delay(1000); }}
附錄2數(shù)字日歷時(shí)鐘電路原理圖多路智能競賽搶答器設(shè)計(jì)摘要搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競賽場合。在競賽、文體娛樂活動(dòng)(搶答活動(dòng))中,能準(zhǔn)確、公正、直觀地判斷出搶答者的機(jī)器。通過搶答者的指示燈顯示、數(shù)碼顯示和警示顯示等手段指示出第一搶答者。搶答器多向著數(shù)字智能化發(fā)展。數(shù)字搶答器由主體電路與擴(kuò)展電路兩大部分組成:優(yōu)先編碼電路、鎖存器、譯碼電路將輸入信號(hào)顯示;用控制電路和開關(guān)啟動(dòng)報(bào)警電路,以上兩部分組成主體電路;通過定時(shí)電路和譯碼電路將脈沖信號(hào)在顯示器上輸出實(shí)現(xiàn)計(jì)時(shí)功能,構(gòu)成擴(kuò)展電路。搶答器除具有基本的搶答功能外,還具有定時(shí)、計(jì)時(shí)和報(bào)警多重功能。主持人通過時(shí)間預(yù)設(shè)開關(guān)預(yù)設(shè)供搶答的時(shí)間,系統(tǒng)將完成自動(dòng)倒計(jì)時(shí)。關(guān)鍵字:搶答器鎖存器報(bào)警電路譯碼電路AbstractViestoanswerfirstdeviceasatool,hasbeenwidelyappliedinallkindsofintelligenceandknowledgecompetitionsituation.Inthecompetition,entertainmentactivities(viestoanswerfirstactivities),canaccurate,objective,intuitivetodiagnosetheviestoanswerfirstthemachine.Throughthedisplay,theindicatorofviestoanswerfirstdigitaldisplayandalarmdisplay,andothermeanstoindicatethefirstviestoanswerfirst.Themoretowarddigitalintelligentviestoanswerfirst.Themaincircuitbydigitalviestoanswerfirstandexpandingthecircuittwomaincomponents:prioritycodingcircuit,latches,decodercircuitwillinputsignaldisplay;Usethecontrolcircuitandtheswitchalarmcircuit,theabovetwopartssubjectcircuit;Wheninthecircuitanddecodethecircuitwillpulsesignalonadisplayoutputoftimingfunction,constituteexpansioncircuit.Inadditiontobasictheviestoanswerfirstviestoanswerfirst
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人自建房購房合同標(biāo)準(zhǔn)版本(2篇)
- 咖啡廳裝修貸款合同樣本
- 杭州市通訊市場租賃合同
- 博覽會(huì)裝修合同
- 隧道修復(fù)安全施工方案
- 家庭住宅裝修合同范文示例
- 路基基層施工方案
- 高架橋?yàn)r青噴涂施工方案
- 硅鈣板集成吊頂施工方案
- 國際貨物運(yùn)輸委托代理合同(中英文對照)全套
- 全面新編部編版四年級(jí)下冊語文教材解讀分析
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- 三年級(jí)上冊脫式計(jì)算100題及答案
- VDA6.3 2023過程審核教材
- 烹飪實(shí)訓(xùn)室安全隱患分析報(bào)告
- 《金屬加工的基礎(chǔ)》課件
- 運(yùn)輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
- 體驗(yàn)式沙盤-收獲季節(jié)
- 老年護(hù)理陪護(hù)培訓(xùn)課件
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
評(píng)論
0/150
提交評(píng)論