學(xué)士單片機電子鐘_第1頁
學(xué)士單片機電子鐘_第2頁
學(xué)士單片機電子鐘_第3頁
學(xué)士單片機電子鐘_第4頁
學(xué)士單片機電子鐘_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計說明書作者:學(xué)號:學(xué)院:系(專業(yè)):題目:基于單片機設(shè)計LED顯示電子鐘指導(dǎo)者:評閱者:蛋2輛0羅1險0緩岡稱年妹捆講6糠玩月受7協(xié)日策畢縣業(yè)啦設(shè)秧計秒中不文咸摘落要蟲基舌于妨單腐片現(xiàn)機適設(shè)確計黃L耕E浴D糟顯融示川電消子溉鐘腔摘私要鋒:未本怖設(shè)叮計怨使椅用播1假2友M革H摟Z咸晶辮振材與度單彩片呢機錢A哥T棚8斬9捐C污5醋1泄相央連肯接流,蜂以逐A惱T外8翼9費C裂5套1疼芯頓片五為翠核耕心良,舊采境用爽動佳態(tài)犯掃酒描身方趙式敬顯很示抓,考通路過剪使涌用鳳該預(yù)單恢片彩機獨,己加禮之巖在盼顯焰示嘆電辭路棒部合分畢使出用鋪7嫌4報0責(zé)7謠驅(qū)丈動由電躬路占,行實廉現(xiàn)雪在滾6起個臘L癥E陷D側(cè)數(shù)鍋碼盜管死上滲顯省示庭日飽期屠、匙時故間停、夠定線時板、螞鬧河鈴硬,慧通餃過寶6互個墓按治鍵能實冒現(xiàn)澡設(shè)派置信日式期壯、汪進鋒行積調(diào)擾時很、倡設(shè)跡定烈鬧攝鈴蓋、猛倒跳計榆時段等即功陡能吸,姓在媽實王現(xiàn)深各訊功墊能汽時樣數(shù)紡碼昆管潤進棗行抵相體應(yīng)擴顯留示盞,蕉鬧豐鈴冷或耽定款時描時妹間染到為時靠蜂雀鳴倘器肌響提,苗按傲下妙鬧敞鈴艦鍵慣或淹定豆時童鍵解時輩,肝聲遲音撒停機止障。襲軟駐件復(fù)部岡分佛用膠匯垂編故實坊現(xiàn)饞,裁分矩為奇顯條示次、質(zhì)延框遲漲、晌調(diào)省時克、蝴鬧怠鈴朽、哨定址時浙、烤調(diào)瓦整瞧日食期婦等五部放分極。錦通躁過窯軟孤硬膏件沃結(jié)染合慘達問到罩最壟終薦目螞的宣。怠關(guān)滅鍵摘詞楊:話果電董子慧鐘律領(lǐng)單液片艘機門遲動鈴態(tài)耕掃汗描膝刑匯臣編拌語橡言凈畢搖業(yè)輪設(shè)遼計每外書文滅摘羽要葬T毀i鞏t蜻l錦e峰巡離赴D麻e滔s沾i健g照n暑曉o斑f京糠L俗E隔D叢姐S企h惹o姜w盤太E段l贈e饅c靜t份r爭i涼c戰(zhàn)流C夫l健o扣c恨k垃捎B匪a躍s傳e耕d代垃o剃n絡(luò)壞扔讀浮顯后仰德烈?guī)r不檔胞貸泰亦趨腔情硬規(guī)宮今鼓競幼M艇i搬c洗r階o川p禍r院o搭c陪e憶s兵s芬o西r仁界界劃恢彼氣制診中核途似驚巴畏A齊b文s姓t乒r壤a須c及t兇T彈h葬i宣s股翅d尸e脂s慚i譯g狐n撿牢u歌s漲e從s距貧a教摧1逗2屬喬M用H只Z紋器c蹲r嫩y床s掛t岸a煮l德時t賢o府洲c促o逆n填n胖e利c拐t糖翻w妻i也t療h杜咐t省h壯e戰(zhàn)室m沈a司c負h舊i舅n母e碗成A與T倒8侍9栽C疼5竭1精,畝功t搖a蒸k徑e臣s存返A(chǔ)含T份8陰9斥C禁5甲1悶認c麻h畫i喚p冰s懷陷a啊s具脅c杏o疼r昏e樣.員竹I襖t永貞a驢d旁o前p碧t短s嚇牽t刻h隙e掩旱d逃y主n惹a享m約i俯c斜米s介t舊a辱t崖e受插o守f飯曉t襪h對e裙垮s曬c僵a蒜n繼n低i旺n末g確抖m知e身t青h旋o伐d隸蔽t糟o崗販s魔h藏o累w寧.傘拆U殖s伴i愚n腐g掘越t民h耀i凝s袖閣M菜C念U查霜a得n爺d謀問7績4瓦0危7日幻d遠r溝i終v芹e寒話e徹l鈔e既c玉t偶r或i逼c蝴鏡c既i云r斬c墻u尋i峽t鞏,畝掏w套e愧爐a器r破e偷肺a胖b喚l寬e腿朗t規(guī)o夸奮s愈h蓄o乞w筋容d劣a恥t繪e哲,猜握t雖i話m域e病,銜主f飄i慚x帖燈t紗h場e復(fù)敗t彩i想m酷e頃,測眼m勢a待k趁e破焰b形e聲l克l貫瞎o專n甜主6嘆央L出E侍D施千f孟i稈g唐u疲r奶e嘩s菊貢t長u觸b挨e活s桃.沈普W蒸e耗剃c文a件n猛類u者s魚e工詞6雅傍k嶄e炎y傾城t荒o膏舒c染o州n去s詞t閱i蹦t漫u驚t眉e猾蹤d拍a律t酸e踐,鉤豬a稅d器j寨u郵s謹t饞躍t泳i耳m教e丟,暫拴e炒n牲a辟c敞t惜害t文h伸e賴匠b懇e摟l芽l攻唯a距n榜d俊感s迅e書t謝騾t愉h透e灶屬c扣o怠u脈n芝t氧d養(yǎng)o葛w仆n課尤t肅i居m朗e堆r紫.潤釀W蔥h禁e守n懇善t糊h高e等琴e青l(xiāng)抖e拾c伐t端r走i雜c拘盜c勾a姿r為r帶y高i寶n鼠g惱通o險u表t胸勉e灶a沒c匯h攪羨f柄u合n攤c氧t匹i閉o以n件,訪貌t麥h睜e嘴率f良i設(shè)g北u騾r天e娃s菜瓶t割u接b壺e襪顫s腔h星o宗w版知t疲h宇e撇借t膜i樸g面h占t大坡f予u脖n卻c帳t搶i紙o榮n鞠盛.宴W省h性e刃n垂棕t惠h望e重何a末l鋼a告r潤m駐蹤c諷l風(fēng)o婆c亦k惹峰a種n顏d患廣t艙h盼e現(xiàn)件c釘o像u篇n剝t尤d蜓o柴w金n稿敗t讓i群m古e起r燕牛w龍e虜r票e捕往r珠e雨a撤c委h黃e龜d久,育抬t歲h醬e旅艷v羨o貝i姜c抬e乞壓b類e捎g笑i仗n耳s吃.初替W邀h永i棗l期e圖靠3鴿史o蜘r鑰霸4午豪i鞏s醋恐p胡r極e方s購s杯e增d吃,宗芝t末h炸e汁燒v返o幫i季c臉e紅百s腎t殿o罷p芒s救.膀向T繳h弱e漸奪s孫o訂f娛t佛w國a絕r跡e無潛p民a磚r男t徑香i涌s浮串r疊e任a渠l旨i樸z劉e愛d窗剩b晶y捎服a陳s隊s特e案m勝b勇l江e隆r煤名l桌a邊n滔g英u紡a辯g梁e學(xué).蠟鄰I揀t點斤w閑a泊s畜窯d時i駐v仰i剃d伐e留d蜘遲i刷n挺t瓣o量宗t籮o醒袋s櫻h括o肉w堡,錦建d予e丈l事a影y級,紡峰a哈d方j(luò)悔u阿s醒t召,湊笑m場a片k余e袋址b癢e化l寇l敢,蜂顯i膠n平類f板i撲x撤e脖d昆向t葡i浸m婦e濾,站彎a乒d峽j婆u眉s評t閘唉d輝a虹t朝e均款e缺t散c芽.椅嚼p喬a頭r瞞t寺.效恢W河e搬妥g饒e析t沿啊t循h(huán)貼e咳脾e狹n谷d染窯p中u挨r桃p盡o行s暗e顯賭c瓣o雹m泉b池i作n井i肺n揚g枕祥t寄h閑e妙取s膨o宅f螺t閱w流a萍r捕e罷料a脫n慰d每冰t看h目e欄忍h宋a著r傷d監(jiān)w適a叛r廟e吵.緒K薄e腳y靜w秤o堪r撈d釣s民:燙妖E鏡l孩e觸c裙t信r謹i得c允限c銅l島o深c布k蛇枕百M須C袖U私照供D逮y途n虜a督m走i夕c跌盲s攏t穿a賺t貧e凝奉s煉c邁a燕n異i屑n抱g梳叔闊a召s褲s察e需m泥b自l簽e靜r岡幣l燦a懷n申g切u篩a梯g恐e姻目鐘笛終錫次HYPERLINK膛1央5HYPERLINK丙1誓5HYPERLINK\l"_Toc263756025"胡6謙.果2另仿漫真車過伸程調(diào):托1兆6HYPERLINK\l"_Toc263756026"狹仿寒真朱圖銅的膀繪敞制譽1萬6HYPERLINK\l"_Toc263756027"球功孟能嬌的訓(xùn)實藥現(xiàn)絮1稅7HYPERLINK\l"_Toc263756028"柳7霧史換實莫際口電玻路奔的貫實全現(xiàn)男1煩8HYPERLINK\l"_Toc263756029"耕8月計確日漁歷部功水能稅的紫實紙現(xiàn)裁2罰0HYPERLINK\l"_Toc263756030"夢9裙疏赤電拘子魔鐘女設(shè)俘計愿中釀遇蘿到金的獲問縣題頑及予其筍解末決朱方都法歲2揮3HYPERLINK\l"_Toc263756031"計結(jié)信論商2果5HYPERLINK\l"_Toc263756032"套參腰考理文誓獻丙2旁6HYPERLINK\l"_Toc263756033"那致瞧謝恩2防8HYPERLINK\l"_Toc263756034"愚附候錄狐A謹抄整張體天電靠路將圖填2想9HYPERLINK\l"_Toc263756035"最附宿錄售B羽慨完耐整淡程般序洋3騰0學(xué)1甚抱轎引羽言林單嚼片許機慢因伸將綠其教主奸要袍組泊成圈部損分燭集淹成值在賭一暈個丑芯拐片灰上榆而綁得鑄名磚,疾就逆是蘇把鄰中桿央估處答理芝器遲、慧隨么機喉存濟儲姑器絹、濟只威讀習(xí)存刻儲侍器巖、簡中質(zhì)斷劈系缸統(tǒng)角、盜定港時狹器急/揉計妻數(shù)蛙器脖以牧及熔I層/曲O扮接正口落電平路欄等太部梨件寫集卡成構(gòu)在腰一糞個燭芯病片殿上唉[字1小]耍。爛震單味片沸機夫自扛2今0幟世央紀(jì)升7蛛0扎年鑰代潑問書世龜以蝴來嗽,遠以號其米極葬高孝的獵性緒能驚價辰格參比薪,封受侮到伏人顫們稅的桃重愛視遭和把關(guān)穗注搭,泰應(yīng)恩用鬧很復(fù)廣近、硬發(fā)燕展雀很恥快狀。鄭單考片債機婚具頌有墾體晉積刪小席、久功毀能造多摩、罰價派格打低筐廉柿、皮使唐用誦方咐便斤、猴系窩統(tǒng)等設(shè)幸計蛙靈寸活底等續(xù)優(yōu)圾點片[漫2蜘]少。聲因銹此龜,戚它妥應(yīng)殃用橋廣比泛破前河景宗美脖好補,含它燈的減實然用倘性壩大拉大遷地竄提蠶高源了男我緩對粘畢墳業(yè)仇設(shè)虹計女的斧興擾趣羨。嶼在含我腫國成,酒單閣片跨機無的跟開被發(fā)約應(yīng)援用姥已御有案1解5救年瓜左顛右憶,劫已澇經(jīng)域形腸成堪一鏈支向龐風(fēng)大毯的凡技件術(shù)桑開怎發(fā)頃隊斑伍桶,鉛為份我鳥國晴單秒片雅機肥應(yīng)躍用吐積踏累統(tǒng)了絞豐慧富咸的綿經(jīng)近驗嚷。含隨撐著聚電膛子瓣技尿術(shù)慘、拔計物算策機徹芯憑片到技夠術(shù)糾和乳微鈴電旺子樹技昂術(shù)慰的拘飛旨速珠發(fā)益展返促打進盈了哈單衫片躬機言技洽術(shù)不一拋日面千吸里妙的篇變臭化查[斑3傲]僻。恰隨膏著纏半賠導(dǎo)工體痛技寄術(shù)鳥的躺飛鞠速后發(fā)枝展淺,懂以翅及泰移泳動用通登信幻、富網(wǎng)虛絡(luò)債技甩術(shù)初、門多秧媒麥體子技遺術(shù)罪在沾嵌柏入鍋式叨系裝統(tǒng)遺設(shè)絲計鏈中搬的折應(yīng)冊用軍,剖單制片翠機圣從熔4珍位聯(lián)、鈴8匆位堡、鞠1洲6般位婚到躍3嗽2鋒位推,慰其陣發(fā)竹展愛歷濁程畝一親直辟受支到刺廣習(xí)大論電襪子公愛的好坡者貨的帽極扮大艇關(guān)診注莊。找單瞞片膽機演功鹿能撥越鐮來摸越至強列大嚼,音價近格冒卻庭不刃斷眾下任降熔的楊優(yōu)稱勢糟無絞疑唉成屠為售嵌賴入傾式秤系登統(tǒng)孔方鏈案約設(shè)更計懇的陶首拳選虛,掛同柳時至單離片蘋機惡應(yīng)晶用隸領(lǐng)提域盯的撒擴穗大酒也凍使爹得侵更治多稠人頌加朱入涼到各基逼于百單香片是機悠系掌統(tǒng)騾的止開籠發(fā)砍行小列艇中毒,艷推章動廳著暖單講片隨機廢技韻術(shù)澇的慣創(chuàng)寧新拖進葛步曬。價然模而榮傳獵統(tǒng)糕的搏單干片袖機擾系將統(tǒng)嗓開鏡發(fā)垂除唱了青需優(yōu)要魔購輕置嫂諸萬如梳仿卻真顧器核、誦編堡程故器瓦、鳥示家波壟器慚等尸價蹈格旗不訴菲窯的嫁電食子介設(shè)北備甩外爺,首開插發(fā)舊過敲程該也貓較屑繁徐瑣鑄。筍來主自優(yōu)英冊國拒L弄a癥b鑰c煌e業(yè)n騎t斧e斤r燭火E即l臣e從c曾t射r狂o砍n寫i搬c抵s鍋公敞司汗的妙P虎r尼o蒸t仍e昏u放s甘軟沙件巧很雨好桃地爛詮葡釋胖了闖利槽用種現(xiàn)林代統(tǒng)E身D辰A裁工竄具測方被便那快弓捷眾開墊發(fā)仿單姻片悲機會系余統(tǒng)淚的伯優(yōu)銅勢跨。欣它找包拔括洲P粱R毀O敗T憂E殃U螞S系遲V骨S岸M桃(尚V埋i嬸r佳t損u釀a趨l秤腫S禽y潮s芳t蕉e懲m曠繁M柿o吼d辨e梯l因l倚i毯n濁g擾)讓、核P箭R愛O架T妥E壓U椒S斷穗P狠C廟B偷德D搖E滅S呢I旗G壟N貫兩處大是組跨成始部讓分港,捕在倒P蟲C拌機棗上兄就遷能們實恒現(xiàn)揉原裕理醒圖頂電眾路炎設(shè)坡計肅、梳電陪路印分宏析循與黨仿裕真冒、鎮(zhèn)單新片據(jù)機際代瓶碼鳴級鋪調(diào)晌試蛾與型仿濟真民、仿系掀統(tǒng)江測選試及與棚功胡能榨驗渡證韻以旱及執(zhí)形券成糾P麗C楊B躍文唯件巾的丟完私整缸嵌五入龜式益系閃統(tǒng)拘設(shè)嚴計頸與智研赤發(fā)泥過迷程猜。居單絕片嘴機茅系所統(tǒng)御作柄為州一荒種捎典魂型撞的璃嵌政入葡式飾系股統(tǒng)披,競其章系蹄統(tǒng)的設(shè)震計擠包疤括徑硬鞠件睛電薄路機設(shè)淋計角和躁軟新件熊編閃程似設(shè)產(chǎn)計男兩色個礎(chǔ)方制面哈,羅其千調(diào)愚試屯過抄程剛一歇般罪分我為勾軟崖件床調(diào)釣試讀、邁硬餅件翁測壤試公、除系旗統(tǒng)竭調(diào)墓試艇3察個漲過膀程希。谷如框果夢采挖用帳單添片傾機核系岡統(tǒng)乞的燃虛磁擬養(yǎng)仿末真驗軟厭件焦—游—鴨P互r終o挪t糞e督u毛s俱,劫則燃不顧用纏制長作孫具術(shù)體盲的縮電遮路米板炸也邊能摩夠桶完捉成躺以柳上碑工另作雜。數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時,分,秒,數(shù)字顯示的計時裝置,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠遠超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表的報時功能。數(shù)字我鐘追已冠成歇為情人引們辣日君常射生昆活廣中男的栽必潮需懷品國,吊廣歌泛資應(yīng)素用歷于獲家再庭撫、排車繳站熟、稿碼蔑頭狡、刺劇覽院榮、鋤辦悼公倘室玉等配場誤所擴,健給湯人恩們流的惹生罵活稠、拌學(xué)他習(xí)做、權(quán)工耍作住帶膊來魄極與大考的鉗方砌便初[妄4賀]貼。卻不及僅裂如猜此蕩,補在斧現(xiàn)龍代凍化受的譽進竿程踩中校,別也集離團不應(yīng)開因電亮子卷鐘商的虜相伸關(guān)問功伸能介和干原列理礙,鮮比犬如母機吐械宇手嫁的轎控愛制自、冒家特務(wù)動的碑自集動聞化遼、興定欠時老自渠動苦報劫警運、陷按膠時怪自釀動念打昌鈴值、博時覆間訪程光序她自限動鉆控蟲制衰、憑定絡(luò)時趴廣敘播易、許自切動則起龜閉閱路恰燈路、篩定翻時若開個關(guān)西烘南箱欲、快通腔斷忘動傳力匯設(shè)談備港、喂甚網(wǎng)至刃各付種會定浙時打電榆氣圣的平自或動明啟諸用放等弊,殲所媽有宣這要些沃,暈都賞是歐以份鐘憂表顧數(shù)何字技化侮為矩基準(zhǔn)礎(chǔ)傲的槐。天而唇且霉是狐控盼制汗的露核自心寶部惑分難。朵因肅此氏,戴研泉究拘數(shù)擱字敞鐘愿及測擴擺大備其討應(yīng)注用給,賢有浙著克非療常濱現(xiàn)驚實狡的敬意甜義乳。電子鐘在工業(yè)控制和日常生活中是很重要的,它不僅可以用于計時、提醒又可用于對機器的控制,在自動化的過程中必然有電子鐘的參與,因此電子鐘的應(yīng)用會越來越廣泛。而且向著精確、低功耗、多功能發(fā)展?;趩纹瑱C設(shè)計的數(shù)字鐘精確度較高,因為在程序的執(zhí)行過程中,任何指令都不影響定時器的正常計數(shù),即便程序很長也不會影響中斷的時間。從而,使數(shù)字鐘的精度僅僅取決于單片機的產(chǎn)生機器周期電路和定時器硬件電路的精確度。另外,程序較為簡潔,具有可靠性和較好的可讀性。如果我們想將它應(yīng)用于實時控制之中,只要對上述程序和硬件電路稍加修改,便可以得到實時控制的實用系統(tǒng),從而應(yīng)用到實際工作與生產(chǎn)中去。數(shù)字電子鐘的設(shè)計方法有多種,例如,可用中小規(guī)模集成電路組成電子鐘,也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘還可以利用單片機來實現(xiàn)電子鐘等等。這些方法都各有特點,其中,利用單片機實現(xiàn)的電子鐘具有編程靈活,便于功能擴充,精確度高等特點[5]。基于以上分析,在此次設(shè)計中,我選擇的是利用單片機制作電子鐘。電子鐘的設(shè)計本身包括程序的設(shè)計和硬件電路的設(shè)計[6]。我的思路是,先進行電路的整體設(shè)計,再根據(jù)電路進行編程,在編程的過程中,對電路進行微調(diào),以更好地配合程序。在設(shè)計完成后,進行程序調(diào)試,調(diào)試軟件選擇MedWin,調(diào)試成功后,再根據(jù)電路圖畫出仿真圖,將軟件裝入單片機芯片,利用Proteus軟件進行仿真,仿真中的錯誤通過改正程序中的邏輯錯誤和電路中的設(shè)計不當(dāng)進行排除,這個過程是很艱難的但也是很重要的。若仿真可以實現(xiàn),則硬件電路的實現(xiàn)就可以有條不紊地進行。2整體設(shè)計思路這部分主要介紹工作安排和整體設(shè)計的思想。工作過程規(guī)劃如下:熟悉硬件了解各引腳功能熟悉硬件了解各引腳功能分塊設(shè)計各部分電路將分塊的電路組合認真學(xué)習(xí)單片機匯編語言完成整體電路圖確定變成結(jié)構(gòu)和思路綜合各程序完成整體程序編輯各個程序模塊用Proteus畫出電路圖調(diào)試程序,進行修改對仿真中出現(xiàn)的問題進行改正畫出仿真圖進行仿真準(zhǔn)備器件、搭接電路仿真成功軟硬件結(jié)合,完成任務(wù)書要求驗證硬件電路成功進行擴展圖2.1整體設(shè)計思路針對要實現(xiàn)的功能,擬采用AT89C51單片機進行設(shè)計,AT89C51單片機是一款低功耗,高性能CMOS8位單片機,片內(nèi)含4KB在線可編程(ISP)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)[7]。這樣,既能做到經(jīng)濟合理又能實現(xiàn)預(yù)期的功能。在程序方面,采用分塊設(shè)計的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項功能。程序可分為鬧鐘的聲音程序、顯示程序、鬧鐘顯示程序、調(diào)時顯示、定時程序。運用這種方法,關(guān)鍵在于各模塊的兼容和配合,若各模塊不匹配會出現(xiàn)意想不到的錯誤。本電子鐘設(shè)計主要是依照圖2.1中的流程做出來的,時間分配比較均勻。首先,在編程之前必須了解硬件結(jié)構(gòu)尤其是各引腳的用法,以及內(nèi)部寄存器、存儲單元的用法,否則,編程無從下手,電路也無法設(shè)計。這是前期準(zhǔn)備工作。第二部分是硬件部分:依據(jù)想要的功能分塊設(shè)計設(shè)計,比如輸入需要開關(guān)電路,輸出需要顯示驅(qū)動電路和數(shù)碼管電路等。第三部分是軟件部分:先學(xué)習(xí)理解匯編語言的編程方法再根據(jù)設(shè)計的硬件電路進行分塊的編程調(diào)試,最終完成程序設(shè)計。第四部分是軟件畫圖部分:設(shè)計好電路后進行畫圖,包括電路圖和仿真圖的繪制。第五部分是軟件仿真部分:軟硬件設(shè)計好后將軟件載入芯片中進行仿真,仿真無法完成時檢查軟件程序和硬件電路并進行修改直到仿真成功。第六部分是硬件實現(xiàn)部分:連接電路并導(dǎo)入程序檢查電路,若與設(shè)計的完全一樣一般能實現(xiàn)想要的功能。最后進行功能擴展,本設(shè)計加進了日期顯示與調(diào)整功能。3主要元件的使用方法下面就本次設(shè)計中用到的主要元件的所有功能進行簡單的介紹,包括AT89C51單片機、74LS07芯片、以及數(shù)碼管的特性和用法。3.1AT89C51單片機[8]:該單片機功能強大,不僅能滿足設(shè)計的需要,也可以在設(shè)計要求的基礎(chǔ)上進行一些擴展。單片機的結(jié)構(gòu)如下:圖單片機引腳圖在使用時VCC接電源電壓,GND接地。P0,P1,P2,P3可作為輸入或輸出端口,RST是復(fù)位輸入,接復(fù)位電路。XTAL1和XTAL2接復(fù)位電路。這些可以在硬件設(shè)計部分體現(xiàn)出來。3.27407驅(qū)動器[9]:7407是集電極開路六正相高壓驅(qū)動器,1入2出,3進4出,5進6出,9進8出,11進10出,13進12出,7接地,14接高電平。7407引腳圖:圖7407引腳圖7407邏輯圖:圖7407邏輯圖gfabgfabeddpc87109612345abcdefg圖數(shù)碼管使用共陰極數(shù)碼管時將6個數(shù)碼管按相同功能連接起來,3與8相連,當(dāng)選通端所接管腳為低電平時該數(shù)碼管選通。單片機的P2口作為選通端,連接各數(shù)碼管的3、8引腳輪流顯示,連接時要加7407和上拉電阻。單片機的P1口作為功能段,通高電平的引腳會使相應(yīng)段亮起,同樣的也要與7407和電阻連接使用。4電路設(shè)計4.1整體設(shè)計此次設(shè)計主要是應(yīng)用單片機來設(shè)計電子時鐘,硬件部分主要分以下電路模塊:顯示電路用六個數(shù)碼管分別顯示小時(年份)、分鐘(月份)和秒(日),通過動態(tài)掃描進行顯示,從而避免了譯碼器的使用,使電路更加簡單。單片機采用AT89C51系列,這種單片機應(yīng)用簡單,適合電子鐘設(shè)計。電路的總體設(shè)計框架如下:單片機單片機輸入部分晶振和復(fù)位輸出部分圖電路模塊圖4.2分塊設(shè)計這部分介紹各模塊電路的設(shè)計方法和成果,主要分為:輸入部分、輸出部分、復(fù)位和晶振電路。4.2.1輸入部分在電子鐘的輸入部分,設(shè)置相應(yīng)的置數(shù)功能,通過外部設(shè)備的輸入,如按鍵,實現(xiàn)時間的修改[10-11]。除此之外,調(diào)整鬧鈴、定時、日期時也需要按鍵進行輸入。在選用輸入端口時,將P3引腳與按鍵相連進行輸入[12]。設(shè)計的輸入部分如下:圖輸入部分各按鍵功能在后面的部分將會介紹到4.2.2輸出部分(顯示電路)該部分電路圖如下所示:圖顯示部分在實際電路中采用單個數(shù)碼管相連進行顯示,先把數(shù)碼管的1、2、4、5、6、7、9、10對應(yīng)相連,然后把各晶體管的3和8引腳各自相連,P1.6~P1.0分別接a~g,P2作為選通端P2.0~P2.5分別從左到右接各數(shù)碼管的3、8端。采用動態(tài)顯示,即一位一位地輪流點亮各位顯示器[18],因此P2.0~P2.5輪流置0。持續(xù)時間為1ms,這點在程序部分還會講到。4.2.3晶振與復(fù)位電路:圖晶振與復(fù)位電路5程序設(shè)計5.1程序思路初始化初始化判斷按鍵顯示按下3鍵按下1鍵按下2鍵若無按鍵調(diào)時調(diào)鬧鐘調(diào)定時顯示所調(diào)時間顯示鬧鈴時間顯示定時時間調(diào)整時限到或有其他輸入圖程序設(shè)計思路結(jié)合電路,程序的總體思路是[17]:1、點復(fù)位鍵后,進行時間顯示,從0時0分0秒開始。2、按下按鍵1時,進行調(diào)時,此時按下4調(diào)整時,按下5調(diào)整分,若2秒鐘未按鍵,則不再等待,恢復(fù)走時,持續(xù)按鍵時大約0.3秒步進1,下同。3、按下2鍵時進行鬧鈴調(diào)整,用4、5鍵分別調(diào)時和分,此時只有前四位進行顯示,即鬧鈴功能精確到分,2秒鐘無按鍵則返回時間顯示,時間到達鬧鈴所定時間時P0.7輸出高電平,蜂鳴器響,按下按鍵2或3時蜂鳴器停止。4、按3鍵時進行定時的設(shè)定,同樣,分別通過4、5調(diào)整分和秒,若兩秒未按鍵則不進行定時,設(shè)定之后再次按下3鍵則進行倒計時,倒計時時間未到時若按下1鍵則進行時間顯示;若倒計時時間到則P0.7為高電平,蜂鳴器響。定時的最大值為59分59秒。在程序設(shè)計時,盡量改進算法,算法的改進可以使相對誤差減小[12],或者可以使占用空間減小[14]。另外,分塊的設(shè)計思想要貫穿始終,整個程序較為繁雜,某些程序段會反復(fù)用到,因此采取的方法是寫出多個程序段,通過跳轉(zhuǎn)指令進行調(diào)用。5.2程序設(shè)計步驟在程序設(shè)計過程中,我遇到了很多困難,這部分也是讓我學(xué)到很多東西的地方。首先,我學(xué)習(xí)了定時器的相關(guān)知識,計數(shù)器的使用是很重要的組成部分[15],在這個設(shè)計中選擇計數(shù)器T0。T0的工作方式有:方式0:不推薦方式1:16位計數(shù)器,常用方式2:自動重裝初值的8位定時/計數(shù)器方式3:T0相當(dāng)于兩個獨立的8位定時/計數(shù)器此程序采用方式1,方式1的定時時間t為t=(216-M)*12/fosc。其中M為定時器初值,fosc為12MHz,若M為0則t=65536*12/2*106=65.536ms。因此可取50ms為計時單位[16],TL0=0B0H。定時器中斷20次為一秒,這部分在中斷程序中用到。其次,我參看了文獻中的設(shè)計思路,做到胸有成竹后再進行具體的程序書寫工作。認真學(xué)習(xí)了教科書中關(guān)于匯編語言編程的問題,熟悉了匯編語言的編程方法和語法習(xí)慣。第三步就是進行具體的程序編寫工作。5.3程序的主要模塊5.3.1延遲程序在動態(tài)掃描時,必然用到延遲程序,這里使用延遲1ms的程序,此程序需要反復(fù)調(diào)用。此段程序是很簡單的,但就是在這段簡單的程序上,也會出現(xiàn)問題,若用D_1MS:MOVR7,#500DJNZR7,$RET則會出現(xiàn)警告,因為R7是8位寄存器,所能存儲的最大值應(yīng)為255,所以應(yīng)改為:D_1MS:MOVR7,#2D_5:MOVR2,#250DJNZR2,$DJNZR7,D_5RET5.3.2中斷服務(wù)子程序:中斷服務(wù)程序中,總體思路是:由于初值是3CB0H,所以裝滿定時器需要50ms的時間,從而20次中斷為一秒,一秒之后,判斷是否到60秒,若不到則秒加一,然后返回,若到,則秒賦值為0,分加一,依次類推。包括日期顯示的功能也是如此。另外,由于要實現(xiàn)倒計時功能,因此在中斷程序中還要加入減一的寄存器,需要時將其進行顯示?;谝陨峡紤],以R3為倒計時中的秒,R4為倒計時的分,當(dāng)秒加1時R3減一,減到0之后,秒賦值為59,分減一,直到分為0。再顯示走時部分。流程框圖如下:給T0賦值給T0賦值中斷20次R3賦值為60分=0,秒=0,時加一秒加一R3、R4都為0時倒計時結(jié)束,蜂鳴器響,顯示走時狀態(tài)秒=60Y秒=0時加1N時=24分=60YNYN分=0,秒=0,時=0返回R3=0YR3、R4減一N圖中斷程序思路主程序主程序主要對按鍵進行掃描,以及判斷定時和鬧鈴時間是否已到,若到則調(diào)用聲音程序,該段程序如下:MAIN:JNBP3.0,DATETZ;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ1;按下2鍵進行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進行定時設(shè)置ACALLDISP;MOVA,HOUR;SUBBA,38H;JZFEN;AJMPDSPD2;FEN:MOVA,MINUTE;SUBBA,37H;JZSHENGYIN1;DSPD2:MOVA,R4;JZS_PD;AJMPMAIN;S_PD:MOVA,R3;JZSHENGYIN1;AJMPMAIN;顯示程序6個晶體管輪流進行顯示,分別顯示1ms,這依賴的是人們視覺的惰性,該段程序如下:DISP:;走時的顯示程序,包括調(diào)時時的顯示MOVDPTR,#LEDTABMOVA,SECONDMOVB,#10DIVAB;A存十位B存?zhèn)€位MOVCA,@A+DPTRMOVP1,ACLRSEC_SACALLD_1MS;顯示秒十位SETBSEC_SMOVA,BMOVCA,@A+DPTRMOVP1,ACLRSEC_GACALLD_1MS;顯示秒個位SETBSEC_G……以此類推,進行時和分的顯示RET另外,調(diào)鬧鈴和定時時間、進行日期顯示時,有各自的顯示程序,但不能成為獨立子程序,分別柔和在鬧鈴、定時、和日期程序中。鬧鈴程序和定時程序這兩段程序分別包含了各自的顯示、調(diào)整程序。程序思路是對照,走時部分的程序,進行編寫,包括顯示程序,與顯示時間的程序是相似的,鬧鈴和定時的調(diào)整程序與走時調(diào)整程序相似。5.4程序調(diào)試程序?qū)懲暌院蟊仨氝M行調(diào)試,以驗證程序是否正確。在程序調(diào)試時,出現(xiàn)了很多問題,比如跳轉(zhuǎn)距離過長、打錯字母、邏輯有錯等,發(fā)現(xiàn)問題后,利用兩天時間進行了改正,但即使編譯通過,最后也不一定能夠?qū)崿F(xiàn)功能。以為程序的調(diào)試只能檢查出語法錯誤,而不能檢查出邏輯的錯誤。要真正把程序?qū)憣?,要通過仿真發(fā)現(xiàn)并且改正錯誤。6功能仿真這部分工作可能遇到的困難是很多的,程序龐大很可能出現(xiàn)各種問題。在仿真工作中,首先要對仿真軟件有足夠的了解并能夠正確熟練地運用6.1軟件介紹在這部分工作中用到了medwin3和Proteus兩個軟件,其中Medwin3用來編譯程序并生成hex文件,裝入Proteus仿真圖的芯片中,通過仿真結(jié)果一步步進行調(diào)整最后達到預(yù)期的功能。PROTEUSPROTEUS軟件是目前世界上最先進、最完整的嵌入式系統(tǒng)設(shè)計與仿真平臺,可以實現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件仿真、系統(tǒng)協(xié)同仿真和PCB設(shè)計等功能,是目前唯一能夠?qū)Ω鞣N處理器進行實時仿真、調(diào)試與測試的EDA工具。微控制器系統(tǒng)相關(guān)的仿真需建立編譯和調(diào)試環(huán)境,可選擇MedWinV3軟件。該軟件支持眾多不同公司的芯片,集編輯、編譯和程序仿真等于一體,同時還支匯編和C語言的程序設(shè)計。Proteus的界面友好易學(xué),在調(diào)試程序、軟件仿真方面有很強大的功能。其革命性的功能是:將電路仿真和微處理器仿真進行協(xié)同,直接在基于原理圖的虛擬原型上進行處理器編程調(diào)試,并進行功能驗證,通過動態(tài)器件如電機、LED、LCD、開關(guān)等,實時看到運行后的輸入、輸出的效果。Proteus為我們建立了完備的電子設(shè)計開發(fā)環(huán)境。MedWinMedWin可以用來編寫匯編語言程序并進行編譯、產(chǎn)生代碼并裝入仿真器以便于仿真,在輸出文件夾中會產(chǎn)生hex文件,將該hex文件導(dǎo)入仿真圖的單片機芯片中即可進行仿真。使用時點擊“項目管理—新建項目”就可以建立編程的平臺,然后選擇項目管理中的新建文件就可以建立asm文件,在這個文件中可以進行程序的編寫,程序編寫完畢后可點擊“項目管理—編譯\匯編”看其是否有錯,有錯時,在下面的窗口會提示出錯的行以及錯誤原因。改正無誤后可產(chǎn)生代碼并裝入,將hex文件導(dǎo)入單片機中即可進行仿真6.2仿真過程:通常在仿真過程中會遇到很大的麻煩。在程序匯編通過之后程序不一定是正確的,比如我剛開始進行仿真時數(shù)碼管并不進行顯示,結(jié)果發(fā)現(xiàn)應(yīng)該是置零的置一了,應(yīng)該置一的置零了。改正之后發(fā)現(xiàn)雖然走時程序正常了,但是調(diào)時中出現(xiàn)了大量的問題,更不要說鬧鈴和定時程序了。在整個畢業(yè)設(shè)計的過程中程序的修改貫穿始終,在修改的過程中一定要條理清晰,認真細心。仿真圖的繪制在使用Proteus進行仿真時,仿真圖不用畫出數(shù)碼管驅(qū)動程序,其他部分與設(shè)計的硬件圖相仿。繪制結(jié)果如下:圖仿真圖功能的實現(xiàn)在繪制仿真圖之后,要向單片機裝入程序,從而使單片機開始工作并帶動整個電路工作,裝入過程為:點擊單片機,選擇所編譯程序的輸出hex文件,確定即可。此時單片機會按照程序所設(shè)定的功能進行工作,在仿真過程中會遇到各種問題,在第九章會具體講到。這里列出仿真結(jié)果:(1)走時仿真:圖走時狀態(tài)下的仿真結(jié)果(2)鬧鐘設(shè)定的仿真:圖鬧鈴仿真結(jié)果可見所定鬧鐘時間為10點15分。(3)定時鐘倒計時的仿真:圖倒計時仿真可見,倒計時進行到3分3秒。7實際電路的實現(xiàn)在仿真無誤后,開始進行實際電路的搭接。搭接時先不用芯片實物,而用仿真器替代。按照電路圖,先把數(shù)碼管按照對應(yīng)的管腳連接起來,然后接驅(qū)動電路等,接好之后把程序裝入仿真器,通電運行,再對電路進行調(diào)試。在根據(jù)電路圖搭接好各個器件后,一個很重要的問題就是檢查各器件是否完全工作。下面介紹檢驗方法:導(dǎo)線看似不用太費力氣去檢驗,但一個成功的實驗需要前期充分的準(zhǔn)備,比如在我的實驗過程中,由于導(dǎo)線繁多,而且使用舊導(dǎo)線進行實際電路的連接,所以就出現(xiàn)了導(dǎo)線不通的情況,因此驗證過程中不要放過小問題。數(shù)碼管的檢測:拆除89C51芯片,先分別給芯片P2對應(yīng)的導(dǎo)線加低電平,再分別給P1對應(yīng)的導(dǎo)線加高電平,使每個數(shù)碼管的每一筆段都能亮。若出錯,先檢查電路的連接再換一下器件試試,對于此電路問題出在7407的連接方法的問題比較大。這部分需要重點驗證。隨后,按下復(fù)位鍵看9引腳是否為低電平,是則沒有錯誤。通過以上工作,硬件仿真無誤后,可以用單片機芯片代替仿真器進行最后的實現(xiàn)工作,用easyPRO80B編程器將程序下載到芯片中,具體步驟為:先進行擦除,然后查空,查空無誤后打開所需的hex文件,然后進行編程、校驗。這時程序載入了芯片中,就可以實現(xiàn)相應(yīng)的功能了。實驗結(jié)果如下:圖7.1走時顯示實物圖這里要說的是,軟件仿真成功和硬件電路實現(xiàn)之間是有很大差別的,在做軟件仿真時,沒有驅(qū)動的問題,沒有芯片和器件質(zhì)量的問題,也沒有電線導(dǎo)電的問題,沒有工作條件的問題,但在實際電路中這些因素都要考慮。常常會出現(xiàn)這種情況:軟件仿真實現(xiàn)了,但實際電路沒有任何功能。在電子鐘硬件實現(xiàn)過程中,就出現(xiàn)了很多問題,有引腳接錯的問題,也有插線松動或電線不通的問題,這些問題都是需要耐心和細心認真解決的。8日歷功能的實現(xiàn)在加入其它功能時,我想到了很多可能達到的功能,比如加入備用電源、夜間亮燈功能、多個鬧鈴的功能、顯示日期功能等。然后我進行了理論上的驗證,加入備用電源可避免因停電而造成的電路全部失靈[20,21],但受到實驗條件的影響未選擇對這個功能進行實現(xiàn)。夜間亮燈功能對程序要求不高,但在電路中要加入傳感器,把光的照度測出來后,低于某一值時,燈亮,從而使得夜間時也能看到時間顯示,雖然程序簡單,但由于要加入傳感器,容易受到干擾,各項工作投入時間較長,考慮到時間有限,也沒有采納這個方案。鬧鈴的功能和日期的功能的實現(xiàn)都是比較容易的,做了權(quán)衡之后我選擇了后者,因為日期功能主要涉及算法和程序的跳轉(zhuǎn)、調(diào)用等,更能加深對單片機的認識和理解。在設(shè)計的開始階段,我主要考慮了日期的邏輯算法[19]。首先,要考慮年份是不是閏年,閏年的判斷方法是:將年份除以100,若能整除,則將年份除以400,若還能整除,則為閏年,若不能,則為平年;若不能被100整除,則判斷是否能被4整除,若能,則為閏年,若不能則為平年。只有2月與平、閏年相關(guān),因此在閏年和平年的子程序中,要判斷是不是2月,若是則在相應(yīng)的年中進行日期的增加,若不是則轉(zhuǎn)入平時的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。在電路方面有兩種方法:(1)可以增加6個數(shù)碼管用來顯示日期,但這樣顯然電路更復(fù)雜;(2)用按鍵的輸入決定6個數(shù)碼管顯示日期還是時間,這種情況下,只需加一個按鍵即可,不用增加數(shù)碼管。最終的按鍵控制為:按下1鍵時,顯示日期,并且用4、5、6鍵分別調(diào)整年、月、日;按下2鍵時,進行走時和時間調(diào)整;3鍵位鬧鈴鍵;4鍵為定時鍵。這樣實現(xiàn)功能的好處是:(1)電路簡單,若同時顯示日期和時間,則需要的引腳很多,需要加入譯碼器對引腳進行擴展。采用按鍵決定顯示時間或日期的方法避免了這個問題;(2)節(jié)約空間,節(jié)約成本。程序思路如下:年份能否被100整除年份能否被100整除NY年份是否能被4整除年份是否能被400整除NN平年閏年YY是不是2月是不是2月Y日>=28之后返回為1NNY日>=29之后返回為1若月份為1、3、5、7、8、10、12月則調(diào)用31天的程序若月份為4、6、9、11則調(diào)用30天的程序圖8.1擴展部分思路由于在前面的工作中積累了較多的經(jīng)驗,對匯編語言已經(jīng)相當(dāng)熟悉,因此在實現(xiàn)日歷功能時,程序設(shè)計顯得相當(dāng)容易。按鍵如圖8.2所示,按鍵功能如下:按下按鍵1時,顯示日期并且允許對日期進行調(diào)整;按下按鍵2時,顯示時間并且允許對時間進行調(diào)整;按下按鍵3時,顯示鬧鐘所設(shè)定的時間并允許通過5、6鍵對鬧鐘進行設(shè)定;按下按鍵4時,顯示定時功能所設(shè)定的時間并允許對其進行設(shè)定,再次按下時,開始倒計時過程,并進行倒計時過程的顯示,在顯示日期時,該鍵可對年份進行調(diào)整;按鍵5、6可對時間顯示時的時、分或日期顯示時的月、日進行調(diào)整。按鍵形式:圖8.2按鍵圖示實驗成果如下:圖8.2日期顯示實物圖圖中顯示的日期為10年5月27日。9電子鐘設(shè)計中遇到的問題及其解決方法在電子鐘設(shè)計中程序比較長,遇到了各種各樣的問題,比如跳轉(zhuǎn)距離過長出現(xiàn)語法錯誤。因此修改程序的時間很長,有語法錯誤,也有仿真時功能無法實現(xiàn)的問題,在此不能一一說明,只能對個別問題加以闡述。由于在走時調(diào)整、鬧鈴調(diào)整及定時設(shè)定時,按下鍵時每0.2秒步進1,這就需要每0.2秒對按鍵輸入進行一次掃描,因此開始時,我用的是延遲0.2秒再返回按鍵掃描程序的方法,但是可以想到,進行單純的延遲時,不會有顯示,在仿真時功能沒有實現(xiàn)。后來我采用的是反復(fù)調(diào)用若干次顯示程序以實現(xiàn)延遲,較好地解決了這個問題。雖然現(xiàn)在回過頭來發(fā)現(xiàn)這個問題很簡單,但當(dāng)時是百思不得其解。我從中學(xué)到:任何簡單的事情都會有出錯的可能,有些時候人的思路中的一些錯誤是自己難以發(fā)現(xiàn)的,在工作和生活中要多對自己的想法提出質(zhì)疑。不光是這種明顯的問題很多,有些細微的問題也一樣出現(xiàn)了,但解決起來并不容易。在最后的硬件實現(xiàn)階段發(fā)現(xiàn)蜂鳴器不響,此時連接方法是蜂鳴器直接連接在了P0.7引腳??紤]到單片機的輸出電流比較小,雖然P0.7引腳的電平已經(jīng)達到2V以上,也無法驅(qū)動蜂鳴器。于是我設(shè)想加上驅(qū)動電路。作此修改之后,蜂鳴器發(fā)出響聲,但是又遇到了新的問題:蜂鳴器無法停止響聲!看上去這個問題很簡單,只要有停止鬧鈴的按鍵輸入時,在程序中加一句將P0.7置零的語句就可以了。但事實并不是這么簡單。通過苦思冥想,發(fā)現(xiàn)在主程序中,對“定時時間是否已到”是不斷進行掃描的,而倒計時是在中斷服務(wù)子程序中進行的,當(dāng)?shù)褂嫊r為0分0秒時,主程序判斷出來后會不停地調(diào)用聲音程序:MAIN:JNBP3.0,DATETZ;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ1;按下2鍵進行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進行定時設(shè)置ACALLDISP;MOVA,HOUR;SUBBA,38H;JZFEN;AJMPDSPD2;FEN:MOVA,MINUTE;SUBBA,37H;JZSHENGYIN1;DSPD2:MOVA,R4;JZS_PD;AJMPMAIN;S_PD:MOVA,R3;JZSHENGYIN1;AJMPMAIN;蜂鳴器響聲不停是不可避免的,因為R3和R4是在中斷程序中變化的,隨著時間的推移必然都為0,在此情況下即使按下了聲音停止鍵,由于程序跳回主程序,又會不斷地調(diào)用聲音程序。基于這個想法要達到的效果是:按下聲音停止鍵之后,不再進行定時時間是否為0的判斷。要實現(xiàn)這個想法就要引入新的參數(shù),這里,試用3CH作為判斷的因子。當(dāng)點擊定時開始后,將3CH賦值為1,在主程序中判斷3CH如果不為0,就進行倒計時是否到0的判斷。蜂鳴器響后,點擊3鍵時,將3CH賦值為0,這樣在主程序中就不進行這個判斷,因此蜂鳴器就不會響。當(dāng)然這個解決問題的過程不是一下子解決的在這個過程中,我進行了相當(dāng)多的嘗試和摸索,最終找到了這個解決途徑。這個問題解決后,發(fā)現(xiàn)鬧鈴也有相同的問題,聲音會持續(xù)一分鐘,在此期間即使按下停止鍵,聲音也不會停。發(fā)現(xiàn)這個問題后,可以看出,這個問題解決起來比上個問題要簡單得多,因為鬧鐘程序沒有涉及到中斷服務(wù)子程序。因此考慮按下停止鍵時,修改判斷所用的參數(shù)比如38H,即在clrP0.7的同時加一句DEC38H,當(dāng)再進行判斷時,蜂鳴器就不會再響了。結(jié)論本文介紹的是利用AT89C51單片機設(shè)計的有調(diào)時、定時、鬧鈴功能的電子鐘。并詳細說明了軟件和硬件設(shè)計方法及仿真、硬件實現(xiàn)。在設(shè)計過程中可以看出,匯編語言有著其獨特的魅力,它簡單易學(xué),語法錯誤容易糾正;用單片機實現(xiàn)電子鐘的設(shè)計是比較方便和易于實現(xiàn)的。通過電子鐘的設(shè)計和制作,加深了對單片機的理解,能夠更熟練地應(yīng)用單片機實現(xiàn)預(yù)期的功能,對今后的工作有很大的幫助。電子鐘各項功能的實現(xiàn),為自動控制的實現(xiàn)打下了理論基礎(chǔ),獲得了實現(xiàn)方法。當(dāng)然,該電子鐘還有很多不足之處,比如鬧鐘不能關(guān)閉,且只能定一個鬧鐘。在今后的工作中還要對此加以研究,盡量實現(xiàn)更多的功能。在今后的其他工作中,也可以把這次設(shè)計中的收獲運用進去,這是我此次畢業(yè)設(shè)計得到的最大財富。參考文獻1H.G.Cragon.TheElementsofSingle-ChipMicrocomputerArchitecture.Computer,1980(13)27~412潘永雄.新編單片機原理與應(yīng)用.第2版.西安:西安電子科技大學(xué)出版社20063何立民.我國單片機應(yīng)用技術(shù)發(fā)展趨勢及展望.自動化與儀表,1992(1):1~54向繼文,廖立新.基于AT89S51的電子鐘系統(tǒng)設(shè)計.機電產(chǎn)品開發(fā)與創(chuàng)新,2007(2):62~635張靜.基于單片機數(shù)字鐘的設(shè)計.辦公自動化雜志,2006(89):4~56樊金榮,謝智文.數(shù)字倒計時秒表的設(shè)計與實現(xiàn).中南民族大學(xué)計算機科學(xué)學(xué)院院報,2005(1):62~637魏立峰,王寶興.單片機原理與應(yīng)用技術(shù)[M].北京:北京大學(xué)出版社,2006.8馬立國.AD7888與AT89C51單片機接口應(yīng)用技術(shù).集成電路通訊,2007(25):33~34996/2008/200804018597.html10AndyMorell.CountdownTimer.Electronics,2003(29):32111MarkE.Buccini.Digitalcountdowntimerneverneedsbatteryreplacement.END,2005(11):79~8012周興華.一款電路極簡的單片機電子鐘設(shè)計詳解.電子制作,2003(10):3113郭長立.DDJ-Ⅱ型多功能單片機計時器的改進設(shè)計.儀表技術(shù),2004(4):29~3014何宏森.多功能智能電子鐘的設(shè)計.兵工自動化,2005(4):82~8415張景元陳平.一種基于單片機的多功能數(shù)字鐘.微計算機信息(嵌入式與SOC)2005(21):13616劉盛雄,周奇,韋云隆.基于單片機的數(shù)字式電子鐘的設(shè)計與制作.重慶工學(xué)院學(xué)報,2006(8):9117盧超.基于單片機的數(shù)字電子鐘的設(shè)計與制作.大慶師范學(xué)院學(xué)報,2006(5):4918劉建英.基于單片機的時鐘設(shè)計.內(nèi)蒙古石油化工,2005(1):1319何宏森.多功能智能電子鐘的設(shè)計.兵工自動化,2005(4):8320蔡希彪,曹洪奎,芳琳.單片機電子時鐘系統(tǒng)的設(shè)計與仿真.中國科技信息,2007(4):61~6321ScottEdwards.Crystal-ControlledOscillatorIsHeartbeatof60-hourTimer.TheNutsandVoltsofBASICStamps,1996(1):95~103致謝時光荏苒,大學(xué)時光轉(zhuǎn)眼逝去,在大學(xué)的4年中我不但學(xué)到了知識,還認識了很多值得珍惜的老師和同學(xué)。在即將離校的日子,我更加珍惜這所剩無幾的日子,認真地完成了畢業(yè)設(shè)計,在這個過程中,***老師給了我極大的幫助,不僅是知識上的,更有很多心理上的支持,他引導(dǎo)我在各種雜事比較多的情況下能踏踏實實做點屬于自己的工作,讓我學(xué)會了自主學(xué)習(xí)。畢業(yè)設(shè)計是大學(xué)生活中最后階段的工作,是真正考驗我們能力的一項教學(xué)內(nèi)容,在這個過程中我認真思考,不斷嘗試,收獲了很多在平時的課堂上收獲不到的東西。畢業(yè)設(shè)計即將結(jié)束,我會吸取畢業(yè)設(shè)計中的經(jīng)驗和教訓(xùn),在今后的工作中少走彎路。夏天即將來臨,我們也即將離校,回首過去的日子,大學(xué)的確教給了我們很多東西。此刻,我十分感謝母校、感謝老師們對我的教誨。雖然有很多不舍,但我依然會昂首走向新的生活,不辜負老師的培養(yǎng)。附錄A整體電路圖圖附A附錄B完整程序HOU_SBITP2.0;第一個數(shù)碼管HOU_GBITP2.1;第二個數(shù)碼管MIN_SBITP2.2;第三個數(shù)碼管MIN_GBITP2.3;第四個數(shù)碼管SEC_SBITP2.4;第五個數(shù)碼管SEC_GBITP2.5;第六個數(shù)碼管DAYEQU39H;日期MONTHEQU3AH;月份YEAREQU3BH;年份SECONDEQU30H;秒MINUTEEQU31H;分HOUREQU32H;時TIM_1EQU33H;TIM_2EQU34H;ORG0000HLJMPCHUSHIORG000BHLJMPTIMER0ORG30HCHUSHI:;初始化MOVSECOND,#0;MOVMINUTE,#0;MOVHOUR,#0;時間的初值為000000MOVDAY,#1;MOVMONTH,#1;MOVYEAR,#1;日期的初值為000000SETBHOU_S;SETBHOU_G;SETBMIN_S;SETBMIN_G;SETBSEC_S;SETBSEC_G;初始狀態(tài)為1,都不顯示MOVR0,#0;MOVR1,#12;鬧鈴初始化MOVR3,#0;MOVR4,#1;存儲定時時間,點擊定時開始后,從所存時間開始倒計時MOVR5,#0;MOVR6,#0;設(shè)定定時時間所用寄存器MOV38H,#12;MOV37H,#0;存儲所定鬧鈴,以便判斷是否鬧鈴時間到CLRP0.7;MOVTIM_1,#10;執(zhí)行完后經(jīng)歷0.5秒MOVTIM_2,#2;執(zhí)行完后經(jīng)歷1秒ANLTMOD,#0F0HORLTMOD,#01H;定時器0為模式1MOVTH0,#03CHMOVTL0,#0B0H;裝入初值SETBET0;SETBTR0;SETBEA;允許中斷MAIN:JNBP3.0,DATETZ;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ1;按下2鍵進行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進行定時設(shè)置ACALLDISP;調(diào)用顯示程序FMQPD:;判斷定時是否到零、鬧鈴時間是否已到MOVA,HOUR;SUBBA,38H;JZFEN;判斷時是否到鬧鈴所定時間,若到,則對分進行判斷,若不到,則對定時進行判斷AJMPDSPDKQFEN:MOVA,MINUTE;SUBBA,37H;JZSHENGYIN1;時和分都到鬧鈴時間則蜂鳴器響DSPDKQ:;判斷是否應(yīng)該進行定時時間的判斷MOVA,3CH;3CH是引入的判斷因子,當(dāng)其為0時不對定時時間是否到0進行判斷,從而不開啟蜂鳴器JNZDSPD2;當(dāng)3CH不是0時,跳轉(zhuǎn)到定時判斷程序AJMPMAINDSPD2:MOVA,R4;JZS_PD;AJMPMAIN;S_PD:MOVA,R3;JZSHENGYIN1;AJMPMAIN;DSTZ:AJMPDSTZ1;DATETZ:AJMPDATETZ1;SHENGYIN1:MOV3CH,#1SETBP0.7AJMPMAINZSTZ1:MOV35H,#60;MOV36H,#10;ZSTZ2:ACALLDISP;DJNZ35H,ZSTZ2;JNBP3.0,DATETZ;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ1;按下2鍵進行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進行定時設(shè)置JNBP3.4,H_T;JNBP3.5,M_T;DJNZ36H,ZSTZ2;AJMPMAIN;H_T:ACALLDISP;INCHOUR;MOVA,HOUR;CJNEA,#24,ZSTZ1;MOVHOUR,#0;AJMPZSTZ1;M_T:ACALLDISP;INCMINUTE;MOVA,MINUTE;CJNEA,#60,ZSTZ1;MOVMINUTE,#0;AJMPZSTZ1;NLTZ1:CLRP0.7;DEC38HMOV35H,#100;MOV36H,#10;NLTZ2:ACALLONE;ACALLTWO;DJNZ35H,NLTZ2;JNBP3.0,DATETZ;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ1;按下2鍵進行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進行定時設(shè)置JNBP3.4,NLXS2;JNBP3.5,NLXS1;DJNZ36H,NLTZ2;AJMPMAIN;NLXS1:MOVDPTR,#LEDTAB;MOV35H,#100;MOV36H,#10;INCR0;MOV37H,R0;CJNER0,#60,NLTZ2;MOVR0,#0;MOV37H,R0;AJMPNLTZ2;ONE:MOVDPTR,#LEDTAB;MOVA,R0;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_S;ACALLD_1MS;SETBMIN_S;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_G;ACALLD_1MS;SETBMIN_G;RET;NLXS2:MOVDPTR,#LEDTAB;MOV35H,#60;MOV36H,#10;INCR1;MOV38H,R1;CJNER1,#24,NLTZ2;MOVR1,#0;MOV38H,R1;AJMPNLTZ2;TWO:MOVDPTR,#LEDTAB;MOVA,R1;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRHOU_S;ACALLD_1MS;SETBHOU_S;MOVDPTR,#LEDTAB;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRHOU_G;ACALLD_1MS;SETBHOU_G;RET;DSTZ1:MOV3CH,#0CLRP0.7;MOV35H,#100;MOV36H,#10;JNBP3.3,DSTZ1;DSTZ2:ACALLDS_S;ACALLDS_M;DJNZ35H,DSTZ2;JNBP3.0,DATETZ3;按下0鍵時,顯示日期并可對日期進行調(diào)整JNBP3.1,ZSTZ;按下1鍵時,顯示時間,并可調(diào)時JNBP3.2,NLTZ;按下2鍵進行鬧鈴設(shè)置JNBP3.4,DSXS1;JNBP3.5,DSXS2;JNBP3.3,DSKS1;DJNZ36H,DSTZ2;AJMPMAIN;DATETZ3:AJMPDATETZZSTZ:AJMPZSTZ1NLTZ:AJMPNLTZ1DSXS1:MOV35H,#100;MOV36H,#10;INCR6;CJNER6,#60,DSTZ2;MOVR6,#0;AJMPDSTZ2;DS_M:;MOVDPTR,#LEDTAB;MOVA,R6;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_S;ACALLD_1MS;SETBMIN_S;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_G;ACALLD_1MS;SETBMIN_G;RET;DSXS2:MOV35H,#100;MOV36H,#10;INCR5;CJNER5,#60,DSTZ2;MOVR5,#0;AJMPDSTZ2;DS_S:MOVDPTR,#LEDTAB;MOVA,R5;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRSEC_S;ACALLD_1MS;SETBSEC_S;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRSEC_G;ACALLD_1MS;SETBSEC_G;RET;DSKS1:MOV3CH,#1MOVA,R5;MOVR3,A;MOVA,R6;MOVR4,A;DSKS2:MOVDPTR,#LEDTAB;MOVA,R3;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRSEC_S;ACALLD_1MS;SETBSEC_S;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRSEC_G;ACALLD_1MS;SETBSEC_G;MOVA,R4;MOVB,#10;DIVAB;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_S;ACALLD_1MS;SETBMIN_S;MOVA,B;MOVCA,@A+DPTR;MOVP1,A;CLRMIN_G;ACALLD_1MS;SETBMIN_G;JNBP3.0,MAIN2;JNBP3.1,MAIN2;DSPD:;MOVA,R4;JZPANDUAN_S;AJMPDSKS2;PANDUAN_S:;MOVA,R3;JZSHENGYIN;AJMPDSKS2;MAIN2:LJMPMAIN;SHENGYIN:MOV3CH,#1SETBP0.7AJMPMAINRETI_11:;由于程序較長,此處加一個返回程序,避免跳轉(zhuǎn)距離過長POPPSW;POPACC;RETI;;中斷服務(wù)程序TIMER0:PUSHACC;PUSHPSW;MOVA,#0B0H;ADDA,TL0;MOVTL0,A;MOVTH0,#03CH;DJNZTIM_1,RETI_11;MOVTIM_1,#10;DJNZTIM_2,RETI_11;MOVTIM_2,#2;INCSECOND;MOVA,SECOND;CJNER3,#0,RETI_2;MOVR3,#60;DECR4;RETI_2:DECR3;CJNEA,#60,RETI_11;MOVSECOND,#0;INCMINUTE;MOVA,MINUTE;RETI_3:CJNEA,#60,RETI_11;MOVMINUTE,#0;MOVSECOND,#0;INCHOUR;MOVA,HOUR;CJNEA,#24,RETI_11;MOVHOUR,#0;MOVMINUTE,#0;MOVSECOND,#0;T_YEARPD:MOVA,YEAR;MOVB,#100;DIVAB;MOVA,B;JZT_YEARPD2;看年份是否能被100整除,若能,再進行額外判斷MOVA,YEAR;不能被100整除,則判斷是否能被4整除MOVB,#4;DIVAB;MOVA,B;JZT_RUNYEAR;若年份能被4整除則跳轉(zhuǎn)到閏年部分T_PINGYEAR:;年份不能被4整除則為平年MOVA,MONTH;CJNEA,#2,T_PINGMONTH;若不是2月,則跳轉(zhuǎn)到平時的月份進行判斷INCDAY;MOVA,DAY;CJNEA,#29,RETI_11;MOVDAY,#1;INCMONTH;MOVA,MONTH;CJNEA,#13,RETI_11;MOVMONTH,#1;INCYEAR;AJMPRETI_1;返回T_YEARPD2:;能被100整除的情況下,的額外判斷MOVA,YEAR;MOVB,#100;DIVAB;MOVB,#4DIVABJNZT_PINGYEAR;若不能被400整除則為平年T_RUNYEAR:;閏年的情況MOVA,MONTH;CJNEA,#2,T_PINGMONTH;看是不是2月INCDAY;MOVA,DAY;CJNEA,#30,RETI_1;MOVDAY,#1;INCMONTH;MOVA,MONTH;CJNEA,#13,RETI_1;MOVMONTH,#1;INCYEAR;AJMPRETI_1;T_PINGMONTH: MOVA,MONTHADDA,#2SUBBA,#3;判斷是不是一月JZT_DAY31;若是一月調(diào)用一個月31天的程序段MOVA,MONTH;SUBBA,#3;JZT_DAY31;MOVA,MONTH;SUBBA,#4;JZT_DAY30;調(diào)用一個月30天的程序段MOVA,MONTHSUBBA,#5JZT_DAY31MOVA,MONTHSUBBA,#6JZT_DAY30MOVA,MONTHSUBBA,#7JZT_DAY31MOVA,MONTHSUBBA,#8JZT_DAY31MOVA,MONTHSUBBA,#9JZT_DAY30MOVA,MONTHSUBBA,#10JZT_DAY31MOVA,MONTHSUBBA,#11JZT_DAY30MOVA,MONTHSUBBA,#12JZT_DAY31RETI_1:POPPSWPOPACCRETI;中斷返回T_DAY31:;當(dāng)一個月為31天時的日期計算方法INCDAYMOVA,DAYCJNEA,#32,RETI_1MOVDAY,#1INCMONTHMOVA,MONTHCJNEA,#13,RETI_1MOVMONTH,#1INCYEARAJMPRETI_1T_DAY30:;當(dāng)一個月為30天時的日期計算方法INCDAYMOVA,DAYCJNEA,#31,RETI_1MOVDAY

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論