基于單片機的時間控制器_第1頁
基于單片機的時間控制器_第2頁
基于單片機的時間控制器_第3頁
基于單片機的時間控制器_第4頁
基于單片機的時間控制器_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE PAGE 40摘 要本設(shè)計詳細介紹了利用AT89C51單片機設(shè)計時間控制器的方法。該時間控制器是以AT89C51單片機為核心,擴展一片XICOR公司的X5045組成的小系統(tǒng),控制一路繼電器:可以設(shè)定一天中的時間,設(shè)定繼電器的開啟時間和關(guān)閉時間,可以清除不需要的定時,能夠緊急啟動:所有的設(shè)定均通過鍵盤實現(xiàn),按鍵具有連擊功能,每個狀態(tài)都有指示燈提示。我們設(shè)計的作息時間控制是用單片機實現(xiàn)的,是為了更好的對時間控制智能化。時間控制器包括硬件和軟件。硬件部分包括繼電器,存儲器和顯示器接口芯片。軟件部分,主要是主程序設(shè)計。軟硬件結(jié)合在一起,先調(diào)試子程序,然后逐級疊加調(diào)試,最后系統(tǒng)調(diào)試通過。時間控

2、制系統(tǒng)可以準確的顯示時間,在定時時間到時發(fā)出悅耳的鈴聲提醒同學們按時上下課。關(guān)鍵詞:單片機,控制,時間AbsttracctThiss deesiggn UUSESS ATT89CC51 is inttrodduceed ttimee coontrrolller dessignn meethood. Thee tiime conntroolleer bbaseed oon AAT899C511 siinglle-cchipp miicroocommputter as thee coore, exxpanndinng aa XIICORR X550455 coonsiistiing of smaa

3、ll sysstemms, conntrool rrelaay aall thee waay: youu caan sset thee tiime of dayy, sset thee reelayy oppen timme aand cloose timme, timmingg, ccan remmovee doontt neeed to staart thee emmerggenccy: alll seet bby kkeybboarrd aand butttonns wwithh fuuncttionns oof ccombbo, eacch sstatte hhas a llighht

4、 hhintt. OOur dessignn woork andd reest timme cconttroll arre iimpllemeenteed uusinng ssinggle chiip mmicrrocoompuuterr, iis iinteelliigennt iin oordeer tto bbettter conntrool ooverr tiime. Tiime conntroolleer iinclludees hharddwarre aand sofftwaare. Haardwwaree paart inccluddes rellay, sttoraage an

5、dd diispllay intterffacee chhip. Sooftwwaree paart, maainlly iis tthe maiin pproggramm deesiggn. Harrdwaare andd sooftwwaree toogettherr, ddebuuggiing subbrouutinne ffirsst, andd thhen oveerlaay ddebuuggiing steep bby sstepp, ffinaallyy syysteem ddebuuggiing thrrouggh. Timme cconttroll syysteem ccan

6、 acccuraatelly ddispplayy thhe ttimee inn thhe rreguularr tiime wheen aa meeloddiouus bbelll reeminnd sstuddentts aaddiing andd drropppingg cllassses on timme.目錄1 系系統(tǒng)設(shè)計計方案與與論證321設(shè)設(shè)計要求求322系系統(tǒng)設(shè)計計總體方方案.32系統(tǒng)統(tǒng)的硬件件設(shè)計與與實現(xiàn).44211時鐘鐘芯片DDS1228877性能簡簡介.44212時鐘鐘芯片讀讀寫時序序.66213 時時間寄存存器地址址66214 特殊殊控制寄寄存器功功能7221 液液晶

7、SYYB1228644介紹88222 液液晶與單單片機的的接口88223 液液晶寫操操作時序序99231 紅紅外發(fā)送送與接收收110232 遙遙控碼數(shù)數(shù)據(jù)分析析110233 接接收電路路111241電源源部分電電路圖1113程序序設(shè)計1223 主主程序流流程圖1222 按鍵識識別.1333 課表表計算11334 遙控控解碼1144系統(tǒng)統(tǒng)測試與與總結(jié)166附錄1主要元元器件清清單.17附錄2程序清清單.18附錄3原理圖圖與印制制板圖. 335附錄4系統(tǒng)使使用說明明. 336附錄5系統(tǒng)實實物圖片片. 3371系統(tǒng)統(tǒng)設(shè)計方方案與比比較設(shè)計要要求一、時鐘鐘功能:能顯示示年、月月、日、星期、時、分分、秒

8、二、調(diào)整整功能:能校正正年份、日期、時間等等三、打鈴鈴功能:按指定定時間表表播放音音樂、現(xiàn)現(xiàn)場修改改作息時時間表四、設(shè)置置的作息息時間表表數(shù)據(jù)在在單片機機掉電后后不會丟丟失2系系統(tǒng)設(shè)計計總體方方案 根據(jù)設(shè)設(shè)計要求求實現(xiàn)的的功能,可以采采用不同同的設(shè)計計系統(tǒng)方方案如下下:方案一:采用單單片機自自帶定時時器進行行計時,外加存存儲器保保存課表表數(shù)據(jù),普通鍵鍵盤輸入入。由于單片片機進行行軟件計計時,硬硬件成本本比較低低,但是是誤差比比較大,需要校校準,日日后的維維護工作量比比較大??捎昧畠r的AAT244C044等存儲儲器保存存數(shù)據(jù),讀寫比比較容易易。對于于普通的的獨鍵盤盤,設(shè)置置量比較較大,改改用矩

9、陣陣鍵盤又又會占用用較大的的電路板板空間。方案二:采用實實時時鐘鐘芯片計計時,紅紅外數(shù)據(jù)據(jù)輸入。時鐘芯片片常見的的有美信信公司的的DS113022、DSS128887等等前者者與后者者的最大大區(qū)別在在于有沒沒有自帶帶的備份份電池。前者需需要增加加額外的的電池以以及相關(guān)關(guān)的充電電電路,后者DDS1228877本身已已經(jīng)集成成了鋰電電池,而而且掉電電后相當當長一段段時間還還可以正正常走時時,最重重要的是是它還剩剩下1114字節(jié)節(jié)的非易易失RAAM,由由于有備備份電池池供電,相當于于一個存存儲器,可以充充分利用用,而不不需要增增加另外外的存儲儲器,減減少了外外圍電路路。電視視紅外遙遙控比較較常見,只

10、要解解碼出來來,可以以充分利利用面板板上的多多個數(shù)字字鍵,接接收電路路也相當當簡單,另外由由于是非非接觸式式按鍵,避免了了普通機機械按鍵鍵的磨損損弊端。故本設(shè)計計選用第第二種方方案總總體方框框圖如下下:單片機89S52時鐘芯片DS12887紅外接收頭遙控液晶顯示蜂鳴器系統(tǒng)統(tǒng)的硬件件設(shè)計與與實現(xiàn)1時時鐘芯片片DS1128887性能能簡介11時鐘芯芯片特點點功能簡簡介及引引腳分布布如圖: 12讀寫寫時序13時間間寄存器器地址值得注意意的是上上表中最最后的寄寄存器地地址0EEH7FHH,這里里就是剩剩余的1144字字節(jié)RAAM,在在本設(shè)計計中實際際使用的的是100H13HH四個字字節(jié),用用于保存存課

11、表上上午和下下午的起起始數(shù)據(jù)據(jù)。214特特殊控制制寄存器器功能22液液晶顯示示塊部分分電路221液晶晶SYBB128864功功能與技技術(shù)參數(shù)數(shù)簡介SYBB128864是是一種圖圖形點陣陣液晶顯顯示器,它主要要由行驅(qū)驅(qū)動器/ 列驅(qū)驅(qū)動器及及128864全點點陣液晶晶顯示器器組成.可完成成圖形顯顯示,內(nèi)置漢漢字庫,可以顯顯示84個(16616點陣陣)漢字.主要技術(shù)術(shù)參數(shù)和和性能:1.電源源:VDDD:+5V;LCDD外接驅(qū)驅(qū)動電壓壓為 33.08.00V 2.顯示示內(nèi)容:1288(列)64(行)點3.全屏屏幕點陣陣4.七種種指令5.與CCPU接接口采用用8位數(shù)據(jù)據(jù)總線并并行輸入入輸出和和8條控制制

12、線.222液晶晶與單片片機接口口外部接接口信號號如下表表所示:管腳號管腳名稱稱LEVEER管腳功能能描述1VSS0V電源地2VDD5.0VV電源電壓壓3V0-液晶顯示示器驅(qū)動動電壓4RSH/LRS=“H”,表示DBB7DDB0為為顯示數(shù)數(shù)據(jù)RS=“L”,表示DBB7DDB0為為顯示指指令數(shù)據(jù)據(jù)5R/WH/LR/W=“H”,E=“H”,數(shù)據(jù)據(jù)被讀到到DB77DBB0R/W=“L”,E=“HL”, DBB7DDB0的的數(shù)據(jù)被被寫到IIR或DR6EH/L使能信號號:R/W=“L”,E信號號下降沿沿鎖存DDB7DB00 R/WW=“HH”,EE=“HH” DDRAMM數(shù)據(jù)讀讀到DB77DBB07DB0

13、H/L數(shù)據(jù)線8DB1H/L數(shù)據(jù)線9DB2H/L數(shù)據(jù)線10DB3H/L數(shù)據(jù)線11DB4H/L數(shù)據(jù)線12DB5H/L數(shù)據(jù)線13DB6H/L數(shù)據(jù)線14DB7H/L數(shù)據(jù)線15PSBH/LH:8或或4位并并口,LL串口(本設(shè)計計中硬件件置高電電平)16NC17RETH/L復(fù)位信號號,低電平平復(fù)位(如不需需要經(jīng)常常復(fù)位可可以懸空空)18VOUTT10VLCD驅(qū)驅(qū)動電壓壓19LED+-LED背背光板電電源20LED-LED背背光板電電源數(shù)據(jù)線DD0DD7與單單片機PP0口相相連,完完成數(shù)據(jù)據(jù)傳送。單片機機P1.0與液液晶RSS相連,控制顯顯示數(shù)據(jù)據(jù)和顯示示指令數(shù)數(shù)據(jù). 單片機機P1.1與液液晶RWW相連,控

14、制數(shù)數(shù)據(jù)讀寫寫.單片機機P1.2與液液晶E相相連,液液晶REEST與與電源相相連,控控制液晶晶復(fù)位信信號。118腳是是液晶背背光驅(qū)動動端,通通過限流流可變電電阻調(diào)節(jié)節(jié)對比度度,由于于經(jīng)過試試驗測量量可變電電阻大概概是166K,為為了方便便電路布布局,用用15KK的固定定電阻。液晶與單單片機接接口圖223液晶晶寫操作作時序?qū)懖僮鲿r時序R/W為為低電平平,CSS為低電電平寫入入指令,R/W為為低電平平,CSS為高電電平寫入入數(shù)據(jù)23紅紅外遙控控231 發(fā)發(fā)送與接接收通用紅外外遙控系系統(tǒng)由發(fā)發(fā)射和接接收兩大大部分組組成。應(yīng)應(yīng)用編/解碼專專用集成成電路芯芯片來進進行控制制操作,如圖所示。發(fā)射部部分包括

15、括鍵盤矩矩陣、編編碼調(diào)制制、LEED 紅紅外發(fā)送送器;接接收部分分包括光光、電轉(zhuǎn)轉(zhuǎn)換放大大器、解解調(diào)、解解碼電路路。232 遙遙控碼數(shù)數(shù)據(jù)分析析遙控發(fā)射射器專用用芯片很很多,這這里我們們以運用用比較廣廣泛,解解碼比較較容易的的一類來來加以說說明,以以東芝公公司的TTC90012組組成發(fā)射射電路為為例說明明編碼原原理。當當發(fā)射器器按鍵按按下后,即有遙遙控碼發(fā)發(fā)出,所所按的鍵鍵不同遙遙控編碼碼也不同同。這種種遙控碼碼具有以以下特征征:采用脈寬寬調(diào)制的的串行碼碼,以脈脈寬為0.5565mms、間間隔0.56mms、周周期為11.1225mss 的組組合表示示二進制制的“0”;以脈脈寬為00.5665

16、mss、間隔隔1.6685mms、周周期為22.255ms的組合合表示二二進制的的“1”,其波波形如圖圖所示。遙控碼的的“0”和“1”上述“00”和“1”組組成的332位二二進制碼碼經(jīng)388kHzz的載頻頻進行二二次調(diào)制制,然后后再通過過紅外發(fā)發(fā)射二極極管產(chǎn)生生紅外線線向空間間發(fā)射。一般電電視遙控控器的遙遙控編碼碼是連續(xù)續(xù)的322位二進進制碼組組,其中中前166位為用用戶識別別碼,能能區(qū)別不不同的紅紅外遙控控設(shè)備,防止不不同機種種遙控碼碼互相干干擾。后后16位位為8位位的操作作碼和88位的操操作反碼碼,用于于核對數(shù)數(shù)據(jù)是否否接收準準確。根根據(jù)紅外外編碼的的格式,發(fā)送數(shù)數(shù)據(jù)前需需要先發(fā)發(fā)送4.5

17、mss的起始始碼和44.5mms的結(jié)結(jié)果碼作作為引導(dǎo)導(dǎo)碼。遙控串串行數(shù)據(jù)據(jù)編碼波波形如下下圖所示示:233接收收電路接收電路路較為簡簡單,采采用一體體化接收收頭HSS00338,濾濾波電容容在這里里可以減減少電源源帶來的的干擾。如圖:24電電源233接收收電路241電源源部分電電路圖為達到提提供穩(wěn)定定5V供供電電壓壓,變壓壓器采用用了玩具具車電池池充電適適配器,由于此此電源只只包含了了全波整整流電路路,在此此加上濾濾波電路路和穩(wěn)壓壓電路,如圖。3系統(tǒng)統(tǒng)的軟件件設(shè)計31主主程序流流程圖主程序流流程圖:讀取課表數(shù)據(jù)并計算讀取時間歡迎界面時鐘與液晶復(fù)位上電顯示時間比較課表True顯示課次,播放音樂F

18、alseTrue鍵掃退出菜單選擇修改課表選擇查看課表選擇調(diào)整時間調(diào)整時間上午課表修改課表保存設(shè)置下午課表保存設(shè)置32按按鍵識別別為了輸入入簡單,用數(shù)字字鍵直接接輸入要要設(shè)置的的數(shù)字,而且沒沒有另外外設(shè)置專專門的光光標移位位鍵,即即輸入一一個數(shù)字字后自動動換到一一個位置置,如果果有現(xiàn)成成的不需需要修改改的數(shù)字字,可以以直接按按任意非非數(shù)字鍵鍵跳過。由于進行行年月日日等數(shù)據(jù)據(jù)的保存存時是以以兩個鍵鍵為一個個單位(比如223),由此將將產(chǎn)生一一個問題題,怎樣樣保存無無效的鍵鍵值,即即如果第第一個鍵鍵是無效效鍵或者者第二個個鍵是無無效鍵,這個數(shù)數(shù)據(jù)怎么么保存。具體解決決辦法如如下:從遙控按按鍵解碼碼結(jié)

19、果可可知,鍵鍵值和數(shù)數(shù)字鍵的的數(shù)字對對應(yīng)關(guān)系系為:如果鍵值值小于99(0 xx09),按鍵鍵數(shù)字就就是鍵值值加上11,而鍵鍵值9對對應(yīng)按鍵鍵“0”。所以兩個個按鍵的的要分九九種情況況,第一一個按鍵鍵有三種種情況,無效鍵鍵,19鍵,0鍵,第二個個鍵也有有三種情情況,考考慮到第第二個鍵鍵有可能能是無效效鍵,所所以按第第一個鍵鍵(十位位)時候候要保存存?zhèn)€位數(shù)數(shù)字,具具體賦值值如下:(以年年為例,yeaar0,yeaar1,yeaar2分分別是原原值、第第一次按按鍵后賦賦值、第第二次按按鍵后賦賦值)第一個按按鍵后賦賦值如下下表:key 99(無效鍵鍵)yearr1 = yeear00key 99(19

20、9鍵)yearr1 = 100*( keyy +11)+yyearr0%110key = 99(0鍵)yearr1 = yeear00%100第二個按按鍵后賦賦值如下下表:第一個鍵鍵第二個鍵鍵賦值無效鍵0鍵yearr2= yeaar1/10*1019鍵鍵0鍵yearr2= yeaar1/10*100鍵0鍵yearr2= yeaar1/10*10為為方便編編程沒有有用yeear22= 00無效鍵19鍵鍵yearr2= yeaar1/10*10 + kkey+119鍵鍵19鍵鍵yearr2= yeaar1/10*10 + kkey+1 0鍵19鍵鍵yearr2= keyy+1無效鍵無效鍵yearr

21、2= yeaar119鍵鍵無效鍵yearr2= yeaar10鍵無效鍵yearr2= yeaar1事實上第第二個鍵鍵是無效效鍵的情情況在剛剛開始已已經(jīng)考慮慮,所以以鍵值不不變,可可以不做做處理。33課課表計算算以上午為為例,當當設(shè)定好好第一節(jié)節(jié)課上課課時間,以后的的時間在在此基礎(chǔ)礎(chǔ)上往上上加。第一節(jié)課課下課第二節(jié)課課上課第二節(jié)課課下課第三節(jié)課課上課第三節(jié)課課下課第四節(jié)課課上課第四節(jié)課課下課小時增量量0012223分鐘增量量4555400455540實際編寫寫程序計計算時,為了對對齊,插插入了無無效的00值,當當然如果果schheduule11表表同樣采采用二維維數(shù)組可可避免此此弊端,這也是是當

22、時編編程時候候總體設(shè)設(shè)計考慮慮不周造造成的,以至于于要修改改就要改改動其很很多的數(shù)數(shù)據(jù)。34 遙控解解碼具體解碼碼過程如如下:通過定時時器讀出出相應(yīng)的的高低電電平,先先讀出低低電平,再讀出出高電平平,如果果中間有有非正常常的值則則重新接接收。每每八個位位為一個個字節(jié)數(shù)數(shù)據(jù),總總共四個個有效數(shù)數(shù)據(jù),最最后在數(shù)數(shù)碼管上上顯示。#inccludde #ddefiine c(xx) (x*11105592/12000000)/便于數(shù)數(shù)據(jù)分析析sbiit IIr_PPin=P36;/接收收管腳uunsiigneed ccharr coode Ledd_Taab=00 xC00,0 xxF9,0 xAA4

23、,00 xB00,0 xx99,0 x992,00 x822,0 xxf8,0 x880,00 x900,0 xx88,0 x883,00 xC66,0 xxA1,0 x886,00 x8EE; /共共陽極數(shù)數(shù)碼顯示示碼0-F.uunsiigneed ccharr coode Ledd_Seel=00 xfee,0 xxfd,0 xffb,00 xf77; /顯顯示位控控unssignned chaar LLed_Buff4; /顯顯示緩沖沖區(qū)unnsiggnedd chhar Ledd; /位選選unssignned chaar IIr_BBuf4; /用于保保存解碼碼結(jié)果/=tiimerr

24、0() innterrruppt 11 ussingg 1 /防止止按鍵時時 LEED顯示示閃爍TL00=(6655336-110000)%2256;TH00=(6655336-110000)/2256; /定時器器0設(shè)定定約10000uus中斷斷一次,用于數(shù)數(shù)碼管掃掃描P00=0 xxff;P2=Ledd_SeelLLed; /位選選P0=Ledd_TaabLLed_BuffLeed; /段選選if(+LLed 3) Leed =0; /四個個掃描完完了,到到第一個個數(shù)碼管管/=uunsiigneed iint Ir_Gett_Loow() /獲取低低電平時時間TLL1=00;TH11=0;

25、TRR1=11;whiile(!Irr_Piin ); /當PP3.66為低 等待TRR1=00;retturnn THH1*2256+TL11;/=uunsiigneed iint Ir_Gett_Hiigh() /獲取取高電平平時間TLL1=00;TH11=0;TRR1=11;whiile(Ir_Pinn ); /當P33.6為為高 等等待TR11=0;reeturrn TTH1*2566+TLL1;/=mainn()unssignned intt teemp;chaar ii,j;TMOOD=00 x111;TLL0=(655536-10000)%2566;THH0=(655536-10

26、000)/2566; /定時時器0設(shè)設(shè)定約110000us中中斷一次次,用于于數(shù)碼管管掃描EEA=11;ETT0=11;TRR0=11;whhilee(1)reestaart:whhilee(Irr_Piin);teemp=Ir_Gett_Loow();/允許有有一定的的誤差iff(teempc(50000) coontiinuee; /引導(dǎo)導(dǎo)脈沖低低電平445000 temmp=IIr_GGet_Higgh();if(temmpc(550000) conntinnue; /引導(dǎo)脈脈沖高電電平45500foor(ii=0;i44;i+) /44個字節(jié)節(jié)forr(j=0;jj8;j+) /每個個

27、字節(jié)88位 temmp=IIr_GGet_Loww();/5560uus 低低電平iif(ttemppc(8000) gotto rresttartt;teemp=Ir_Gett_Hiigh();/5600us 或 116800us 高電平平if(temmpcc(20000) ggotoo reestaart;Ir_Buffi=1; /先先寫“00” iff(teempc(111200)Ir_Buffi|=00 x800; /再寫“11” Leed_BBuf0=Ir_Buff2&0 xx0f; /低低四位數(shù)數(shù)據(jù)碼Leed_BBuf1=Ir_Buff244; /高高四位數(shù)數(shù)據(jù)碼Ledd_Buuf

28、22=IIr_BBuf0&0 x00f; /低四四位系統(tǒng)統(tǒng)碼Leed_BBuf3=Ir_Buff044; /高高四位系系統(tǒng)碼解碼結(jié)果果如下,系統(tǒng)碼為為0 x00E(由于設(shè)設(shè)置鍵和和屏顯鍵鍵的鍵值值相同,故有同同樣的功功能)4總結(jié)結(jié)經(jīng)過各方方面的測測試,達達到設(shè)計計的要求求。一、在系系統(tǒng)硬件件的設(shè)計計方面,充分考考慮了電電路元器器件的布布局,整整個系統(tǒng)統(tǒng)板小巧巧精致。剛開始始用萬能能板做實實驗時,紅外接接收頭由由于沒有有使用濾濾波電路路,抗干干擾能力力比較弱弱,單片片機容易易進入死死機狀態(tài)態(tài),經(jīng)過過改進后后,恢復(fù)復(fù)正常,只有極極少數(shù)情情況下會會出現(xiàn)死死機,可可能是電電源干擾擾所致,如果加加入看門

29、門狗電路路可以避避免死機機。在設(shè)設(shè)計的過過程中,曾遇到到了許多多的問題題,比如如內(nèi)存溢溢出、液液晶的判判忙、按按鍵識別別、菜單單設(shè)置等等,經(jīng)過過了大量量的調(diào)試試修改工工作,得得以解決決,在這這過程中中積累了了寶貴的的經(jīng)驗。二、本設(shè)設(shè)計還可可以進一一步改進進和添加加新的功功能1、加入入溫度測測量。采采用DSS18BB20,只占用用一根單單片機口口線,精精度也比比較高。2、鬧鐘鐘功能。DS1128887上自帶帶鬧鐘功功能。如如果只是是用來做做普通的的鬧鐘,實用性性不強,其實在在本設(shè)計計中可以以用來打打鈴,只只要把課課表計算算好,每每次上課課或者下下課后由由單片機機自動把把下一個個打鈴點點設(shè)置為為鬧

30、鐘,這樣就就不用單單片機來來比較打打鈴點。3、加入入液晶屏屏保功能能。在沒沒有操作作時把液液晶電源源關(guān)掉,當有按按鍵出現(xiàn)現(xiàn)時點亮亮液晶,可以延延長液晶晶使用壽壽命,還還可以節(jié)節(jié)省電能能。不過過具體操操作時候候必須把把液晶的的電源和和地線全全部斷開開。4、添加加任意打打鈴點,并可以以刪除。其實還還有一百百多字節(jié)節(jié)的非易易失RAAM剩余余,可以以保存數(shù)數(shù)據(jù)。附錄1:主要元元器件清清單序號名稱型號,規(guī)規(guī)格數(shù)量備注1單片機AT899S5221AT899S5222電阻色環(huán)電阻阻10k1k20015k1211誤差100%3電容0.1uuF,470uuF10 uuF33p,uF10000 uFF221211

31、104470 uF /255V10 uuF /10vv10310000uF/100V4三極管901221PNP5蜂鳴器16時鐘芯片片DS122CR88871DS122CR88877電視遙控控器1TC900128液晶12866411286649單片機插插座40座1DIP44010插座單排插座座1SIP22011排阻10K1103JJ12發(fā)光二極極管紅色發(fā)光二極極管13直流插座座1三腳直流流座14晶振112MHHZ16穩(wěn)壓管LM788051LM78805附錄:程序清清單#inccludde #deffinee uccharr unnsiggnedd chhar#deffinee uiint uns

32、signned inttuchaar wweekk,keey,hhighh;/1228644液晶操操作口sbitt rss = P10;sbitt rww = P11;sbitt enn = P12;/dss12ccr8887操作作口sbitt dss = P33;sbitt Rww = P32;sbitt ass = P31;sbitt css = P30;sbitt Irr_Piin=PP355; /紅外外接收uchaar Ir_Buff4; /保存存解碼數(shù)數(shù)據(jù)bit enaablee = 1;/允允許進入入設(shè)置菜菜單bit flaag;/音音樂開關(guān)關(guān)sbitt bbuzzzer = PP

33、366;/蜂蜂鳴器uchaar ccodee sccheddulee022113= 00, 00, 00 ,00, 11 , 0, 2, 0, 2 , 0, 2 , 00, 33 , /課表小小時增量量 455,0, 555,0, 400,0, 0, 0, 455,0, 555,0, 400;/課課表分鐘鐘增量uchaar ttablle66;/依依次為 年月 日日 時 分 秒秒uchaar ttablle14;/依依次為設(shè)設(shè)置課表表 上午午*時*分,下下午*時時*分uchaar iidatta sscheedulle116;/上上午課表表uchaar iidatta sscheedulle2

34、16; /下下午課表表uchaar iidatta ddispplayyschheduule114133;/上午午課表 顯示緩緩沖區(qū)uchaar iidatta ddispplayyschheduule224133;/下午午課表 顯示緩緩沖區(qū)uchaar ccodee yttablle=22,4; /顯示示 第二二行 第第四行坐標uchaar ccodee xttablle=11,2,4,55,7,8;/顯顯示 列列設(shè)置時時間顯示示位置uchaar ccodee xttablle1=2,33,5,6;/顯顯示 列列 設(shè)置課課表顯示示位置/=延時=voidd deelayy(uiint m) w

35、hiile( m);/=/* 液晶晶 */=判判忙= voiid cchecckbuusy()rrs=00;rrw=11;PP0=00 xfff;wwhille(11) en = 11;if(P0 00 x800)brreakk;/P0的的最高位位為忙標標志為,H:忙忙,L:空閑en = 00; een=00;/=液晶寫寫指令=voidd wrriteecommmannd(uuchaar ccommmandd) cheeckbbusyy(); rss=0; rww=0; enn=1; P00=coommaand; /液晶晶數(shù)據(jù)線線P0 enn=0; /=液晶晶寫數(shù)據(jù)據(jù)=voidd wrrite

36、edatta(uuchaar ddatee) cheeckbbusyy(); rss=1; rww=0; enn=1; P00=daate; enn=0; /=液晶設(shè)設(shè)置= voiid llcdsset(voiid) wrriteecommmannd(00 x300); /基基本指令令集 wrriteecommmannd(00 x011); /清清屏,DDDRAAM的地地址歸零零 wrriteecommmannd(00 x022); /地地址歸位位 wrriteecommmannd(00 x0cc); /顯顯示開,光標關(guān)關(guān),反白白關(guān) wrriteecommmannd(00 x066); /DD

37、DRAAM地址址加1 /=設(shè)置光光標=voidd cuursoor(uuchaar yy,uccharr x)uchaar ccommmandd = 0 x880;writtecoommaand(0 x00f);/開開光標 閃爍 iff( yy = 2)yy = 3; ellse if(y = 33)yy = 2; coommaand |= (y-1) 3; coommaand += (x-1); wrriteecommmannd(ccommmandd);/=設(shè)置反反白=voidd coonveert(uchhar yy) /反反白一行行 uchhar x,yy,i,j; y=00 x800;

38、 xx=0 xx80; wriiteccommmandd(0 xx36); /繪圖圖開 forr (ii=0;i332;ii+) wwrittecoommaand(y+);wriiteccommmandd(x);ffor (j=0;jj166;j+)wwrittedaata(0 x000); y=00 x800; xx=0 xx88; forr (ii=0;i332;ii+) wwrittecoommaand(y+);wrriteecommmannd(xx);ffor (j=0;jj22) x= 0 x888; y=( yyy-33 )4)+0 xx80;eelsee x=00 x800; y

39、=(yyy-1)44)+00 x800;wwrittecoommaand(0 x336); ffor (i=0;ii166;i+) wriiteccommmandd(y+);wriiteccommmandd(x); forr (jj=0;j116;jj+) /一行寬寬度是116的點點 wrriteedatta(00 xfff);wwrittecoommaand(0 x330); /=字符顯顯示=voidd diispllay(uchhar y, uchhar x, uchhar *p) swittch (y) ccasee 1:wriiteccommmandd(0 xx7f+x); brrea

40、kk; /液晶晶第一行行ccasee 2:wriiteccommmandd(0 xx8f+x); brreakk; /0 xx90+(x-1)ccasee 3:wriiteccommmandd(0 xx87+x);breeak;ccasee 4:wriiteccommmandd(0 xx97+x);breeak;ddefaaultt:brreakk;whille(*p)writtedaata(*p+); /=顯示示數(shù)字=voidd diispllayNNumbber(uchhar y,uuchaar xx,uccharr nuumbeer)swiitchh (nnumbber)/引號號內(nèi)數(shù)字字

41、為中文文全角輸輸入 占占據(jù)一個個漢字位位置caase 0:ddispplayy(y,x,);brreakk;caase 1:ddispplayy(y,x,);brreakk;caase 2:ddispplayy(y,x,);brreakk;caase 3:ddispplayy(y,x,);brreakk;caase 4:ddispplayy(y,x,);brreakk;caase 5:ddispplayy(y,x,);brreakk;caase 6:ddispplayy(y,x,);brreakk;caase 7:ddispplayy(y,x,);brreakk;caase 8:ddisppl

42、ayy(y,x,);brreakk;caase 9:ddispplayy(y,x,);brreakk;deefauult:breeak; /=顯顯示星期期=voidd diispllaywweekk (uuchaar wweekk)swiitchh (wweekk)caase 1: dissplaay(33,3,一);bbreaak;caase 2:dissplaay(33,3,二);bbreaak;caase 3:dissplaay(33,3,三);bbreaak;caase 4:dissplaay(33,3,四);bbreaak;caase 5:dissplaay(33,3,五);bbre

43、aak;caase 6:dissplaay(33,3,六);bbreaak;caase 7:dissplaay(33,3,日);bbreaak;deefauult: brreakk;/=顯顯示課次次=voidd diispllayllessson (uccharr leessoon)swiitchh (llessson)caase 1: dissplaay(33,5,第一一節(jié)課);bbreaak;caase 2:dissplaay(33,5,第二二節(jié)課);bbreaak;caase 3:dissplaay(33,5,第三三節(jié)課);bbreaak;caase 4:dissplaay(33,5,第

44、四四節(jié)課);bbreaak;caase 5:dissplaay(33,5,第五五節(jié)課);bbreaak;caase 6:dissplaay(33,5,第六六節(jié)課);bbreaak;caase 7:dissplaay(33,5,第七七節(jié)課);bbreaak;caase 8:dissplaay(33,5,第八八節(jié)課);bbreaak;deefauult: brreakk;/=顯顯示菜單單=voidd meenu (vooid)wriiteccommmandd(0 xx01);/清清屏diispllay(1,33,設(shè)設(shè)置時間間);dissplaay(22,3,查看看課表);dissplaay(33,

45、3,修改改課表);dissplaay(44,3,退出出菜單 ); /=顯示時時間= voiid ddispplayytimme0(voiid)/靜態(tài)態(tài)數(shù)據(jù) dissplaay(11, 22, 校園作作息系統(tǒng)統(tǒng));dissplaay(22, 33, 年);dissplaay(22, 66, 月); dissplaay(33, 11, 星期);dissplaay(44, 33, ); /全角輸輸入dissplaay(44, 66, ); voiid ddispplayytimme1(voiid) /動態(tài)數(shù)數(shù)據(jù)dissplaayNuumbeer(22,1,tabble0/10);dissplaayN

46、uumbeer(22,2,tabble0%10);dissplaayNuumbeer(22,4,tabble1/10);dissplaayNuumbeer(22,5,tabble1%10);dissplaayNuumbeer(22,7,tabble2/10);dissplaayNuumbeer(22,8,tabble2%10);dissplaayweeek(weeek);dissplaayNuumbeer(44,1,tabble3/10);dissplaayNuumbeer(44,2,tabble3%10);dissplaayNuumbeer(44,4,tabble4/10);dissplaa

47、yNuumbeer(44,5,tabble4%10);dissplaayNuumbeer(44,7,tabble5/10);dissplaayNuumbeer(44,8,tabble5%10); /=/* 紅外外 */=取取回低電電平=uintt Irr_Geet_LLow()TL11=0;TH11=0;TR11=1;whiile(!Irr_Piin );/等待高高電平到到來TR11=0;retturnn THH1*2256+TL11;/=取回高高電平=uintt Irr_Geet_HHighh()TL11=0;TH11=0;TR11=1;whiile(Ir_Pinn); /等等待低電電平到來

48、來TR11=0;retturnn THH1*2256+TL11;/=紅外外解碼=uchaar IIR_ddecoode(voiid)uintt teemp;/122M 晶晶振uchaar ii,j;resstarrt:temmp=IIr_GGet_Loww();if(temmp50000)ggotoo reestaart;/引引導(dǎo)碼低低電平445000ustemmp=IIr_GGet_Higgh();if(temmp50000) gotto rresttartt;/引導(dǎo)碼碼高電平平45000uss forr(i=0;ii4;i+) /4個個字節(jié)foor(jj=0;j88;j+) /每每個字節(jié)節(jié)

49、8位temmp=IIr_GGet_Loww(); /5660uss 低電電平if(temmp8800) gooto resstarrt;temmp=IIr_GGet_Higgh(); /5660uss 或 16880uss 高電電平if(temmp220000)gooto resstarrt;Ir_Buffi=1;/右移移一位準準備寫數(shù)數(shù)據(jù),相相當于填填 0if(temmp111200) IIr_BBufi|=0 xx80;/若若為1再再填 11 retturnn(Irr_Buuf22); /=/* dss12ccr8887 */=1128887寫數(shù)數(shù)據(jù)=voidd wrritee_dss(u

50、ccharr adddreess,uchhar datte)cs = 00;as = 11;ds = 11;Rw = 11;P2 = aaddrresss;as = 00;Rw = 00;P2 = ddatee; /dss12ccr8887數(shù)據(jù)據(jù)線Rw = 11;as = 11;cs = 11;/=1228877讀數(shù)據(jù)據(jù)=uchaar rreadd_dss(uccharr adddreess)uccharr daate;as = 11;ds = 11;Rw = 11;cs = 00;P2 = aaddrresss;as = 00;ds = 00;datte = P22;ds = 11;as =

51、 11;cs = 11;retturnn daate;/=/* 課表表處理 */=課表計計算=voidd scchedduleecouunt(voiid) uchaar ii; schheduule110 = reaad_dds (0 x110);/讀取取課表數(shù)數(shù)據(jù) schheduule111 = reaad_dds (0 x111); forr(i=0;ii= 660) /小時進進位 schheduule11i+2+; sccheddulee1ii+3 = schheduule11i+3 - 660; schheduule220 = reaad_dds (0 x112); schheduul

52、e221 = reaad_dds (0 x113); forr(i=0;ii= 660) schheduule22i+2+; sccheddulee2ii+3 = schheduule22i+3 - 660; /=課表數(shù)數(shù)據(jù)轉(zhuǎn)換換成顯示示字符=voidd scchedduleetosstriing(voiid) uchaar ii,j;for(i=00,j=0;ii4;i+,j=j+44)/上午午課表每每次轉(zhuǎn)換換一行 diispllaysscheedulle1i0 = sscheedulle1j/10 + 0; diispllaysscheedulle1i1 = sscheedulle1j%1

53、0 + 0; diispllaysscheedulle1i2 = :; diispllaysscheedulle1i3 = sscheedulle1j+11/110 + 00; diispllaysscheedulle1i4 = sscheedulle1j+11%110 + 00; diispllaysscheedulle1i5 = -; diispllaysscheedulle1i6 = -; diispllaysscheedulle1i7 = sscheedulle1j+22/110 + 00; diispllaysscheedulle1i8 = sscheedulle1j+22%110

54、+ 00; diispllaysscheedulle1i9 = :; diispllaysscheedulle1i10 = schheduule11j+3/10 + 0; diispllaysscheedulle1i11 = schheduule11j+3%10 + 0; diispllaysscheedulle1i12 = 00; for(i=00,j=0;ii4;i+,j=j+44)/下午午課表 diispllaysscheedulle2i0 = sscheedulle2j/10 + 0; diispllaysscheedulle2i1 = sscheedulle2j%10 + 0; di

55、ispllaysscheedulle2i2 = :; diispllaysscheedulle2i3 = sscheedulle2j+11/110 + 00; diispllaysscheedulle2i4 = sscheedulle2j+11%110 + 00; diispllaysscheedulle2i5 = -; diispllaysscheedulle2i6 = -; diispllaysscheedulle2i7 = sscheedulle2j+22/110 + 00; diispllaysscheedulle2i8 = sscheedulle2j+22%110 + 00; dii

56、spllaysscheedulle2i9 = :; diispllaysscheedulle2i10 = schheduule22j+3/10 + 0; diispllaysscheedulle2i11 = schheduule22j+3%10 + 0; diispllaysscheedulle2i12 = 00; /=課表顯顯示=voidd diispllaysscheedulle(vvoidd)schheduuleccounnt(); /課表計計算schheduulettosttrinng(); /課表數(shù)數(shù)據(jù)轉(zhuǎn)換換成顯示示字符diispllay(2,44,上上午); /第二行行dellay

57、(655500); ddelaay(6655000);whiile(1)diispllay(1,11,一一); /上上午課表表ddispplayy(1,3,ddispplayyschheduule110);diispllay(2,11,二二);ddispplayy(2,3,ddispplayyschheduule111);diispllay(3,11,三三);diispllay(3,33,diispllaysscheedulle12);diispllay(4,11,四四);ddispplayy(4,3,ddispplayyschheduule113);iff(!IIr_PPin) brreak

58、k;/任任意鍵退退出 wriiteccommmandd(0 xx01);/清清屏diispllay(2,44,下下午);/第第二行dellay(655500); ddelaay(6655000);whiile(1)ddispplayy(1,1,五);/下下午課表表diispllay(1,33,diispllaysscheedulle20);ddispplayy(2,1,六);diispllay(2,33,diispllaysscheedulle21);ddispplayy(3,1,七);diispllay(3,33,diispllaysscheedulle22);ddispplayy(4,1,

59、八);ddispplayy(4,3,ddispplayyschheduule223);iff(!IIr_PPin) brreakk; /=修改改課表=voidd seetsccheddulee(vooid) uchhar m=00,i=0,jj=0,k=00; voiid ssetNNumbber (uccharr y, uccharr x); /函數(shù)聲聲明 tabble110 = reaad_dds (0 x110); /上午課課表起始始時間 tabble111 = reaad_dds (0 x111); tabble112 = reaad_dds (0 x112); /下午課課表起始始時間

60、 tabble113 = reaad_dds (0 x113); dissplaay(11,4,上午午); /第一行行 dissplaayNuumbeer(22,2,tabble110/100); /第二行行 dissplaayNuumbeer(22,3,tabble110%100); dissplaay(22,4,); dissplaayNuumbeer(22,5,tabble111/100); dissplaayNuumbeer(22,6,tabble111%100); dissplaay(33,4,下午午);/第第三行 dissplaayNuumbeer(44,2,tabble112/1

溫馨提示

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

評論

0/150

提交評論