




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第十屆學(xué)生科技節(jié)單片機設(shè)計大賽作品名稱:萬年歷專業(yè):物聯(lián)網(wǎng)班級:1組長:鄧清蘭學(xué)號:3112113111組員:黃孟秋學(xué)號:3112113101目錄TOC o 1-5 h z一、緒論0二、系統(tǒng)功能0三、硬件電路0 HYPERLINK l bookmark2 o Current Document 電路設(shè)計框圖0系統(tǒng)硬件概述1四、各模塊功能及工作原理1單片機主控制模塊的設(shè)計1 HYPERLINK l bookmark4 o Current Document LCD1602顯示模塊2 HYPERLINK l bookmark6 o Current Document 鍵盤模塊5五、實現(xiàn)結(jié)果8六、系統(tǒng)的實
2、用性及創(chuàng)新性9七、調(diào)節(jié)中遇到的問題及心得體會9八、稈序設(shè)計10 HYPERLINK l bookmark26 o Current Document 流稈圖10 HYPERLINK l bookmark28 o Current Document 源代碼11九、總結(jié)及感謝23一、緒論眾所周知單片機是一種集成在電路芯片,是采用超大規(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è)計要制作的就是
3、單片機于生活中最為常見的幾種應(yīng)用萬年歷。本設(shè)計以AT89S52單片機作為核心,可以顯示當前的日歷和時間,時間也可以人為設(shè)定,顯示格式為年(四位),月(兩位),日(兩位),時(兩位),分(兩位),秒(兩位)。設(shè)置時間的位切換、設(shè)定數(shù)值、啟動定時器、切換日歷通過外部中斷來實現(xiàn)。萬年歷顯示電路由LCD1602組成,制作該裝置的材料需要有軟硬件的支持,硬件方面AT89C51單片機,晶振,電源,液晶屏LCD1602。二、系統(tǒng)功能本次設(shè)計的是萬年歷,采用LCD1602顯示,實現(xiàn)的功能如下:顯示當前時間,顯示格式為年(四位),月(兩位),日(兩位),時(兩位),分(兩位),秒(兩位);時鐘計時,自動進行時間
4、的位切換;鍵盤設(shè)置,能通過鍵盤設(shè)定當前時間和計時,并通過鍵盤人為設(shè)定時間。三、硬件電路3.1.電路設(shè)計框圖福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈第1頁共26頁3.2.系統(tǒng)硬件概述本電路是由AT89S52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作,本系統(tǒng)選用12MHZ的晶振,使得單片機有合理的運行速度;利用液晶屏LCD1602顯示時間信息,通過對AT89S52單片機的編程控制液晶屏LCD1602的顯示。顯示時間在LCD1602,通過按鍵切換選擇。外部按鍵可及時設(shè)定或調(diào)整時間信息。買鯛鴯譖曇膚遙閆擷凄四、各模塊功能及工作原理單片機主控制模塊的設(shè)計AT89S52是一種低功耗、高性
5、能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。AT89S52單片機為40引腳雙列直插芯片,有四個I/O口PO,P1,P2,P3,MCS-51單片機共有4個8位的I/O口(PO、Pl、P2、P3),每一條I/O線都能獨立地作輸出或輸入。18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。引腳圖如圖圖4.1:(T2)P1.0C2VCCq40:T二EX)F1.-匚23
6、0PC.C(ADOF1.2匚3陽PC.1的m門衛(wèi)匸斗37PC.2(A&2P1.4匚539pc.2e.g-孫(MGSI)P1.5:a35P0.4(AD4)(MISO)F1.0匚丁34PC.5eg(SCK)P1.7匚033PD.6RSTT匚932PC.?(RXD)P3.0匚1031EAsVPPED)P3.1匚1130ALEPROG(INTD)L1229F5ENJTH:.R3.3LI32BP2.7(A1E)(TDJP3.4匚1427P2.0(A14)(T1)ra.aiz1529P216圖4.1AT89S52引腳結(jié)構(gòu)1602圖4.2.1LCD1602引腳結(jié)構(gòu)福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈第 頁
7、共26頁LCD1602顯示模塊4.2.1LCD1602引腳介紹LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,引腳圖如圖圖4.2.1:各引腳接口說明如表4.2.2所示:編號符號引腳說明編號符號引腳說明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背光源負極表4.2.2LCD1602引腳說明第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比
8、度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。貓蠆驢繪燈鮒誅髏貺廡。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。鍬籟第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:DOD7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。4.2.2LCD1602指令1602液晶模塊內(nèi)部的控制器共
9、有11條控制指令,如表4.2.3編號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表4.2.3LCD1602的指令說明1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令
10、編程來實現(xiàn)的。(說明:1為高電平、0為低電平)構(gòu)氽頑黌碩飩薺齦話騖指令1:清顯示,指令碼01H,光標復(fù)位到地址00H位置。指令2:光標復(fù)位,光標返回到地址00H。指令3:光標和顯示模式設(shè)置I/D:光標移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。咼電平表示有效,低電平則無效。輒嶧指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。堯側(cè)閆繭絳闕絢勵蜆贅。指令5:光標或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標。指令6:功能設(shè)置命
11、令DL:高電平時為4位總線,低電平時為8位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。識饒鎂錕縊灩筧嚌儼淒。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標地址BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。凍鈹鋨勞臘鍇癇婦脛糴。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。4.2.3LCD1602讀/寫操作LCD1602基本操作時序說明,如表4.2.4讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈
12、沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無表4.2.4LCD1602基本操作時序說明4.2.4LCD1602顯示模塊流程圖鍵盤模塊本設(shè)計采用4乘4鍵盤的反轉(zhuǎn)法控制萬年歷的計時和時間設(shè)定,4乘4鍵盤電路圖如圖圖4.3.1福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈4*4鍵盤圖4.3.2凹日匡SS0EEHHE4.3.2流程圖YYNYNYNY4.4計時模塊4.4.1計數(shù)器工作原理計數(shù)器:是單片機應(yīng)用中的重要部件,工作方式靈活,可以對外部事件計數(shù)和檢測等;實現(xiàn)計數(shù)功能。其核心是特殊功能寄存器中能進行加1計數(shù)的寄存器。實現(xiàn)原
13、理:對T0或T1引腳輸入的外部脈沖計數(shù),如下圖:第8頁共26頁福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈第 頁共26頁六、系統(tǒng)的實用性及創(chuàng)新性基本功能:能顯示當前時間和計時,實現(xiàn)基本時鐘功能。創(chuàng)新性:界面友好,能實現(xiàn)計時和鍵盤數(shù)字的時間設(shè)定和自增、自減的時間設(shè)定。七、調(diào)節(jié)中遇到的問題及心得體會問題一LCD1602的初始化不規(guī)范,導(dǎo)致無法正確在LCD1602上顯示相應(yīng)的字符,時間等。解決在網(wǎng)上及課本上查找有關(guān)LCD1602初始化的程序,找出錯誤的地方并及時改正,最終解決了LCD1602的初始化問題。閿擻輳嬪諫遷擇楨秘騖問題二在對秒、分、時、日、月、年等的大小判斷時,采用逐位判斷,導(dǎo)致稈序冗長,不利于
14、稈序的優(yōu)化。解決通過老師的指導(dǎo)及其他相關(guān)稈序的借鑒,對時間大小的判斷進行優(yōu)化,將秒的十位和各位合為一個整體進行判斷,分、時、日、月、年類似。氬嚕躑竄貿(mào)懇彈瀘問題三在計時模塊中,因為細節(jié)問題,找不到導(dǎo)致不能正常計時的原因。解決通過老師的精心指導(dǎo),找到不能正常計時的原因,將中斷次數(shù)的判斷if(count100)改為if(count=100)即可。問題四福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈在鍵盤設(shè)計模塊中,對空數(shù)組的定義無效。解決通過查找相關(guān)資料,了解到空數(shù)組的定義要放在data中,不能放在code中。將空數(shù)組定義為uchara14使其默認放在data中就解決了該問題。慫闡譜鯪逕八、稈序設(shè)計8.1
15、.流程圖福建工稈學(xué)院軟件學(xué)院軟件工稈物聯(lián)網(wǎng)工稈第 頁共26頁8.2.源代碼#include#defineucharunsignedchar#defineuintunsignedintucharcodeBuffer4=0 xfe,0 xfd,0 xfb,0 xf7;ucharcodetable=0,1,2,3,4,5,6,7,8,9,+,-,!,;嘰覲詿縲鐋囁偽ucharcodew14=0 x83,0 x84,0 x85,0 x86,0 x88,0 x89,0 x8b,0 x8c,0 xc4,0 xc5,0 xc7,0 xc8,0 xca,0 xcb;uchara14;sbitE=P2人7;16
16、02使能引腳sbitRW=P2A6;1602讀寫引腳sbitRS=P2A5;1602數(shù)據(jù)/命令選擇引腳voidDelay(uintxms);/延時voidTime0_Init();/中斷請求voidtimer1_int(void);/中斷voidcharge();/判斷秒分時日月等是否大于額外值,若大于向上一位加一voidftime();/初始時間voidtimeon();/計時voidadd();/自加voidsub();/自減voidwcmd(uchardel);/1602寫指令voidwrite(uchardel);/1602寫數(shù)據(jù)voidL1602_init(void);/1602初始
17、化voidsecond();voidminute();voidhours();voiddays();voidmonth();voidyears();voidother();voidnumber();/秒顯示/分顯示/時顯示/日顯示/月顯示/年顯示/符號顯示/鍵盤輸入數(shù)字uintcount,t;ucharsec=0;ucharmin=0;ucharhour=0;ucharday=0;ucharmon=0;ucharyearh=0;ucharyearl=0;/中斷執(zhí)行次數(shù),光標位置參數(shù)/初始秒/初始分/初始時/初始日/初始月/初始年前兩位/初始年后兩位/1602命令函數(shù)voidwcmd(uchar
18、del)P0=del;RS=0;RW=0;E=1;Delay(1);E=0;Delay(1);/1602寫數(shù)據(jù)函數(shù)voidwrite(uchardel)P0=del;RS=1;RW=0;E=1;Delay(1);E=0;Delay(1);/1602初始化voidL1602_init(void)wcmd(0 x38);wcmd(0 x38);wcmd(0 x38);wcmd(0 x0e);wcmd(0 x06);wcmd(0 x01);/顯示秒voidsecond()uchari,j;i=sec/10;j=sec%10;wcmd(0 xca);write(tablei);write(tablej
19、);/顯示分voidminute()uchari,j;i=min/10;j=min%10;wcmd(0 xc7);write(tablei);write(tablej);/顯示時voidhours()uchari,j;i=hour/10;j=hour%10;wcmd(0 xc4);write(tablei);write(tablej);/顯示日voiddays()uchari,j;i=day/10;j=day%10;wcmd(0 x8b);write(tablei);write(tablej);/顯示月voidmonth()uchari,j;i=mon/10;j=mon%10;wcmd(0 x
20、88);write(tablei);write(tablej);/顯示年voidyears()uchari,j,m,n;i=yearh/10;j=yearh%10;m=yearl/10;n=yearl%10;wcmd(0 x83);write(tablei);write(tablej);write(tablem);write(tablen);/符號顯示voidother()wcmd(0 xc9);write(:);wcmd(0 xc6);write(:);wcmd(0 x87);write(-);wcmd(0 x8a);write(-);/延時voidDelay(uintxms)uinti,j
21、;for(i=0;ixms;i+)for(j=0;j=100)count=0;charge();ftime();/顯示初始時間/時間初值voidftime()second();Delay(5);minute();Delay(5);hours();Delay(5);days();Delay(5);month();Delay(5);years();Delay(5);other();Delay(5);/各個按鍵返回值uintKeyvalue()uinti,j;uchartemp;uintKey_value;while(1)P1=0 xf0;if(P1!=0 xf0)Delay(100);if(P1!
22、=0 xf0)for(j=0;j4;j+)P1=Bufferj;temp=0 x10;for(i=0;i4;i+)if(!(P1&temp)Key_value=i+j*4;temp=1;returnKey_value;/字符串顯示voidL1602_string(ucharhang,ucharlie,uchar*p)uchara,b=0;if(hang=1)a=0 x80;if(hang=2)a=0 xc0;a=a+lie-1;while(1)wcmd(a+);b+;if(*p=0)|(b=16)break;write(*p);Delay(500);p+;/自增voidadd()wcmd(wt
23、);/光標置位if(t=1)/光標在第二個位置時if(yearh99)/判斷年前兩位是否小于99,是,年前兩位加1,并顯示yearh+;years();elseif(t=3)/光標在第四個位置時if(yearl99)/判斷年后兩位是否小于99,是,年后兩位加1,并顯示yearl+;years();elseif(t=5)/光標在第六個位置時if(mon12)/判斷月是否小于12,是,月加1,并顯示mon+;month();elseif(t=7)/光標在第八個位置時if(day30)/判斷日是否小于30,是,日加1,并顯示day+;days();elseif(t=9)/當光標在第十個位置時if(h
24、our12)/判斷時是否小于12,是,時加1,并顯示hour+;hours();elseif(t=11)/光標在第十二個位置時if(min59)/判斷分是否小于59,是,分加1,并顯示min+;minute();elseif(t=13)/光標在第十四個位置時if(sec0)yearh-;years();elseif(t=3)/光標在第四個位置時,判斷年后兩位是否大于0,是,年后兩位減1,并顯示鶼漬螻偉閱劍鯫腎邏蘞。if(yearl1)yearl-;years();并顯示elseif(t=5)/光標在第六個位置時,判斷月是否大于1,是,月減1if(mon1)mon-;month();elseif
25、(t=7)/光標在第八個位置時,判斷日是否大于1,是,日減1并顯示if(day1)day-;days();elseif(t=9)/光標在第十個位置時,判斷時是否大于0,是,時減1,并顯示if(hour0)hour-;hours();elseif(t=11)/光標在第十二個位置時,判斷分是否大于0,是,分減1,并顯示if(min0)min-;minute();elseif(t=13)/光標在第十四個位置時,判斷秒是否大于0,是,秒減1,并顯示if(sec0)sec-;second();/主函數(shù)voidmain()ucharkeys;uinti,key;/數(shù)組a的參數(shù)i=0;t=0;/位置參數(shù)L1
26、602_init();/1602初始化L1602_string(1,5,Showtime);/初始界面顯示L1602_string(2,5,Welcome!);/初始界面顯示while(1)key=Keyvalue();/將鍵值賦值給keykeys=tablekey;if(keys=)/判斷鍵值是否為,是,執(zhí)行計時Time0_Init();while(1)timeon();elseif(keys=!)/判斷鍵值是否為!,是,顯示初始時間,光標在第一個位置ftime();wcmd(0 x83);elseif(keys=-|keys=+)/判斷鍵值是否為+或-if(keys=+)/鍵值為+,執(zhí)行自
27、加函數(shù)add();else/鍵值為-,執(zhí)行自減函數(shù)sub();/判斷鍵值是否為,是,光標不在最左邊時,光標左移一位elseif(keys=1)i-;t=t-1;wcmd(wt);elseif(keys=)/判斷鍵值是否為,是,光標不在最右邊時,光標右移一位紂憂蔣氳頑薟驅(qū)藥憫騖。if(t13)i+;t=t+1;wcmd(wt);else鍵值為數(shù)字鍵時,將鍵值放入a數(shù)組中,在調(diào)用函數(shù),顯示當前設(shè)置的時間number();i=i%14;ai=key;i+;t+;number();/輸入數(shù)字voidnumber()yearh=a0*10+a1;yearl=a2*10+a3;mon=a4*10+a5;day=a6*10+a7;hour=a8*10+a9;min=a10*10+a11;sec=
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4705.2-2024口罩有毒有害物質(zhì)的測定第2部分:禁用偶氮染料
- 飼料廠可行性方案研究報告
- 呼吸??谱o理分析
- 軟裝設(shè)計師核心能力體系
- 初中數(shù)學(xué)總復(fù)習(xí)優(yōu)化設(shè)計方案
- 食管癌食管穿孔的護理
- 職場女性康復(fù)
- 新聞報道設(shè)計方案
- 骨科常見疾病的功能鍛煉方法
- 學(xué)校安全保衛(wèi)課件
- 江蘇有限空間作業(yè)安全操作規(guī)范DB32∕T-3848-2020
- 《中醫(yī)美容》課件
- 10.2事件的相互獨立性 說課課件高一下學(xué)期數(shù)學(xué)人教A版(2019)必修第二冊
- 民辦學(xué)校檔案管理制度
- 工業(yè)固體廢棄物的資源化處理
- DB11 637-2015 房屋結(jié)構(gòu)綜合安全性鑒定標準
- 教學(xué)評一體化含義
- 24秋國家開放大學(xué)《馬克思主義基本原理》專題測試參考答案
- 下月監(jiān)理工作計劃模板
- 科技查新報告樣例
- 2024株洲市中考地理試題
評論
0/150
提交評論