




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十屆學(xué)生科技節(jié)單片機(jī)設(shè)計(jì)大賽作品名稱萬年歷專業(yè)物聯(lián)網(wǎng)班級(jí)1指導(dǎo)老師鄭旭丹組長(zhǎng)鄧清蘭學(xué)號(hào)3112113111組員黃孟秋學(xué)號(hào)3112113101目錄一、緒論1二、系統(tǒng)功能1三、硬件電路131電路設(shè)計(jì)框圖132系統(tǒng)硬件概述2四、各模塊功能及工作原理241單片機(jī)主控制模塊的設(shè)計(jì)242LCD1602顯示模塊343鍵盤模塊6五、實(shí)現(xiàn)結(jié)果9六、系統(tǒng)的實(shí)用性及創(chuàng)新性9七、調(diào)節(jié)中遇到的問題及心得體會(huì)10八、程序設(shè)計(jì)1181流程圖1182源代碼12九、總結(jié)及感謝241、緒論眾所周知單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。本設(shè)計(jì)要制作的就是單片機(jī)于生活中最為常見的幾種應(yīng)用萬年歷。本設(shè)計(jì)以AT89S52單片機(jī)作為核心,可以顯示當(dāng)前的日歷和時(shí)間,時(shí)間也可以人為設(shè)定,顯示格式為年(四位),月(兩位),日(兩位),時(shí)(兩位),分(兩位),秒(兩位)。設(shè)置時(shí)間的位切換、設(shè)定數(shù)值、啟動(dòng)定時(shí)器、切換日歷通過外部中斷來實(shí)現(xiàn)。萬年歷顯示電路由LCD1602組成,制作該裝置的材料需要有軟硬件的支持,硬件方面AT89C51單片機(jī),晶振,電源,液晶屏LCD1602。2、系統(tǒng)功能本次設(shè)計(jì)的是萬年歷,采用LCD1602顯示,實(shí)現(xiàn)的功能如下1顯示當(dāng)前時(shí)間,顯示格式為年(四位),月(兩位),日(兩位),時(shí)(兩位),分(兩位),秒(兩位);2時(shí)鐘計(jì)時(shí),自動(dòng)進(jìn)行時(shí)間的位切換;3鍵盤設(shè)置,能通過鍵盤設(shè)定當(dāng)前時(shí)間和計(jì)時(shí),并通過鍵盤人為設(shè)定時(shí)間。3、硬件電路電路設(shè)計(jì)框圖AT89S52主控制模塊LCD1602顯示模塊計(jì)時(shí)模塊鍵盤輸入模塊32系統(tǒng)硬件概述本電路是由AT89S52單片機(jī)為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作,本系統(tǒng)選用12MHZ的晶振,使得單片機(jī)有合理的運(yùn)行速度;利用液晶屏LCD1602顯示時(shí)間信息,通過對(duì)AT89S52單片機(jī)的編程控制液晶屏LCD1602的顯示。顯示時(shí)間在LCD1602,通過按鍵切換選擇。外部按鍵可及時(shí)設(shè)定或調(diào)整時(shí)間信息。4、各模塊功能及工作原理單片機(jī)主控制模塊的設(shè)計(jì)AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程FLASH存儲(chǔ)器。AT89S52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,MCS51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。18引腳和19引腳接時(shí)鐘電路,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所示編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表422LCD1602引腳說明第1腳VSS為地電源。第2腳VDD接5V正電源。第3腳VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳D0D7為8位雙向數(shù)據(jù)線。第15腳背光源正極。第16腳背光源負(fù)極。422LCD1602指令1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表423表423LCD1602的指令說明1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明1為高電平、0為低電平)指令1清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2光標(biāo)復(fù)位,光標(biāo)返回到地址00H。編號(hào)指令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計(jì)數(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)移動(dòng)方向,高電平右移,低電平左移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高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6功能設(shè)置命令DL高電平時(shí)為4位總線,低電平時(shí)為8位總線N低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5X10的點(diǎn)陣字符。指令7字符發(fā)生器RAM地址設(shè)置。指令8DDRAM地址設(shè)置。指令9讀忙信號(hào)和光標(biāo)地址BF為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10寫數(shù)據(jù)。指令11讀數(shù)據(jù)。423LCD1602讀/寫操作LCD1602基本操作時(shí)序說明,如表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基本操作時(shí)序說明424LCD1602顯示模塊流程圖43鍵盤模塊本設(shè)計(jì)采用4乘4鍵盤的反轉(zhuǎn)法控制萬年歷的計(jì)時(shí)和時(shí)間設(shè)定,4乘4鍵盤電路圖如圖圖431按下按鍵開始LCD1602初始界面顯示歡迎界面顯示初始時(shí)間結(jié)束NY圖432431鍵盤功能圖432流程圖YN開始對(duì)鍵盤進(jìn)行掃描,返回鍵值鍵值為或鍵值為鍵值為鍵值為09鍵值為YYNYNYNYNNYNNY44計(jì)時(shí)模塊441計(jì)數(shù)器工作原理計(jì)數(shù)器是單片機(jī)應(yīng)用中的重要部件,工作方式靈活,可以對(duì)外部事件計(jì)數(shù)和檢測(cè)等;實(shí)現(xiàn)計(jì)數(shù)功能。其核心是特殊功能寄存器中能進(jìn)行加1計(jì)數(shù)的寄存器。實(shí)現(xiàn)原理對(duì)T0或T1引腳輸入的外部脈沖計(jì)數(shù),如下圖442流程圖NYYNNYYN開始初始時(shí)間SEC60開始計(jì)時(shí),SECMIN,SEC0YEARH0YEARH,YEARL0YEARL,MON1MON,DAY1HOUR,MIN0DAY,HOUR0按下按鍵HOUR24MIN60YEARH99YARL99DAY31MON131計(jì)數(shù)器溢出中斷脈沖控制開關(guān)NYYNNYNY5、實(shí)現(xiàn)結(jié)果6、系統(tǒng)的實(shí)用性及創(chuàng)新性基本功能能顯示當(dāng)前時(shí)間和計(jì)時(shí),實(shí)現(xiàn)基本時(shí)鐘功能。創(chuàng)新性界面友好,能實(shí)現(xiàn)計(jì)時(shí)和鍵盤數(shù)字的時(shí)間設(shè)定和自增、自減的時(shí)間設(shè)定。7、調(diào)節(jié)中遇到的問題及心得體會(huì)問題一LCD1602的初始化不規(guī)范,導(dǎo)致無法正確在LCD1602上顯示相應(yīng)的字符,時(shí)間等。解決在網(wǎng)上及課本上查找有關(guān)LCD1602初始化的程序,找出錯(cuò)誤的地方并及時(shí)改正,最終解決了LCD1602的初始化問題。問題二在對(duì)秒、分、時(shí)、日、月、年等的大小判斷時(shí),采用逐位判斷,導(dǎo)致程序冗長(zhǎng),不利于程序的優(yōu)化。解決通過老師的指導(dǎo)及其他相關(guān)程序的借鑒,對(duì)時(shí)間大小的判斷進(jìn)行優(yōu)化,將秒的十位和各位合為一個(gè)整體進(jìn)行判斷,分、時(shí)、日、月、年類似。問題三在計(jì)時(shí)模塊中,因?yàn)榧?xì)節(jié)問題,找不到導(dǎo)致不能正常計(jì)時(shí)的原因。解決通過老師的精心指導(dǎo),找到不能正常計(jì)時(shí)的原因,將中斷次數(shù)的判斷IFCOUNT100改為IFCOUNT100即可。問題四在鍵盤設(shè)計(jì)模塊中,對(duì)空數(shù)組的定義無效。解決通過查找相關(guān)資料,了解到空數(shù)組的定義要放在DATA中,不能放在CODE中。將空數(shù)組定義為UCHARA14使其默認(rèn)放在DATA中就解決了該問題。8、程序設(shè)計(jì)流程圖NYYY開始顯示“SHOWTIME”界面WELCOME設(shè)置鍵按下顯示當(dāng)前時(shí)間鍵盤數(shù)字進(jìn)行時(shí)間設(shè)置鍵盤自增、自減進(jìn)行時(shí)間設(shè)置開始計(jì)時(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/延時(shí)VOIDTIME0_INIT/中斷請(qǐng)求VOIDTIMER1_INTVOID/中斷VOIDCHARGE/判斷秒分時(shí)日月等是否大于額外值,若大于向上一位加一VOIDFTIME/初始時(shí)間VOIDTIMEON/計(jì)時(shí)VOIDADD/自加VOIDSUB/自減VOIDWCMDUCHARDEL/1602寫指令VOIDWRITEUCHARDEL/1602寫數(shù)據(jù)VOIDL1602_INITVOID/1602初始化VOIDSECOND/秒顯示VOIDMINUTE/分顯示VOIDHOURS/時(shí)顯示VOIDDAYS/日顯示VOIDMONTH/月顯示VOIDYEARS/年顯示VOIDOTHER/符號(hào)顯示VOIDNUMBER/鍵盤輸入數(shù)字UINTCOUNT,T/中斷執(zhí)行次數(shù),光標(biāo)位置參數(shù)UCHARSEC0/初始秒U(xiǎn)CHARMIN0/初始分UCHARHOUR0/初始時(shí)UCHARDAY0/初始日UCHARMON0/初始月UCHARYEARH0/初始年前兩位UCHARYEARL0/初始年后兩位/1602命令函數(shù)VOIDWCMDUCHARDELP0DELRS0RW0E1DELAY1E0DELAY1/1602寫數(shù)據(jù)函數(shù)VOIDWRITEUCHARDELP0DELRS1RW0E1DELAY1E0DELAY1/1602初始化VOIDL1602_INITVOIDWCMD0X38WCMD0X38WCMD0X38WCMD0X0EWCMD0X06WCMD0X01/顯示秒VOIDSECONDUCHARI,JISEC/10JSEC10WCMD0XCAWRITETABLEIWRITETABLEJ/顯示分VOIDMINUTEUCHARI,JIMIN/10JMIN10WCMD0XC7WRITETABLEIWRITETABLEJ/顯示時(shí)VOIDHOURSUCHARI,JIHOUR/10JHOUR10WCMD0XC4WRITETABLEIWRITETABLEJ/顯示日VOIDDAYSUCHARI,JIDAY/10JDAY10WCMD0X8BWRITETABLEIWRITETABLEJ/顯示月VOIDMONTHUCHARI,JIMON/10JMON10WCMD0X88WRITETABLEIWRITETABLEJ/顯示年VOIDYEARSUCHARI,J,M,NIYEARH/10JYEARH10MYEARL/10NYEARL10WCMD0X83WRITETABLEIWRITETABLEJWRITETABLEMWRITETABLEN/符號(hào)顯示VOIDOTHERWCMD0XC9WRITEWCMD0XC6WRITEWCMD0X87WRITEWCMD0X8AWRITE/延時(shí)VOIDDELAYUINTXMSUINTI,JFORI0I100COUNT0CHARGEFTIME/顯示初始時(shí)間/時(shí)間初值VOIDFTIMESECONDDELAY5MINUTEDELAY5HOURSDELAY5DAYSDELAY5MONTHDELAY5YEARSDELAY5OTHERDELAY5/各個(gè)按鍵返回值UINTKEYVALUEUINTI,JUCHARTEMPUINTKEY_VALUEWHILE1P10XF0IFP10XF0DELAY100IFP10XF0FORJ0J0YEARHYEARSELSEIFT3/光標(biāo)在第四個(gè)位置時(shí),判斷年后兩位是否大于0,是,年后兩位減1,并顯示IFYEARL1YEARLYEARSELSEIFT5/光標(biāo)在第六個(gè)位置時(shí),判斷月是否大于1,是,月減1,并顯示IFMON1MONMONTHELSEIFT7/光標(biāo)在第八個(gè)位置時(shí),判斷日是否大于1,是,日減1,并顯示IFDAY1DAYDAYSELSEIFT9/光標(biāo)在第十個(gè)位置時(shí),判斷時(shí)是否大于0,是,時(shí)減1,并顯示IFHOUR0HOURHOURSELSEIFT11/光標(biāo)在第十二個(gè)位置時(shí),判斷分是否大于0,是,分減1,并顯示IFMIN0MINMINUTEELSEIFT13/光標(biāo)在第十四個(gè)位置時(shí),判斷秒是否大于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í)行計(jì)時(shí)TIME0_INITWHILE1TIMEONELSEIFKEYS/判斷鍵值是否為,是,顯示初始時(shí)間,光標(biāo)在第一個(gè)位置FTIMEWCMD0X83ELSEIFKEYS|KEYS/判斷鍵值是否為或IFKEYS/鍵值為,執(zhí)行自加函數(shù)ADDELSE/鍵值為,執(zhí)行自減函數(shù)SUB/判斷鍵值是否為1ITT1WCMDWTELSEIFKEYS/判斷鍵值是否為,是,光標(biāo)不在最右邊時(shí),光標(biāo)右移一位IFT13ITT1WCMDWTELSE/鍵值為數(shù)字鍵時(shí),將鍵值放入A數(shù)組中,在調(diào)用函數(shù),顯示當(dāng)前設(shè)置的時(shí)間NUMBERII14AIKEYITNUMBER/輸入數(shù)字VOIDNUMBERYEARHA010A1YEARLA210A3MONA410A5DAYA610A7HOURA810A9MINA1010A11SECA1210A13FTIME/中斷請(qǐng)求VOIDTIME0_INITTMOD0X10TH16553610000/256TL16553610000256EA1ET11TR11/中斷VOI
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 閘機(jī)系統(tǒng)施工方案
- 奉賢區(qū)拉森鋼板樁施工方案
- 低碳綠色施工方案
- 酒店會(huì)議室墻布施工方案
- 建筑工地臨時(shí)便道施工方案
- 中 關(guān) 村:威海市惠河路-90 號(hào) 7 幢工業(yè)房房地產(chǎn)抵押估價(jià)報(bào)告
- 恒鑫生活:公司財(cái)務(wù)報(bào)表及審閱報(bào)告(2024年1月-12月)
- 東鵬飲料(集團(tuán))股份有限公司2024年年度報(bào)告摘要
- 超級(jí)難的初三數(shù)學(xué)試卷
- 壓井施工方案
- YY 0790-2024血液灌流設(shè)備
- 《基于STM32的公交車智能終端設(shè)計(jì)與實(shí)現(xiàn)》
- DB13-T 6021.3-2024 節(jié)水型企業(yè)評(píng)價(jià)導(dǎo)則 第3部分:石油化工業(yè)
- 護(hù)-學(xué)-崗-簽-到-簿
- 2025年日歷(日程安排-可直接打印)
- 易能變頻器edsv300說明書
- 2024年下半年杭州黃湖鎮(zhèn)招考編外工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 人音版音樂七年級(jí)上冊(cè)《父親的草原母親的河》課件
- 浙江省第五屆初中生科學(xué)競(jìng)賽初賽試題卷
- 雷鋒精神在2024:新時(shí)代下的學(xué)習(xí)
- 竣工驗(yàn)收流程培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論