




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE畢業(yè)設(shè)計(jì)說明書作者:學(xué)號(hào):學(xué)院:系(專業(yè)):題目:基于單片機(jī)設(shè)計(jì)LED顯示電子鐘見指組導(dǎo)刃者世:匯謊南反王次足閥飾濃服貓抱吧瀉旱架路拾基嚼民筆裳竿即第抽躬貸刷往評(píng)寒閱亡者剝:魄巾蓄殃帶況濃石包頭簡競涉食傻頂?shù)蕩X憐喝跌縫貼投垂床判兵億豪莊警鬧純精港石回2確0圖1駱0壩終獨(dú)年堵錢往6挪秘月障攏王7茶什日PAGEPAGE45芝畢辯業(yè)蟻設(shè)咐計(jì)溪中就文上摘售要霜基得于符單矩片危機(jī)梨設(shè)煤計(jì)輔L站E趙D館顯曠示熱電軟子今鐘輪摘徑要肚:鴨本懶設(shè)孕計(jì)垮使伶用磚1競2螺M亦H閥Z曲晶鄭振駱與葵單滲片蜻機(jī)帝A忘T的8鑰9餅C旺5綱1改相草連賀接侵,丑以乒A那T物8行9叔C覺5鍛1道芯軟片賤為少核練心幼,砍采傻用悶動(dòng)職態(tài)脆掃攜描膛方尿式籌顯鮮示就,莖通田過搏使姜用策該面單穩(wěn)片補(bǔ)機(jī)痰,績加茶之巧在鋤顯渴示車電誠路淡部倉分鋒使荒用永7唯4起0乖7置驅(qū)鞏動(dòng)搭電的路魂,府實(shí)儲(chǔ)現(xiàn)缺在伯6多個(gè)于L所E蝴D劇數(shù)置碼乓管漫上當(dāng)顯貞示職日湖期趁、沾時(shí)南間上、晚定岸時(shí)式、科鬧講鈴?fù)?,林通厘過稀6陽個(gè)菠按健鍵樓實(shí)持現(xiàn)貝設(shè)甚置灶日濕期扯、懷進(jìn)內(nèi)行擴(kuò)調(diào)必時(shí)全、張?jiān)O(shè)旁定奶鬧介鈴止、衣倒占計(jì)牌時(shí)肥等堅(jiān)功完能細(xì),谷在廉實(shí)令現(xiàn)脅各憂功定能號(hào)時(shí)朝數(shù)分碼柿管惡進(jìn)秀行江相得應(yīng)亡顯謠示塊,裙鬧噸鈴嚼或賞定腫時(shí)肥時(shí)燦間忽到徐時(shí)嗓蜂廉鳴邀器粘響叮,墊按檢下抖鬧肌鈴譯鍵繡或型定在時(shí)冶鍵考時(shí)滾,姥聲萌音魄停待止諒。境軟龍件為部勇分覽用接匯霞編海實(shí)持現(xiàn)論,援分蠻為居顯戚示纖、排延晃遲帆、狹調(diào)績時(shí)搖、漿鬧四鈴滿、葵定紐時(shí)膏、避調(diào)挖整然日莫期尺等搶部乏分壺。外通害過臥軟杠硬瞎件枯結(jié)舊合銷達(dá)貧到熱最均終墊目抄的穴。膨關(guān)當(dāng)鍵由詞降:躺慘電為子胳鐘聰洗單嘴片脹機(jī)慶靈動(dòng)厚態(tài)盯掃脫描盜柿匯會(huì)編湊語驢言婦畢殘業(yè)新設(shè)弊計(jì)衰外鞠文損摘硬要莊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臘遠(yuǎn)C逮l羽o密c招k污及B補(bǔ)a長s宗e企d已屬o鄉(xiāng)n聰悠椅溪嗓罵拋雀腦扮輝居姑輪拔簡尺俱胸?fù)項(xiàng)濎`惡統(tǒng)軌宏酬M濱i綁c心r伸o廉p堵r席o正c違e雙s融s碗o譯r妹修洽棕腦炒協(xié)佳社伶欲移饞挽杜變A雀b誰s藥t豪r數(shù)a頓c民t橡T賽h株i神s土興d追e靠s棕i護(hù)g綢n芒嶄u早s命e跪s咸載a貧匠1岡2瓜思M盾H內(nèi)Z趨材c量r儉y盞s注t逆a柔l巷喊t幣o尖片c扭o驅(qū)n剃n周e木c言t究熔w搞i連t芬h疾敲t慌h頂e爺念m慚a避c腳h根i劫n倆e瓦到A程T促8計(jì)9末C盞5貪1氧,餅飾t淚a啄k附e詢s褲磚A克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(yuǎn)貪e豐攤d狠y雷n伏a捧m勵(lì)i恥c徐房s賢t袖a工t匙e朱積o冊(cè)f番揉t處h秘e旁瑞s旱c桶a千n巴n團(tuán)i份n足g貫洽m揀e害t死h棉o翁d膏貍t旁o慌列s紅h雪o運(yùn)w宿.復(fù)稈U觸s扔i升n憤g殃霉t爪h休i站s畢喝M暫C抵U東籠a童n幼d統(tǒng)話7貸4石0今7描達(dá)d害r旱i文v悔e喂香e命l保e踐c斧t抖r遣i滅c險(xiǎn)外c族i乒r撫c尊u紗i世t宏,愁遙w噴e萬訪a礎(chǔ)r吼e災(zāi)慘a邊b撒l邊e魚泰t菜o媽乖s眨h革o督w號(hào)形d膛a獄t濕e紋,舌懇t暫i猾m任e途,嗚風(fēng)f鎖i渠x蓬傘t膛h道e刮錯(cuò)t翅i湯m周e纏,賴帳m沿a播k內(nèi)e翼端b拐e刺l蘿l戀浪o色n伐居6俯各L刺E張D枝無f我i焦g包u嗎r爐e砍s念軍t屈u滿b曉e會(huì)s億.削壺W宏e德舟c磚a稿n卵附u徐s謠e川哲6參壩k繞e阻y鉤廚t盈o歌柜c糞o襲n截s觀t故i煎t轎u料t責(zé)e蝦讀d懼a配t病e產(chǎn),蝦糞a仗d騰j賽u夏s煩t蛛允t錢i遭m辛e棕,本址e帥n港a嬸c允t壩盼t挺h躁e孩填b走e糧l刪l閱古a妄n轉(zhuǎn)d倆態(tài)s憑e堂t感周t桑h底e今危c味o奸u上n慚t智d憲o逗w執(zhí)n廊豪t熔i匠m類e填r洞.暴序W傾h螺e梢n顛宗t鎖h賺e巨較e租l帽e她c頑t菜r籍i肯c魔識(shí)c爛a盆r而r湖y矮i遵n借g賤穗o狂u首t賽螺e敘a正c踢h(yuǎn)刮享f劑u創(chuàng)n澇c猜t急i矮o剖n陜,盈蓋t墳h愿e違宰f輕i竄g氣u井r辰e蹈s爸他t光u功b染e毒蔽s醫(yī)h氣o咐w賽廚t秤h麥e義牽t列i栽g煉h侍t街返f以u(píng)績n院c閣t唱i趙o慶n支感.山W淋h糕e哨n沸座t確h譯e仇亂a研l(wèi)萄a(bǔ)值r俘m摟拴c釀l寧o羞c碎k謹(jǐn)尤a糖n遵d擦盾t朝h搖e濕思c眾o聾u餡n籃t政d驕o計(jì)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訓(xùn)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細(xì)i干c敲e公痰s篇t釣o命p建s覆.漿呆T斤h嫁e葡民s旱o維f佩t它w到a計(jì)r滲e注英p漠a(chǎn)難r刻t璃節(jié)i柴s甜井r警e真a熔l顧i擦z俱e氧d譜避b授y潛拾a潮s菊s唐e嚼m(xù)辨b朽l(xiāng)壘e燃r泥御l門a漂n送g互u急a捉g驅(qū)e販.它稻I旦t找章w誦a聯(lián)s們刮d拖i明v哀i傘d世e培d端凱i治n串t躍o飯壯t勇o敞求s獵h臣o(jì)銀w掏,尚寨d顏e柳l先a密y浮,彼茄a(bǔ)寧d微j眼u我s阻t圣,揉羞m晝a光k浙e壇肢b榮e恨l塔l庭,蓬筆i柱n祝窩f毒i嘩x歐e陶d珍壓t價(jià)i停m找e槍,團(tuán)惕a碑d確j冒u掌s內(nèi)t危別d棒a鹽t盞e迅牙e太t的c冬.候歇p毅a覆r類t只.薯絹W次e氏臥g溝e廳t限考t嶄h粥e時(shí)性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困調(diào)h漢a仆r兩d紅w扔a皂r慨e敘.Keywords:ElectricclockMCUDynamicstatescaningassemblerlanguage艙目罰陽栽健次HYPERLINK\l"_Toc263755999"圖1輩妹瞎引喜言懇 伍1HYPERLINK\l"_Toc263756000"蹤2扛艦日整刪體面設(shè)畏計(jì)妖思著路聲 阻3HYPERLINK\l"_Toc263756001"跨3真舟后主樂要拍元獄件照的梅使瓦用唇方拐法槳 姑4HYPERLINK\l"_Toc263756002"細(xì)3倦.柄1伐理A稠T統(tǒng)8臘9秘C探5豪1撕單心片枝機(jī)駱:紛 轟4HYPERLINK\l"_Toc263756003"軌3岔.豎2暮目7滅4病0匪7阻驅(qū)瑞動(dòng)揭器造:鬼 撿5HYPERLINK\l"_Toc263756004"名3盞.聾3崖數(shù)先碼樸管參:禮 引6HYPERLINK\l"_Toc263756005"訂4笛己吸電太路倆設(shè)馬計(jì)粘 藝7HYPERLINK\l"_Toc263756006"蹲4小.段1它整薯體讀設(shè)辱計(jì)朗 聾7HYPERLINK\l"_Toc263756007"聽4惹.敘2授奇分折塊也設(shè)酬計(jì)激 梯7HYPERLINK\l"_Toc263756008"拜4舉.銹2道.友1校坡輸乞入湊部墻分忌 巨7HYPERLINK\l"_Toc263756009"娛4閥.千2紗.桃2才符輸吃出留部勢(shì)分奪(飾顯墾示峰電插路幕)嶺 隊(duì)8HYPERLINK\l"_Toc263756010"弄4故.陰2讀.卡3膚槍晶真振豪與殖復(fù)宿位掏電堪路侍:音 筐9HYPERLINK\l"_Toc263756011"穩(wěn)5資奴奪程著序擠設(shè)乓計(jì)泉 蠟9HYPERLINK\l"_Toc263756012"傳5逃.壺1刃程屆序猜思訪路舌 廢9HYPERLINK\l"_Toc263756013"男5惕.訂2顏程陵序燃設(shè)寫計(jì)繼步良驟幼 刃1瓣0HYPERLINK\l"_Toc263756014"寒5猛.泡3預(yù)程端序占的緣主銹要窄模晶塊住 鞋1糊1HYPERLINK\l"_Toc263756015"丘5奏.歡3勝.載1鋒延坦遲伏程買序頓 黨1泛1HYPERLINK\l"_Toc263756016"參5腳.壇3續(xù).膏2饅約中艱斷驗(yàn)服腰務(wù)心子企程正序面:丹 禽1胸1HYPERLINK\l"_Toc263756017"嫩5章.鋒3覽.肢3勝狐主榮程朋序氧 擔(dān)1坑3HYPERLINK\l"_Toc263756018"些5盆.零3秤.蛛4戴顯切示距程蠻序淡 柿1繡3HYPERLINK\l"_Toc263756019"歸5突.細(xì)3色.輔5猴稠鬧沃鈴畢程申序訓(xùn)和郊定肚時(shí)朗程飼序攤 份1富4HYPERLINK\l"_Toc263756020"夠5報(bào).匯4柳程劈序三調(diào)撞試拖 詠1柴4HYPERLINK\l"_Toc263756021"邊6活牢誤功兵能程仿虎真集 籮1芽5HYPERLINK\l"_Toc263756022"塘6小.士1禁危軟津件獻(xiàn)介翁紹泥 奸1假5HYPERLINK\l"_Toc263756023"舌6鑼.冤1父.繞1竭P舅R價(jià)O觸T巨E團(tuán)U猶S測(cè) 每1險(xiǎn)5HYPERLINK\l"_Toc263756024"磚6另.菊1橫.劑2昌M姐e慈d辭W丟i盞n右 端1拆5HYPERLINK\l"_Toc263756025"芹6讀.目2判仿諒真陶過睛程孝:閃 致1踐6HYPERLINK\l"_Toc263756026"攝6紹.殖2辰.抄1啄仿深真剪圖丟的價(jià)繪交制兼 再1浴6HYPERLINK\l"_Toc263756027"饞6柏.述2禾.戚2鎖功杰能導(dǎo)的暗實(shí)冰現(xiàn)善 流1融7HYPERLINK\l"_Toc263756028"助7迅串吩實(shí)窯際儉電畫路泊的攜實(shí)毛現(xiàn)峽 形1遇8HYPERLINK\l"_Toc263756029"級(jí)8讓寒飛日滿歷制功誰能鍋的繪實(shí)男現(xiàn)往 撒2遠(yuǎn)0HYPERLINK\l"_Toc263756030"飾9瞧狼澡電荷子淺鐘拋設(shè)虜計(jì)乎中舍遇斧到?jīng)_的抖問恰題縮及披其匙解竄決綁方細(xì)法絮 躲2點(diǎn)3HYPERLINK\l"_Toc263756031"裂結(jié)洪論首 草2姑5HYPERLINK\l"_Toc263756032"滴參濤考裹文羞獻(xiàn)宅 煌2欄6HYPERLINK\l"_Toc263756033"油致蘿謝者 澇2繭8HYPERLINK\l"_Toc263756034"積附球錄義A哲陜整劉體可電乒路河圖皂 暮2牲9HYPERLINK\l"_Toc263756035"碌附摔錄納B屯糖完該整段程響序捉 揚(yáng)3伸01引言單片機(jī)因?qū)⑵渲饕M成部分集成在一個(gè)芯片上而得名,就是把中央處理器、隨機(jī)存儲(chǔ)器、只讀存儲(chǔ)器、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器以及I/O接口電路等部件集成在一個(gè)芯片上[1]。單片機(jī)自20世紀(jì)70年代問世以來,以其極高的性能價(jià)格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。單片機(jī)具有體積小、功能多、價(jià)格低廉、使用方便、系統(tǒng)設(shè)計(jì)靈活等優(yōu)點(diǎn)[2]。因此,它應(yīng)用廣泛前景美好,它的實(shí)用性大大地提高了我對(duì)畢業(yè)設(shè)計(jì)的興趣。在我國,單片機(jī)的開發(fā)應(yīng)用已有15年左右,已經(jīng)形成一支龐大的技術(shù)開發(fā)隊(duì)伍,為我國單片機(jī)應(yīng)用積累了豐富的經(jīng)驗(yàn)。隨著電子技術(shù)、計(jì)算機(jī)芯片技術(shù)和微電子技術(shù)的飛速發(fā)展促進(jìn)了單片機(jī)技術(shù)一日千里的變化[3]。隨著半導(dǎo)體技術(shù)的飛速發(fā)展,以及移動(dòng)通信、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用,單片機(jī)從4位、8位、16位到32位,其發(fā)展歷程一直受到廣大電子愛好者的極大關(guān)注。單片機(jī)功能越來越強(qiáng)大,價(jià)格卻不斷下降的優(yōu)勢(shì)無疑成為嵌入式系統(tǒng)方案設(shè)計(jì)的首選,同時(shí)單片機(jī)應(yīng)用領(lǐng)域的擴(kuò)大也使得更多人加入到基于單片機(jī)系統(tǒng)的開發(fā)行列中,推動(dòng)著單片機(jī)技術(shù)的創(chuàng)新進(jìn)步。然而傳統(tǒng)的單片機(jī)系統(tǒng)開發(fā)除了需要購置諸如仿真器、編程器、示波器等價(jià)格不菲的電子設(shè)備外,開發(fā)過程也較繁瑣。來自英國LabcenterElectronics公司的Proteus軟件很好地詮釋了利用現(xiàn)代EDA工具方便快捷開發(fā)單片機(jī)系統(tǒng)的優(yōu)勢(shì)。它包括PROTEUSVSM(VirtualSystemModelling)、PROTEUSPCBDESIGN兩大組成部分,在PC機(jī)上就能實(shí)現(xiàn)原理圖電路設(shè)計(jì)、電路分析與仿真、單片機(jī)代碼級(jí)調(diào)試與仿真、系統(tǒng)測(cè)試與功能驗(yàn)證以及形成PCB文件的完整嵌入式系統(tǒng)設(shè)計(jì)與研發(fā)過程。單片機(jī)系統(tǒng)作為一種典型的嵌入式系統(tǒng),其系統(tǒng)設(shè)計(jì)包括硬件電路設(shè)計(jì)和軟件編程設(shè)計(jì)兩個(gè)方面,其調(diào)試過程一般分為軟件調(diào)試、硬件測(cè)試、系統(tǒng)調(diào)試3個(gè)過程。如果采用單片機(jī)系統(tǒng)的虛擬仿真軟件——Proteus,則不用制作具體的電路板也能夠完成以上工作。數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí),分,秒,數(shù)字顯示的計(jì)時(shí)裝置,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表的報(bào)時(shí)功能。數(shù)字鐘已成為人們?nèi)粘I钪械谋匦杵?,廣泛應(yīng)用于家庭、車站、碼頭、劇院、辦公室等場所,給人們的生活、學(xué)習(xí)、工作帶來極大的方便[4]。不僅如此,在現(xiàn)代化的進(jìn)程中,也離不開電子鐘的相關(guān)功能和原理,比如機(jī)械手的控制、家務(wù)的自動(dòng)化、定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。而且是控制的核心部分。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。電子鐘在工業(yè)控制和日常生活中是很重要的,它不僅可以用于計(jì)時(shí)、提醒又可用于對(duì)機(jī)器的控制,在自動(dòng)化的過程中必然有電子鐘的參與,因此電子鐘的應(yīng)用會(huì)越來越廣泛。而且向著精確、低功耗、多功能發(fā)展?;趩纹瑱C(jī)設(shè)計(jì)的數(shù)字鐘精確度較高,因?yàn)樵诔绦虻膱?zhí)行過程中,任何指令都不影響定時(shí)器的正常計(jì)數(shù),即便程序很長也不會(huì)影響中斷的時(shí)間。從而,使數(shù)字鐘的精度僅僅取決于單片機(jī)的產(chǎn)生機(jī)器周期電路和定時(shí)器硬件電路的精確度。另外,程序較為簡潔,具有可靠性和較好的可讀性。如果我們想將它應(yīng)用于實(shí)時(shí)控制之中,只要對(duì)上述程序和硬件電路稍加修改,便可以得到實(shí)時(shí)控制的實(shí)用系統(tǒng),從而應(yīng)用到實(shí)際工作與生產(chǎn)中去。數(shù)字電子鐘的設(shè)計(jì)方法有多種,例如,可用中小規(guī)模集成電路組成電子鐘,也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘等等。這些方法都各有特點(diǎn),其中,利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,便于功能擴(kuò)充,精確度高等特點(diǎn)[5]?;谝陨戏治觯诖舜卧O(shè)計(jì)中,我選擇的是利用單片機(jī)制作電子鐘。電子鐘的設(shè)計(jì)本身包括程序的設(shè)計(jì)和硬件電路的設(shè)計(jì)[6]。我的思路是,先進(jìn)行電路的整體設(shè)計(jì),再根據(jù)電路進(jìn)行編程,在編程的過程中,對(duì)電路進(jìn)行微調(diào),以更好地配合程序。在設(shè)計(jì)完成后,進(jìn)行程序調(diào)試,調(diào)試軟件選擇MedWin,調(diào)試成功后,再根據(jù)電路圖畫出仿真圖,將軟件裝入單片機(jī)芯片,利用Proteus軟件進(jìn)行仿真,仿真中的錯(cuò)誤通過改正程序中的邏輯錯(cuò)誤和電路中的設(shè)計(jì)不當(dāng)進(jìn)行排除,這個(gè)過程是很艱難的但也是很重要的。若仿真可以實(shí)現(xiàn),則硬件電路的實(shí)現(xiàn)就可以有條不紊地進(jìn)行。2整體設(shè)計(jì)思路這部分主要介紹工作安排和整體設(shè)計(jì)的思想。工作過程規(guī)劃如下:熟悉硬件了解各引腳功能熟悉硬件了解各引腳功能分塊設(shè)計(jì)各部分電路將分塊的電路組合認(rèn)真學(xué)習(xí)單片機(jī)匯編語言完成整體電路圖確定變成結(jié)構(gòu)和思路綜合各程序完成整體程序編輯各個(gè)程序模塊用Proteus畫出電路圖調(diào)試程序,進(jìn)行修改對(duì)仿真中出現(xiàn)的問題進(jìn)行改正畫出仿真圖進(jìn)行仿真準(zhǔn)備器件、搭接電路仿真成功軟硬件結(jié)合,完成任務(wù)書要求驗(yàn)證硬件電路成功進(jìn)行擴(kuò)展圖2.1整體設(shè)計(jì)思路針對(duì)要實(shí)現(xiàn)的功能,擬采用AT89C51單片機(jī)進(jìn)行設(shè)計(jì),AT89C51單片機(jī)是一款低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4KB在線可編程(ISP)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)[7]。這樣,既能做到經(jīng)濟(jì)合理又能實(shí)現(xiàn)預(yù)期的功能。在程序方面,采用分塊設(shè)計(jì)的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項(xiàng)功能。程序可分為鬧鐘的聲音程序、顯示程序、鬧鐘顯示程序、調(diào)時(shí)顯示、定時(shí)程序。運(yùn)用這種方法,關(guān)鍵在于各模塊的兼容和配合,若各模塊不匹配會(huì)出現(xiàn)意想不到的錯(cuò)誤。本電子鐘設(shè)計(jì)主要是依照?qǐng)D2.1中的流程做出來的,時(shí)間分配比較均勻。首先,在編程之前必須了解硬件結(jié)構(gòu)尤其是各引腳的用法,以及內(nèi)部寄存器、存儲(chǔ)單元的用法,否則,編程無從下手,電路也無法設(shè)計(jì)。這是前期準(zhǔn)備工作。第二部分是硬件部分:依據(jù)想要的功能分塊設(shè)計(jì)設(shè)計(jì),比如輸入需要開關(guān)電路,輸出需要顯示驅(qū)動(dòng)電路和數(shù)碼管電路等。第三部分是軟件部分:先學(xué)習(xí)理解匯編語言的編程方法再根據(jù)設(shè)計(jì)的硬件電路進(jìn)行分塊的編程調(diào)試,最終完成程序設(shè)計(jì)。第四部分是軟件畫圖部分:設(shè)計(jì)好電路后進(jìn)行畫圖,包括電路圖和仿真圖的繪制。第五部分是軟件仿真部分:軟硬件設(shè)計(jì)好后將軟件載入芯片中進(jìn)行仿真,仿真無法完成時(shí)檢查軟件程序和硬件電路并進(jìn)行修改直到仿真成功。第六部分是硬件實(shí)現(xiàn)部分:連接電路并導(dǎo)入程序檢查電路,若與設(shè)計(jì)的完全一樣一般能實(shí)現(xiàn)想要的功能。最后進(jìn)行功能擴(kuò)展,本設(shè)計(jì)加進(jìn)了日期顯示與調(diào)整功能。3主要元件的使用方法下面就本次設(shè)計(jì)中用到的主要元件的所有功能進(jìn)行簡單的介紹,包括AT89C51單片機(jī)、74LS07芯片、以及數(shù)碼管的特性和用法。3.1AT89C51單片機(jī)[8]:該單片機(jī)功能強(qiáng)大,不僅能滿足設(shè)計(jì)的需要,也可以在設(shè)計(jì)要求的基礎(chǔ)上進(jìn)行一些擴(kuò)展。單片機(jī)的結(jié)構(gòu)如下:圖3.1.1單片機(jī)引腳圖在使用時(shí)VCC接電源電壓,GND接地。P0,P1,P2,P3可作為輸入或輸出端口,RST是復(fù)位輸入,接復(fù)位電路。XTAL1和XTAL2接復(fù)位電路。這些可以在硬件設(shè)計(jì)部分體現(xiàn)出來。3.27407驅(qū)動(dòng)器[9]:7407是集電極開路六正相高壓驅(qū)動(dòng)器,1入2出,3進(jìn)4出,5進(jìn)6出,9進(jìn)8出,11進(jìn)10出,13進(jìn)12出,7接地,14接高電平。7407引腳圖:圖3.2.17407引腳圖7407邏輯圖:圖3.2.27407邏輯圖gfabgfabeddpc87109612345abcdefg圖3.3.1數(shù)碼管使用共陰極數(shù)碼管時(shí)將6個(gè)數(shù)碼管按相同功能連接起來,3與8相連,當(dāng)選通端所接管腳為低電平時(shí)該數(shù)碼管選通。單片機(jī)的P2口作為選通端,連接各數(shù)碼管的3、8引腳輪流顯示,連接時(shí)要加7407和上拉電阻。單片機(jī)的P1口作為功能段,通高電平的引腳會(huì)使相應(yīng)段亮起,同樣的也要與7407和電阻連接使用。4電路設(shè)計(jì)4.1整體設(shè)計(jì)此次設(shè)計(jì)主要是應(yīng)用單片機(jī)來設(shè)計(jì)電子時(shí)鐘,硬件部分主要分以下電路模塊:顯示電路用六個(gè)數(shù)碼管分別顯示小時(shí)(年份)、分鐘(月份)和秒(日),通過動(dòng)態(tài)掃描進(jìn)行顯示,從而避免了譯碼器的使用,使電路更加簡單。單片機(jī)采用AT89C51系列,這種單片機(jī)應(yīng)用簡單,適合電子鐘設(shè)計(jì)。電路的總體設(shè)計(jì)框架如下:單片機(jī)單片機(jī)輸入部分晶振和復(fù)位輸出部分圖4.1.1電路模塊圖4.2分塊設(shè)計(jì)這部分介紹各模塊電路的設(shè)計(jì)方法和成果,主要分為:輸入部分、輸出部分、復(fù)位和晶振電路。4.2.1輸入部分在電子鐘的輸入部分,設(shè)置相應(yīng)的置數(shù)功能,通過外部設(shè)備的輸入,如按鍵,實(shí)現(xiàn)時(shí)間的修改[10-11]。除此之外,調(diào)整鬧鈴、定時(shí)、日期時(shí)也需要按鍵進(jìn)行輸入。在選用輸入端口時(shí),將P3引腳與按鍵相連進(jìn)行輸入[12]。設(shè)計(jì)的輸入部分如下:圖4.2.1輸入部分各按鍵功能在后面的部分將會(huì)介紹到4.2.2輸出部分(顯示電路)該部分電路圖如下所示:圖4.2.2顯示部分在實(shí)際電路中采用單個(gè)數(shù)碼管相連進(jìn)行顯示,先把數(shù)碼管的1、2、4、5、6、7、9、10對(duì)應(yīng)相連,然后把各晶體管的3和8引腳各自相連,P1.6~P1.0分別接a~g,P2作為選通端P2.0~P2.5分別從左到右接各數(shù)碼管的3、8端。采用動(dòng)態(tài)顯示,即一位一位地輪流點(diǎn)亮各位顯示器[18],因此P2.0~P2.5輪流置0。持續(xù)時(shí)間為1ms,這點(diǎn)在程序部分還會(huì)講到。4.2.3晶振與復(fù)位電路:圖4.2.3晶振與復(fù)位電路5程序設(shè)計(jì)5.1程序思路初始化初始化判斷按鍵顯示按下3鍵按下1鍵按下2鍵若無按鍵調(diào)時(shí)調(diào)鬧鐘調(diào)定時(shí)顯示所調(diào)時(shí)間顯示鬧鈴時(shí)間顯示定時(shí)時(shí)間調(diào)整時(shí)限到或有其他輸入圖5.1.1程序設(shè)計(jì)思路結(jié)合電路,程序的總體思路是[17]:1、點(diǎn)復(fù)位鍵后,進(jìn)行時(shí)間顯示,從0時(shí)0分0秒開始。2、按下按鍵1時(shí),進(jìn)行調(diào)時(shí),此時(shí)按下4調(diào)整時(shí),按下5調(diào)整分,若2秒鐘未按鍵,則不再等待,恢復(fù)走時(shí),持續(xù)按鍵時(shí)大約0.3秒步進(jìn)1,下同。3、按下2鍵時(shí)進(jìn)行鬧鈴調(diào)整,用4、5鍵分別調(diào)時(shí)和分,此時(shí)只有前四位進(jìn)行顯示,即鬧鈴功能精確到分,2秒鐘無按鍵則返回時(shí)間顯示,時(shí)間到達(dá)鬧鈴所定時(shí)間時(shí)P0.7輸出高電平,蜂鳴器響,按下按鍵2或3時(shí)蜂鳴器停止。4、按3鍵時(shí)進(jìn)行定時(shí)的設(shè)定,同樣,分別通過4、5調(diào)整分和秒,若兩秒未按鍵則不進(jìn)行定時(shí),設(shè)定之后再次按下3鍵則進(jìn)行倒計(jì)時(shí),倒計(jì)時(shí)時(shí)間未到時(shí)若按下1鍵則進(jìn)行時(shí)間顯示;若倒計(jì)時(shí)時(shí)間到則P0.7為高電平,蜂鳴器響。定時(shí)的最大值為59分59秒。在程序設(shè)計(jì)時(shí),盡量改進(jìn)算法,算法的改進(jìn)可以使相對(duì)誤差減小[12],或者可以使占用空間減小[14]。另外,分塊的設(shè)計(jì)思想要貫穿始終,整個(gè)程序較為繁雜,某些程序段會(huì)反復(fù)用到,因此采取的方法是寫出多個(gè)程序段,通過跳轉(zhuǎn)指令進(jìn)行調(diào)用。5.2程序設(shè)計(jì)步驟在程序設(shè)計(jì)過程中,我遇到了很多困難,這部分也是讓我學(xué)到很多東西的地方。首先,我學(xué)習(xí)了定時(shí)器的相關(guān)知識(shí),計(jì)數(shù)器的使用是很重要的組成部分[15],在這個(gè)設(shè)計(jì)中選擇計(jì)數(shù)器T0。T0的工作方式有:方式0:不推薦方式1:16位計(jì)數(shù)器,常用方式2:自動(dòng)重裝初值的8位定時(shí)/計(jì)數(shù)器方式3:T0相當(dāng)于兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器此程序采用方式1,方式1的定時(shí)時(shí)間t為t=(216-M)*12/fosc。其中M為定時(shí)器初值,fosc為12MHz,若M為0則t=65536*12/2*106=65.536ms。因此可取50ms為計(jì)時(shí)單位[16],初值M應(yīng)為50*10-3*106=216-M。M=15536=11110010110000=3CB0。即定時(shí)器初值為TH0=03CH,TL0=0B0H。定時(shí)器中斷20次為一秒,這部分在中斷程序中用到。其次,我參看了文獻(xiàn)中的設(shè)計(jì)思路,做到胸有成竹后再進(jìn)行具體的程序書寫工作。認(rèn)真學(xué)習(xí)了教科書中關(guān)于匯編語言編程的問題,熟悉了匯編語言的編程方法和語法習(xí)慣。第三步就是進(jìn)行具體的程序編寫工作。5.3程序的主要模塊5.3.1延遲程序在動(dòng)態(tài)掃描時(shí),必然用到延遲程序,這里使用延遲1ms的程序,此程序需要反復(fù)調(diào)用。此段程序是很簡單的,但就是在這段簡單的程序上,也會(huì)出現(xiàn)問題,若用D_1MS:MOVR7,#500DJNZR7,$RET則會(huì)出現(xiàn)警告,因?yàn)镽7是8位寄存器,所能存儲(chǔ)的最大值應(yīng)為255,所以應(yīng)改為:D_1MS:MOVR7,#2D_5:MOVR2,#250DJNZR2,$DJNZR7,D_5RET5.3.2中斷服務(wù)子程序:中斷服務(wù)程序中,總體思路是:由于初值是3CB0H,所以裝滿定時(shí)器需要50ms的時(shí)間,從而20次中斷為一秒,一秒之后,判斷是否到60秒,若不到則秒加一,然后返回,若到,則秒賦值為0,分加一,依次類推。包括日期顯示的功能也是如此。另外,由于要實(shí)現(xiàn)倒計(jì)時(shí)功能,因此在中斷程序中還要加入減一的寄存器,需要時(shí)將其進(jìn)行顯示?;谝陨峡紤],以R3為倒計(jì)時(shí)中的秒,R4為倒計(jì)時(shí)的分,當(dāng)秒加1時(shí)R3減一,減到0之后,秒賦值為59,分減一,直到分為0。再顯示走時(shí)部分。流程框圖如下:給T0賦值給T0賦值中斷20次R3賦值為60分=0,秒=0,時(shí)加一秒加一R3、R4都為0時(shí)倒計(jì)時(shí)結(jié)束,蜂鳴器響,顯示走時(shí)狀態(tài)秒=60Y秒=0時(shí)加1N時(shí)=24分=60YNYN分=0,秒=0,時(shí)=0返回R3=0YR3、R4減一N圖5.3.1中斷程序思路5.3.3主程序主程序主要對(duì)按鍵進(jìn)行掃描,以及判斷定時(shí)和鬧鈴時(shí)間是否已到,若到則調(diào)用聲音程序,該段程序如下:MAIN:JNBP3.0,DATETZ;按下0鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ1;按下2鍵進(jìn)行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進(jìn)行定時(shí)設(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;5.3.4顯示程序6個(gè)晶體管輪流進(jìn)行顯示,分別顯示1ms,這依賴的是人們視覺的惰性,該段程序如下:DISP:;走時(shí)的顯示程序,包括調(diào)時(shí)時(shí)的顯示MOVDPTR,#LEDTABMOVA,SECONDMOVB,#10DIVAB;A存十位B存?zhèn)€位MOVCA,@A+DPTRMOVP1,ACLRSEC_SACALLD_1MS;顯示秒十位SETBSEC_SMOVA,BMOVCA,@A+DPTRMOVP1,ACLRSEC_GACALLD_1MS;顯示秒個(gè)位SETBSEC_G……以此類推,進(jìn)行時(shí)和分的顯示RET另外,調(diào)鬧鈴和定時(shí)時(shí)間、進(jìn)行日期顯示時(shí),有各自的顯示程序,但不能成為獨(dú)立子程序,分別柔和在鬧鈴、定時(shí)、和日期程序中。5.3.5鬧鈴程序和定時(shí)程序這兩段程序分別包含了各自的顯示、調(diào)整程序。程序思路是對(duì)照,走時(shí)部分的程序,進(jìn)行編寫,包括顯示程序,與顯示時(shí)間的程序是相似的,鬧鈴和定時(shí)的調(diào)整程序與走時(shí)調(diào)整程序相似。5.4程序調(diào)試程序?qū)懲暌院蟊仨氝M(jìn)行調(diào)試,以驗(yàn)證程序是否正確。在程序調(diào)試時(shí),出現(xiàn)了很多問題,比如跳轉(zhuǎn)距離過長、打錯(cuò)字母、邏輯有錯(cuò)等,發(fā)現(xiàn)問題后,利用兩天時(shí)間進(jìn)行了改正,但即使編譯通過,最后也不一定能夠?qū)崿F(xiàn)功能。以為程序的調(diào)試只能檢查出語法錯(cuò)誤,而不能檢查出邏輯的錯(cuò)誤。要真正把程序?qū)憣?duì),要通過仿真發(fā)現(xiàn)并且改正錯(cuò)誤。6功能仿真這部分工作可能遇到的困難是很多的,程序龐大很可能出現(xiàn)各種問題。在仿真工作中,首先要對(duì)仿真軟件有足夠的了解并能夠正確熟練地運(yùn)用6.1軟件介紹在這部分工作中用到了medwin3和Proteus兩個(gè)軟件,其中Medwin3用來編譯程序并生成hex文件,裝入Proteus仿真圖的芯片中,通過仿真結(jié)果一步步進(jìn)行調(diào)整最后達(dá)到預(yù)期的功能。6.1.1PROTEUSPROTEUS軟件是目前世界上最先進(jìn)、最完整的嵌入式系統(tǒng)設(shè)計(jì)與仿真平臺(tái),可以實(shí)現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件仿真、系統(tǒng)協(xié)同仿真和PCB設(shè)計(jì)等功能,是目前唯一能夠?qū)Ω鞣N處理器進(jìn)行實(shí)時(shí)仿真、調(diào)試與測(cè)試的EDA工具。微控制器系統(tǒng)相關(guān)的仿真需建立編譯和調(diào)試環(huán)境,可選擇MedWinV3軟件。該軟件支持眾多不同公司的芯片,集編輯、編譯和程序仿真等于一體,同時(shí)還支匯編和C語言的程序設(shè)計(jì)。Proteus的界面友好易學(xué),在調(diào)試程序、軟件仿真方面有很強(qiáng)大的功能。其革命性的功能是:將電路仿真和微處理器仿真進(jìn)行協(xié)同,直接在基于原理圖的虛擬原型上進(jìn)行處理器編程調(diào)試,并進(jìn)行功能驗(yàn)證,通過動(dòng)態(tài)器件如電機(jī)、LED、LCD、開關(guān)等,實(shí)時(shí)看到運(yùn)行后的輸入、輸出的效果。Proteus為我們建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。6.1.2MedWinMedWin可以用來編寫匯編語言程序并進(jìn)行編譯、產(chǎn)生代碼并裝入仿真器以便于仿真,在輸出文件夾中會(huì)產(chǎn)生hex文件,將該hex文件導(dǎo)入仿真圖的單片機(jī)芯片中即可進(jìn)行仿真。使用時(shí)點(diǎn)擊“項(xiàng)目管理—新建項(xiàng)目”就可以建立編程的平臺(tái),然后選擇項(xiàng)目管理中的新建文件就可以建立asm文件,在這個(gè)文件中可以進(jìn)行程序的編寫,程序編寫完畢后可點(diǎn)擊“項(xiàng)目管理—編譯\匯編”看其是否有錯(cuò),有錯(cuò)時(shí),在下面的窗口會(huì)提示出錯(cuò)的行以及錯(cuò)誤原因。改正無誤后可產(chǎn)生代碼并裝入,將hex文件導(dǎo)入單片機(jī)中即可進(jìn)行仿真6.2仿真過程:通常在仿真過程中會(huì)遇到很大的麻煩。在程序匯編通過之后程序不一定是正確的,比如我剛開始進(jìn)行仿真時(shí)數(shù)碼管并不進(jìn)行顯示,結(jié)果發(fā)現(xiàn)應(yīng)該是置零的置一了,應(yīng)該置一的置零了。改正之后發(fā)現(xiàn)雖然走時(shí)程序正常了,但是調(diào)時(shí)中出現(xiàn)了大量的問題,更不要說鬧鈴和定時(shí)程序了。在整個(gè)畢業(yè)設(shè)計(jì)的過程中程序的修改貫穿始終,在修改的過程中一定要條理清晰,認(rèn)真細(xì)心。6.2.1仿真圖的繪制在使用Proteus進(jìn)行仿真時(shí),仿真圖不用畫出數(shù)碼管驅(qū)動(dòng)程序,其他部分與設(shè)計(jì)的硬件圖相仿。繪制結(jié)果如下:圖6.2.1仿真圖6.2.2功能的實(shí)現(xiàn)在繪制仿真圖之后,要向單片機(jī)裝入程序,從而使單片機(jī)開始工作并帶動(dòng)整個(gè)電路工作,裝入過程為:點(diǎn)擊單片機(jī),選擇所編譯程序的輸出hex文件,確定即可。此時(shí)單片機(jī)會(huì)按照程序所設(shè)定的功能進(jìn)行工作,在仿真過程中會(huì)遇到各種問題,在第九章會(huì)具體講到。這里列出仿真結(jié)果:(1)走時(shí)仿真:圖6.2.2走時(shí)狀態(tài)下的仿真結(jié)果(2)鬧鐘設(shè)定的仿真:圖6.2.3鬧鈴仿真結(jié)果可見所定鬧鐘時(shí)間為10點(diǎn)15分。(3)定時(shí)鐘倒計(jì)時(shí)的仿真:圖6.2.3倒計(jì)時(shí)仿真可見,倒計(jì)時(shí)進(jìn)行到3分3秒。7實(shí)際電路的實(shí)現(xiàn)在仿真無誤后,開始進(jìn)行實(shí)際電路的搭接。搭接時(shí)先不用芯片實(shí)物,而用仿真器替代。按照電路圖,先把數(shù)碼管按照對(duì)應(yīng)的管腳連接起來,然后接驅(qū)動(dòng)電路等,接好之后把程序裝入仿真器,通電運(yùn)行,再對(duì)電路進(jìn)行調(diào)試。在根據(jù)電路圖搭接好各個(gè)器件后,一個(gè)很重要的問題就是檢查各器件是否完全工作。下面介紹檢驗(yàn)方法:導(dǎo)線看似不用太費(fèi)力氣去檢驗(yàn),但一個(gè)成功的實(shí)驗(yàn)需要前期充分的準(zhǔn)備,比如在我的實(shí)驗(yàn)過程中,由于導(dǎo)線繁多,而且使用舊導(dǎo)線進(jìn)行實(shí)際電路的連接,所以就出現(xiàn)了導(dǎo)線不通的情況,因此驗(yàn)證過程中不要放過小問題。數(shù)碼管的檢測(cè):拆除89C51芯片,先分別給芯片P2對(duì)應(yīng)的導(dǎo)線加低電平,再分別給P1對(duì)應(yīng)的導(dǎo)線加高電平,使每個(gè)數(shù)碼管的每一筆段都能亮。若出錯(cuò),先檢查電路的連接再換一下器件試試,對(duì)于此電路問題出在7407的連接方法的問題比較大。這部分需要重點(diǎn)驗(yàn)證。隨后,按下復(fù)位鍵看9引腳是否為低電平,是則沒有錯(cuò)誤。通過以上工作,硬件仿真無誤后,可以用單片機(jī)芯片代替仿真器進(jìn)行最后的實(shí)現(xiàn)工作,用easyPRO80B編程器將程序下載到芯片中,具體步驟為:先進(jìn)行擦除,然后查空,查空無誤后打開所需的hex文件,然后進(jìn)行編程、校驗(yàn)。這時(shí)程序載入了芯片中,就可以實(shí)現(xiàn)相應(yīng)的功能了。實(shí)驗(yàn)結(jié)果如下:圖7.1走時(shí)顯示實(shí)物圖這里要說的是,軟件仿真成功和硬件電路實(shí)現(xiàn)之間是有很大差別的,在做軟件仿真時(shí),沒有驅(qū)動(dòng)的問題,沒有芯片和器件質(zhì)量的問題,也沒有電線導(dǎo)電的問題,沒有工作條件的問題,但在實(shí)際電路中這些因素都要考慮。常常會(huì)出現(xiàn)這種情況:軟件仿真實(shí)現(xiàn)了,但實(shí)際電路沒有任何功能。在電子鐘硬件實(shí)現(xiàn)過程中,就出現(xiàn)了很多問題,有引腳接錯(cuò)的問題,也有插線松動(dòng)或電線不通的問題,這些問題都是需要耐心和細(xì)心認(rèn)真解決的。8日歷功能的實(shí)現(xiàn)在加入其它功能時(shí),我想到了很多可能達(dá)到的功能,比如加入備用電源、夜間亮燈功能、多個(gè)鬧鈴的功能、顯示日期功能等。然后我進(jìn)行了理論上的驗(yàn)證,加入備用電源可避免因停電而造成的電路全部失靈[20,21],但受到實(shí)驗(yàn)條件的影響未選擇對(duì)這個(gè)功能進(jìn)行實(shí)現(xiàn)。夜間亮燈功能對(duì)程序要求不高,但在電路中要加入傳感器,把光的照度測(cè)出來后,低于某一值時(shí),燈亮,從而使得夜間時(shí)也能看到時(shí)間顯示,雖然程序簡單,但由于要加入傳感器,容易受到干擾,各項(xiàng)工作投入時(shí)間較長,考慮到時(shí)間有限,也沒有采納這個(gè)方案。鬧鈴的功能和日期的功能的實(shí)現(xiàn)都是比較容易的,做了權(quán)衡之后我選擇了后者,因?yàn)槿掌诠δ苤饕婕八惴ê统绦虻奶D(zhuǎn)、調(diào)用等,更能加深對(duì)單片機(jī)的認(rèn)識(shí)和理解。在設(shè)計(jì)的開始階段,我主要考慮了日期的邏輯算法[19]。首先,要考慮年份是不是閏年,閏年的判斷方法是:將年份除以100,若能整除,則將年份除以400,若還能整除,則為閏年,若不能,則為平年;若不能被100整除,則判斷是否能被4整除,若能,則為閏年,若不能則為平年。只有2月與平、閏年相關(guān),因此在閏年和平年的子程序中,要判斷是不是2月,若是則在相應(yīng)的年中進(jìn)行日期的增加,若不是則轉(zhuǎn)入平時(shí)的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。在電路方面有兩種方法:(1)可以增加6個(gè)數(shù)碼管用來顯示日期,但這樣顯然電路更復(fù)雜;(2)用按鍵的輸入決定6個(gè)數(shù)碼管顯示日期還是時(shí)間,這種情況下,只需加一個(gè)按鍵即可,不用增加數(shù)碼管。最終的按鍵控制為:按下1鍵時(shí),顯示日期,并且用4、5、6鍵分別調(diào)整年、月、日;按下2鍵時(shí),進(jìn)行走時(shí)和時(shí)間調(diào)整;3鍵位鬧鈴鍵;4鍵為定時(shí)鍵。這樣實(shí)現(xiàn)功能的好處是:(1)電路簡單,若同時(shí)顯示日期和時(shí)間,則需要的引腳很多,需要加入譯碼器對(duì)引腳進(jìn)行擴(kuò)展。采用按鍵決定顯示時(shí)間或日期的方法避免了這個(gè)問題;(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擴(kuò)展部分思路由于在前面的工作中積累了較多的經(jīng)驗(yàn),對(duì)匯編語言已經(jīng)相當(dāng)熟悉,因此在實(shí)現(xiàn)日歷功能時(shí),程序設(shè)計(jì)顯得相當(dāng)容易。按鍵如圖8.2所示,按鍵功能如下:按下按鍵1時(shí),顯示日期并且允許對(duì)日期進(jìn)行調(diào)整;按下按鍵2時(shí),顯示時(shí)間并且允許對(duì)時(shí)間進(jìn)行調(diào)整;按下按鍵3時(shí),顯示鬧鐘所設(shè)定的時(shí)間并允許通過5、6鍵對(duì)鬧鐘進(jìn)行設(shè)定;按下按鍵4時(shí),顯示定時(shí)功能所設(shè)定的時(shí)間并允許對(duì)其進(jìn)行設(shè)定,再次按下時(shí),開始倒計(jì)時(shí)過程,并進(jìn)行倒計(jì)時(shí)過程的顯示,在顯示日期時(shí),該鍵可對(duì)年份進(jìn)行調(diào)整;按鍵5、6可對(duì)時(shí)間顯示時(shí)的時(shí)、分或日期顯示時(shí)的月、日進(jìn)行調(diào)整。按鍵形式:圖8.2按鍵圖示實(shí)驗(yàn)成果如下:圖8.2日期顯示實(shí)物圖圖中顯示的日期為10年5月27日。9電子鐘設(shè)計(jì)中遇到的問題及其解決方法在電子鐘設(shè)計(jì)中程序比較長,遇到了各種各樣的問題,比如跳轉(zhuǎn)距離過長出現(xiàn)語法錯(cuò)誤。因此修改程序的時(shí)間很長,有語法錯(cuò)誤,也有仿真時(shí)功能無法實(shí)現(xiàn)的問題,在此不能一一說明,只能對(duì)個(gè)別問題加以闡述。由于在走時(shí)調(diào)整、鬧鈴調(diào)整及定時(shí)設(shè)定時(shí),按下鍵時(shí)每0.2秒步進(jìn)1,這就需要每0.2秒對(duì)按鍵輸入進(jìn)行一次掃描,因此開始時(shí),我用的是延遲0.2秒再返回按鍵掃描程序的方法,但是可以想到,進(jìn)行單純的延遲時(shí),不會(huì)有顯示,在仿真時(shí)功能沒有實(shí)現(xiàn)。后來我采用的是反復(fù)調(diào)用若干次顯示程序以實(shí)現(xiàn)延遲,較好地解決了這個(gè)問題。雖然現(xiàn)在回過頭來發(fā)現(xiàn)這個(gè)問題很簡單,但當(dāng)時(shí)是百思不得其解。我從中學(xué)到:任何簡單的事情都會(huì)有出錯(cuò)的可能,有些時(shí)候人的思路中的一些錯(cuò)誤是自己難以發(fā)現(xiàn)的,在工作和生活中要多對(duì)自己的想法提出質(zhì)疑。不光是這種明顯的問題很多,有些細(xì)微的問題也一樣出現(xiàn)了,但解決起來并不容易。在最后的硬件實(shí)現(xiàn)階段發(fā)現(xiàn)蜂鳴器不響,此時(shí)連接方法是蜂鳴器直接連接在了P0.7引腳。考慮到單片機(jī)的輸出電流比較小,雖然P0.7引腳的電平已經(jīng)達(dá)到2V以上,也無法驅(qū)動(dòng)蜂鳴器。于是我設(shè)想加上驅(qū)動(dòng)電路。作此修改之后,蜂鳴器發(fā)出響聲,但是又遇到了新的問題:蜂鳴器無法停止響聲!看上去這個(gè)問題很簡單,只要有停止鬧鈴的按鍵輸入時(shí),在程序中加一句將P0.7置零的語句就可以了。但事實(shí)并不是這么簡單。通過苦思冥想,發(fā)現(xiàn)在主程序中,對(duì)“定時(shí)時(shí)間是否已到”是不斷進(jìn)行掃描的,而倒計(jì)時(shí)是在中斷服務(wù)子程序中進(jìn)行的,當(dāng)?shù)褂?jì)時(shí)為0分0秒時(shí),主程序判斷出來后會(huì)不停地調(diào)用聲音程序:MAIN:JNBP3.0,DATETZ;按下0鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ1;按下2鍵進(jìn)行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進(jìn)行定時(shí)設(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;蜂鳴器響聲不停是不可避免的,因?yàn)镽3和R4是在中斷程序中變化的,隨著時(shí)間的推移必然都為0,在此情況下即使按下了聲音停止鍵,由于程序跳回主程序,又會(huì)不斷地調(diào)用聲音程序?;谶@個(gè)想法要達(dá)到的效果是:按下聲音停止鍵之后,不再進(jìn)行定時(shí)時(shí)間是否為0的判斷。要實(shí)現(xiàn)這個(gè)想法就要引入新的參數(shù),這里,試用3CH作為判斷的因子。當(dāng)點(diǎn)擊定時(shí)開始后,將3CH賦值為1,在主程序中判斷3CH如果不為0,就進(jìn)行倒計(jì)時(shí)是否到0的判斷。蜂鳴器響后,點(diǎn)擊3鍵時(shí),將3CH賦值為0,這樣在主程序中就不進(jìn)行這個(gè)判斷,因此蜂鳴器就不會(huì)響。當(dāng)然這個(gè)解決問題的過程不是一下子解決的在這個(gè)過程中,我進(jìn)行了相當(dāng)多的嘗試和摸索,最終找到了這個(gè)解決途徑。這個(gè)問題解決后,發(fā)現(xiàn)鬧鈴也有相同的問題,聲音會(huì)持續(xù)一分鐘,在此期間即使按下停止鍵,聲音也不會(huì)停。發(fā)現(xiàn)這個(gè)問題后,可以看出,這個(gè)問題解決起來比上個(gè)問題要簡單得多,因?yàn)轸[鐘程序沒有涉及到中斷服務(wù)子程序。因此考慮按下停止鍵時(shí),修改判斷所用的參數(shù)比如38H,即在clrP0.7的同時(shí)加一句DEC38H,當(dāng)再進(jìn)行判斷時(shí),蜂鳴器就不會(huì)再響了。結(jié)論本文介紹的是利用AT89C51單片機(jī)設(shè)計(jì)的有調(diào)時(shí)、定時(shí)、鬧鈴功能的電子鐘。并詳細(xì)說明了軟件和硬件設(shè)計(jì)方法及仿真、硬件實(shí)現(xiàn)。在設(shè)計(jì)過程中可以看出,匯編語言有著其獨(dú)特的魅力,它簡單易學(xué),語法錯(cuò)誤容易糾正;用單片機(jī)實(shí)現(xiàn)電子鐘的設(shè)計(jì)是比較方便和易于實(shí)現(xiàn)的。通過電子鐘的設(shè)計(jì)和制作,加深了對(duì)單片機(jī)的理解,能夠更熟練地應(yīng)用單片機(jī)實(shí)現(xiàn)預(yù)期的功能,對(duì)今后的工作有很大的幫助。電子鐘各項(xiàng)功能的實(shí)現(xiàn),為自動(dòng)控制的實(shí)現(xiàn)打下了理論基礎(chǔ),獲得了實(shí)現(xiàn)方法。當(dāng)然,該電子鐘還有很多不足之處,比如鬧鐘不能關(guān)閉,且只能定一個(gè)鬧鐘。在今后的工作中還要對(duì)此加以研究,盡量實(shí)現(xiàn)更多的功能。在今后的其他工作中,也可以把這次設(shè)計(jì)中的收獲運(yùn)用進(jìn)去,這是我此次畢業(yè)設(shè)計(jì)得到的最大財(cái)富。參考文獻(xiàn)1H.G.Cragon.TheElementsofSingle-ChipMicrocomputerArchitecture.Computer,1980(13)27~412潘永雄.新編單片機(jī)原理與應(yīng)用.第2版.西安:西安電子科技大學(xué)出版社20063何立民.我國單片機(jī)應(yīng)用技術(shù)發(fā)展趨勢(shì)及展望.自動(dòng)化與儀表,1992(1):1~54向繼文,廖立新.基于AT89S51的電子鐘系統(tǒng)設(shè)計(jì).機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2007(2):62~635張靜.基于單片機(jī)數(shù)字鐘的設(shè)計(jì).辦公自動(dòng)化雜志,2006(89):4~56樊金榮,謝智文.數(shù)字倒計(jì)時(shí)秒表的設(shè)計(jì)與實(shí)現(xiàn).中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院院報(bào),2005(1):62~637魏立峰,王寶興.單片機(jī)原理與應(yīng)用技術(shù)[M].北京:北京大學(xué)出版社,2006.8馬立國.AD7888與AT89C51單片機(jī)接口應(yīng)用技術(shù).集成電路通訊,2007(25):33~349HYPERLINK"/article/88/196/2008/200804018597.html"/article/88/196/2008/200804018597.html10AndyMorell.CountdownTimer.Electronics,2003(29):32111MarkE.Buccini.Digitalcountdowntimerneverneedsbatteryreplacement.END,2005(11):79~8012周興華.一款電路極簡的單片機(jī)電子鐘設(shè)計(jì)詳解.電子制作,2003(10):3113郭長立.DDJ-Ⅱ型多功能單片機(jī)計(jì)時(shí)器的改進(jìn)設(shè)計(jì).儀表技術(shù),2004(4):29~3014何宏森.多功能智能電子鐘的設(shè)計(jì).兵工自動(dòng)化,2005(4):82~8415張景元陳平.一種基于單片機(jī)的多功能數(shù)字鐘.微計(jì)算機(jī)信息(嵌入式與SOC)2005(21):13616劉盛雄,周奇,韋云隆.基于單片機(jī)的數(shù)字式電子鐘的設(shè)計(jì)與制作.重慶工學(xué)院學(xué)報(bào),2006(8):9117盧超.基于單片機(jī)的數(shù)字電子鐘的設(shè)計(jì)與制作.大慶師范學(xué)院學(xué)報(bào),2006(5):4918劉建英.基于單片機(jī)的時(shí)鐘設(shè)計(jì).內(nèi)蒙古石油化工,2005(1):1319何宏森.多功能智能電子鐘的設(shè)計(jì).兵工自動(dòng)化,2005(4):8320蔡希彪,曹洪奎,芳琳.單片機(jī)電子時(shí)鐘系統(tǒng)的設(shè)計(jì)與仿真.中國科技信息,2007(4):61~6321ScottEdwards.Crystal-ControlledOscillatorIsHeartbeatof60-hourTimer.TheNutsandVoltsofBASICStamps,1996(1):95~103致謝時(shí)光荏苒,大學(xué)時(shí)光轉(zhuǎn)眼逝去,在大學(xué)的4年中我不但學(xué)到了知識(shí),還認(rèn)識(shí)了很多值得珍惜的老師和同學(xué)。在即將離校的日子,我更加珍惜這所剩無幾的日子,認(rèn)真地完成了畢業(yè)設(shè)計(jì),在這個(gè)過程中,***老師給了我極大的幫助,不僅是知識(shí)上的,更有很多心理上的支持,他引導(dǎo)我在各種雜事比較多的情況下能踏踏實(shí)實(shí)做點(diǎn)屬于自己的工作,讓我學(xué)會(huì)了自主學(xué)習(xí)。畢業(yè)設(shè)計(jì)是大學(xué)生活中最后階段的工作,是真正考驗(yàn)我們能力的一項(xiàng)教學(xué)內(nèi)容,在這個(gè)過程中我認(rèn)真思考,不斷嘗試,收獲了很多在平時(shí)的課堂上收獲不到的東西。畢業(yè)設(shè)計(jì)即將結(jié)束,我會(huì)吸取畢業(yè)設(shè)計(jì)中的經(jīng)驗(yàn)和教訓(xùn),在今后的工作中少走彎路。夏天即將來臨,我們也即將離校,回首過去的日子,大學(xué)的確教給了我們很多東西。此刻,我十分感謝母校、感謝老師們對(duì)我的教誨。雖然有很多不舍,但我依然會(huì)昂首走向新的生活,不辜負(fù)老師的培養(yǎng)。附錄A整體電路圖圖附A附錄B完整程序HOU_SBITP2.0;第一個(gè)數(shù)碼管HOU_GBITP2.1;第二個(gè)數(shù)碼管MIN_SBITP2.2;第三個(gè)數(shù)碼管MIN_GBITP2.3;第四個(gè)數(shù)碼管SEC_SBITP2.4;第五個(gè)數(shù)碼管SEC_GBITP2.5;第六個(gè)數(shù)碼管DAYEQU39H;日期MONTHEQU3AH;月份YEAREQU3BH;年份SECONDEQU30H;秒MINUTEEQU31H;分HOUREQU32H;時(shí)TIM_1EQU33H;TIM_2EQU34H;ORG0000HLJMPCHUSHIORG000BHLJMPTIMER0ORG30HCHUSHI:;初始化MOVSECOND,#0;MOVMINUTE,#0;MOVHOUR,#0;時(shí)間的初值為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;存儲(chǔ)定時(shí)時(shí)間,點(diǎn)擊定時(shí)開始后,從所存時(shí)間開始倒計(jì)時(shí)MOVR5,#0;MOVR6,#0;設(shè)定定時(shí)時(shí)間所用寄存器MOV38H,#12;MOV37H,#0;存儲(chǔ)所定鬧鈴,以便判斷是否鬧鈴時(shí)間到CLRP0.7;MOVTIM_1,#10;執(zhí)行完后經(jīng)歷0.5秒MOVTIM_2,#2;執(zhí)行完后經(jīng)歷1秒ANLTMOD,#0F0HORLTMOD,#01H;定時(shí)器0為模式1MOVTH0,#03CHMOVTL0,#0B0H;裝入初值SETBET0;SETBTR0;SETBEA;允許中斷MAIN:JNBP3.0,DATETZ;按下0鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ1;按下2鍵進(jìn)行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進(jìn)行定時(shí)設(shè)置ACALLDISP;調(diào)用顯示程序FMQPD:;判斷定時(shí)是否到零、鬧鈴時(shí)間是否已到MOVA,HOUR;SUBBA,38H;JZFEN;判斷時(shí)是否到鬧鈴所定時(shí)間,若到,則對(duì)分進(jìn)行判斷,若不到,則對(duì)定時(shí)進(jìn)行判斷AJMPDSPDKQFEN:MOVA,MINUTE;SUBBA,37H;JZSHENGYIN1;時(shí)和分都到鬧鈴時(shí)間則蜂鳴器響DSPDKQ:;判斷是否應(yīng)該進(jìn)行定時(shí)時(shí)間的判斷MOVA,3CH;3CH是引入的判斷因子,當(dāng)其為0時(shí)不對(duì)定時(shí)時(shí)間是否到0進(jìn)行判斷,從而不開啟蜂鳴器JNZDSPD2;當(dāng)3CH不是0時(shí),跳轉(zhuǎn)到定時(shí)判斷程序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鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ1;按下2鍵進(jìn)行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進(jìn)行定時(shí)設(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鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ1;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ1;按下2鍵進(jìn)行鬧鈴設(shè)置JNBP3.3,DSTZ;按下3鍵進(jìn)行定時(shí)設(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鍵時(shí),顯示日期并可對(duì)日期進(jìn)行調(diào)整JNBP3.1,ZSTZ;按下1鍵時(shí),顯示時(shí)間,并可調(diào)時(shí)JNBP3.2,NLTZ;按下2鍵進(jìn)行鬧鈴設(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:;由于程序較長,此處加一個(gè)返回程序,避免跳轉(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整除,若能,再進(jìn)行額外判斷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)到平時(shí)的月份進(jì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)用一個(gè)月31天的程序段MOVA,MONTH;SUBBA,#3;JZT_DAY31;MOVA,MONTH;SUBBA,#4;JZT_DAY30;調(diào)用一個(gè)月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)一個(gè)月為31天時(shí)的日期計(jì)算方法INCDAYMOVA,DAYCJNEA,#32,RETI_1MOVDAY,#1INCMONTHMOVA,MONTHCJNEA,#13,RETI_1MOVMONT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新村環(huán)境衛(wèi)生工作總結(jié)
- 二零二五年度房產(chǎn)證收齊后購房合同交接與保管協(xié)議
- 二零二五年度光伏發(fā)電項(xiàng)目抵押貸款擔(dān)保協(xié)議
- 二零二五年度借貸和解協(xié)議書-綠色能源項(xiàng)目融資
- 2025年度智能機(jī)器人技術(shù)研發(fā)技術(shù)入股合同
- 二零二五年度三方審計(jì)服務(wù)合同:涉及高新技術(shù)企業(yè)研發(fā)費(fèi)用審計(jì)
- 2025年度糧油行業(yè)綠色生產(chǎn)與環(huán)保責(zé)任合同
- 2025年度旅游度假三方房屋買賣及旅游服務(wù)合同
- 二零二五年度歷史文化街區(qū)拆遷房產(chǎn)分割與文化創(chuàng)意產(chǎn)業(yè)合同
- 二零二五年度魚塘承包及漁業(yè)設(shè)施租賃合同
- JCT908-2013 人造石的標(biāo)準(zhǔn)
- ISO9001-2015質(zhì)量管理體系要求培訓(xùn)教材
- 腦梗死臨床路徑
- 部編人教版二年級(jí)下冊(cè)道德與法治教學(xué)反思
- 第二單元整體研習(xí)+教學(xué)設(shè)計(jì) 統(tǒng)編版高中語文選擇性必修上冊(cè)
- 企業(yè)外部環(huán)境與內(nèi)部能力分析報(bào)告
- 病理科科科內(nèi)會(huì)診記錄
- 研發(fā)費(fèi)用加計(jì)扣除費(fèi)用PPT
- 小學(xué)生分享ppt課件-景區(qū)介紹《牛首山》
- 小學(xué)生主題班會(huì) 弘揚(yáng)航天精神 課件 (27張PPT)
- 倫理審查表(一式三份)
評(píng)論
0/150
提交評(píng)論