嵌入式-實(shí)時(shí)時(shí)鐘_第1頁
嵌入式-實(shí)時(shí)時(shí)鐘_第2頁
嵌入式-實(shí)時(shí)時(shí)鐘_第3頁
嵌入式-實(shí)時(shí)時(shí)鐘_第4頁
嵌入式-實(shí)時(shí)時(shí)鐘_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGE2目錄TOC\o"1-2"\h\z\u前言 1第一章 系統(tǒng)設(shè)計(jì) 2第一節(jié) 課題目標(biāo)及總體方案 2第二節(jié) 軟件總流程圖 2第三節(jié) 主要程序分析 3第二章 實(shí)驗(yàn)結(jié)果與討論 5第三章 結(jié)論 6心得體會(huì) 7參考文獻(xiàn) 8附錄 9前言通常我們常用的LCD顯示模塊,有兩種,一是帶有驅(qū)動(dòng)電路的LCD顯示模塊,一是不帶驅(qū)動(dòng)電路的LCD顯示屏。大部分ARM處理器中都集成了LCD的控制器,所以,針對(duì)ARM芯片,一般不使用帶驅(qū)動(dòng)電路的LCD顯示模塊。S3C44B0X中具有內(nèi)置的LCD控制器,它能將顯示緩存(在SDRAM存儲(chǔ)器中)中的LCD圖像數(shù)據(jù)傳輸?shù)酵獠康腖CD驅(qū)動(dòng)電路上的邏輯功能。它支持單色、4級(jí)、16級(jí)灰度LCD顯示,以及256彩色LCD顯示。在顯示灰度時(shí),它采用時(shí)間抖動(dòng)算法(time-basedditheringalgorithm)和幀率控制(FrameRateControl)方法,在顯示彩色時(shí),它采用RGB的格式,即RED、GREEN、BLUE,三色混合調(diào)色。通過軟件編程,可以實(shí)現(xiàn)233或332的RGB調(diào)色的格式。對(duì)于不同尺寸的LCD顯示器,它們會(huì)有不同的垂直和水平象素點(diǎn)、不同的數(shù)據(jù)寬度、不同的接口時(shí)間及刷新率,通過對(duì)LCD控制器中的相應(yīng)寄存器寫入不同的值,來配置不同的LCD顯示板。實(shí)時(shí)時(shí)鐘(RTC)器件是一種能提供日歷/時(shí)鐘、數(shù)據(jù)存儲(chǔ)等功能的專用集成電路,常用作各種計(jì)算機(jī)系統(tǒng)的時(shí)鐘信號(hào)源和參數(shù)設(shè)置存儲(chǔ)電路。RTC具有計(jì)時(shí)準(zhǔn)確、耗電低和體積小等特點(diǎn),特別適用于在各種嵌入式系統(tǒng)忠記錄事件發(fā)生的時(shí)間和相關(guān)信息,尤其是在通信工程、電力自動(dòng)化、工業(yè)控制等自動(dòng)化程度較高領(lǐng)域的無人職守環(huán)境。隨著集成電路技術(shù)的不斷發(fā)展,RTC器件的新品也不斷推出。這些新品不僅具有準(zhǔn)確的RTC,還有大容量的存儲(chǔ)器、溫度傳感器和A/D數(shù)據(jù)采集通道等,已成為集RTC、數(shù)據(jù)采集和存儲(chǔ)于一體的綜合功能器件,特別適用于以微控制器為核心的嵌入式系統(tǒng)。系統(tǒng)設(shè)計(jì)課題目標(biāo)及總體方案本實(shí)驗(yàn)是基于ARM處理器而設(shè)計(jì)的實(shí)時(shí)時(shí)鐘,綜合性較強(qiáng),涉及到RTC外部中斷,C語言編程等知識(shí)。需使用到中斷,涉及對(duì)外部中斷進(jìn)行初始化,其中有規(guī)定優(yōu)先級(jí),中斷觸發(fā)方式,中斷地址分配。采用液晶模塊LCD顯示實(shí)時(shí)時(shí)間,同樣要對(duì)它進(jìn)行初始化,包括檢查總線忙與閑,傳送地址,傳送數(shù)據(jù)及顯示函數(shù)的編程。【2】軟件總流程圖開始開始程序和芯片初始化頁面顯示設(shè)置時(shí)鐘計(jì)時(shí)表盤畫線顯示結(jié)束數(shù)字時(shí)鐘同步顯示主要程序分析1、Do……while循環(huán)實(shí)現(xiàn)時(shí)鐘的計(jì)時(shí):do{Delay(1200); sec++; Shows();//表盤上秒針的顯示 Shouw_Cricle();//整點(diǎn)顯示 if(sec>=60) { sec=0;//當(dāng)計(jì)時(shí)至60時(shí)秒清零 min++;//分針開始計(jì)時(shí) Showm();//表盤上分針的顯示 if(min>=60) { min=0;//當(dāng)計(jì)時(shí)至60時(shí)清零 hour++;//時(shí)針開始計(jì)時(shí) Showh();//表盤上時(shí)針的顯示 if(hour>=24) { hour=0; day++;//天計(jì)時(shí) if(day>=32) { day=1; mon++;//月計(jì)時(shí) if(mon>=13) { mon=1; yea1++;//年份 } } } } } Set_Font(&GUI_Font8x16);//字體設(shè)置Display_Time(130,160);//時(shí)間日期(數(shù)字同步顯示)}while(1);2、指針表盤顯示:voidShows(){ Set_Color(GUI_GRAY);//擦除上一秒的Draw_Line(x_line,y_line,*Placex,*Placey);//畫線函數(shù)Placex=Placex+1;//指針下移(x,y)指向下一坐標(biāo)Placey=Placey+1;Set_Color(GUI_YELLOW); //顯示下一秒的Draw_Line(x_line,y_line,*Placex,*Placey);Set_Color(GUI_RED);//顯示下一分的Draw_Line(x_line,y_line,*Placexm,*Placeym);Set_Color(GUI_GREEN); //顯示下一時(shí)的Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placex==&SpaceXS[60]&&Placey==&SpaceYS[60]){ Placex=&SpaceXS[0]; Placey=&SpaceYS[0];}} 分針與時(shí)針的顯示與秒針類似。實(shí)驗(yàn)結(jié)果與討論生成Hex文件后即可用串口連接實(shí)驗(yàn)箱觀察實(shí)驗(yàn)現(xiàn)象。LCD液晶顯示出現(xiàn)如下畫面:動(dòng)態(tài)顯示時(shí)鐘表盤界面、數(shù)字時(shí)鐘同步顯示、顯示年月日、小組成員姓名顯示。其中時(shí)間、日期、小組成員姓名的位置可通過調(diào)節(jié)坐標(biāo)改變。結(jié)論本實(shí)驗(yàn)成功實(shí)現(xiàn)了電子時(shí)鐘的顯示,撇除了操作系統(tǒng),獨(dú)立實(shí)現(xiàn)。本實(shí)驗(yàn)程序中還存在一定誤差,不過通過中斷可以實(shí)行改進(jìn)。本實(shí)驗(yàn)未用到ARM自帶的實(shí)時(shí)時(shí)鐘,而是使用看門狗定時(shí)計(jì)數(shù),所以無法實(shí)現(xiàn)類似萬年歷的實(shí)驗(yàn)方案,可以進(jìn)一步研究改進(jìn)。心得體會(huì)回顧整個(gè)課程設(shè)計(jì)過程,感慨頗多,從理論到實(shí)踐,我學(xué)到很多東西,不僅鞏固了以前所學(xué)過的理論知識(shí),而且學(xué)到了很多在書本上學(xué)不到的東西。也更深刻得明白ARM的應(yīng)用領(lǐng)域,我們可以運(yùn)用ARM技術(shù)來做些什么。通過本次課設(shè),增強(qiáng)了動(dòng)手實(shí)踐能力,也懂得了,光學(xué)習(xí)理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,必須把它運(yùn)用到實(shí)際中去,充分發(fā)揮所學(xué)知識(shí)的作用。通過此次實(shí)時(shí)時(shí)鐘的設(shè)計(jì),C語言的編程,我們開始了ARM的實(shí)際應(yīng)用的學(xué)習(xí),一方面,是我們養(yǎng)成了遵循ARM的嵌入式系統(tǒng)項(xiàng)目開發(fā)步驟的習(xí)慣;另一方面,使我們能夠利用所學(xué)的ARM的知識(shí)設(shè)計(jì)出一些簡(jiǎn)單的東西,為以后進(jìn)行更深層次的學(xué)習(xí)打下基礎(chǔ)。參考文獻(xiàn)道客巴巴,/p-74362554270.htmlCSDN,/down/1283587/mnz110嵌入式系統(tǒng)原理與設(shè)計(jì),王勇,浙江大學(xué)出版社,2007程序設(shè)計(jì)基礎(chǔ)(C語言),丁海軍何坤金王林景雪琴,2009附錄1、主程序:MAIN.c#include"..\inc\config.h"#definex_line160#definey_line80externGUI_FONTCHINESE_FONT12;externGUI_FONTCHINESE_FONT16;externGUI_FONTGUI_Font8x16;I8Hour[3],Min[3],Sec[3];I8hour=9,min=0,sec=0,ms;I8YEA1[3],YEA2[3],MON[3],DAY[3];intyea1=20,yea2=11,mon=6,day=24;//intTimeCount=0;intSpaceXS[61]={160,165,170,175,180,185, 189,193,197,201,205, 206,207,208,209,210, 209,208,207,206,205, 201,197,193,189,185, 180,175,170,165,160, 155,150,145,140,135, 131,127,123,119,115, 114,113,112,111,110, 111,112,113,114,115, 119,123,127,131,135, 140,145,150,155,160, }, SpaceYS[61]={30,31,32,33,34, 35,39,43,47,51, 55,60,65,70,75, 80,85,90,95,100, 105,109,113,117,121, 125,126,127,128,129, 130,129,128,127,126, 125,121,117,113,109, 105,100,95,90,85, 80,75,70,65,60, 55,51,47,43,39, 35,34,33,32,31,30}, SpaceXM[61]={160,164,168,172,176,180,183,186,189,192, 195,196,197,198,199,200,199,198,197,196, 195,192,189,186,183,180,176,172,168,164, 160,156,152,148,144,140,137,134,131,128, 125,124,123,122,121,120,121,122,123,124, 125,128,131,134,137,140,144,148,152,156, 160 }, SpaceYM[61]={40,41,42,43,44,45,48,51,54,57, 60,64,68,72,76,80,84,88,92,96, 100,103,106,109,112,115,116,117,118,119, 120,119,118,117,116,115,112,109,106,103, 100,96,92,88,84,80,76,72,68,64, 60,57,54,51,48,45,44,43,42,41, 40 }, SpaceXH[13]={160,175,185,190,185,175,160,145,135,130,135,145,160}, SpaceYH[13]={50,55,65,80,95,105,110,105,95,80,65,55,50}, *Placex=&SpaceXS[0],*Placey=&SpaceYS[0],*Placexm=&SpaceXM[0],*Placeym=&SpaceYM[0],*Placexh=&SpaceXH[9],*Placeyh=&SpaceYH[9]; //showsvoidShows(){ Set_Color(GUI_GRAY);//擦除上一秒的Draw_Line(x_line,y_line,*Placex,*Placey);Placex=Placex+1;Placey=Placey+1;Set_Color(GUI_YELLOW); //顯示下一秒的Draw_Line(x_line,y_line,*Placex,*Placey);Set_Color(GUI_RED);//顯示下一分的Draw_Line(x_line,y_line,*Placexm,*Placeym);Set_Color(GUI_GREEN); //顯示下一時(shí)的Draw_Line(x_line,y_line,*Placexh,*Placeyh);if(Placex==&SpaceXS[60]&&Placey==&SpaceYS[60]){ Placex=&SpaceXS[0]; Placey=&SpaceYS[0];}}//showmunitevoidShowm(){ Set_Color(GUI_GRAY);//擦除上一分的 Draw_Line(x_line,y_line,*Placexm,*Placeym);Placexm=Placexm+1; Placeym=Placeym+1; Set_Color(GUI_RED);//顯示下一分的 Draw_Line(x_line,y_line,*Placexm,*Placeym); Set_Color(GUI_GREEN); //顯示下一時(shí)的Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placexm==&SpaceXM[60]&&Placeym==&SpaceYM[60]) { Placexm=&SpaceXM[0]; Placeym=&SpaceYM[0]; }}//showhourvoidShowh(){ Set_Color(GUI_GRAY);//擦除上一時(shí)的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); Placexh=Placexh+1; Placeyh=Placeyh+1; Set_Color(GUI_GREEN); //顯示下一時(shí)的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placexh==&SpaceXH[12]&&Placeyh==&SpaceYH[12]) { Placexh=&SpaceXH[0]; Placeyh=&SpaceYH[0]; }}voidShouw_Cricle()//整點(diǎn){ Set_Color(GUI_YELLOW);Fill_Circle(160,30,2);//12點(diǎn)(x,y,r)Fill_Circle(135,35,2);//11點(diǎn)(x,y,r)Fill_Circle(115,55,2);//10點(diǎn)(x,y,r)Fill_Circle(110,80,2);//9點(diǎn)(x,y,r)Fill_Circle(115,105,2);//8點(diǎn)(x,y,r)Fill_Circle(135,125,2);//7點(diǎn)(x,y,r)Fill_Circle(160,130,2);//6點(diǎn)(x,y,r)Fill_Circle(185,125,2);//5點(diǎn)(x,y,r)Fill_Circle(205,105,2);//4點(diǎn)(x,y,r)Fill_Circle(210,80,2);//3點(diǎn)(x,y,r)Fill_Circle(205,55,2);//2點(diǎn)(x,y,r)Fill_Circle(185,35,2);//1點(diǎn)(x,y,r)}//表盤背景色voidShow_ht(){ Set_Color(GUI_GRAY); Fill_Circle(160,80,54);}voidDelay(inttime);voidChangeForm(charTime[],chartime){Time[0]=time/10+48;Time[1]=time%10+48;Time[2]='\0';}voidDisplay_Time(charx,chary){ChangeForm(Hour,hour);ChangeForm(Min,min);ChangeForm(Sec,sec);ChangeForm(MON,mon);ChangeForm(DAY,day);ChangeForm(YEA1,yea1);ChangeForm(YEA2,yea2);Disp_String(Hour,x,160);Disp_String(":",x+16,160);Disp_String(Min,x+24,160);Disp_String(":",x+40,160);Disp_String(Sec,x+48,160);Disp_String(YEA1,x,180);Disp_String(YEA2,x+16,180);Disp_String(",",x+32,180);Disp_String(MON,x+40,180);Disp_String(",",x+56,180);Disp_String(DAY,x+64,180);}voidShow_Color(){ Fill_Rect(0,0,319,239); Set_Color(GUI_RED); Set_BkColor(GUI_BLUE); Fill_Rect(0,0,319,2);Fill_Rect(0,0,2,239);Fill_Rect(0,237,319,239);Fill_Rect(317,0,319,239);Set_Color(GUI_RED);Set_Font(&CHINESE_FONT16);}/********************************************************************************-函數(shù)名稱:Task_2(void*pdata)-函數(shù)說明:GUI任務(wù),優(yōu)先級(jí)為9-輸入?yún)?shù):pdata-輸出參數(shù):無********************************************************************************/voidStartTheSystem(void){ for(;;) { /********全屏顏色設(shè)計(jì)*****時(shí)鐘位置************/ Show_Color(); Show_ht(); /*********點(diǎn)的坐標(biāo)***************/ Shouw_Cricle(); /*************設(shè)定背景顏色API*************/ Set_Color(GUI_RED); sec=0; Set_Color(GUI_YELLOW); //顯示Draw_Line(x_line,y_line,*Placex,*Placey);Set_Font(&GUI_Font8x16);Display_Time(130,160);//時(shí)間Set_Font(&CHINESE_FONT16);Disp_String(CN_start"實(shí)時(shí)時(shí)鐘"CN_end,124,10);Set_Font(&CHINESE_FONT16);Disp_String(CN_start"嵌入式系統(tǒng)課設(shè)"CN_end,128,10);Set_Font(&CHINESE_FONT16);Disp_String(CN_start"陳晨王小孩徐燾"CN_end,110,210);Set_Color(GUI_YELLOW); //顯示 do { Delay(1200); sec++; Shows(); Shouw_Cricle(); if(sec>=60) { sec=0; min++; Showm(); if(min>=60) { min=0; hour++; Showh(); if(hour>=24) { hour=0; day++; if(day>=32) { day=1; mon++; if(mon>=13) { mon=1; yea1++; } } } } } Set_Font(&GUI_Font8x16); Display_Time(130,160);//時(shí)間日期 }while(1); }} /************************主函數(shù)*****************************************/voidMain(void){Target_Init(); //

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論