嵌入式課程設(shè)計報告基于LCD的電子時鐘_第1頁
嵌入式課程設(shè)計報告基于LCD的電子時鐘_第2頁
嵌入式課程設(shè)計報告基于LCD的電子時鐘_第3頁
嵌入式課程設(shè)計報告基于LCD的電子時鐘_第4頁
嵌入式課程設(shè)計報告基于LCD的電子時鐘_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河河海海大大學(xué)學(xué)計計算算機機及及信信息息工工程程學(xué)學(xué)院院(常常州州) 課課程程設(shè)設(shè)計計報報告告 題題 目目 基基于于lcd 的的電電子子時時鐘鐘 專專業(yè)業(yè)學(xué)學(xué)號號 電電子子信信息息工工程程 0962610222 授授課課班班號號 277701 學(xué)學(xué)生生姓姓名名 王王寧寧 指指導(dǎo)導(dǎo)教教師師 梁梁瑞瑞宇宇 完完成成時時間間 2012.5.18 課程設(shè)計(報告)任務(wù)書課程設(shè)計(報告)任務(wù)書 (理(理 工工 科科 類)類) 、課程設(shè)計(報告)題目: 基于基于 lcd 的電子時鐘實驗的電子時鐘實驗 、課程設(shè)計(論文)工作內(nèi)容 一、課程設(shè)計目標一、課程設(shè)計目標 1、培養(yǎng)綜合運用知識和獨立開展實踐創(chuàng)新的能力

2、; 2、培養(yǎng)學(xué)生將理論知識與實際應(yīng)用結(jié)合在一起; 3、培養(yǎng)學(xué)生的自我學(xué)習(xí)能力和解決問題的能力; 4、培養(yǎng)學(xué)生的協(xié)作意識和團隊合作能力; 5、培養(yǎng)學(xué)生的總結(jié)經(jīng)驗的能力。 二、研究方法及手段應(yīng)用二、研究方法及手段應(yīng)用 1、問題解決模塊化,將任務(wù)分成若干模塊,分模塊調(diào)試和完成任務(wù); 2、查閱網(wǎng)上的相關(guān)素材,查閱相關(guān)論文資料,進行比較、研究; 3、在獨立思考的基礎(chǔ)上,請教老師,和同組同學(xué)討論、學(xué)習(xí); 4、反復(fù)調(diào)試、總結(jié)經(jīng)驗、排除差錯; 5、連接 pc 和 el-arm-830 實驗箱,完成整個實驗環(huán)境搭建; 6、運用 code warrior for arm 編譯軟件編譯匯編語言和進行調(diào)試; 7、使用

3、 h-jtag 下載至硬件進行觀察、調(diào)試。 三、課程設(shè)計預(yù)期效果三、課程設(shè)計預(yù)期效果 1、在液晶屏上顯示表盤,和時間點和時、分、秒針; 2、在液晶屏上顯示時、分、秒、年、月、日; 3、在液晶屏上實現(xiàn)指針的動態(tài)圖像; 4、可以實現(xiàn)自己設(shè)定的初始時間。 學(xué)生姓名: 王寧 專業(yè)年級: 09 電子信息工程 目目錄錄 前言前言.4 4 第一章系統(tǒng)設(shè)計第一章系統(tǒng)設(shè)計.5 5 第一節(jié)課題目標及總體方案第一節(jié)課題目標及總體方案.5 5 第二節(jié)相關(guān)組件說明第二節(jié)相關(guān)組件說明.5 5 第三節(jié)項目設(shè)計模塊描述及流程圖第三節(jié)項目設(shè)計模塊描述及流程圖.7 7 1.1.主函數(shù)模塊主函數(shù)模塊.8 8 2.2.時鐘表盤的構(gòu)建

4、模塊時鐘表盤的構(gòu)建模塊.8 8 3.3. 表盤下日期的顯示模塊表盤下日期的顯示模塊.9 9 4.4.任務(wù)運行模塊任務(wù)運行模塊 10 第二章第二章結(jié)果與顯示結(jié)果與顯示.1111 結(jié)果顯示結(jié)果顯示.1111 心得體會心得體會.1212 參考文獻參考文獻.1313 附附 錄錄.1313 前前 言言 近年來,隨著計算機技術(shù)及集成電路技術(shù)的發(fā)展,嵌入式技術(shù)日漸普及, 在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子等領(lǐng)域發(fā)揮著越來越重要的作用。嵌入式系 統(tǒng)無疑成為當前最熱門最有發(fā)展前途的 it 應(yīng)用領(lǐng)域之一。 實時時鐘(rtc)器件是一種能提供日歷/時鐘、數(shù)據(jù)存儲等功能的專用集 成電路,常用作各種計算機系統(tǒng)的時鐘信號源和

5、參數(shù)設(shè)置存儲電路。rtc 具有 計時準確、耗電低和體積小等特點,特別適用于在各種嵌入式系統(tǒng)忠記錄事件 發(fā)生的時間和相關(guān)信息,尤其是在通信工程、電力自動化、工業(yè)控制等自動化 程度較高領(lǐng)域的無人職守環(huán)境。隨著集成電路技術(shù)的不斷發(fā)展,rtc 器件的新 品也不斷推出。這些新品不僅具有準確的 rtc,還有大容量的存儲器、溫度傳 感器和 a/d 數(shù)據(jù)采集通道等,已成為集 rtc、數(shù)據(jù)采集和存儲于一體的綜合功 能器件,特別適用于以微控制器為核心的嵌入式系統(tǒng)。 關(guān)鍵字:嵌入式系統(tǒng)、實時時鐘 rtc 第一章系統(tǒng)設(shè)計第一章系統(tǒng)設(shè)計 第一節(jié)課題目標及總體方案第一節(jié)課題目標及總體方案 隨著嵌入式技術(shù)的發(fā)展,我們身邊充

6、斥著各類各樣的嵌入式電子產(chǎn)品。實 時時鐘(rtc)就是一種在現(xiàn)代電子設(shè)備中應(yīng)用非常普遍,可以幫助人們實時、準 確的掌握時間的器件,如手機、pda 及一些智能儀表都提供了時鐘顯示。 我們本次課題的目標就是要基于 s3c44box 芯片設(shè)計出一個實時時鐘,編寫 匯編語言可以通過 code warrior for arm 軟件調(diào)試,然后下載至實驗箱內(nèi)進行 觀察。在試驗箱中的 lcd 液晶屏幕上顯示出時鐘的圓盤和動態(tài)的指針,并在時 鐘下方顯示出當前的年份和日期。另外,我們將要實現(xiàn)的系統(tǒng)分為幾個模塊實 現(xiàn),每個模塊間相對獨立而又相互聯(lián)系,在主函數(shù)中進行調(diào)用。 第二節(jié)相關(guān)組件說明第二節(jié)相關(guān)組件說明 一、一

7、、lcd 顯示原理顯示原理 s3c44b0x 中具有內(nèi)置的 lcd 控制器,它能將顯示緩存(在 sdram 存儲器 中)中的 lcd 圖像數(shù)據(jù)傳輸?shù)酵獠康?lcd 驅(qū)動電路上的邏輯功能。它支持單色、 4 級、16 級灰度 lcd 顯示,以及 256 彩色 lcd 顯示。在顯示灰度時,它采用時 間抖動算法(time-based dithering algorithm)和幀率控制 (frame rate control)方法,在顯示彩色時,它采用 rgb 的格式,即 red、green、blue,三 色混合調(diào)色。通過軟件編程,可以實現(xiàn) 233 或 332 的 rgb 調(diào)色的格式。對于不 同尺寸的

8、lcd 顯示器,它們會有不同的垂直和水平象素點、不同的數(shù)據(jù)寬度、 不同的接口時間及刷新率,通過對 lcd 控制器中的相應(yīng)寄存器寫入不同的值, 來配置不同的 lcd 顯示板。本次課設(shè)的顯示模式設(shè)置為 8bit 單掃描模式。 二、項目文件說明二、項目文件說明 本實驗使用實驗教學(xué)系統(tǒng)的 cpu 板,液晶顯示器(lcd) ,在 lcd 下方, 有一個可調(diào)電阻,標號為 vr2,它用來調(diào)整 lcd 的對比度及亮度。在 lcd 的 右下方,有一個黃頭的按鍵,它用來開關(guān) lcd,它的標號為 lcd_on/off。 該項目添加了包含 lcd 驅(qū)動程序的文件夾 gui,其中,包括四個文件夾, font 中存放的是

9、字體文件,glib 中存放繪圖的中層和上層的函數(shù),上層函 數(shù)是直接供用戶調(diào)用的 api,init 中存放 gui 初始化的函數(shù),lcddriver 中 存放的是 lcd 的底層驅(qū)動函數(shù)。以及對 lcd 控制器的初始化函數(shù)。把 lcd 驅(qū)動程序加入的過程,也就是把整個 gui 文件夾加入該項目里,同時,還 要在 applicationinc 目錄下的 config.h 文件中,加入 gui 程序的頭文件, #include .guiglibglib.h,這是為了在應(yīng)用中方便調(diào)用畫圖的 api 函數(shù)。如果,要在 lcd 上顯示英文或漢字,還要在 applicationsrcmain.c 中聲明引用

10、的是 extern gui_font chinese_font12;等外部定義過的字體。 圖 1 第三節(jié)項目設(shè)計模塊描述及流程圖第三節(jié)項目設(shè)計模塊描述及流程圖 1.1.模塊描述:模塊描述:我先進行了整個系統(tǒng)的規(guī)劃,將整個系統(tǒng)分為四大模塊:第一, 主函數(shù)模塊;第二,時鐘表盤的構(gòu)建模塊,包括:設(shè)置液晶全屏背景色、繪制 時鐘表盤形狀并著色、繪制表盤內(nèi) 12 個點的形狀并著色以及繪制表盤內(nèi)指針的 形狀并著色;第三,表盤下日期的顯示模塊,包括:定位表盤下時間和日期的 坐標和日期顯示函數(shù)的編寫;第四,任務(wù)運行模塊。 2 2.流程圖流程圖: 一、主函數(shù)模塊一、主函數(shù)模塊 二、時鐘表盤的構(gòu)建模塊二、時鐘表盤的

11、構(gòu)建模塊 (1)繪制時鐘表盤形狀并著色 (2)繪制表盤內(nèi) 12 個點的形狀并著色 (3)繪制表盤內(nèi)指針的形狀并著色(以秒針為例) 三、表盤下日期的顯示模塊三、表盤下日期的顯示模塊 (1)定位表盤下時間和日期的坐標(仍以秒計時為例) (2)日期顯示函數(shù)的編寫 四、任務(wù)運行模塊四、任務(wù)運行模塊 第二章第二章結(jié)果與結(jié)果與顯示顯示 結(jié)果顯示結(jié)果顯示 1.經(jīng)過多次的調(diào)試和排查,以及總結(jié),使用編譯器編譯,編譯器提示編 譯文件正確,沒有出現(xiàn)任何錯誤,沒有出現(xiàn)任何警告,而且編譯出文件容 量很小,下載迅速,符合軟件設(shè)計要求。 2.下面的圖片是從實驗箱上的 lcd 屏幕上顯示的圖像拍下來的,也就是 我本次課程設(shè)計

12、的成果。從圖片顯示上可以看出,所有預(yù)計實現(xiàn)的功能和 界面都實現(xiàn)了。表盤顯示在相對中央的地方,整個屏幕以白色為基調(diào),表 盤底色為灰色,指針為紅、綠、黃三種顏色,點數(shù)為綠色,表盤下方顯示 當前時間、日期,同時界面很漂亮,色彩對比很鮮明。 圖 2效果顯示圖 心得體會心得體會 說實話, 剛開始拿到課設(shè)題目的時候感覺 毫無頭緒,即使在查閱了大 量相關(guān)資料的基礎(chǔ)上。后來,手上有了一份參考程序,打開一看,頓時懵了。 當時想如果純粹靠我自己或者和同學(xué)討論,恐怕很難完成這次課設(shè)吧。于是, 實驗室剛開放,我就立刻去調(diào)試程序,通過觀察試驗箱上顯示的結(jié)果來理解 程序。一個模塊一個模塊對應(yīng)的理解下去之后,思路開始清晰起

13、來。每當遇 到一行程序不懂或者有疑問時,比如這行程序起什么作用、可不可以刪掉或 者可不可以換個位置,我都通過程序的相關(guān)改動結(jié)合實驗結(jié)果的觀察將這些 疑問解決掉了。同時,同學(xué)的幫助也給了我很多的啟發(fā),非常感謝他們。 但不得不承認,關(guān)于 c/os-ii 操作系統(tǒng)方面理解的很不透徹。驗收時, 我只是把時鐘界面的構(gòu)建部分理解了,沒有過多的加深對操作系統(tǒng)c/os- ii 的學(xué)習(xí),所以驗收時對于老師的提問也是磕磕絆絆。因而,在編寫這份報 告前,我又認真地上網(wǎng)搜索了 c/os-ii 操作系統(tǒng)的簡介,尤其是它的優(yōu)點 和任務(wù)調(diào)度方面。在寫這份報告時,我也許還沒能完全弄懂c/os-ii 操作 系統(tǒng),但我相信,只要

14、努力過,總會有收獲。 參考文獻參考文獻 吳學(xué)智, 基于 arm 的嵌入式系統(tǒng)設(shè)計與開發(fā) 人民郵電出版社, 2007 金建設(shè), 嵌入式系統(tǒng)基礎(chǔ)實驗大連理工大學(xué)出版社, 2009 王曉薇, 嵌入式硬件基礎(chǔ)實驗與習(xí)題解答電子工業(yè)出版社, 2009 附附錄錄 1.軟件清單: 1)code warrior for arm 編譯軟件; 2)axd debugger 調(diào)試軟件; 3)h-jtag 軟件; 2.硬件: pc 和 el-arm-830 實驗箱; 程序清單: #include .incconfig.h #define x_line 160 #define y_line 80 extern gui_

15、font chinese_font12; extern gui_font chinese_font16; extern gui_font gui_font8x16; i8 hour3,min3,sec3; i8 hour = 9, min = 0, sec = 0,ms; i8 yea13,yea23,mon3,day3; int yea1 = 20,yea2=12, mon = 5, day = 18; i8 xh13,xh23,xh33,xh43,xh53,xh63,xh73; int xh1=9,xh2=62,xh3=61; int xh4=02,xh5=19,xh6=22,xh7=23

16、; /spacexs61、spacys61分別表示秒針的橫坐標、縱坐標 /spacexm61、spacexm61分別表示分針的橫坐標、縱坐標 /spacexh13、spacyh13 分別表示時針的橫坐標、縱坐標 int spacexs61=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,

17、112,111,110, 111,112,113,114,115, 119,123,127,131,135, 140,145,150,155,160, , spaceys61=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,3

18、1,30, spacexm61=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 , spaceym61=40,41,42,43,44,45,48,5

19、1,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 , spacexh13=160,175,185,190,185,175,160,145,135,130,135,145,160, spaceyh13=50,55,65,80,95,105,110,105,95,80,65,5

20、5,50, /當前要顯示的時間的 3 個指針的坐標取地址。 *placex= /顯示學(xué)號函數(shù) void display_xh1(char xx1,char yy1); void display_xh2(char xx2,char yy2); void display_xh3(char xx3,char yy3); /show s and m and h void shows() set_color(gui_gray); /擦除上一秒的 draw_line(x_line,y_line,*placex,*placey); placex=placex+1; placey=placey+1; set_

21、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); /顯示下一時的 draw_line(x_line,y_line,*placexh,*placeyh); if(placex= placey= /show munite and hour void showm() set_color(gui_gray); /擦除上一分的 dr

22、aw_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); /顯示下一時的 draw_line(x_line,y_line,*placexh,*placeyh); if(placexm= placeym= /show hour void showh() set_color(gui_gray); /擦除上一時的

23、draw_line(x_line,y_line,*placexh,*placeyh); placexh=placexh+1; placeyh=placeyh+1; set_color(gui_green); /顯示下一時的 draw_line(x_line,y_line,*placexh,*placeyh); if(placexh= placeyh= void shouw_cricle() / 整 點 set_color(gui_green); fill_circle (160, 30,2); / 12 點(x,y,r) fill_circle (135, 35,2); / 11 點(x,y,

24、r) fill_circle (115, 55,2); / 10 點(x,y,r) fill_circle (110, 80,2); / 9 點(x,y,r) fill_circle (115, 105,2); / 8 點(x,y,r) fill_circle (135, 125,2); / 7 點(x,y,r) fill_circle (160, 130,2); / 6 點(x,y,r) fill_circle (185, 125,2); / 5 點(x,y,r) fill_circle (205, 105,2); / 4 點(x,y,r) fill_circle (210, 80,2);

25、/ 3 點(x,y,r) fill_circle (205, 55,2); / 2 點(x,y,r) fill_circle (185, 35,2); / 1 點(x,y,r) /表盤背景色 void show_ht() set_color(gui_gray); fill_circle (160,80,54); void delay(int time); void changeform(char time,char time) time0 = time / 10 + 48; time1 = time % 10 + 48; time2 = 0; void display_time(char x,

26、char y) changeform(hour, hour); changeform(min, min); changeform(sec, sec); changeform(mon, mon); changeform(day, day); changeform(yea1, yea1); changeform(yea2, yea2); /disp_string(const i8 *s, i16 x, i16 y),s:char ,x:x_label position y:y_label position disp_string (hour,x,160); disp_string (:,x + 1

27、8,160); disp_string (min,x + 28,160); disp_string (:,x + 46,160); disp_string (sec,x + 56,160); disp_string (yea1,x -5, 180); disp_string (yea2,x +11,180); disp_string (.,x + 27,180); disp_string (mon,x + 35,180); /40 disp_string (.,x + 51,180); /56 disp_string (day,x + 59,180);/64 void display_xh1(

28、char xx1,char yy1) changeform(xh1, xh1); changeform(xh2, xh2); changeform(xh3, xh3); changeform(xh4, xh4); changeform(xh5, xh5); disp_string (xh1,xx1,yy1); disp_string (xh2,xx1+16,yy1); disp_string (xh3,xx1+32,yy1); disp_string (xh4,xx1+48,yy1); disp_string (xh5,xx1+64,yy1); void display_xh2(char xx

29、2,char yy2) changeform(xh1, xh1); changeform(xh2, xh2); changeform(xh3, xh3); changeform(xh4, xh4); changeform(xh6, xh6); disp_string (xh1,xx2,yy2); disp_string (xh2,xx2+16,yy2); disp_string (xh3,xx2+32,yy2); disp_string (xh4,xx2+48,yy2); disp_string (xh6,xx2+64,yy2); void display_xh3(char xx3,char

30、yy3) changeform(xh1, xh1); changeform(xh2, xh2); changeform(xh3, xh3); changeform(xh4, xh4); changeform(xh7, xh7); disp_string (xh1,xx3,yy3); disp_string (xh2,xx3+16,yy3); disp_string (xh3,xx3+32,yy3); disp_string (xh4,xx3+48,yy3); disp_string (xh7,xx3+64,yy3); void show_color() set_color( gui_white ); /填充矩形函數(shù) fill_rect(0,0,319,239); set_color(gui_red); set_bkcolor (gui_white); 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( /* * * - 函數(shù)名稱 : startthesystem(void) - 函數(shù)說明 : 啟動系統(tǒng) - 輸入?yún)?shù) : 無 - 輸出參數(shù) : 無 * * */

溫馨提示

  • 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

提交評論