基于單片機c51的簡單萬年歷設(shè)計_畢業(yè)設(shè)計_第1頁
基于單片機c51的簡單萬年歷設(shè)計_畢業(yè)設(shè)計_第2頁
基于單片機c51的簡單萬年歷設(shè)計_畢業(yè)設(shè)計_第3頁
基于單片機c51的簡單萬年歷設(shè)計_畢業(yè)設(shè)計_第4頁
基于單片機c51的簡單萬年歷設(shè)計_畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十屆學(xué)生科技節(jié)單片機設(shè)計大賽作品名稱萬年歷專業(yè)物聯(lián)網(wǎng)班級1指導(dǎo)老師鄭旭丹組長鄧清蘭學(xué)號3112113111組員黃孟秋學(xué)號3112113101目錄一、緒論1二、系統(tǒng)功能1三、硬件電路131電路設(shè)計框圖132系統(tǒng)硬件概述2四、各模塊功能及工作原理241單片機主控制模塊的設(shè)計242LCD1602顯示模塊343鍵盤模塊6五、實現(xiàn)結(jié)果9六、系統(tǒng)的實用性及創(chuàng)新性9七、調(diào)節(jié)中遇到的問題及心得體會10八、程序設(shè)計1181流程圖1182源代碼12九、總結(jié)及感謝241、緒論眾所周知單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。本設(shè)計要制作的就是單片機于生活中最為常見的幾種應(yīng)用萬年歷。本設(shè)計以AT89S52單片機作為核心,可以顯示當(dāng)前的日歷和時間,時間也可以人為設(shè)定,顯示格式為年(四位),月(兩位),日(兩位),時(兩位),分(兩位),秒(兩位)。設(shè)置時間的位切換、設(shè)定數(shù)值、啟動定時器、切換日歷通過外部中斷來實現(xiàn)。萬年歷顯示電路由LCD1602組成,制作該裝置的材料需要有軟硬件的支持,硬件方面AT89C51單片機,晶振,電源,液晶屏LCD1602。2、系統(tǒng)功能本次設(shè)計的是萬年歷,采用LCD1602顯示,實現(xiàn)的功能如下1顯示當(dāng)前時間,顯示格式為年(四位),月(兩位),日(兩位),時(兩位),分(兩位),秒(兩位);2時鐘計時,自動進行時間的位切換;3鍵盤設(shè)置,能通過鍵盤設(shè)定當(dāng)前時間和計時,并通過鍵盤人為設(shè)定時間。3、硬件電路電路設(shè)計框圖AT89S52主控制模塊LCD1602顯示模塊計時模塊鍵盤輸入模塊32系統(tǒng)硬件概述本電路是由AT89S52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作,本系統(tǒng)選用12MHZ的晶振,使得單片機有合理的運行速度;利用液晶屏LCD1602顯示時間信息,通過對AT89S52單片機的編程控制液晶屏LCD1602的顯示。顯示時間在LCD1602,通過按鍵切換選擇。外部按鍵可及時設(shè)定或調(diào)整時間信息。4、各模塊功能及工作原理單片機主控制模塊的設(shè)計AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程FLASH存儲器。AT89S52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3,MCS51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。引腳圖如圖圖41圖41AT89S52引腳結(jié)構(gòu)圖421LCD1602引腳結(jié)構(gòu)42LCD1602顯示模塊421LCD1602引腳介紹LCD1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,引腳圖如圖圖421各引腳接口說明如表422所示編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表422LCD1602引腳說明第1腳VSS為地電源。第2腳VDD接5V正電源。第3腳VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳D0D7為8位雙向數(shù)據(jù)線。第15腳背光源正極。第16腳背光源負(fù)極。422LCD1602指令1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表423表423LCD1602的指令說明1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明1為高電平、0為低電平)指令1清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2光標(biāo)復(fù)位,光標(biāo)返回到地址00H。編號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回0000000013置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L6置功能00001DLNF7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容指令3光標(biāo)和顯示模式設(shè)置I/D光標(biāo)移動方向,高電平右移,低電平左移S屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4顯示開關(guān)控制。D控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5光標(biāo)或顯示移位S/C高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6功能設(shè)置命令DL高電平時為4位總線,低電平時為8位總線N低電平時為單行顯示,高電平時雙行顯示F低電平時顯示5X7的點陣字符,高電平時顯示5X10的點陣字符。指令7字符發(fā)生器RAM地址設(shè)置。指令8DDRAM地址設(shè)置。指令9讀忙信號和光標(biāo)地址BF為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10寫數(shù)據(jù)。指令11讀數(shù)據(jù)。423LCD1602讀/寫操作LCD1602基本操作時序說明,如表424讀狀態(tài)輸入RSL,R/WH,EH輸出D0D7狀態(tài)字寫指令輸入RSL,R/WL,D0D7指令碼,E高脈沖輸出無讀數(shù)據(jù)輸入RSH,R/WH,EH輸出D0D7數(shù)據(jù)寫數(shù)據(jù)輸入RSH,R/WL,D0D7數(shù)據(jù),E高脈沖輸出無表424LCD1602基本操作時序說明424LCD1602顯示模塊流程圖43鍵盤模塊本設(shè)計采用4乘4鍵盤的反轉(zhuǎn)法控制萬年歷的計時和時間設(shè)定,4乘4鍵盤電路圖如圖圖431按下按鍵開始LCD1602初始界面顯示歡迎界面顯示初始時間結(jié)束NY圖432431鍵盤功能圖432流程圖YN開始對鍵盤進行掃描,返回鍵值鍵值為或鍵值為鍵值為鍵值為09鍵值為YYNYNYNYNNYNNY44計時模塊441計數(shù)器工作原理計數(shù)器是單片機應(yīng)用中的重要部件,工作方式靈活,可以對外部事件計數(shù)和檢測等;實現(xiàn)計數(shù)功能。其核心是特殊功能寄存器中能進行加1計數(shù)的寄存器。實現(xiàn)原理對T0或T1引腳輸入的外部脈沖計數(shù),如下圖442流程圖NYYNNYYN開始初始時間SEC60開始計時,SECMIN,SEC0YEARH0YEARH,YEARL0YEARL,MON1MON,DAY1HOUR,MIN0DAY,HOUR0按下按鍵HOUR24MIN60YEARH99YARL99DAY31MON131計數(shù)器溢出中斷脈沖控制開關(guān)NYYNNYNY5、實現(xiàn)結(jié)果6、系統(tǒng)的實用性及創(chuàng)新性基本功能能顯示當(dāng)前時間和計時,實現(xiàn)基本時鐘功能。創(chuàng)新性界面友好,能實現(xiàn)計時和鍵盤數(shù)字的時間設(shè)定和自增、自減的時間設(shè)定。7、調(diào)節(jié)中遇到的問題及心得體會問題一LCD1602的初始化不規(guī)范,導(dǎo)致無法正確在LCD1602上顯示相應(yīng)的字符,時間等。解決在網(wǎng)上及課本上查找有關(guān)LCD1602初始化的程序,找出錯誤的地方并及時改正,最終解決了LCD1602的初始化問題。問題二在對秒、分、時、日、月、年等的大小判斷時,采用逐位判斷,導(dǎo)致程序冗長,不利于程序的優(yōu)化。解決通過老師的指導(dǎo)及其他相關(guān)程序的借鑒,對時間大小的判斷進行優(yōu)化,將秒的十位和各位合為一個整體進行判斷,分、時、日、月、年類似。問題三在計時模塊中,因為細節(jié)問題,找不到導(dǎo)致不能正常計時的原因。解決通過老師的精心指導(dǎo),找到不能正常計時的原因,將中斷次數(shù)的判斷IFCOUNT100改為IFCOUNT100即可。問題四在鍵盤設(shè)計模塊中,對空數(shù)組的定義無效。解決通過查找相關(guān)資料,了解到空數(shù)組的定義要放在DATA中,不能放在CODE中。將空數(shù)組定義為UCHARA14使其默認(rèn)放在DATA中就解決了該問題。8、程序設(shè)計流程圖NYYY開始顯示“SHOWTIME”界面WELCOME設(shè)置鍵按下顯示當(dāng)前時間鍵盤數(shù)字進行時間設(shè)置鍵盤自增、自減進行時間設(shè)置開始計時按鍵開始按下82源代碼INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTUCHARCODEBUFFER40XFE,0XFD,0XFB,0XF7UCHARCODETABLE0,1,2,3,4,5,6,7,8,9,UCHARCODEW140X83,0X84,0X85,0X86,0X88,0X89,0X8B,0X8C,0XC4,0XC5,0XC7,0XC8,0XCA,0XCBUCHARA14SBITEP27/1602使能引腳SBITRWP26/1602讀寫引腳SBITRSP25/1602數(shù)據(jù)/命令選擇引腳VOIDDELAYUINTXMS/延時VOIDTIME0_INIT/中斷請求VOIDTIMER1_INTVOID/中斷VOIDCHARGE/判斷秒分時日月等是否大于額外值,若大于向上一位加一VOIDFTIME/初始時間VOIDTIMEON/計時VOIDADD/自加VOIDSUB/自減VOIDWCMDUCHARDEL/1602寫指令VOIDWRITEUCHARDEL/1602寫數(shù)據(jù)VOIDL1602_INITVOID/1602初始化VOIDSECOND/秒顯示VOIDMINUTE/分顯示VOIDHOURS/時顯示VOIDDAYS/日顯示VOIDMONTH/月顯示VOIDYEARS/年顯示VOIDOTHER/符號顯示VOIDNUMBER/鍵盤輸入數(shù)字UINTCOUNT,T/中斷執(zhí)行次數(shù),光標(biāo)位置參數(shù)UCHARSEC0/初始秒UCHARMIN0/初始分UCHARHOUR0/初始時UCHARDAY0/初始日UCHARMON0/初始月UCHARYEARH0/初始年前兩位UCHARYEARL0/初始年后兩位/1602命令函數(shù)VOIDWCMDUCHARDELP0DELRS0RW0E1DELAY1E0DELAY1/1602寫數(shù)據(jù)函數(shù)VOIDWRITEUCHARDELP0DELRS1RW0E1DELAY1E0DELAY1/1602初始化VOIDL1602_INITVOIDWCMD0X38WCMD0X38WCMD0X38WCMD0X0EWCMD0X06WCMD0X01/顯示秒VOIDSECONDUCHARI,JISEC/10JSEC10WCMD0XCAWRITETABLEIWRITETABLEJ/顯示分VOIDMINUTEUCHARI,JIMIN/10JMIN10WCMD0XC7WRITETABLEIWRITETABLEJ/顯示時VOIDHOURSUCHARI,JIHOUR/10JHOUR10WCMD0XC4WRITETABLEIWRITETABLEJ/顯示日VOIDDAYSUCHARI,JIDAY/10JDAY10WCMD0X8BWRITETABLEIWRITETABLEJ/顯示月VOIDMONTHUCHARI,JIMON/10JMON10WCMD0X88WRITETABLEIWRITETABLEJ/顯示年VOIDYEARSUCHARI,J,M,NIYEARH/10JYEARH10MYEARL/10NYEARL10WCMD0X83WRITETABLEIWRITETABLEJWRITETABLEMWRITETABLEN/符號顯示VOIDOTHERWCMD0XC9WRITEWCMD0XC6WRITEWCMD0X87WRITEWCMD0X8AWRITE/延時VOIDDELAYUINTXMSUINTI,JFORI0I100COUNT0CHARGEFTIME/顯示初始時間/時間初值VOIDFTIMESECONDDELAY5MINUTEDELAY5HOURSDELAY5DAYSDELAY5MONTHDELAY5YEARSDELAY5OTHERDELAY5/各個按鍵返回值UINTKEYVALUEUINTI,JUCHARTEMPUINTKEY_VALUEWHILE1P10XF0IFP10XF0DELAY100IFP10XF0FORJ0J0YEARHYEARSELSEIFT3/光標(biāo)在第四個位置時,判斷年后兩位是否大于0,是,年后兩位減1,并顯示IFYEARL1YEARLYEARSELSEIFT5/光標(biāo)在第六個位置時,判斷月是否大于1,是,月減1,并顯示IFMON1MONMONTHELSEIFT7/光標(biāo)在第八個位置時,判斷日是否大于1,是,日減1,并顯示IFDAY1DAYDAYSELSEIFT9/光標(biāo)在第十個位置時,判斷時是否大于0,是,時減1,并顯示IFHOUR0HOURHOURSELSEIFT11/光標(biāo)在第十二個位置時,判斷分是否大于0,是,分減1,并顯示IFMIN0MINMINUTEELSEIFT13/光標(biāo)在第十四個位置時,判斷秒是否大于0,是,秒減1,并顯示IFSEC0SECSECOND/主函數(shù)VOIDMAINUCHARKEYSUINTI,KEY/數(shù)組A的參數(shù)I0T0/位置參數(shù)L1602_INIT/1602初始化L1602_STRING1,5,“SHOWTIME“/初始界面顯示L1602_STRING2,5,“WELCOME“/初始界面顯示W(wǎng)HILE1KEYKEYVALUE/將鍵值賦值給KEYKEYSTABLEKEYIFKEYS/判斷鍵值是否為,是,執(zhí)行計時TIME0_INITWHILE1TIMEONELSEIFKEYS/判斷鍵值是否為,是,顯示初始時間,光標(biāo)在第一個位置FTIMEWCMD0X83ELSEIFKEYS|KEYS/判斷鍵值是否為或IFKEYS/鍵值為,執(zhí)行自加函數(shù)ADDELSE/鍵值為,執(zhí)行自減函數(shù)SUB/判斷鍵值是否為1ITT1WCMDWTELSEIFKEYS/判斷鍵值是否為,是,光標(biāo)不在最右邊時,光標(biāo)右移一位IFT13ITT1WCMDWTELSE/鍵值為數(shù)字鍵時,將鍵值放入A數(shù)組中,在調(diào)用函數(shù),顯示當(dāng)前設(shè)置的時間NUMBERII14AIKEYITNUMBER/輸入數(shù)字VOIDNUMBERYEARHA010A1YEARLA210A3MONA410A5DAYA610A7HOURA810A9MINA1010A11SECA1210A13FTIME/中斷請求VOIDTIME0_INITTMOD0X10TH16553610000/256TL16553610000256EA1ET11TR11/中斷VOI

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論