基于ARM9的風扇控制系統(tǒng)_第1頁
基于ARM9的風扇控制系統(tǒng)_第2頁
基于ARM9的風扇控制系統(tǒng)_第3頁
基于ARM9的風扇控制系統(tǒng)_第4頁
基于ARM9的風扇控制系統(tǒng)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式課程設(shè)計實驗報告組號: 第35組 組員: 項目:基于ARM9的風扇控制系統(tǒng) 指導(dǎo)老師: 2017年12月6日目錄一 實驗?zāi)康?二 實驗環(huán)境1三 設(shè)計功能2四 實驗原理分析34.1 液晶屏顯示34.2直流電機控制34.3 鍵盤控制44.4 蜂鳴器控制44.5 LED控制5五 軟件設(shè)計方案65.1計時模塊65.2液晶顯示模塊75.3鍵盤模塊85.4直流電機控制模塊85.5 LED模塊95.6 蜂鳴器模塊10六 調(diào)試與結(jié)果116.1 程序編譯與安裝116.2 實驗結(jié)果11七 個人工作自我評估177.1 方立超個人工作報告177.2 周超個人工作報告177.3 程文博個人工作報告18八 程序附件

2、20嵌入式課程設(shè)計實驗報告一 實驗?zāi)康拇舜吻度胧娇刂葡到y(tǒng)綜合實驗,我們小組以直流電機為主要控制對象,以TI 公司推出的新一代OMAPL138 高速處理器為控制器模擬了電風扇的基本功能,并在此基礎(chǔ)之上擴展了時間顯示、LED燈裝飾、定時等功能。通過本次綜合設(shè)計,我們主要達到以下主要目的: 了解Linux 系統(tǒng)中屏幕顯示的接口,及訪問方法;1、 熟悉Linux 下Frame Buffer 技術(shù)的概念和應(yīng)用;2、 學習使用Omapl138 在Linux + QT 下訪問鍵盤的方法,了解Linux + QT 下鍵盤的使用原理及編程方法;3、 了解Linux 系統(tǒng)中標準鍵盤的接口,及訪問方法;4、 了解蜂

3、鳴器的發(fā)聲原理;學習Linux 下非標準設(shè)備的訪問控制方法;5、 熟悉嵌入式系統(tǒng)開發(fā)軟硬件設(shè)計的基本過程;6、 大體實現(xiàn)期望的風扇控制系統(tǒng)的基本功能。7、 了解PWM控制直流電機的基本原理;二 實驗環(huán)境硬件:PC兼容機一臺、ICETEKOMAPL138-A實驗箱一只。其中實驗箱主要由4部分組成:(1)實驗箱部分:一個獨立的數(shù)字信號源,可提供四種波形、三路輸出;信號的波形、頻率、幅度可調(diào);+5V(5A)、+12V(1A)、+9 V (0.5A)多種直流電源輸出;底板插座完成A/D信號輸入和 D/A輸出; 一個測試模塊,包括18個測試點,可以測量PWM 輸出、AD輸入和DA輸出波形;一個雙信號發(fā)生

4、器,方便對許多實際情況中的兩個信號進行分析。 (2) 通用DSP開發(fā)系統(tǒng)部分: 一個USB2.0 接口開發(fā)系統(tǒng),支持C2000/VC33/C5000/C6000的開發(fā)應(yīng)用。(3) 通用控制及顯示模塊:一塊128×64 點陣圖形顯示LCD屏;四組發(fā)光二極管,每組三個紅黃綠LED燈;一個可由DSP I/O腳控制的蜂鳴器進行音頻輸出;一個D/A輸出音頻插座,可直接接插耳機;9個鍵數(shù)字鍵盤(19);4個撥動開關(guān)(DIP),可實現(xiàn)復(fù)位和設(shè)置 DSP 應(yīng)用板參數(shù)。 (4) DSP 主處理板部分:支持:ICETEK-F2812-A板、ICETEK-VC5509-A板、 ICETEK-VC5416-

5、A板、ICETEK-VC33-AR 板、ICETEK-C6713-A板、ICETEK-LF2407-A板等。 圖2.1 ICETEK-OMAPL138-A 評估模塊接口布局軟件:PC兼容機安裝windows7,并通過virtualbox虛擬機平臺安裝Ubuntu版本的Linux系統(tǒng)以及超級終端。三 設(shè)計功能本次綜合實驗我們講主要實現(xiàn)風扇的以下功能:1. 風扇的開機/關(guān)機;2. 風扇開關(guān)狀態(tài)及擋位的顯示;3. 時間的顯示,并可以分別對時、分、秒進行設(shè)置;4. 定時時間和計時時間的設(shè)置;5. 蜂鳴器報時;6. 十二個led燈的流水閃爍。四 實驗原理分析本次設(shè)計實驗以ICETEK-OMAPL138-

6、A的雙核處理器擴展評估板為核心,它通過擴展接口與實驗箱的顯示/控制模塊連接,可以控制其各種外圍設(shè)備,也可以接收外設(shè)發(fā)送的各種數(shù)據(jù)、信息。CTR 設(shè)備連接在EMIFA 的片選4 上,所以通過操作以片選4 為基地址(0x64000000)的空間再加上設(shè)備控制寄存器的偏移就可以訪問到實驗箱上的CTR 設(shè)備。4.1 液晶屏顯示液晶顯示模塊中有兩片顯示緩沖存儲器,分別對應(yīng)128*64液晶屏上的每一個像素點,向其中寫入“1”“0”控制其顯示和不顯示。首先利用命令控制字選擇操作位置(頁數(shù)、列數(shù))后,再將需要顯示的數(shù)據(jù)寫入到液晶顯示模塊的緩存中,將數(shù)據(jù)發(fā)送到相應(yīng)的數(shù)據(jù)控制地址即可。4.2直流電機控制本次實驗中

7、應(yīng)用的直流電機采用的是定頻調(diào)寬法。PWM 輸入對應(yīng)ICETEK-OMAPL138-A 板上P4 外擴插座第26 引腳的UHPI_HCNTL1 信號,DSP將此引腳配置成GPIO,并在此引腳上給出PWM 信號用來控制直流電機的轉(zhuǎn)速; 圖中的DIR 輸入對應(yīng)ICETEK-OMAPL138-A 板上P4 外擴插座第29 引腳的MMCSD1_D0 信號,DSP 將此引腳配置成GPIO,并在此引腳上給出高電平或低電平來控制直流電機的方向。從DSP 輸出的PWM信號和轉(zhuǎn)向信號先經(jīng)過2個與門和1個非門再與各個開關(guān)管的柵極相連。當電動機要求正轉(zhuǎn)時,MMCSD1_D0 給出高電平信號,該信號分成3 路:第1 路

8、接與門Y1的輸入端,使與門Y1 的輸出由PWM 決定,所以開關(guān)管V1 柵極受PWM 控制;第2 路直接與開關(guān)管V4 的柵極相連,使V4 導(dǎo)通;第3 路經(jīng)非門F1 連接到與門Y2 的輸入端,使與門Y2 輸出為0,這樣使開關(guān)管V3 截止;從非門F1 輸出的另一路與開關(guān)管V2 的柵極相連,其低電平信號也使V2截止。同樣,當電動機要求反轉(zhuǎn)時,MMCSD1_D0 給出低電平信號,經(jīng)過2 個與門和1 個非門組成的邏輯電路后,使開關(guān)管V3 受PWM 信號控制,V2 導(dǎo)通,V1、V4 全部截止。圖4.2電機控制電路圖在ICETEK-OMAPL138-A 套件的Linux 內(nèi)核里集成了ICETEK-CTR V6

9、.2 的驅(qū)動,驅(qū)動中給CTR 上的直流電機配置了Linux2.6 下驅(qū)動屬性接口,通作屬性文件可實現(xiàn)對電機的起動、占空比和轉(zhuǎn)向的控制。4.3 鍵盤控制在ICETEK-OMAPL138-A 套件的Linux 內(nèi)核里集成了ICETEK-CTR V6.2 的驅(qū)動,驅(qū)動中將CTR 上的keypad 做為一個標準的keypad 進行掛載,并將按鍵值映射成了標準的1 到9 的按鍵值,這樣在Linux 下對這個keypad 的操作就可以用通用的Linux 控制和讀寫函數(shù)來完成。本實驗也是基于QT下對1-9的按鍵響應(yīng)的封裝完成的。圖4.3 鍵盤連接示意圖4.4 蜂鳴器控制在ICETEK-OMAPL138-A

10、套件的Linux 內(nèi)核里集成了ICETEK-CTR V6.2 的驅(qū)動,驅(qū)動中將CTR 上的蜂鳴器做為一個標準的撥聲器進行注冊掛載,這樣在Linux 下對這個蜂鳴器的操作就可以用通用的Linux 控制和讀寫函數(shù)來完成。圖4.4 蜂鳴器連接示意圖4.5 LED控制CTR上的發(fā)光二極管顯示陣列的顯示是由擴展端口控制,由擴展在EMIFA的地址空間接口的兩個寄存器提供具體控制。在ICETEK-OMAPL138-A 套件的Linux 內(nèi)核里集成了ICETEK-CTR V6.2 的驅(qū)動,驅(qū)動中將CTR 上的發(fā)光二極管做為一個標準的led 進行掛載,這樣在Linux 下對這些led 的操作就可以用通用的Lin

11、ux 控制和讀寫函數(shù)來完成。五 軟件設(shè)計方案本次綜合設(shè)計主要涉及到計時模塊、液晶顯示模塊、鍵盤模塊、直流電機控制模塊、LED模塊和蜂鳴器模塊。在設(shè)計的過程中需要將各個模塊分別設(shè)計,然后整合到一起再進行調(diào)試與運行。主要分為三個方面:1、時鐘顯示與調(diào)時的實現(xiàn),2、風扇定時開關(guān)的實現(xiàn),3、風扇檔位控制的實現(xiàn)。具體功能描述,顯示當前的時間并對時間的小時分鐘進行調(diào)整;并可以對風扇開關(guān)定時時間進行設(shè)置,當電機在定時時間以前是關(guān)閉狀態(tài)時,到達設(shè)定時間電機以最低檔轉(zhuǎn)動,當電機在定時時間以前是開啟狀態(tài),到達設(shè)定時間電機停止轉(zhuǎn)動;并且在電機處于轉(zhuǎn)動狀態(tài)時可以對電機檔位進行調(diào)節(jié);同時有整點報時功能與led燈的隨秒循

12、環(huán)閃爍功能。5.1計時模塊實驗中各個模塊的工作都是基于計時模塊來運行,在計時模塊中通過對定時器周期的設(shè)置,并以定時器周期為基礎(chǔ),控制其他各個模塊的運行。實驗中設(shè)置定時器周期為1s,并利用定時器實現(xiàn)時間的秒數(shù)增加,利用時間的進位關(guān)系實現(xiàn)分鐘和時鐘數(shù)的增加。分別定義了秒鐘增加函數(shù)secadd( )、分鐘增加函數(shù)minadd( )、時鐘增加函數(shù)houradd( )和整合函數(shù)addOneSecond( )。 本實驗程序利用QTimer設(shè)置了一個時間周期為1s的定時器,每1s產(chǎn)生一個timeout( )信號,將這個信號連接到相應(yīng)的槽中,調(diào)用drawgraph( )函數(shù),在程序中定義了addOneSeco

13、nd( )子函數(shù),在drawgraph( )中調(diào)用addOneSecond( )子函數(shù)實現(xiàn)時間的增加。 另外定義了secadd( )子函數(shù)實現(xiàn)秒鐘加1,當設(shè)置的秒鐘加到60s時調(diào)用minadd( )子函數(shù)實現(xiàn)分鐘數(shù)加1,同理通過houradd( )實現(xiàn)小時數(shù)加1。具體的子程序見附錄中的程序。圖5.1計時流程圖5.2液晶顯示模塊液晶顯示模塊顯示主要顯示開機畫面、時間的時鐘、分鐘和秒鐘、電機開關(guān)狀態(tài)和電機檔位的顯示。 在液晶顯示中主要通過調(diào)用液晶屏顯示實驗中中畫線函數(shù)CTR_lcd,實現(xiàn)數(shù)字1-9的顯示及電機的開關(guān)狀態(tài)ON和OFF顯示。定義函數(shù)drawnumber(int num, int pos

14、ition)和drawmininum(int mininum, int mposition)通過輸入數(shù)字參數(shù)來調(diào)用ctr_lcd.cpp中畫線子函數(shù)LCDDrawLine(unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1,unsigned char color),實現(xiàn)數(shù)字顯示。圖5.2.1開機畫面128*64.bmp圖5.2.2二進制文件生成過程5.3鍵盤模塊鍵盤模塊主要實現(xiàn)電機風扇的開關(guān)控制、檔位控制和計時時間和定時時間的設(shè)置。各按鍵功能定義如下表:按鍵功能1直流電機的啟動/停止2擋位循環(huán)增加3時間清零4小時

15、十位加15小時個位加16分鐘十位加17分鐘個位加18定時時鐘個位加19定時時鐘十位加1在具體程序中通過對函數(shù)keyPressEvent(QKeyEvent *e) 中各個按鍵功能的定義實現(xiàn)各個參數(shù)的設(shè)置。在上述按鍵功能中,當設(shè)置定時時間時需要使液晶屏轉(zhuǎn)換到定時時間節(jié)目并顯示設(shè)置的定時時間,此處利用sleep(1)函數(shù)掛起1s,使前面調(diào)用的顯示定時時間的程序能夠在液晶屏上顯示1s的時間,并通過addOneSecond( )補償掛起的1s時間,使時間能夠準確計時。5.4直流電機控制模塊直流電機模塊主要是有兩個功能,一個是對電機的運行與否進行控制,一個是對電機的轉(zhuǎn)速檔位進行控制,將設(shè)置的檔位轉(zhuǎn)化為實

16、際的轉(zhuǎn)速輸入到電機中,并使電機運行。在程序中定義了dcmotorspeed(int dangweis)函數(shù),其輸入?yún)?shù)為設(shè)置的檔位dangweis,首先根據(jù)輸入的檔位計算出實際的轉(zhuǎn)速,設(shè)置每檔轉(zhuǎn)速增加10,一檔轉(zhuǎn)速為10,在dcmotorspeed(int dangweis)函數(shù)通過對屬性文件的操作可以實現(xiàn)電機轉(zhuǎn)速的輸入和點擊啟動的控制。由于電機的開關(guān)狀態(tài)只需要改變屬性文件的參數(shù)即可,在實現(xiàn)中直接利用參數(shù)motor_switch(開關(guān)狀態(tài))控制即可。圖5.4 擋位控制流程圖5.5 LED模塊 LED模塊實現(xiàn)順時針每一秒鐘亮一個LED,當12個LED全亮后再順時針依次熄滅,并不斷循環(huán)。由于在驅(qū)動

17、中將CTR上的發(fā)光二極管作為一個標準的LED進行掛載,因此定義了一個loop_light函數(shù)實現(xiàn)上述功能,并在函數(shù)中通過對通用的Linux讀寫函數(shù)來控制每個燈的開關(guān)。5.6 蜂鳴器模塊 蜂鳴器模塊主要是在整點時候?qū)νㄟ^的Linux控制和讀寫函數(shù)來完成,在具體程序設(shè)計中有,通過設(shè)置頻率,輸入頻率到蜂鳴器,并使能蜂鳴器實現(xiàn)蜂鳴器報時。六 調(diào)試與結(jié)果6.1 程序編譯與安裝連接好實驗箱上的各部件,用實驗箱配的交叉連串口線連實驗箱開發(fā)板的J13 到PC 機的COM1,用實驗箱配的網(wǎng)線連ICETEK-OMAPL138-KBA 的J5 到PC 機的網(wǎng)口,撥動開發(fā)板的撥碼開關(guān)U15 的狀態(tài)撥為1000,PC

18、機起動超級終端,PC 機起動虛擬機Ubuntu。實驗設(shè)備上電起動,撥動實驗箱左上角的總開關(guān),到“開”的狀態(tài),給實驗箱上電啟動。超級終端登錄,超級終端出現(xiàn)3,2,1,倒計數(shù)時按回車暫停自動起動,輸入相應(yīng)命令進行開發(fā)板相關(guān)參數(shù)的設(shè)置。虛擬機起動控制臺,通過cd命令進入工程所有目錄,通過make命令進行程序的安裝與調(diào)試,通過網(wǎng)絡(luò)文件系統(tǒng)nfs,程序會被安裝到/opt/nfs/home/root/ctr 目錄下。在開發(fā)主機的 Windows系統(tǒng)中啟動超級終端【Davinci】; 接通 ICETEK-OMAPL138-A板電源,按回車鍵暫停 linux的起動; 輸入 setenv bootcmd 

19、9;nand read.e 0xc0700000 0x200000 0x400000; bootm' 輸入 setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.1.3 root=/dev/nfsnfsroot=192.168.1.103:/opt/nfs,nolock mem=32M0xc0000000 mem=64M0xc4000000',輸入 boot,觀察【Davinci】中的輸出的起動信息。 輸入 root 登錄; 輸入 cd / 進入根目錄輸入cd / 進入根目錄; 輸入 ls 列出根目

20、錄文件, 列出的即為 /opt/nfs 目錄下的;6.2 實驗結(jié)果在超級終端輸入cd ctr 進行可執(zhí)行程序所在目錄,然后輸入./lcd運行。圖6.2.1 一檔運行界面電機檔位信息在LCD屏幕左下角顯示。按2鍵進行風扇檔位切換,即轉(zhuǎn)速的調(diào)整。檔位分為4檔,電機初始為N1檔,2鍵每按下一次檔位升一。從N1到N4循環(huán)往復(fù)。圖6.2.2 二檔顯示圖6.2.3 三檔顯示圖6.2.4 四檔顯示圖6.2.5 電機停止狀態(tài)顯示按鍵4、5、6、7分別設(shè)置時鐘小時的十位個位,以及時鐘分鐘的十位個位。效果如下圖6.2.6。圖6.2.6 設(shè)置時間后顯示按鍵8設(shè)置風扇定時小時的個位和十位,9鍵設(shè)置風扇定時分鐘的十位。

21、效果如下圖6.2.7。圖6.2.7 設(shè)置定時時間顯示按鍵3設(shè)計為風扇定時設(shè)置各位歸零。效果如下圖6.2.8 定時時間復(fù)位顯示LED裝飾燈效果如圖所示圖6.2.9 LED裝飾燈效果圖七 個人工作自我評估7.1 個人工作報告本次嵌入式課程綜合設(shè)計實驗,我們主要做了一個直流電機的控制系統(tǒng),并擴展了相關(guān)功能,用于模擬風扇的控制。在此次設(shè)計過程中我主要承擔了LCD開機畫面、電機開關(guān)狀態(tài)的顯示;裝飾風扇的LED燈以及鍵盤的功能設(shè)計,如調(diào)時、調(diào)擋位、開關(guān)直流電機,并主要撰寫課程設(shè)計報告和答辯演示。在設(shè)計的過程中自己遇到了很多困難。比如在初次實驗的時候?qū)Τ壗K端操作不夠熟悉,超級終端啟動操作進行步驟不對,致使

22、虛擬機不能連接開發(fā)板,經(jīng)過多次動手操作逐漸熟悉了整個流程;開機畫面顯示需要顯示單色位圖,但是由于LCD屏不能直接顯示位圖,需要對位圖轉(zhuǎn)換為二進制文件,自己通過上網(wǎng)學習最終得以解決:先用字模提取軟件進行圖片設(shè)計,生成128*64.bmp的圖片,再通過PCtoLCD2002將圖片轉(zhuǎn)換成.txt文件,最后通過 Txt2Bin 將.txt文件轉(zhuǎn)化成.bin文件,通過程序直接調(diào)用即可。最終通過查閱各種資料找到了各個問題的相應(yīng)解決辦法,問題也得以解決。此外自己也發(fā)現(xiàn)了程序中程序語句不夠完美的地方,并對其進行了優(yōu)化。總之,通過此次綜合設(shè)計我學到了如何團結(jié)合作,提高了自己獨立解決問題的能力,并對Qt編程有了更

23、多了解。有時候花上一整天去閱讀理解程序的邏輯設(shè)計及功能的實現(xiàn)方法,學到了很多程序設(shè)計的技巧,提高了閱讀代碼的能力,也發(fā)現(xiàn)了其中的樂趣。而且我認為更重要的是我知道了如何高效的搜索信息,找到自己需要的知識,并最終完成了此次實驗。7.2 個人工作報告本次嵌入式課程綜合設(shè)計實驗,我們組主要做了一個智能風扇系統(tǒng),風扇葉片又直流電機表示。LCD顯示屏主要顯示了電機運行的時間,并可以手動調(diào)節(jié)。在此次設(shè)計中,我主要設(shè)計了LCD時間顯示的邏輯功能設(shè)計,還有LCD數(shù)字顯示的實現(xiàn),比如0-9這九個數(shù)字是如何在LCD上顯示的,而且在128*64的LCD顯示屏上位置如何分布。邏輯的設(shè)計就是分鐘和小時的進位設(shè)置,以及如何

24、設(shè)置每小時時會調(diào)動蜂鳴器發(fā)聲一次,在23時59分時會進位變成00:00.在設(shè)計的過程中遇到了很多的問題。最初的肯定就是對設(shè)備不熟悉,使電腦虛擬機和開發(fā)板不能正確的連接。在經(jīng)過不斷地嘗試后,慢慢熟悉的操作過程,并開始設(shè)計系統(tǒng)。接下來面對的問題就是,LCD顯示屏顯示時間是如何顯示的問題。最初想到了圖片的調(diào)用實現(xiàn),畫出圖片后然后再使用jmshow函數(shù)來調(diào)用圖片。但是這總方法太過于繁瑣,不適合本系統(tǒng)。最終還是選擇了通過調(diào)用直線畫圖的方法來畫出所需要的數(shù)字,然后再確定各個位置來進行調(diào)用。還有一個難點就是調(diào)用后放置的位置,這個我通過資料的查閱,進行基于不同位置的調(diào)用,可以順利解決這個問題。最后,我通過此次

25、綜合設(shè)計我學到了QT編程的使用和團隊的合作,提高了自己獨立解決問題的能力通過閱讀理解程序的邏輯設(shè)計及功能的實現(xiàn)方法,學到了很多程序設(shè)計的技巧,提高了閱讀代碼的能力。此次嵌入式課程設(shè)計提高了我們編程方面的能力,鍛煉我們的專業(yè)能力。7.3 個人工作報告在本次嵌入式系統(tǒng)軟硬件設(shè)計實驗中,我們組通過做了一個智能風扇項目了解了嵌入式系統(tǒng)ubuntu的使用方法以及基于OMAPL138的小項目開發(fā)。我的個人工作主要是實現(xiàn)蜂鳴器整點報時,軟件模塊的程序流程圖設(shè)計,程序的安裝和執(zhí)行。在進行試驗的過程中,我們遇到了很多困難。首先我與小組其他兩位成員討論了嵌入式實驗的設(shè)計,包括使用開發(fā)板上的哪些模塊,各模塊的可能實

26、現(xiàn)的方法,如何使用qt,如何編寫程序,在調(diào)試過程中又遇到了很多問題。通過我們的團結(jié)討論,基本上實現(xiàn)了設(shè)計的功能。在最后的整合階段,小組成員積極參與討論并共同調(diào)試,最終完成了智能風扇的實驗。在設(shè)計中遇到的主要問題及解決方案:1.由于之前沒有接觸過QT,C+程序設(shè)計能力也有待提高,所以在程序設(shè)計和編寫過程中非常艱難。通過查詢QT的書和網(wǎng)絡(luò)資源,逐漸了解了QT的作用。請教了一些學長和同級的同學,提高了C+的程序設(shè)計能力。2.在程序調(diào)試過程中也遇到了一些問題。例如程序編譯后安裝錯誤,安裝之后無法在開發(fā)板運行,超級終端上找不到該程序的安裝目錄。后來在仔細閱讀實驗指導(dǎo)書以后發(fā)現(xiàn)了問題所在,經(jīng)過多次試驗,終

27、于成功運行了程序。通過本次試驗,使我了解了嵌入式系統(tǒng)試驗的開發(fā)設(shè)計流程。首先要清楚要做的項目實現(xiàn)的功能,由功能分析需要的模塊和各個模塊之間的調(diào)用關(guān)系,設(shè)計流程圖。然后在嵌入式操作系統(tǒng)上編寫,編譯,安裝,運行,調(diào)試程序。最后完善設(shè)計,查找bug,解決問題。加強程序語言的設(shè)計和編寫能力,并且會修改錯誤程序。即使實現(xiàn)了要求的功能,程序也可能有邏輯上的漏洞。不僅僅要能夠理解客戶的需求,還有有強大的編程能力,這樣才能把項目做得盡可能完美。八 程序附件以下附件為源程序主要部分:/*按鍵*/void Dialog:keyPressEvent ( QKeyEvent * e )switch(e->key

28、() case Qt:Key_3:n_minunits=0;n_mintens=0;n_hourunits=0;n_hourtens=0; lcd->clearBuffer();drawnumber(n_hourtens,10);drawnumber(n_hourunits,40);drawnumber(10,64);drawnumber(n_mintens,70);drawnumber(n_minunits,100);sleep(1);addOneSecond(); break;/定時初始化 case Qt:Key_7:if(minunits<9) minunits+;else

29、minunits=0; break;/分鐘個位加一 case Qt:Key_6:if(mintens<5) mintens+;else mintens=0; break;/分鐘十位加一 case Qt:Key_5:if(hourtens<2)if(hourunits<9) hourunits+;else hourunits=0;elseif(hourunits<3) hourunits+;else hourunits=0; break;/時針個位加1 case Qt:Key_4:if(hourunits<4)if(hourtens<2) hourtens+;

30、else hourtens=0;elseif(hourtens<1) hourtens+;else hourtens=0; break;/時針十位加1 case Qt:Key_1:motor_switch=!motor_switch;if(motor_switch)system("echo 1 > /sys/devices/platform/davinci_ctr.2/dc_motor/enable");dcmotorspeed(0);elsesystem("echo 0 > /sys/devices/platform/davinci_ctr.2

31、/dc_motor/enable");dangwei=0; break; case Qt:Key_2:if (motor_switch) if (dangwei<4)dangwei+;elsedangwei=0; dcmotorspeed(dangwei); break; case Qt:Key_9:if(n_mintens<5) n_mintens+;else n_mintens=0;lcd->clearBuffer();drawnumber(n_hourtens,10);drawnumber(n_hourunits,40);drawnumber(10,64);d

32、rawnumber(n_mintens,70);drawnumber(n_minunits,100);sleep(1);addOneSecond();break;/鬧鐘設(shè)置分鐘十位加1 case Qt:Key_8:if(n_hourtens<2) n_hourunits+;if(n_hourunits>9)n_hourunits=0;n_hourtens+;else if(n_hourtens=2) n_hourunits+;if(n_hourunits>3)n_hourunits=0;n_hourtens=0;lcd->clearBuffer();drawnumber

33、(n_hourtens,10);drawnumber(n_hourunits,40);drawnumber(10,64);drawnumber(n_mintens,70);drawnumber(n_minunits,100);sleep(1);addOneSecond();break;/鬧鐘設(shè)置小時個位加1 /*開機初始化*/void Dialog:init()int t_sec,t_min,t_hour;int init_loop=0;loop=init_loop;/示意燈位置初始化motor_switch=false;/電機狀態(tài)初始化dangwei=0;n_minunits=0;n_min

34、tens=0;n_hourunits=0;n_hourtens=0;t_hour=23;t_min=59;t_sec=55; hourtens=t_hour/10; hourunits=t_hour-hourtens*10; /t_hour%10 mintens=t_min/10; minunits=t_min-mintens*10; /t_min%10sectens=t_sec/10; secunits=t_sec-sectens*10; /t_sec%10zd=false;/整點lcd->clearBuffer(); lcd->setShowBitsFile(QString:f

35、romUtf8("/home/root/ctr/data/xm3pc.bin"); sleep(3);lcd->setShowBitsFile(QString:fromUtf8("/home/root/ctr/data/sp.bin"); sleep(2);lcd->clearBuffer();/*裝飾燈*/void Dialog:secadd()if(secunits=9)secunits=0;sectens+;elsesecunits+; if(loop=24)/示意燈位置判斷l(xiāng)oop=1;elseloop+;loop_light(loop);/示意燈點亮/*LCD顯示*/void Dialog:drawGraph()int frequency=1000;if(zd)zd=false;QString cmdLine = QString:fromUtf8("echo %1 > /sys/devices/platform/davinci_ctr.2/buzzer/frequency").arg(frequency);system(cmdLine.toAscii();system

溫馨提示

  • 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

提交評論