电子时钟系统设计.docx
- 文档编号:8176825
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:885.08KB
电子时钟系统设计.docx
《电子时钟系统设计.docx》由会员分享,可在线阅读,更多相关《电子时钟系统设计.docx(18页珍藏版)》请在冰豆网上搜索。
电子时钟系统设计
《嵌入式系统》课程设计说明书
电子时钟系统设计
学院:
学生姓名:
指导教师:
职称
专业:
班级:
学号:
完成时间:
湖南工学院嵌入式系统课程设计课题任务书
指导教师
学生姓名
罗朗
课题名称
电子时钟系统设计
内容及任务
一、目标
在GEC210开发板上设计一个基于QT的电子时钟系统来显示当前的系统时间。
二、任务
根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知识,进行电子时钟系统原理设计、硬件系统设计、软件系统设计、创新设计,提高理论知识工程应用能力、系统调试能力、分析问题与解决问题的能力。
主要内容包括:
1.嵌入式交叉开发环境搭建。
2.Linux操作系统的移植。
3.根据需求确定外围模块设计并完成相应驱动开发。
4.应用程序原理及框架设计。
5.Linux下应用程序编写及移植。
6.系统总体功能调试。
7.编写设计说明书。
三、要求
1.本系统显示结果示例如下:
2.显示的时间为开发板当前的系统时间,显示的结果随着系统时间变化而变化。
主要参考资料
[1]马忠梅,ARM&Linux嵌入式系统教程(第3版)[M]。
北京:
北京航空航天大学出版社,2014
[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
#include
#include
#include
#include
#include
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"
#include
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();//获取系统时间
QPaintermypainter(this);//定义画家
mypainter.setRenderHint(QPainter:
:
Antialiasing);//平滑设置
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);//坐标平移
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:
:
blue);//设置画笔颜色
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);//设置画笔颜色
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);//设置画笔颜色
mypainter.setPen(secondpen);
mypainter.save();
mypainter.rotate(6.0*time.second());
mypainter.drawConvexPolygon(secondHand,4);
//mypainter.drawLine(0,0,0,-120);
mypainter.restore();
//画数字
mypainter.save();//保存原有状态
for(inti=1;i<13;i++)
{
QStringnum=QString:
:
number(i);
//mypainter.rotate(30.0);//旋转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();//恢复坐标
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 系统 设计