電子時鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書_第1頁
電子時鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書_第2頁
電子時鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書_第3頁
電子時鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書_第4頁
電子時鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書電子時鐘系統(tǒng)院部:學(xué)生姓名: 指導(dǎo)教師:職稱專業(yè):班級:學(xué) 號:I湖南工學(xué)院嵌入式系統(tǒng)課程設(shè)計(jì)課題任務(wù)書指導(dǎo)教師學(xué)生姓名課題名稱電子時鐘系統(tǒng)設(shè)計(jì)內(nèi)容及任務(wù)一、目標(biāo)在GEC210開發(fā)板上設(shè)計(jì)一個基于QT的電子時鐘系統(tǒng)來顯示當(dāng)前的系統(tǒng)時間。二、任務(wù)根據(jù)控制要求,明確設(shè)計(jì)任務(wù),擬定設(shè)計(jì)方案與進(jìn)度計(jì)劃,運(yùn)用所學(xué)的理論知識,進(jìn)行電子時鐘系統(tǒng)原理設(shè)計(jì)、硬件系統(tǒng)設(shè)計(jì)、軟件系統(tǒng)設(shè)計(jì)、創(chuàng)新設(shè)計(jì),提高理論知識工程應(yīng)用能力、系統(tǒng)調(diào)試能力、分析問題與解決問題的能力。主要內(nèi)容包括:嵌入式交叉開發(fā)環(huán)境搭建。Linux操作系統(tǒng)的移植。根據(jù)需求確定外圍模塊設(shè)計(jì)并完成相應(yīng)驅(qū)動開發(fā)。應(yīng)用程序原理及框架設(shè)計(jì)。Linux下應(yīng)用程序編寫及移植。系統(tǒng)總體功能調(diào)試。編寫設(shè)計(jì)說明書。三、要求1.本系統(tǒng)顯示結(jié)果示例如下:2.顯示的時間為開發(fā)板當(dāng)前的系統(tǒng)時間,顯示的結(jié)果隨著系統(tǒng)時間變化而變化。主要參考資料教研室意見教研室主任:(簽字)年月日摘要嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等Browser。嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點(diǎn),如能夠有效管理越來越復(fù)雜的系統(tǒng)資源;能夠把硬件虛擬化,使得開發(fā)人員從繁忙的驅(qū)動程序移植和維護(hù)中解脫出來;能夠提供庫函數(shù)、驅(qū)動程序、工具集以及應(yīng)用程序。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。嵌入式技術(shù)已成為信息產(chǎn)業(yè)中發(fā)展最快、應(yīng)用最廣的計(jì)算機(jī)技術(shù)之一,并被廣泛應(yīng)用于網(wǎng)絡(luò)通信、消費(fèi)電子、醫(yī)療電子、工業(yè)控制和交通系統(tǒng)等領(lǐng)域。本次設(shè)計(jì)采用QT程序開發(fā)框架開發(fā)的模擬時鐘程序,使用Linux系統(tǒng)到嵌入式終端移植和交叉編譯環(huán)境搭建,最終成功實(shí)現(xiàn)了在嵌入式終端的運(yùn)行。關(guān)鍵詞:嵌入式系統(tǒng);QT;模擬時鐘;Linux系統(tǒng)目錄1緒論 11.1設(shè)計(jì)背景 21.2設(shè)計(jì)目的和意義 22嵌入式Linux系統(tǒng) 22.1嵌入式Linux概念 22.2嵌入式Linux組成 23Qt工具 33.1Qt簡介 33.2Qt優(yōu)點(diǎn) 34模擬時鐘的設(shè)計(jì) 44.1代碼的編寫 44.2代碼的調(diào)試與運(yùn)行 45模擬時鐘到開發(fā)板的下載 65.1交叉編譯環(huán)境的構(gòu)建 75.2模擬時鐘到開發(fā)板的下載運(yùn)行 7結(jié)論 10參考文獻(xiàn) 11致謝 12附錄 13PAGE181緒論嵌入式Linux操作系統(tǒng)在廣泛和深入的應(yīng)用于各個領(lǐng)域,應(yīng)用的技術(shù)也越來越復(fù)雜。而隨著城市信息化和行業(yè)信息化的持續(xù)深入,嵌入式技術(shù)已成為信息產(chǎn)業(yè)中發(fā)展最快、應(yīng)用最廣的計(jì)算機(jī)技術(shù)之一,并被廣泛應(yīng)用于網(wǎng)絡(luò)通信、消費(fèi)電子、醫(yī)療電子、工業(yè)控制和交通系統(tǒng)等領(lǐng)域。嵌入式Linux開始采用較為復(fù)雜的圖形用戶界面。QT以其強(qiáng)大的功能,良好的可移植性成為一種被廣泛使用的GUI系統(tǒng)。于是嵌入式操作系統(tǒng)及其相應(yīng)圖形用戶界面的不斷發(fā)展,嵌入式軟件的開發(fā)顯得越來越重要。本次設(shè)計(jì)模擬時鐘能夠以簡潔的外觀為用戶提供時間信息成為了系統(tǒng)中的重要組成部分,在基于QT的嵌入式系統(tǒng)中模擬時鐘具有深刻的實(shí)用價值。1.1設(shè)計(jì)背景源代碼開放的Linux搭建的嵌入式操作系統(tǒng)由于其強(qiáng)大的網(wǎng)絡(luò)功能和低成本,近年來得到了越來越多的應(yīng)用。其能夠提供全功能的桌面計(jì)算,定制非常方便并且支持大多數(shù)嵌入式系統(tǒng)上使用的芯片。在嵌入式Linux操作系統(tǒng)上使用一個功能完備的輕量級、高性能、高可靠、可配置的GUI系統(tǒng)成為可行的解決方案。全過程自動化產(chǎn)品制造、大范圍電子商務(wù)活動、高度協(xié)同科學(xué)實(shí)驗(yàn)以及現(xiàn)在化家庭起居,為嵌入式產(chǎn)品造就了嶄新而巨大的商機(jī)。日趨增長的功能密度、靈活的網(wǎng)絡(luò)鏈接、輕便的移動應(yīng)用和多媒體的信息處理對嵌入式系統(tǒng)軟件技術(shù)提出了新的挑戰(zhàn)。1.2設(shè)計(jì)目的和意義隨著近年來計(jì)算機(jī)技術(shù)的迅速發(fā)展,當(dāng)新硬件、新技術(shù)出現(xiàn)時,計(jì)算機(jī)的體系結(jié)構(gòu)、指令系統(tǒng)和操作系統(tǒng)都可能發(fā)生相應(yīng)的改變,這勢必會導(dǎo)致一部風(fēng)應(yīng)用在新環(huán)境下無法正常運(yùn)行。如果舍棄原有軟件重新開發(fā),將會耗費(fèi)大量的人力和財(cái)力,而浪費(fèi)了許多成熟的軟件成果。而QT在源代碼級上實(shí)現(xiàn)了跨平臺特性,極大地支持了跨平臺通用軟件的開發(fā)。QT可以用同一個源程序在不同平臺上編譯鏈接,生成目標(biāo)代碼,并取得相同的運(yùn)行效果,充分實(shí)現(xiàn)了程序的跨平臺運(yùn)行。這種基于源代碼的跨平臺特性不僅解決了性能的問題,而且可以發(fā)揮各個平臺的優(yōu)勢,充分利用每個平臺自身的特點(diǎn);并且即可以在新環(huán)境下實(shí)現(xiàn)原有軟件的功能和特點(diǎn),減少開發(fā)費(fèi)用,還可以改進(jìn)原有軟件的不足,增加新的需求,從而提高軟件的質(zhì)量,延長軟件生命期。模擬時鐘需要編寫代碼來實(shí)現(xiàn)它的功能,然后對代碼進(jìn)行編譯運(yùn)行,檢查是否達(dá)到了預(yù)期的效果。2嵌入式Linux系統(tǒng)2.1嵌入式Linux簡介嵌入式Linux是將標(biāo)準(zhǔn)Linux操作系統(tǒng)進(jìn)行裁剪修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。它以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。Linux從1991年問世到現(xiàn)在,短短的十幾年時間已經(jīng)發(fā)展成為功能強(qiáng)大、設(shè)計(jì)完善的操作系統(tǒng)之一,不僅可以與各種傳統(tǒng)的商業(yè)操作系統(tǒng)分庭抗?fàn)?,在新興的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展。嵌入式系統(tǒng)的發(fā)展方向是與目標(biāo)密切相關(guān)的嵌入性能、操控能力與控制的可靠性。嵌入式操作系統(tǒng)從它的產(chǎn)生到現(xiàn)在經(jīng)歷了幾個階段,全入市系統(tǒng)是以應(yīng)用為中心的計(jì)算機(jī)技術(shù)為基礎(chǔ)并且軟硬件是可裁剪的適用于對功能、可靠性、成本、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)嵌入式系統(tǒng)最典型的特點(diǎn)是與人們的日常生活緊密相關(guān),任何一個普通人都可能擁有各種運(yùn)用了嵌入式技術(shù)的電子產(chǎn)品。各種新型嵌入式設(shè)備在數(shù)量上已經(jīng)遠(yuǎn)遠(yuǎn)超過了通用計(jì)算機(jī)。2.2嵌入式Linux的組成一個最小的嵌入式系統(tǒng)基本組成為:一個用作引導(dǎo)的可用設(shè)施(工具);一個具備內(nèi)存管理,進(jìn)程管理和定時器服務(wù)的Linux微內(nèi)核;一個初始進(jìn)程;硬件的驅(qū)動程序;一個或幾個應(yīng)用進(jìn)程以提供必要的應(yīng)用功效。嵌入式Linux既繼承了Internet上無限的開放源代碼資源,又具有嵌入式操作系統(tǒng)的特性。硬件層:硬件層包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設(shè)備接口和I/O接口(A/D、D/A、I/O等)。在意嵌入式處理器基礎(chǔ)上添加電源電路、時鐘電路和存儲電路就構(gòu)成了一個嵌入式核心控制模塊。其中操作系統(tǒng)和應(yīng)用程序多都可以固化在ROM中。中間層:硬件層與軟件層之間為中間層,也稱為硬件抽象層(HardwareAbstractLayer,HAL)或者板級支持包(BoardSupportPackage,BSP),它半系統(tǒng)上層軟件與底層硬件分離開來,使系統(tǒng)的底層驅(qū)動程序與硬件無關(guān),上層軟件開發(fā)人員無需關(guān)心底層硬件的具體情況,根據(jù)BSP層提供的接口即可進(jìn)行開發(fā)。該層一般包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能。系統(tǒng)軟件層:系統(tǒng)軟件層由實(shí)時多任務(wù)操作系統(tǒng)(Real-timeOperationSystem,RTOS)、文件系統(tǒng)、圖形用戶接口(GraphicUserInterface,GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。3Qt工具3.1Qt簡介Qt是一個1991年由奇趣科技開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。它給應(yīng)用程序開發(fā)者提供了一套功能齊全的進(jìn)行藝術(shù)級的圖形用戶界面程序設(shè)計(jì)所需的功能。Qt很容易擴(kuò)展,并且允許真正地組件編程?;旧螿t和XWindow上的GTK,Openwin,Motif等圖形界面庫和Windows平臺上的ATL,CL,OWL,VMFC是非常類似的。QtCreator

主要是為了幫助新

Qt

用戶更快速入門并運(yùn)行項(xiàng)目,還可提高有經(jīng)驗(yàn)的

Qt

開發(fā)人員的工作效率。QtCreator包括項(xiàng)目生成向?qū)?、高級的C++代碼編輯器、瀏覽文件及類的工具、集成了QtDesigner、QtAssistant、QtLinguist、圖形化的GDB調(diào)試前端,集成qmake構(gòu)建工具等。3.2Qt優(yōu)點(diǎn)Qt的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。Qt提供了一種稱為signal/slots的安全類型來替代callback,這使得各個元件之間的協(xié)同工作變得十分簡單。Qt有豐富的API包括多達(dá)250個以上的C++類,還是提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time類,還包括正則表達(dá)式的處理功能。支持2D/3D圖形渲染、OpenGL、大量的文檔開發(fā)、XML支持和實(shí)現(xiàn)本地界面與Web內(nèi)容的無縫集成。4模擬時鐘的設(shè)計(jì)設(shè)計(jì)要求指針式的表盤為原型,并且圓周上有分布均勻的12個刻度,鐘面上有長度不同的指針,即時針、分針、秒針,間隔一秒更新一次時間。顯示的時間為開發(fā)板當(dāng)前的系統(tǒng)時間,顯示的結(jié)果隨著系統(tǒng)時間變化而變化。4.1代碼的編寫模擬時鐘每一個模塊的功能是在cpp文件中實(shí)現(xiàn)的,h文件是類、槽、函數(shù)、變量的定義,main主函數(shù)用來調(diào)用現(xiàn)實(shí),頭文件和主函數(shù)的代碼如下:myclock.h文件#ifndefMYCLOCK_H#defineMYCLOCK_H#include<QWidget>#include<QPainter>#include<QPaintEvent>#include<QTime>#include<QTimer>#include<qmath.h>namespaceUi{classmyclock;}classmyclock:publicQWidget{Q_OBJECTpublic:explicitmyclock(QWidget*parent=0);~myclock();protected:voidpaintEvent(QPaintEvent*);private:Ui::myclock*ui;QTimer*timer;inti;};#endif//MYCLOCK_Hmain主函數(shù):main.cpp#include"myclock.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);myclockw;w.show();returna.exec();}模擬時鐘的走時為調(diào)用系統(tǒng)時間,用定時器每一秒更新一次draw函數(shù),在表盤上顯示為秒針跳動一格,由于始終與系統(tǒng)時間保持一致,所以完全可以作為直接的時間顯示工具。實(shí)現(xiàn)的代碼如下:myclock::myclock(QWidget*parent):QWidget(parent),ui(newUi::myclock){ui->setupUi(this);this->resize(350,350);timer=newQTimer(this);//定時器connect(timer,SIGNAL(timeout()),this,SLOT(update()));timer->start(1000);}myclock::~myclock(){deleteui;}時鐘的指針繪制也是根據(jù)定義的坐標(biāo)用畫筆畫出需要的指針形狀,其中繪制指針的實(shí)現(xiàn)代碼如下:QPenhourpen;//時針的畫筆hourpen.setWidth(4);//設(shè)置畫筆寬度//hourpen.setColor(Qt::blue);//設(shè)置畫筆顏色mypainter.setPen(hourpen);mypainter.save();//mypainter.rotate(30.0*((time.hour()+time.minute()/60.0)));mypainter.drawConvexPolygon(hourHand,3);//mypainter.drawLine(0,0,0,-80);mypainter.restore();QPenminutepen;//分針的畫筆minutepen.setWidth(3);minutepen.setColor(Qt::yellow);//設(shè)置畫筆顏色mypainter.setPen(minutepen);mypainter.save();mypainter.rotate(6.0*(time.minute()+time.second()/60.0));mypainter.drawConvexPolygon(minuteHand,3);//mypainter.drawLine(0,0,0,-100);mypainter.restore();QPensecondpen;//秒針的畫筆secondpen.setWidth(1);secondpen.setColor(Qt::blue);//設(shè)置畫筆顏色4.2代碼的調(diào)試和運(yùn)行通過以上步驟代碼編寫已經(jīng)完成,在Windows系統(tǒng)下的QT運(yùn)行。通過調(diào)試發(fā)現(xiàn)沒有發(fā)現(xiàn)錯誤和警告,就會出現(xiàn)如下的到模擬時鐘的界面,如圖1所示。圖1模擬時鐘界面5模擬時鐘到開發(fā)板的移植5.1交叉編譯環(huán)境的構(gòu)建在開發(fā)板上移植Linux系統(tǒng)之前,必須確保已經(jīng)安裝了USB驅(qū)動,并把開發(fā)版設(shè)置為NORFlash啟動。系統(tǒng)更新和安裝完畢后設(shè)置為NandFlash啟動。然后對NandFlash進(jìn)行分區(qū),安裝bootloader,移植內(nèi)核文件,移植文件系統(tǒng)。做完這些就可以進(jìn)行交叉編譯環(huán)境構(gòu)建。在Linux平臺下,要為開發(fā)板編譯內(nèi)核,圖形界面Qtopia,bootloader,還有其他一些英勇程序,均需要交叉編譯工具鏈。(1)安裝gcc編譯工具用于arm平臺程序的編譯工具,arm-linux-gcc,arm-linux-g++等,把程序源碼包復(fù)制到用戶目錄下面解壓設(shè)置環(huán)境變量,保存設(shè)置最后在終端輸入以下命令:arm-linux-gcc-v等待出現(xiàn)信息成功安裝。4.2模擬時鐘到開發(fā)板的下載與運(yùn)行交叉編譯好的程序到開發(fā)板的下載用到串口,用串口線連接好開發(fā)板和電腦,串口使用COM3。接通電源,啟動開發(fā)板,登錄系統(tǒng),在SecureCRT中點(diǎn)擊連接。圖2串口連接設(shè)置進(jìn)入后彈出一個對話框,在對話框中輸入一下幾條命令:(1)pwd(2)ls(3)cdaaa(4)ls(5)sourceqtconf.sh(6)./myclock輸入以上命令后可以在SecureCRT中看到如下信息:圖3輸入命令結(jié)果輸入以上幾條命令后,開發(fā)板上也就出現(xiàn)了本次設(shè)計(jì)的模擬時鐘界面。開發(fā)板上結(jié)果如圖4所示。圖4開發(fā)板顯示結(jié)果由圖4可以看出,開發(fā)板上的時鐘與系統(tǒng)時間一致,并且隨系統(tǒng)時間的變化而變化,說明設(shè)計(jì)成功。在下載運(yùn)行時會遇到這些問題:調(diào)用驅(qū)動時要保證實(shí)際驅(qū)動名字與應(yīng)用程序名字相同;通過串口顯示的數(shù)據(jù)是亂碼,原因是波特率設(shè)置的不正確,導(dǎo)致雙方數(shù)據(jù)交互出現(xiàn)錯誤;開發(fā)板的系統(tǒng)上電后,不能重新啟動,究其原因是內(nèi)核、根目錄系統(tǒng)或者bootloader沒有正確的燒寫,重新燒寫后正常啟動;程序下載到開發(fā)板上不能正確運(yùn)行,提示缺少某個動態(tài)庫,將缺少的庫文件從Qt的安裝包拷貝到lib目錄下完成后可正常啟動。結(jié)論本次課程設(shè)計(jì)實(shí)現(xiàn)了一種基于Qt的模擬時鐘的開發(fā)過程,實(shí)現(xiàn)了預(yù)期的功能。編寫好的模擬時鐘代碼在Linux系統(tǒng)、Windows系統(tǒng)下都能編譯并運(yùn)行成功,還講交叉編譯好的程序下載到開發(fā)板上運(yùn)行,沖鋒體現(xiàn)了Qt的跨平臺特性。為了Windows系統(tǒng)下編寫編譯的Qt程序能夠在嵌入式Linux環(huán)境里運(yùn)行,需要在搭建交叉編譯環(huán)境時,要配置環(huán)境變量,設(shè)計(jì)編譯參數(shù),任何一個依賴庫的確實(shí)或編譯參數(shù)的疏忽都可能導(dǎo)致交叉編譯不成功。交叉編譯好的Qt程序到開發(fā)板移植時,嵌入式Linux中要有Qt程序運(yùn)行的環(huán)境,移植時往往缺少很多庫文件導(dǎo)致不能運(yùn)行,需要不斷測試并在交叉編譯環(huán)境中找到相應(yīng)的庫文件下載到開發(fā)板。由于個人能力以及時間的限制,此次設(shè)計(jì)最終能實(shí)現(xiàn)了一些基本功能,但是還有很大的擴(kuò)展性,比如時間設(shè)置等功能。希望在今后的學(xué)習(xí)中可以學(xué)到更多完善自己。

參考文獻(xiàn)

致謝首先我要感謝我的老師在課程設(shè)計(jì)上給予我的指導(dǎo),提供給我的支持和幫助,這是我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學(xué)到了許多新的知識,而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過我的同學(xué),他們也為我解決了不少我不太明白的設(shè)計(jì)商的難題。最后再一次感謝所有在設(shè)計(jì)中曾經(jīng)幫助過我的良師益友和同學(xué)這段時間以來,在老師的耐心指導(dǎo)下,我終于完成了本次的課程設(shè)計(jì)。附錄程序清單工程程序:###ProjectcreatedbyQtCreator2016-11-21T04:30:07##QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=myclockTEMPLATE=appSOURCES+=main.cpp\myclock.cppHEADERS+=myclock.hFORMS+=myclock.ui頭文件程序:myclock.h#ifndefMYCLOCK_H#defineMYCLOCK_H#include<QWidget>#include<QPainter>#include<QPaintEvent>#include<QTime>#include<QTimer>#include<qmath.h>namespaceUi{classmyclock;}classmyclock:publicQWidget{Q_OBJECTpublic:explicitmyclock(QWidget*parent=0);~myclock();protected:voidpaintEvent(QPaintEvent*);private:Ui::myclock*ui;QTimer*timer;inti;};#endif//MYCLOCK_H源文件程序:main.cpp#include"myclock.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);myclockw;w.show();returna.exec();}myclock.cpp#include"myclock.h"#include"ui_myclock.h"myclock::myclock(QWidget*parent):QWidget(parent),ui(newUi::myclock){ui->setupUi(this);this->resize(350,350);timer=newQTimer(this);//定時器connect(timer,SIGNAL(timeout()),this,SLOT(update()));timer->start(1000);}myclock::~myclock(){deleteui;}voidmyclock::paintEvent(QPaintEvent*){QTimetime=QTime::currentTime();//獲取系統(tǒng)時間QPaintermypainter(this);//定義畫家mypainter.setRenderHint(QPainter::Antialiasing);//平滑設(shè)置staticconstQPointhourHand[3]={QPoint(4,4),QPoint(-4,4),QPoint(0,-80)};//時針staticconstQPointminuteHand[3]={QPoint(4,4),QPoint(-4,4),QPoint(0,-100)};//分針staticconstQPointsecondHand[4]={QPoint(5,5),QPoint(0,30),QPoint(-5,5),QPoint(0,-120)};//秒針//mypainter.translate(this->width()/100,this->height()/100);//坐標(biāo)平移QPenpen;//定義圓畫筆pen.setWidth(5);//設(shè)置畫筆寬度pen.setColor(Qt::blue);//設(shè)置畫筆顏色mypainter.translate(170,170);//將(0,0)坐標(biāo)平移到(170,170)的位置mypainter.setPen(pen);mypainter.drawEllipse(-150,-150,300,300);//畫圓QPenrul;//刻度的畫筆mypainter.setPen(rul);mypainter.save();//保存原有狀態(tài)for(inti=0;i<60;++i){if(i%5==0){mypainter.drawLine(150,0,135,0);}mypainter.drawLine(150,0,145,0);mypainter.rotate(6.0);}mypainter.restore();//恢復(fù)坐標(biāo)QPenhourpen;//時針的畫筆hourpen.setWidth(4);//設(shè)置畫筆寬度//hourpen.setColor(Qt::blue);//設(shè)置畫筆顏色mypainter.setPen(hourpen);mypainter.save();//mypainter.rotate(30.0*((time.hour()+time.minute()/60.0)));mypainter.drawConvexPolygon(hourHand,3);//mypainter.drawLine(0,0,0,-80);mypainter.restore();QPenminutepen;//分針的畫筆minutepen.setWidth(3);minutepen.setColor(Qt::yellow);//設(shè)置畫筆顏色mypainter.setPen(minutepen);mypainter.save();mypainter.rotate(6.0*(time.minute()+time.second()/60.0));mypainter.drawConvexPolygon(minuteHand,3);//mypainter.drawLine(0,0,0,-100);mypainter.restore();QPensecondpen;//秒針的畫筆secondpen.setWidth(1);secondpen.setColor(Qt::blue);//設(shè)置畫筆顏色mypainter.setPen(secondpen);mypainter.save();mypainter.rotate(6.0*time.second());mypainter.drawConvexPolygon(secondHand,4);//mypainter.drawLine(0,0,0,-120);mypainter.restore();//畫數(shù)字mypainter.save();//保存原有狀態(tài)for(inti=1;i<13;i++){QStringnum=QString::number(i);//mypainter.rotate(30.0);//旋轉(zhuǎn)30度//mypainter.drawText(0,-120,num);mypainter.save();mypainter.rotate(i*30.0);mypainter.translate(0,-125);mypainter.rotate(-i*30.0);mypainter.drawText(-4,0,num);mypainter.restore();}mypainter.restore();//恢復(fù)坐標(biāo)}基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運(yùn)動控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動信號的采集系統(tǒng)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論