电子时钟系统设计Word格式.docx

上传人:b****6 文档编号:21313139 上传时间:2023-01-29 格式:DOCX 页数:18 大小:885.08KB
下载 相关 举报
电子时钟系统设计Word格式.docx_第1页
第1页 / 共18页
电子时钟系统设计Word格式.docx_第2页
第2页 / 共18页
电子时钟系统设计Word格式.docx_第3页
第3页 / 共18页
电子时钟系统设计Word格式.docx_第4页
第4页 / 共18页
电子时钟系统设计Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

电子时钟系统设计Word格式.docx

《电子时钟系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《电子时钟系统设计Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

电子时钟系统设计Word格式.docx

[2]曹忠明,程姚根。

从实践中学嵌入式Linux操作系统[M]。

电子工业出版社,2012

[3]宋宝华,Linux设备驱动开发详解(第二版)[M]。

人民邮电出版社,2010。

[4]韦东山,嵌入式Linux应用开发完全手册[M]。

人民邮电出版社,2008

[5]陆文周,Qt5开发及实例[M]。

电子工业出版社,2015

[6]StephenPrata,CPrimerPlus[M]。

人民邮电出版社,2005

教研室

意见

教研室主任:

(签字)

年月日

摘要

本次课设是基于ARM嵌入式开发板设计一个具有模拟表盘与数字显示的电子时钟,与传统的机械钟相比,它具有走时准确、显示直观,无机械转动装置等优点。

该电子时钟系统首先是在QT上通过API函数和C语言进行设计,然后将嵌入式Linux程序下载到开发板上,这样就能够实现简单的计时,并且时间与系统时间一致。

关键词:

ARM嵌入式电子时钟QT计时

目录

1绪论1

1.1电子时钟的简介1

1.2设计背景1

1.3设计目的及意义1

2嵌入式Linux和QT系统2

2.1嵌入式Linux的简介2

2.2嵌入式Linux的特点2

2.3QT的简介2

2.4QT的优点3

3设计与实现3

3.1时钟功能的设计4

3.2时钟界面的设计4

3.3设计步骤5

3.4工程的调试与运行5

4调试与结果7

4.1嵌入式Linux到开发板的移植7

4.2对NandFlash进行分区7

4.3实物的调试与结果8

结束语9

参考文献10

致谢11

附录12

程序清单13

1绪论

1.1电子时钟的简介

1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,

电子时钟开始迅速发展起来。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

1.2设计背景

嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。

利用源代码开发的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,近年来得到了越来越多的应用。

在嵌入式Linux操作系统上使用一个功能完备的轻量级、高能级、高可靠、可配置的GUI系统成为可行的解决方案。

现如今各种家电多有嵌入式产品,这样不仅为嵌入式市场展现了美好前景,注入了新的生命;

同时也对嵌入式系统技术,特别是软件技术提出新的挑战。

1.3设计目的及意义

虽然市场上现在有了众多的GUI应用软件,但随着近年来计算机技术的发展,有许多计算机的体系结构、指令系统和操作系统都可能发生改变,这势必将导致原有的一些功能无法实现。

如果舍弃原有软件,这样会浪费大量人力和资金,浪费许多成熟的成果。

而QT可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得同样的运行效果,这种技术成为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。

本次设计通过对嵌入式Linux和QT的分析,在嵌入式QT的基础上,开发面向嵌入式终端的模拟时钟应用软件。

模拟时钟不仅能精确的显示时间,还能更换皮肤,装饰桌面环境。

2嵌入式Linux和QT系统

2.1嵌入式Linux的简介

嵌入式Linux是将标准Linux操作系统进行裁剪修改,使之能在计算机上运行的操作系统。

它以应用为中心,以计算机技术为基础,软件、硬件可才裁剪,适用于系统对功能、可靠性、成本、体积、功耗要求严格的计算机系统。

嵌入式Linux既继承了Internet上无限的开发源代码资源,又具有嵌入式操作系统的特性。

2.2嵌入式Linux的特点

(1)模块化程度高

Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;

其独特模块可随客户的需要移动。

(2)源码公开

源码公开,可以使用户不用担心有“后闸”等安全隐患;

同时源码开放给个教育机构提供极大的方便,同时也促进了Linux的学习。

(3)广泛的硬件支持

Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。

(4)安全性及可靠性好

内核高效稳定。

可以使用户方便的建立高效稳定的防火墙、路由器、工作站、服务器等。

(5)具有优秀的开发工具

(6)有良好的网络的支持利文件系统支持

(7)与UNIX完全兼容

目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能。

2.3QT的简介

QT是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。

它既可以用于GUI程式,也可用于非GUI程式。

QT是面向对象语言,易于扩展,并且允许组件编程,支持windows、unix、嵌入式Linux平台。

有商业版和开原版,前者提供给商业软件开发,后者仅仅为了开发由和开放源码软件,提供和前者一样的功能。

2.4QT的优点

(1)面向对象

QT的良好封装机制使得QT的模块化程度非常高,可重性较好,对于用户开发来说是非常方便的。

(2)丰富的API

QT包括多达250个以上的C++类,还提供模板的collections,serial类等。

(3)支持2D/3D图形渲染,支持OpenGL。

(4)大量的开发文档

(5)XML支持。

(6)Webkit引擎的集成,可以实现本地界面与Web内容的无缝集成。

(7)信号与槽

信号与槽用于对象问的通讯。

信号与槽的机制是类型安全的,一个信号的签名与它的接收槽的签名相匹配。

3设计与实现

3.1时钟功能的设计

1.基本走时功能,调用系统时间,每个一秒更新一次时间。

2.通过不同函数更换皮肤。

3.使时钟与桌面有一定程度的融合。

4.可以通过改写函数重写时间。

3.2时钟界面的设计

1.窗口设为正方形,使用函数去掉标题栏。

2.时钟界面为圆形,使用函数实现。

3.使用函数设计时钟的分针、时针和秒针。

4.使用函数设计时钟的刻度。

5.使用函数设计时针、分针和秒针的颜色、长度和宽度。

3.3设计步骤

1.工程的建立

首先打开QT软件,然后打开文件窗口建立一个工程,命名为myclock,工程程序如图1所示。

图1工程程序

2.头文件的建立

首先打开文件窗口,选择新建文件,然后在项目中选择C++,在C++中选择C++头文件建立头文件程序,命名为myclock.h。

建立步骤如图2所示,头文件程序见附录。

图2建立头文件

3.4源文件的建立

与步骤2一样打开新建文件,在项目C++中选择C++源文件建立。

一个文件名为main.cpp,一个命名为myclock.cpp。

如图3所示,程序见附录。

图3建立源文件

3.4工程的调试与运行

通过以上步骤基本已经完成,通过调试发现没有发现错误和警告,然后运行得到了时钟界面。

调试结果如图4所示,运行如图5所示。

图4调试结果

图5运行结果

4调试与结果

4.1嵌入式Linux到开发板的移植

移植是指将软件从一个平台迁移到另一个平台。

在移植过程前,首先要设置超级终端、DNW软件、安装USB下载驱动、USB转串口驱动等等。

安装Linux系统主要有以下几个步骤:

(1)对NandFlash进行分区;

(2)安装bootloader;

(3)移植内核文件;

(4)移植文件系统。

4.2对NandFlash进行分区

用串口线、USB线吧开发板连接到电脑,串口用于通讯,USB用于系统移植时数据的下载。

安装好USB转串口驱动,新建一个超级终端,串口使用COM3,设置好相应的参数,一边与实现电脑与开发板的通信。

选择串口如图6所示。

图6选择串口

4.3实物的调试与结果

接通电源,启动开发板,登录系统,在SecureCRT中点击连接,进入后弹出一个对话框,在对话框中输入一下几条命令:

(1)pwd

(2)ls

(3)cdaaa

(4)ls

(5)sourceqtconf.sh

(6)./myclock

输入以上几条命令后,开发板上就出现了需要的时钟界面。

输入命令窗口如图7所示。

开发板上结果如图8所示。

图8输入命令结果

图9开发板结果

由图9可以看出,开发板上的时钟与系统时间一致,并且随系统时间的变化而变化,说明设计成功。

结束语

经过两周的努力,终于完成了课程设计。

从开始接到课设题目到完成设计,每一步走来对于我来说都是新的尝试和挑战。

在这段时间里,我学到了很多知识也有很多感受。

在做这次课设中,遇到了许多的难题,比如如何将程序下载到开发板上,这个开始我一点也不会,后来通过查资料和请教同学和老师,终于将程序下载到了板子上,完成了课题的设计。

从这次课设中我明白了,只有不断的探索,不断的努力,才能达到自己最终想要的结果。

参考文献

[1]徐千洋.Linux 

C函数库参考手册.[M]中国青年出版社.2002 

[2]陈坚,孙志月.MODEM通信编程技术[M].西安电子科技大学出版社.1998 

[3]李现勇.Visual 

C++串口通信技术与工程实践[M].人民邮电出版社.2004 

[4]何小平.选择适合ARM的嵌入式操作系统[J].BMRfech 

Inc.2003 

[5]马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础[M].北京航空航天大学出版社.2002 

[6]邹思铁.嵌入式Linux设计与应用[M].北京清华大学出版社.2002 

[7]田泽.嵌入式系统开发与应用[M].北京航空航天大学出版社.2005

[8]陈鑫.嵌入式软件技术的现状与发展动向[M].软件世界.2001 

致谢

本设计是在罗老师的悉心指导下完成的,老师渊博的知识,严谨的治学态度,平易近人的性格都是我学习的楷模。

在做课程设计期间,老师给了我很大的支持和鼓励,才使得课设得以顺利的完成,在此谨向罗老师表示忠心的感谢和崇高的敬意。

同时还要感谢和我一起完成课设的同学,他们也给了我很大的支持和帮助,才使我们课设完成的这么成功。

附录

程序清单

工程程序:

myclock.pro

#-------------------------------------------------

#

#ProjectcreatedbyQtCreator2016-11-21T04:

30:

07

QT+=coregui

greaterThan(QT_MAJOR_VERSION,4):

QT+=widgets

TARGET=myclock

TEMPLATE=app

SOURCES+=main.cpp\

myclock.cpp

HEADERS+=myclock.h

FORMS+=myclock.ui

头文件程序:

myclock.h

#ifndefMYCLOCK_H

#defineMYCLOCK_H

#include<

QWidget>

QPainter>

QPaintEvent>

QTime>

QTimer>

qmath.h>

namespaceUi{

classmyclock;

}

classmyclock:

publicQWidget

{Q_OBJECT

public:

explicitmyclock(QWidget*parent=0);

~myclock();

protected:

voidpaintEvent(QPaintEvent*);

private:

Ui:

:

myclock*ui;

QTimer*timer;

inti;

};

#endif//MYCLOCK_H

源文件程序:

main.cpp

#include"

myclock.h"

QApplication>

intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

myclockw;

w.show();

returna.exec();

myclock.cpp

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()

deleteui;

voidmyclock:

paintEvent(QPaintEvent*)

QTimetime=QTime:

currentTime();

//获取系统时间

QPaintermypainter(this);

//定义画家

mypainter.setRenderHint(QPainter:

Antialiasing);

//平滑设置

staticconstQPointhourHand[3]={

QPoint(4,4),

QPoint(-4,4),

QPoint(0,-80)

};

//时针

staticconstQPointminuteHand[3]={

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);

//坐标平移

QPenpen;

//定义圆画笔

pen.setWidth(5);

//设置画笔宽度

pen.setColor(Qt:

blue);

//设置画笔颜色

mypainter.translate(170,170);

//将(0,0)坐标平移到(170,170)的位置

mypainter.setPen(pen);

mypainter.drawEllipse(-150,-150,300,300);

//画圆

QPenrul;

//刻度的画笔

mypainter.setPen(rul);

mypainter.save();

//保存原有状态

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();

//恢复坐标

QPenhourpen;

//时针的画笔

hourpen.setWidth(4);

//hourpen.setColor(Qt:

mypainter.setPen(hourpen);

//

mypainter.rotate(30.0*((time.hour()+time.minute()/60.0)));

mypainter.drawConvexPolygon(hourHand,3);

//mypainter.drawLine(0,0,0,-80);

QPenminutepen;

//分针的画笔

minutepen.setWidth(3);

minutepen.setColor(Qt:

yellow);

mypainter.setPen(minutepen);

mypainter.rotate(6.0*(time.minute()+time.second()/60.0));

mypainter.drawConvexPolygon(minuteHand,3);

//mypainter.drawLine(0,0,0,-100);

QPensecondpen;

//秒针的画笔

secondpen.setWidth

(1);

secondpen.setColor(Qt:

mypainter.setPen(secondpen);

mypainter.rotate(6.0*time.second());

mypainter.drawConvexPolygon(secondHand,4);

//mypainter.drawLine(0,0,0,-120);

//画数字

for(inti=1;

13;

i++)

QStringnum=QString:

number(i);

//mypainter.rotate(30.0);

//旋转30度

//mypainter.drawText(0,-120,num);

mypainter.rotate(i*30.0);

mypainter.translate(0,-125);

mypainter.rotate(-i*30.0);

mypainter.drawText(-4,0,num);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1