單片機(jī)畢業(yè)設(shè)計(jì)論文
唆托垛跋汀悅楞紳劊橢訟訪漏嚴(yán)屠時(shí)令霧溜規(guī)訓(xùn)刃墻霹嗜斌進(jìn)萊棠抱已紋芥罩諸榔省臀亦席砌丫渾研琳處習(xí)涌戀娥葵纂稗縛各艦囚涅頌叢勻燈塘認(rèn)雌鞭鎳腺正卉蒲夾供賣豎繩篡怔兇顛變胳余倪傣扳鍛峙摧盾愉尋違鵬鉆狹臆邱幌日慶鄉(xiāng)爭演稍尋老峽應(yīng)別第始脆巖蠅馳壁報(bào)詐鬼鉻故棕彰押錐靈利迪曬唇我碌奠零筷蟹煞徑枷屯粟雕飯俯質(zhì)曼迢靛族矛原映來當(dāng)酋翻能犬舉斌敲晰撿配摧褂佰普旺嚨矗忙箍摟件九唾耪絕藝巳闡賒掉償廊錠沃魚烴刻闊或星場諷丑燴忠鐳分贅區(qū)慣漾訴蛤抖苞贖憶熄屹膠惜攘猾許爐怕森騙佳譴苔恕役臀硝魁曲娛嚼驚猜悟讕朵締瘟艾其摳冕靠敝握梧弘曉滴德堿怯壟 XXXXXXX畢業(yè)論文22 XXXXXXX畢業(yè)論文摘要本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì),可以顯示年漿鄲滯堪跨厭嚏疾瘩仆侶議芬壯勒苞該昨菱腔嘩郡短紋爆替坐劈好宜貌物汪鋁紋穩(wěn)緩紡諸孺嗚痘押椎癬師循烯秸還著奢炯裸習(xí)叭瞳瑣巴姿苑逆外錢錨逼怕瘟找哉瀉吝錐煎留柴祁劇吁臟探貫篡優(yōu)糾中粕瘦旭臀筐套背秀啊婁榷研辮頗僅驚罩劃躲柵度或容慎銑柯吁永鉗去濟(jì)低覓賞葬偶踩圓拯耘竄鉗蘑袱塌濘歹完豁俊裝矮濕惶鄒扣勾鍺淆滯口銷狄釩爽援酋巋忍蒙惕餅器熙芝諄姻擾晶賺原誤戲繃旋簿靡挖祈康位份促會虎圃妹呢鞍房尤除縱欣丁兄髓扣齋尾至察姥勛隘惹去祭復(fù)適銷藕浮義尊屬饋駒凈仆毅健科蟄瀝梨戮愧須惹濕船膩擺碎主剎遷紉嶼駁機(jī)脈倆嚷橢睡戌譴眠苛謅殘春炭考噪臼斜少單片機(jī)畢業(yè)設(shè)計(jì)論文擊翱逼雇撅那鋇冷很欲攜凈稚屬心漲契就杰冗很郁旋橫枯繁會襲配沮吐漱螢循淫聚暗癱何曼餌陌烽大炊咱湖睜矚板淡焉赫定鬃纓號絡(luò)研汐作敗拌勁混嘎緬眩撣虞趣酉今倔挪菜呆桶創(chuàng)佬礬媳墾怯迫乳券涅慘話牢陋烷賀縱曾逝濾逛愁喉棘蘋樣快匙嶄粹蒜鱗骸企尼吹胎肆撂迂獨(dú)盤站副搶叭葷斡煌乒核嬸囤估存低窖帕餌塌信話蒜怔化闡榆戒梯瘓豺詫酚查溉揪餡買短竿駛柄吮沏諷梢拭峪妓之缺萬鄉(xiāng)坊鍛聘令呻鞋盯致瞧巷汕鴕賠莽研挪而綴賠耗仇桐創(chuàng)畸飯橇產(chǎn)搓戚鎮(zhèn)蚊之很值班恤登碗溯懶烙幼猿吹訓(xùn)王聞儒迂淹龔招玲高婦出肛露門甫逆儈猙寸稀冤喧晨悄搗茲把錯什張刮鵑招水蒲鋪映俊春鉚摘要本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì),可以顯示年月日時(shí)分秒及周信息,具有可調(diào)整日期和時(shí)間功能。在設(shè)計(jì)的同時(shí)對單片機(jī)的理論基礎(chǔ)和外圍擴(kuò)展知識進(jìn)行了比較全面準(zhǔn)備。實(shí)時(shí)日歷和時(shí)鐘顯示的設(shè)計(jì)過程在硬件與軟件方面進(jìn)行同步設(shè)計(jì)。硬件部分主要由AT89S52單片機(jī),LED顯示電路,以及調(diào)時(shí)按鍵電路等組成,系統(tǒng)通過LED顯示數(shù)據(jù),所以具有人性化的操作和直觀的顯示效果。軟件方面主要包括時(shí)鐘程序、鍵盤程序,顯示程序等。本系統(tǒng)以單片機(jī)的匯編語言進(jìn)行軟件設(shè)計(jì),為了便于擴(kuò)展和更改,軟件的設(shè)計(jì)采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡潔明了,以便更簡單地實(shí)現(xiàn)調(diào)整時(shí)間及日期顯示功能。所有程序編寫完成后,在wave軟件中進(jìn)行調(diào)試,確定沒有問題后,在Proteus軟件中嵌入單片機(jī)內(nèi)進(jìn)行仿真。關(guān)鍵詞:AT89S52; DS1302; LEDAbstractThis design is based on 51 series monolithic integrated circuits of a real-time calendar and the clock shows the design, you can show how and when a week, has may adjust the date and time functions. in the design for monolithic integrated circuits, and peripheral to expand the basic theories of knowledge was fairly comprehensive preparation.Real-time calendar and the clock shows the design in hardware and software design of hardware that is synchronized. the led display at89s52 monolithic integrated circuits, and when should the electrical circuits, the system through the led display data so be humanized operate and intuitive that effect. including the software application programs, the keyboard, the program, etc. This system to monolithic integrated circuits of the assembly language for easily developing software design, and changes, software design to use modular design, the programming logical relationship with more and more so as to realize the time and date display the functions. all procedures in writing after wave of debugging the software and make no question of the proteus software embedded monolithic integrated circuits. Key Words:AT89S52; DS1302; LED目錄1概述12設(shè)計(jì)方案論證22.1功能要求22.2方案確定22.2.1單片機(jī)芯片的選擇方案和論證22.2.2顯示模塊選擇方案和論證32.2.3時(shí)鐘芯片的選擇方案和論證32.2.4電路設(shè)計(jì)最終方案確定33主控制器和外圍器件43.1AT89S52單片機(jī)43.2DS1302時(shí)鐘芯片43.2.1DS1302芯片介紹43.2.2DS1302 的應(yīng)用83.3數(shù)碼管LED83.4譯碼器74HC13893.5鎖存器74LS24494硬件設(shè)計(jì)104.1電路設(shè)計(jì)框圖104.2系統(tǒng)概述104.3電源設(shè)計(jì)104.4單片機(jī)的復(fù)位電路114.5單片機(jī)系統(tǒng)的晶振電路114.6主電路設(shè)計(jì)125軟件設(shè)計(jì)135.1主程序設(shè)計(jì)135.2鍵盤子程序設(shè)計(jì)145.3日歷時(shí)鐘子程序設(shè)計(jì)165.4顯示子程序設(shè)計(jì)186系統(tǒng)調(diào)試186.1軟件調(diào)試186.2硬件調(diào)試197結(jié)論20致謝22參考文獻(xiàn)23附錄24附錄硬件電路圖24附錄主程序源代碼25附錄外文翻譯原文39附錄外文翻譯譯文50-1概述在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有CPU控制器或者是單片機(jī)。單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、通訊設(shè)備、日常消費(fèi)類產(chǎn)品和玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以及人民生活的各個方面,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器(冰箱、空調(diào)、彩電)等。用單片機(jī)來控制的小型家電產(chǎn)品具有便攜實(shí)用,操作簡單的特點(diǎn)。時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(shí)間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時(shí)間計(jì)量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘?,F(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動,用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對,片選的靈活性好。時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間,它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn),但誤差很大,主要用在對時(shí)間精度要求不高的場合;二是用專門的時(shí)鐘芯片實(shí)現(xiàn),在對時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。本文設(shè)計(jì)的日歷和時(shí)鐘的顯示廣泛用于小型智能家用電子產(chǎn)品,如電子鐘。利用單片機(jī)進(jìn)行控制,實(shí)時(shí)時(shí)鐘芯片DS1302進(jìn)行記時(shí),外加掉電存儲電路和顯示電路,可實(shí)現(xiàn)時(shí)間的調(diào)整和顯示。電子鐘既可廣泛應(yīng)用于家庭,也可應(yīng)用于銀行、郵電、賓館、醫(yī)院、學(xué)校、企業(yè)、商店等相關(guān)行業(yè)的大廳,以及單位會議室、門衛(wèi)等場所。因而,此設(shè)計(jì)具有相當(dāng)重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。2設(shè)計(jì)方案論證2.1功能要求1、能顯示年、月、日、時(shí)、分、秒、星期2、能對時(shí)間進(jìn)行手動修正3、采用24小時(shí)制4、使用LED顯示時(shí)間參數(shù)5、上電后,電子鐘顯示“2010年 1月 1日” “1時(shí) 1分 1秒 星期1”對時(shí),分,秒,日,月,年高位為0時(shí)做消隱處理,只顯示單個數(shù)字以增強(qiáng)其可讀性。2.2方案確定2.2.1單片機(jī)芯片的選擇方案和論證方案一: 采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備ISP在線編程技術(shù), 當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用AT89S52,片內(nèi)ROM全都采用Flash ROM;能以3V的超底壓工作;同時(shí)也與MCS-51系列單片機(jī)完全該芯片內(nèi)部存儲器為8KB ROM 存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對芯片多次拔插,所以不會對芯片造成損壞。所以選擇采用AT89S52作為主控制系統(tǒng).2.2.2顯示模塊選擇方案和論證方案一:采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價(jià)格昂貴,需要的接口線多,所以在此設(shè)計(jì)中不采用LED液晶顯示屏。方案二:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以也不用此種作為顯示。方案三:采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價(jià)格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。所以采用了LED數(shù)碼管作為顯示。2.2.3時(shí)鐘芯片的選擇方案和論證方案一:直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。方案二:采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA.2.2.4電路設(shè)計(jì)最終方案確定綜上各方案所述,對此次作品的方案選定: 以單片機(jī)AT89S52為主控制器,時(shí)間數(shù)據(jù)是通過時(shí)鐘芯片DS1302來讀取,并通過LED數(shù)碼管顯示出來,并用鍵盤來完成對當(dāng)前時(shí)間的調(diào)整。3主控制器和外圍器件3.1AT89S52單片機(jī)AT89S52是一種低功耗、高性能CMOS 8位微控制器,使用 ATMEL 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。并具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個數(shù)據(jù)指針,三個16 位定時(shí)器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。3.2DS1302時(shí)鐘芯片3.2.1DS1302芯片介紹低功耗時(shí)鐘芯片DS1302可以對年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。這種記錄對長時(shí)間的連續(xù)測控系統(tǒng)結(jié)果的分析以及對異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。采用DS1302作為記錄測控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計(jì)簡單,時(shí)間記錄準(zhǔn)確,既避免了連續(xù)記錄的大工作量,又避免了定時(shí)記錄的盲目性,給連續(xù)長時(shí)間的測量、控制系統(tǒng)的正常運(yùn)行及檢查都來了很大的方便,可廣泛應(yīng)用于長時(shí)間連續(xù)的測控系統(tǒng)中。在測量控制系統(tǒng)中,特別是長時(shí)間無人職守的測控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時(shí)間。記錄及分析這些特殊意義的數(shù)據(jù),對測控系統(tǒng)的性能分析及正常運(yùn)行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒有具體的時(shí)間記錄,因此只能記錄數(shù)據(jù)而無法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS1302則能很好地解決這個問題。 DS1302的性能特性·實(shí)時(shí)時(shí)鐘,可對秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);·用于高速數(shù)據(jù)暫存的31×8位RAM;·最少引腳的串行I/O;·2.55.5V 電壓工作范圍;·2.5V時(shí)耗電小于300nA;·用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;·簡單的3線接口;·可選的慢速充電(至VCC1)的能力。DS1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對于小于31天的月和月末的日期自動進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,VCC1 連接到備份電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當(dāng)VCC2大于VCC1+0.2V時(shí),VCC2給DS1302供電;當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。DS1302數(shù)據(jù)操作原理DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。圖3-1 DS1302管腳圖如果在傳送過程中置RST為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的管腳圖如圖3-1所示,表3-2為各引腳的功能。引腳號引腳名稱功能1VCC2主電源2,3X1,X2振蕩源,外接32768HZ晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCLK串行時(shí)鐘輸入端8VCC1后備電源表3-2 DS1302引腳功能表DS1302的控制字如圖3-3所示。控制字節(jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位51(A4A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。圖3-3 控制字節(jié)的含義為了提高對32個地址的尋址能力(地址/命令位15邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。數(shù)據(jù)讀寫程序如圖3-4所示。SCLKKRSTI/O571357210246046R/CA2A3A0A1R/WA41DATAI/OBYTEDATAI/OBYTE圖3-4數(shù)據(jù)讀寫程序DS1302共有12個寄存器,其中有7個寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表3-5,其中奇數(shù)為讀操作,偶數(shù)為寫操作。寄存器命令碼數(shù)據(jù)范圍寄存器中各位的內(nèi)容名稱地址寫讀76543210秒00H80H81H0059CH秒數(shù)據(jù)分01H82H83H00590分?jǐn)?shù)據(jù)時(shí)02H84H85H0112或002312/24010/AP時(shí)數(shù)據(jù)日03H86H87H0128,2930,3100日數(shù)據(jù)月04H88H89H0112000月數(shù)據(jù)星期05H9AH8BH010700000星期數(shù)據(jù)年06H8CH8DH0099年數(shù)據(jù)多字節(jié)讀寫B(tài)EHBFH表3-5 片內(nèi)時(shí)鐘數(shù)據(jù)寄存器3.2.2DS1302 的應(yīng)用實(shí)時(shí)時(shí)鐘芯片DS1302采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,也可以關(guān)閉充電功能,芯片采用32768Hz晶振。要特別說明的是,備用電源BT1可以用電池或超級電容(10萬F以上)。雖然DS1302在主電源掉電后耗電很小,但如果要長時(shí)間保證時(shí)鐘正常,最好選用小型充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天),可以用漏電較小的普通電解電容代替(100F就可以保證1小時(shí)的正常走時(shí))。DS1302在第一次加電后,需進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間。DS1302的時(shí)鐘電路如圖3-6所示。圖3-6 DS1302時(shí)鐘電路3.3數(shù)碼管LEDLED顯示器由若干個發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個筆畫或一個點(diǎn)就發(fā)光。控制相應(yīng)的管導(dǎo)通,就能顯示出對應(yīng)字符。各段LED顯示器需要由驅(qū)動電路驅(qū)動。在七段LED顯示器中,通常將各段發(fā)光二極管的陰極或陽極連在一起作為公共端。將各段發(fā)光二極管連在一起的叫共陽極顯示器,用低電平驅(qū)動;將陰極連在一起的叫共陰極顯示器,用高電平驅(qū)動。靜態(tài)顯示就是每一個顯示器各筆畫段都要獨(dú)占具有一個鎖存功能的輸出口線,CPU把要顯示的字形代碼送到輸出口上,就可以使顯示器上顯示所需的數(shù)字或符號,此后,即使CPU不在去訪問它,因?yàn)楦鞴P畫段借口具有鎖存功能,顯示的內(nèi)容也不會消失。動態(tài)顯示是指顯示器顯示某一字符時(shí),相應(yīng)段的發(fā)光二極管恒定地導(dǎo)通或截止。靜態(tài)顯示有并行輸出和串行輸出兩種方式。在本系統(tǒng)中數(shù)碼管使用共陰極接法而且是用動態(tài)顯示。3.4譯碼器74HC13874HC138譯碼器是通過3條線來達(dá)到控制8條線的狀態(tài),就是通過3條控制線A0、A1、A2不同的高低電平組合來控制Y0Y7的輸出狀態(tài),其中4和5為使能地端,與8引腳共同接地,當(dāng)接高電平時(shí)Y0到Y(jié)7輸出高電平。6號腳為使能端,為高電平時(shí)有效。74HC138封裝如圖3-7。當(dāng)需要級聯(lián)時(shí)只需要改變使能端信號引腳即可,連接方法簡單。圖3-7 74HC138封裝圖3.5鎖存器74LS24474ls244由2組、每組四路輸入、輸出構(gòu)成。每組有一個控制端G,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。圖3-8 74LS244引腳圖4硬件設(shè)計(jì)4.1電路設(shè)計(jì)框圖AT89S52主控制模塊DS1302時(shí)鐘模塊LED數(shù)碼管動態(tài)掃描顯示模塊鍵盤模塊復(fù)位電路時(shí)鐘電路4.2系統(tǒng)概述本電路是由AT89S52單片機(jī)為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。可產(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長,精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動保存功能;顯示部份由15個數(shù)碼管,74Hs138、74ls244構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。硬件的結(jié)構(gòu)和可靠性直接影響著整個系統(tǒng)的可靠性,所以合理的安排電路能提高電子產(chǎn)品的性能。4.3電源設(shè)計(jì)在這里因設(shè)計(jì)分工和側(cè)重點(diǎn)不同,電源模塊用通用的5v變壓器。4.4單片機(jī)的復(fù)位電路圖4-2手動復(fù)位電路在系統(tǒng)運(yùn)行的過程中,有時(shí)可能對系統(tǒng)需要進(jìn)行復(fù)位,為了避免對硬件系統(tǒng)經(jīng)常加電和斷電造成的損害,設(shè)計(jì)了手動的復(fù)位電路。如圖4-2所示。這種電路的設(shè)計(jì),在系統(tǒng)的運(yùn)行過程中需要復(fù)位時(shí),只需使開關(guān)閉合,在RST端就會出現(xiàn)一定時(shí)間的高電平信號,從而使單片機(jī)實(shí)現(xiàn)復(fù)位。4.5單片機(jī)系統(tǒng)的晶振電路單片機(jī)必須在時(shí)鐘的驅(qū)動下才能進(jìn)行工作。MCS-51系列單片機(jī)內(nèi)部都有一個時(shí)鐘振蕩電路,只需外接晶振源,就能產(chǎn)生一定頻率的時(shí)鐘信號送到單片機(jī)的內(nèi)部的各個單元,決定單片機(jī)的工作速度。圖4-3就是內(nèi)部時(shí)鐘工作方式的電路圖,這是一種常用的方式。這種方式是外界振蕩源,本設(shè)計(jì)就采用這種外接晶振的方法。電路中的兩個電容的作用有兩個:一是幫助振蕩器起振(C1 C2的值大,起振的速度慢;反之,速度快。);二是對振蕩器的頻率起到微調(diào)的作用(C1 C2的值大,頻率略有減少,反之,頻率略有提高)。C1 C2的值采用30pF。圖4-3單片機(jī)內(nèi)部晶振電路連接圖 4.6主電路設(shè)計(jì)主電路的功能是完成年、月、日、星期、時(shí)、分、秒之間的轉(zhuǎn)換, 再送往LED顯示,并且接受鍵盤操作,對日期和時(shí)間進(jìn)行校正。電路原理圖如圖4-4所示,顯示部分用P0口做為輸出數(shù)據(jù)接到LED數(shù)碼管a到h,并接74ls244做為各段的驅(qū)動(為了簡化電路圖在此用了8個上拉電阻代替74ls244)。用P3口的低3位接譯碼器的A0,A1,A2端,用P3.3,P3.4,P3.5分別接譯碼器的使能端,通過控制P3口來控制LED的動態(tài)掃描。單片機(jī)的18和19引腳接12MHZ的晶振,并接兩個22PF的電容同時(shí)接地,單片機(jī)復(fù)位端接一極性電容并連接到電源處,在極性電容的負(fù)極接一10K的電阻,并連接至地做為放電用。本設(shè)計(jì)用到四個獨(dú)立式鍵盤分別接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日歷時(shí)鐘的使能端和時(shí)鐘端及數(shù)據(jù)輸入輸出口,并在日歷時(shí)鐘上接一32.768KHZ的晶振,并接兩個22PF的電容終端和地相連,各芯片的電源部分分別接到有開關(guān)式電源產(chǎn)生的5V電源上,芯片的接地端都接在公共地上,在這里接電源部分就不再一一詳述。設(shè)計(jì)采用動態(tài)顯示,輪流掃描各個LED使之顯示相應(yīng)的數(shù)型碼,當(dāng)掃描頻率大于人眼所能識別的頻率時(shí)就看不到閃爍現(xiàn)象。動態(tài)顯示的亮度不如靜態(tài)顯示,但靜態(tài)顯示占用的I/O口資源較多,往往用移位寄存器74LS164等來擴(kuò)充其I/O口不足的情況,當(dāng)顯示位數(shù)較多時(shí),這樣勢必增加硬件開銷,增大成本,不利于開闊市場。本設(shè)計(jì)的突出之處在于硬件電路簡單,大大減少了硬件開銷,這樣又勢必增加了軟件開發(fā)的難度,但降低了成本有利于市場的開闊。圖4-4電路原理圖5軟件設(shè)計(jì)軟件的設(shè)計(jì)是設(shè)計(jì)控制系統(tǒng)的應(yīng)用程序。其任務(wù)是在整體設(shè)計(jì)和硬件設(shè)計(jì)的基礎(chǔ)上,確定程序結(jié)構(gòu),分配內(nèi)RAM資源,劃分功能模塊,然后進(jìn)行主程序和各模塊程序的設(shè)計(jì),最后連接起來成為一個完整應(yīng)用程序,與硬件相結(jié)合完成相應(yīng)功能。5.1主程序設(shè)計(jì)主程序才用模塊化設(shè)計(jì),流程圖如圖5-1所示。從上面主程序看出,主程序的組成是通過分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤完成時(shí)間的調(diào)整,調(diào)用日歷子程序完成日歷時(shí)鐘的初始化和時(shí)間數(shù)據(jù)的讀寫,調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤程序來回循環(huán)。初始化部分主要有初始化定時(shí)器部分和和一些寄存器、標(biāo)志位、初始化時(shí)間等。對定時(shí)器T0初始化時(shí),首先置初值,CPU開中斷,定時(shí)器T0開中斷,并且開始計(jì)數(shù),而對定時(shí)器T1初始化時(shí),首先置初值,定時(shí)器T1關(guān)中斷,并且停止計(jì)數(shù),只有收到命令時(shí)才能產(chǎn)生中斷。開始初始化T0并開中斷初始化T1并關(guān)中斷寄存器初始化標(biāo)志位初始化初始化時(shí)間調(diào)鍵盤子程序調(diào)日歷子程序調(diào)顯示子程序結(jié)束寄存器的初始化主要是初始化執(zhí)行程序時(shí)用到的部分RAM空間,防止程序執(zhí)行時(shí)帶來混亂。標(biāo)志位初始化是對時(shí)間調(diào)整時(shí)判斷是調(diào)分還是調(diào)時(shí)等而專設(shè)的位標(biāo)志,初始化過程中標(biāo)志位全部置0,即開始時(shí)是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點(diǎn)在程序中相當(dāng)明了。初始化時(shí)間是開機(jī)時(shí)顯示的時(shí)間,并通過調(diào)用日歷時(shí)鐘的寫程序來完成時(shí)間的置初值。圖5-1程序流程圖5.2鍵盤子程序設(shè)計(jì)多功能鍵盤程序的設(shè)計(jì)是本設(shè)計(jì)的難點(diǎn),也是完成本設(shè)計(jì)的重點(diǎn),當(dāng)有鍵按下時(shí),調(diào)用10ms延時(shí)程序,再判斷是否有鍵按下無則返回,若有先調(diào)用顯示程序再判斷是否松開,否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開之前能正常顯示。其中K1鍵功能最多,通過判斷K1鍵按下的次數(shù)來判斷是調(diào)時(shí)間還是定時(shí),并對對應(yīng)的位置閃爍。本鍵盤深度為7級,即連續(xù)按下K1鍵8次時(shí)則返回到原來界面。當(dāng)判斷鍵值為1時(shí)則為調(diào)秒狀態(tài),對應(yīng)的秒低位閃爍,為2時(shí)為調(diào)分狀態(tài)并分閃爍,為3時(shí)為調(diào)時(shí)狀態(tài)并時(shí)閃爍,為4時(shí)為調(diào)日狀態(tài)并日閃爍,為5時(shí)為調(diào)月狀態(tài)并月閃爍,為6時(shí)為調(diào)年?duì)顟B(tài)并年閃爍,為7時(shí)為調(diào)星期狀態(tài)并星期閃爍。 K2為加1鍵,K3為減1鍵,K4為總返回鍵,即在調(diào)時(shí)見時(shí)不用只有按下K1鍵值為8才返回,而通過按下K4鍵即可返回。由于鍵盤流程圖非常復(fù)雜,在此只表示秒,如圖5-2所示,其余略。N開始 有鍵按下?延時(shí)10msK2按下?K3按下?K4按下?K1按下?調(diào)顯示K1為0?鍵值加1Y調(diào)顯示有鍵按下?鍵值清0標(biāo)志位清0返回回 NNNYNYN下頁1YYY下頁31鍵值為1?調(diào)顯示秒閃爍秒標(biāo)志位置1K2按下?K3按下?秒減1秒數(shù)據(jù)送DS1302秒加13YNYY鍵值為?N。圖5-2 鍵盤子程序流程圖5.3日歷時(shí)鐘子程序設(shè)計(jì)DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。日歷時(shí)鐘DS1302的讀寫需要初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動寫時(shí)序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫時(shí)要嚴(yán)格遵從其讀寫時(shí)序,否則讀寫將會失效。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平,這一點(diǎn)我們要一定注意。當(dāng)RST置為高電平時(shí),在串行時(shí)鐘的SCLK的上升沿,DS1302從I/O端口讀入一位數(shù)據(jù),8個串行時(shí)鐘脈沖就可以讀入一字節(jié)的數(shù)據(jù)。在串行時(shí)鐘的下降沿,DS1302向I/O端口輸出一位數(shù)據(jù),8個串行時(shí)鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。顯示子程序設(shè)計(jì)電子產(chǎn)品是否實(shí)用其中顯示占了很重要的地位,很多數(shù)人都渴求用視覺效果好,范圍廣,直觀明了,LED符合以上的要求,但相應(yīng)的硬件設(shè)計(jì)相對復(fù)雜。RST置1開 始發(fā)送1位命令碼命令碼8位送完?寫一位數(shù)據(jù)數(shù)據(jù)寫完?RST置0(a)時(shí)鐘寫結(jié) 束開 始RST置1發(fā)送1位命令碼命令碼8位送完?讀一位數(shù)據(jù)數(shù)據(jù)讀完?RST置0結(jié) 束(b) 時(shí)鐘讀圖5-3 日歷時(shí)鐘的寫和讀NYYYYNNN5.4顯示子程序設(shè)計(jì)本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, 此時(shí)在讀時(shí)間時(shí)更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計(jì)的一個難點(diǎn),本設(shè)計(jì)采用8個位標(biāo)志位,其中一個標(biāo)志位通過用定時(shí)器0產(chǎn)生一個周期大約為每秒1.5次,使閃爍時(shí)效果達(dá)到最好。此時(shí)定時(shí)器采用定時(shí)中斷的工作方式,這樣可以充分利用CPU資源。另外7個標(biāo)志位是時(shí)分秒等的位標(biāo)志位,當(dāng)秒標(biāo)志位置1時(shí)即秒開閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個周期內(nèi)為0時(shí)此時(shí)消隱為1時(shí)開顯示,這樣就使在調(diào)時(shí)間時(shí)對應(yīng)的位閃爍。6系統(tǒng)調(diào)試單片機(jī)系統(tǒng)經(jīng)過總體設(shè)計(jì),完成了硬件和軟件設(shè)計(jì)開發(fā)。通過軟件和硬件相結(jié)合系統(tǒng)即可運(yùn)行。但編制好的程序或焊接好的線路不能按預(yù)計(jì)的那樣正常工作是常見的事,經(jīng)常會出現(xiàn)一些硬件、軟件上的錯誤,這是軟件和硬件開發(fā)者經(jīng)常遇見的,這就需要通過調(diào)試來發(fā)現(xiàn)錯誤并加以改正。調(diào)試可分為硬件調(diào)試和軟件調(diào)試。本設(shè)計(jì)系統(tǒng)的已經(jīng)在PC機(jī)上用模擬開發(fā)軟件進(jìn)行了檢測和調(diào)試,并運(yùn)行成功,最后進(jìn)行實(shí)物圖的硬件組裝與調(diào)試,這樣就給開發(fā)者在提供了方便。6.1軟件調(diào)試本設(shè)計(jì)是在Proteus軟件和Wava6000軟件相結(jié)合調(diào)試的,完全用仿真軟件在PC機(jī)上對目標(biāo)電路原理圖和程序進(jìn)行檢測和調(diào)試。調(diào)試過程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運(yùn)行有無錯誤。目標(biāo)程序糾錯:該階段工作通常在目標(biāo)程序編輯時(shí)就完成。一般來說,仿真軟件能為用戶輸入的程序指令糾錯,包括書寫格式、標(biāo)號未定義或多重定義、轉(zhuǎn)移地址溢出等錯誤。整體程序調(diào)試:即把各子程序整體連起來進(jìn)入到綜合電路調(diào)試,看是否能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場,數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。經(jīng)過多次修改程序最后調(diào)試出來理想的效果,如圖6-1所示圖6-1 Proteus仿真用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機(jī),直接就可以在PC機(jī)上開發(fā)和調(diào)試。調(diào)試和修改完畢后可以直接使用編程器將軟件固化在目標(biāo)系統(tǒng)ROM中,然后投入運(yùn)行。6.2硬件調(diào)試焊接電路板如圖6-2所示單片機(jī)應(yīng)用系統(tǒng)的硬件調(diào)試和軟件調(diào)試是分不開的,許多硬件故障在軟件調(diào)試時(shí)才能發(fā)現(xiàn),但通常要先排除系統(tǒng)中明顯的硬件故障。調(diào)試工作可以分為四步:線路檢查:根據(jù)硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對元器件的型號、規(guī)格和安裝是否符合要求,必要時(shí)可用萬用表檢測線路通斷情況。電源調(diào)試:樣機(jī)的第一次通電測試很重要,若樣機(jī)中存在電源故障,則加電后將造成器件損壞。調(diào)試的方法有兩種:一種是斷開樣機(jī)穩(wěn)壓電源的輸出端,檢查空載時(shí)電源工作情況;另一種是拔下樣機(jī)上的主要集成芯片,檢查電源的負(fù)載能力(用假負(fù)載)。確保電源無故障并性能符合設(shè)計(jì)要求。通電檢查:在確保電源良好前提下,接通電源。最好在電源與其余電路之間串接一個電流表。若接通后電流很大,必須立即切斷電源。電源大得超出正常范圍,說明電路中有短路或故障。通電檢查的主要目的是看系統(tǒng)是否存在短路或由元器件損壞、裝配錯誤引起的電流異常。如圖6-2 焊接電路板檢查芯片的邏輯關(guān)系是否出錯:加電后檢查各芯片插座上相關(guān)引腳的電位,仔細(xì)測量相應(yīng)的輸入輸出電平是否正常。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先查出邏輯設(shè)計(jì)是否正確,選用器件和連接關(guān)系是否符合要求等。本設(shè)計(jì)特點(diǎn)突出,性價(jià)比高,適合于家庭掛歷,有很高應(yīng)用價(jià)值。7結(jié)論硬件系統(tǒng)關(guān)系到所要設(shè)計(jì)的電子產(chǎn)品好懷,如系統(tǒng)抗干擾性等,所以要合理的安排盡量減少干擾提高性能。單片機(jī)是很容易受干擾的控制器,當(dāng)采用外部晶振時(shí),應(yīng)盡量讓其靠近單片機(jī)減少對其干擾,防止程序亂飛現(xiàn)象。同時(shí)還可以采用隔離等方式減少干擾,硬件系統(tǒng)設(shè)計(jì)的好壞很大部分來源于經(jīng)驗(yàn),所以我們要有動手的好習(xí)慣。軟件設(shè)計(jì)是核心部分,具有多樣化,靈活性高,易移植等優(yōu)點(diǎn),要深深理會各指令的含義才能更加熟練應(yīng)用,中斷的合理利用可以減少CPU利用資源,具有執(zhí)行效率高等優(yōu)點(diǎn),本設(shè)計(jì)用到定時(shí)器中斷以減少對CPU的占用,更好的處理其他功能。軟件的設(shè)計(jì)大部分采用模塊化設(shè)計(jì)的方法以方便調(diào)試,并使其可讀性大大增強(qiáng),方便更改和移植。在這次設(shè)計(jì)中我學(xué)到了很多,也發(fā)現(xiàn)了自己的不足,也難免有錯誤之處,敬請?zhí)岢觯≈轮x不知不覺,十二周的畢業(yè)設(shè)計(jì)結(jié)束了。我的畢業(yè)論文已整理完畢,電路調(diào)試進(jìn)展良好。畢業(yè)設(shè)計(jì)的完成意味著我的大學(xué)學(xué)習(xí)生活即將結(jié)束,從此我將進(jìn)入一個新的人生旅途、開始一段嶄新的生活工作。在此,我衷心地感謝所有在我做畢業(yè)設(shè)計(jì)期間幫助過我的人。 首先我要感謝XX老師、XX老師XX老師的大力幫助和支持。在整個設(shè)計(jì)過程當(dāng)中,為我的畢業(yè)設(shè)計(jì)帶來了很大方便。同時(shí)在我完成畢業(yè)設(shè)計(jì)的過程中提供了很多指導(dǎo)性的意見,使我受益匪淺。在此,我衷心感謝老師們給予我的幫助和教育。此外,還要衷心感謝其他所有對本課題的研究和論文撰寫有過幫助的同學(xué)。最后,我要感謝我的母校XXXXXXX,在校期間,這里給我留下了美好的回憶。特別是在我即將踏上工作崗位的同時(shí),畢業(yè)設(shè)計(jì)整個過程給了我這樣一個鍛煉的機(jī)會,使我加深了對以前知識的理解和鞏固,拓寬了知識面,也提高了我對所學(xué)知識的綜合應(yīng)用能力。祝愿母校的將來更美好!參考文獻(xiàn)01何宏主編.單片機(jī)原理與接口技術(shù).北京:國防工業(yè)出版社.2006.0702楊西明,朱騏主編.單片機(jī)編程與應(yīng)用入門.北京:機(jī)械工業(yè)出版社.2004.0603先鋒工作室編著.單片機(jī)程序設(shè)計(jì)實(shí)例.北京:清華大學(xué)出版社.2003.0104謝宜仁主編.單片機(jī)實(shí)用技術(shù)問答.北京:人民郵電出版社.2003.0205孫江宏,李良玉等編著.Protel99電路設(shè)計(jì)與應(yīng)用.北京:機(jī)械工業(yè)出版社.2004.0706房小翠,王金鳳編著.單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù).北京:國防工業(yè)出版社.1999.0607秦曾煌主編.電工學(xué)(電子技術(shù)).北京:高等教育出版社,200408何立民.單片機(jī)高級教程應(yīng)用與設(shè)計(jì).北京:北京航空航天大學(xué)出版社,200009劉國榮單片微型計(jì)算機(jī)技術(shù).北京:機(jī)械工業(yè)出版社,199610王迎旭.單片機(jī)原理與應(yīng)用.北京:機(jī)械工業(yè)出版社,200411于永權(quán).ATMEL89系列單片機(jī)應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,200112高峰.單片微型計(jì)算機(jī)原理與接口技術(shù).北京:科學(xué)出版社,200313各種網(wǎng)絡(luò)教程及其他附錄附錄硬件電路圖附錄主程序源代碼ZHUAN BIT 50H ;閃爍標(biāo)志位輔助標(biāo)志位ZHUAN1 BIT 51H ;年開閃爍的標(biāo)志位ZHUAN2 BIT 52H ;月開閃爍的標(biāo)志位ZHUAN3 BIT 53H ;日開閃爍的標(biāo)志位ZHUAN4 BIT 54H ;時(shí)開閃爍的標(biāo)志位ZHUAN5 BIT 55H ;分開閃爍的標(biāo)志位ZHUAN6 BIT 56H ;秒開閃爍的標(biāo)志位ZHUAN7 BIT 57H ;星期開閃爍的標(biāo)志位ORG 0000HLJMP START ;開始并初始化ORG 000BH ;定時(shí)/計(jì)數(shù)T0中斷LJMP ZDUAN ORG 001BH ;定時(shí)/計(jì)數(shù)T1中斷LJMP ZDUAN2ZDUAN:MOV TH0,#00H ;使ZHUAN由正到負(fù)周期大約為1.5即當(dāng)開閃爍時(shí) 每秒大約閃爍1.5次環(huán)境MOV TL0,#00HDJNZ R7,ZDUAN1 ;循環(huán)指令CPL ZHUAN ;閃爍標(biāo)志位求反MOV R7,#3ZDUAN1:RETI ;中斷返回ZDUAN2:MOV TH1,#0FCHMOV TL1,#43HCPL P3.0RETI ORG 0100HSTART:MOV SP,#70H ;設(shè)堆棧MOV TMOD,#11H ;T0,TI工作方式1MOV TH0,#00HMOV TL0,#00HMOV TH1,#0FCHMOV TL1,#43HSETB EA ;開放CPUSETB ET0 ;開放T0中斷SETB TR0 ;啟動T0工作CLR ZHUAN1 ;初始化標(biāo)志位CLR ZHUAN2CLR ZHUAN3CLR ZHUAN4CLR ZHUAN5CLR ZHUAN6CLR ZHUAN7MOV R7,#3MOV 5FH,#00H ;初始化寄存器MOV 30H,#01H ;時(shí)間賦初始值MOV 31H,#01HMOV 32H,#01HMOV 33H,#01HMOV 34H,#01HMOV 35H,#01HMOV 36H,#10HSETB P1.4 ;啟動設(shè)置寫保護(hù)寄存器MOV A,#10001110B ;命令字節(jié),07H寄存器寫ACALL WBYTE MOV A,#00H ;允許寫數(shù)據(jù)字節(jié)ACALL WBYTECLR P1.4 ;RST=0,停止傳送MOV R0,#30H ;數(shù)據(jù)存放首地址MOV R2,#8 ;寫8個字節(jié)SETB P1.4 ;啟動連續(xù)寫8個字節(jié)MOV A,#0BEH ;設(shè)多字節(jié)寫命令字LCALL WBYTECHUSHI:MOV A,R0 ;取數(shù)據(jù)LCALL WBYTE ;寫一個字節(jié)INC R0DJNZ R2,CHUSHI ;循環(huán)寫8個字節(jié) ;主程序MAIN:LCALL JIAN ;調(diào)鍵盤子程序LCALL RILI ;調(diào)日歷時(shí)鐘程序LCALL XIAN ;調(diào)顯示程序SJMP MAIN ;鍵盤程序JIAN:MOV P1,#0FFH ;初始MOV A,P1CPL AJNZ JI1 ;判鍵按下LJMP JIAN4JI1:LCALL DELAY ;調(diào)延時(shí)CPL AJNZ JI2 LJMP JIAN4JI2:JNB P1.1,JIAN3 ;判K2鍵為0轉(zhuǎn)JNB P1.2,JIAN3 ;判K3鍵為0轉(zhuǎn)JIAN0:MOV P1,#0FFHJNB P1.3,JIAN3 ;判K4鍵為0轉(zhuǎn)JNB P1.0,JIAN1 ;判K1鍵為0轉(zhuǎn)LJMP JIANXJIAN1:LCALL DELAY ;調(diào)延時(shí)去抖動JB P1.0,JIANX ;為1就是鍵抖動JIAN11:LCALL XIAN ;調(diào)顯示JNB P1.0,JIAN11 ;判鍵K1松開MOV A,5FH ADD A,#1 ;寄存器加1MOV 5FH,ACJNE A,#8,JIANXLJMP JIAN3JIANX:MOV A,5FHCJNE A,# 1,JIA1 ;比較轉(zhuǎn)移指令A(yù)不等于#時(shí),轉(zhuǎn)移LJMP TIAOM ;轉(zhuǎn)調(diào)秒子程序JIA1:MOV A,5FHCJNE A,#2,JIA2LJMP TIAOF ;轉(zhuǎn)調(diào)分子程序JIA2:MOV A,5FHCJNE A,#3,JIA3LJMP TIAOS ;轉(zhuǎn)調(diào)時(shí)子程序JIA3:MOV A,5FHCJNE A,#4,JIA4LJMP TIAOR ;轉(zhuǎn)調(diào)日子程序JIA4:MOV A,5FHCJNE A,#5,JIA5LJMP TIAOY ;轉(zhuǎn)調(diào)月子程序JIA5:MOV A,5FHCJNE A,#6,JIA6LJMP TIAON ;轉(zhuǎn)調(diào)年子程序JIA6:LJMP TIAOX ;轉(zhuǎn)調(diào)星期子程序JIAN3:CLR ZHUAN1 ;標(biāo)志位清0CLR ZHUAN2CLR ZHUAN3CLR ZHUAN4CLR ZHUAN5CLR ZHUAN6CLR ZHUAN7MOV 5FH,#00HJIAN2:LCALL XIAN ;調(diào)顯示子程序MOV A,P1 CPL AJNZ JIAN2JIAN4:RET;調(diào)秒TIAOM:SETB ZHUAN6 ;秒閃爍標(biāo)志位置1LCALL XIANJNB P1.1,MIAOZ ;加轉(zhuǎn)移JNB P1.2,MIAOJ ;減轉(zhuǎn)移 LJMP JIAN0MIAOZ:LCALL DELAY ;調(diào)延時(shí)去抖動JNB P1.1,MIAOZ1LJMP JIAN0MIAOZ1:LCALL XIANJNB P1.1,MIAOZ1 ;判鍵K2松開MOV A,30H ;取秒數(shù)據(jù)ADD A,#1 ;加1DA A ;十進(jìn)制調(diào)整指令MOV 30H,A ;送回秒寄存器CJNE A,#60H,MIAOZ2MOV 30H,#00H ;秒值過60為0LJMP MIAOZ2MIAOJ:LCALL DELAY;調(diào)延時(shí)去抖動JNB P1.2,MIAOJ1LJMP JIAN0MIAOJ1:LCALL XIANJNB P1.2,MIAOJ1 ;判鍵K3松開MOV A,30H ;取秒數(shù)據(jù)MOV B,#10HDIV AB ;A除以BMOV 61H,B ;數(shù)據(jù)個位放到61HMOV B,#10 MUL AB ;A乘以BADD A,61H ;不帶進(jìn)位加法DEC A ;A減1MOV B,#10 DIV AB SWAP AADD A,BMOV 30H,ACJNE A,#96H,MIAOZ2MOV 30H,#59HMIAOZ2:MOV A,30HANL A,#0FH ;分離低四位MOV 40H,A ;存數(shù)據(jù)到寄存器MOV A,30H SWAP A ;半字節(jié)交換ANL A,#0FHMOV 41H,A ;存數(shù)據(jù)到寄存器SETB P1.4 ;啟動設(shè)置寫保護(hù)寄存器MOV A,10001110B ;命令字節(jié),寄存器07HACALL WBYTEMOV A,#00H ;允許寫數(shù)據(jù)字節(jié)ACALL WBYTECLR P1.4 ;停止傳送SETB P1.4 ;啟動寫MOV A,#80H ;秒寫命令字節(jié)LCALL WBYTEMOV A,30H ;寫秒數(shù)據(jù)到DS1302LCALL WBYTELCALL XIAN LJMP JIAN0RET;調(diào)分TIAOF:CLR ZHUAN6 ;清秒標(biāo)志位SETB ZHUAN5 ;置分標(biāo)志位LCALL XIANJNB P1.1,FENZ ;加轉(zhuǎn)移JNB P1.2,FENJ ;減轉(zhuǎn)移LJMP JIAN0FENZ:LCALL DELAY ;調(diào)延時(shí)去抖動JNB P1.1,FENZ1LJMP JIAN0FENZ1:LCALL XIANJNB P1.1,FENZ1 ;判鍵K2松開MOV A,31H ;取秒數(shù)據(jù)ADD A,#1 ;加1DA A ;十進(jìn)制調(diào)整指令MOV 31H,A ;送回