当前位置:文档之家› 基于Qt的嵌入式终端程序应用本科毕业设计——记事本与电子相册

基于Qt的嵌入式终端程序应用本科毕业设计——记事本与电子相册

基于Qt的嵌入式终端程序应用本科毕业设计——记事本与电子相册
基于Qt的嵌入式终端程序应用本科毕业设计——记事本与电子相册

~~~~~~~~学院

毕业论文(设计)

题目基于Qt的嵌入式终端应用程序开发

学生姓名

学号

指导教师

系部名称

专业班级

完成时间

~~~~~~~学院教务处制

本科毕业论文(设计)

基于Qt的嵌入式终端应用程序开发

学生姓名:

系部名称:

专业名称:

指导教师:

毕业论文(设计)作者声明

1.本人提交的毕业论文(设计)是本人在指导教师指导下独立进行研究取得的成果。除文中特别加以标注的地方外,本文不包含其他人或其它机构已经发表或撰写过的成果。对本文研究做出重要贡献的个人与集体均已在文中明确标明。

2.本人完全了解湖南第一师范学院有关保留、使用学位论文的规定,同意学院保留并向国家有关部门或机构送交本文的复印件和电子版,允许本文被查阅、借阅或编入有关数据库进行检索。同意湖南第一师范学院可以采用影印、打印或扫描等复制手段保存和汇编本文,可以用不同方式在不同媒体上发表、传播本文的全部或部分内容。

3.湖南第一师范学院在组织专家对毕业论文(设计)进行复审时,如发现本文抄袭,一切后果均由本人承担,与学院和毕业论文指导教师无关。

作者签名:日期:二O一年月日

摘要

随着信息产业的发展,嵌入式产品变得越来越成熟,同时,日常生活对嵌入式产品的实用性、美观性和视听娱乐性提出了更高的要求。手持式的嵌入式产品中良好的人机交互界面成了嵌入式系统设计的一项关键技术,各种嵌入式终端都需要一个图形化的人机接口界面。记事本和电子相册是嵌入式系统开发出的基本产品,利用嵌入式终端开发出一种界面美观、功能丰富、交互性好的记事本和电子相册,具有一定的实用意义和价值。

论文的目的是设计和实现嵌入式终端下的记事本和电子相册。论文首先介绍了Linux和Qt的优点,然后分析Qt在软件开发中的编程机制。根据嵌入式终端程序应用的特点对记事本和电子相册进行设计需求分析、具体界面设计和整体结构的设计。本课题实现了记事本的新建、打开、编辑、保存、另存为等功能。电子相册实现了图片放大、缩小、旋转、浏览、前进、后退等功能。

关键词:嵌入式Linux;Qt;嵌入式产品;记事本;电子相册

Abstract

With the development of information industry, the embedded products becomes more and more mature, At the same time, higher requirements were put forward in practicable , aesthestics and audiovisual of daily embedded products. Hand-held embedded products with good human-computer interaction interface has become a key technology of embedded system design. And All sorts of embedded terminal need a graphical man-machine interfaces. Notepad and electronic photo album are basic products which were developed by embedded system. Using the embedded terminal developed a notepad and electronic photo album with beautiful interface ,good interactvity and rich functions has a certain practical significance and value.

The aim of this paper is to design and implement a notepad and an album in the embedded terminal environment.First, I introduce the advantages of Linux and Qt, Then analysised the Qt programming mechanism in software development. I proceeded the design requirement analysis, the specific interface design and the overall structure of design for notebook and electronic photo album according to the characteristics of the embedded terminal program application. This project designed and implemented the functions of notebook such as new file ,open file ,edit file , save file ,save as and other functions as well as the relevant functions of album such as enlarge, minify, rotate, browse, forward and backward based on the algorithms of notepad and album.

Key words:Embedded Linux; Qt;embedded products ;notepad; album

目录

摘要................................................................ I Abstract........................................................... I I 第一章绪论..................................................... - 1 -

1.1课题研究背景和意义....................................... - 1 -

1.2 嵌入式发展的现状与未来.................................. - 1 -

1.2.1展头露角的嵌入式产品............................... - 1 -

1.2.2嵌入式软件技术面临挑战............................. - 2 -

1.2.3软件新技术......................................... - 3 -

1.3 课题研究内容............................................ - 4 - 第二章 Linux和Qt简介.......................................... - 5 -

2.1 Linux主要特性........................................... - 5 -

2.2 Qt开发工具简介.......................................... - 5 -

2.2.1 Qt主要特性........................................ - 5 -

2.2.2 Qt编程机制简介.................................... - 6 - 第三章开发平台简介............................................. - 9 -

3.1 S3C4210开发板简单介绍................................... - 9 -

3.2 主要功能模块介绍....................................... - 10 -

3.2.1 S3C2410处理器简单介绍............................ - 10 -

3.2.2 SRAM .............................................. - 12 -

3.2.3 NOR Flash ......................................... - 12 -

3.2.4 触摸屏............................................ - 12 -

3.2.5 触摸屏接口工作模式................................ - 13 -

3.2.6 USB接口.......................................... - 14 - 第四章嵌入式软件设计.......................................... - 16 -

4.1开发环境搭建............................................ - 16 -

4.2 u-boot烧写............................................. - 17 -

4.3 linux 操作系统定制..................................... - 19 -

4.4 文件系统安装........................................... - 19 -

4.5 驱动程序编写........................................... - 20 -

4.5.1 USB驱动程序编写.................................. - 20 -

4.5.2 key驱动程序编写.................................. - 21 -

4.5.3 flash文件系统驱动................................ - 22 - 第五章嵌入式终端应用程序之记事本和电子相册架构设计............ - 23 -

5.1 记事本架构设计......................................... - 23 -

5.1.1 记事本设计需求.................................... - 23 -

5.1.2 记事本界面设计.................................... - 24 -

5.1.3 记事本结构设计.................................... - 25 -

5.2 电子相册架构设计....................................... - 26 -

5.2.1 电子相册设计需求.................................. - 26 -

5.2.2 电子相册界面设计.................................. - 27 -

5.2.3电子相册结构设计.................................. - 28 - 第六章系统测试................................................ - 29 -

6.1记事本系统测试.......................................... - 29 -

6.2电子相册系统测试........................................ - 31 - 第七章总结与展望.............................................. - 33 - 参考文献....................................................... - 35 - 致谢.......................................................... - 36 - 附录........................................................... - 37 -

第一章绪论

1.1课题研究背景和意义

随着嵌入式产品的普及应用,产品要求嵌入式系统具有网络和图形功能。由于具有强大的网络功能以及低成本,利用源代码开放的Linux搭建的嵌入式操作系统得到越来越广泛的应用。其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片,包括Strong ARM (Advanced RISC Machines, 先进RISC机器),MIPS(Million Instructions Per Second,每秒百万条指令)和Power PC(personal computer,个人计算机)等。Linux操作系统可以使用一个功能完备的高可靠、高性能、可配置的轻量级系统。

Qt之所以可以支持跨平台通用软件的开发主要在于其源代码实现了跨平台特性,它可以使用同一个源程序在不同的平台上进行编译链接然后生成目标代码,运行效果也与之前一样。这种方法充分实现了跨平台运行。这种基于源代码的跨平台特性不仅可以发挥各个平台的特点,发挥多平台的优势也可以在新的平台上实现原有的功能,降低了开发的成本,同时也可以改进原有代码的缺陷,使软件质量得到提高,从而延长了软件的生命周期。所以,研究基于Qt的嵌入式中断程序应用是一个非常有意义的课题,具有重要的商业价值[2]。

1.2 嵌入式发展的现状与未来

1.2.1展头露角的嵌入式产品

随着科技的发展,嵌入式技术也慢慢标的成熟,其产品已经深入到生活的各个方面,例如:全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家庭起居。这些产品为嵌入式带来了巨大的商机[3]。利用嵌入式开发出来的产品大量运用到人们的日常生活之中,交换机、路由器和Modem (Modulator &DE Modulator,调制解调器)沟通了信息的高速公路,机器人、家用汽车的电子系统以及构建CIMS(Computer Integrated Manufacturing Systems,计算机集成制造系统)的DCS(Dorsal Column Stimulator,脊柱刺激器)都有嵌入式的产品。信息家电(Internet Appliances)、电子商务、手机、电话、多媒体产品、电子阅读机都是最有时代特性的嵌入式产品。由此可见,嵌入式产品的浪潮已经开始冲击人类的生活,对人们的生活产生了巨大的影响,也推动着社会科技的进步。

1.2.2嵌入式软件技术面临挑战

互联网时代的嵌入式产品为商品市场拓展了美好的前景,也为社会注入了生命力,可是,时代的发展对信息的要求越来越高,哪一种产品能够能够拥有强大的信息处理能力便会在竞争中取胜,这就为嵌入式软件技术带来了新的巨大挑战。其面临的挑战主要有[5]:

(1)对强大开发工具和支持操作系统的需求

随着因特网技术的成熟,ICP(Internet Content Provider, 在互联网上提供内容服务与提供电子商务的厂商)和ASP(Active Server Page,动态服务器主页)在网上提供的信息内容日趋丰富、应用项目多种多样。日常生活所用的电饭煲、微波炉、电磁炉、电冰箱、手机功能变得越来越强大,其内部结构也随之变得越来越复杂,为了满足日益升级的应用功能,这就要求嵌入式处理器例如32位、64位RISC(Reduced Instruction Set Computing,精简指令集)芯片或信号处理器DSP (Digital Signal Processing, 数字信号处理)具备更加强大的处理信息能力;多任务编程技术和交叉开发技术以及简化应用程序设计等都对嵌入式应用软件提出了更高的要求[14]。

(2)网络通用接口的需求

21世纪是网络的世纪,面对联网的要求,嵌入式的设备必需配有通信接口以实现上网功能,相应的需要TCP/IP(Transfer Control Protocol/ Internet Protocol,传输控制协议/网际协议)协议簇软件的支持,新一代嵌入式设备还需具备IEEE1394(苹果公司开发的串行标准)、USB(Universal Serial Bus Intel,公司开发的通用串行总线架构)、CAN(Controller Area Network, 控制器局域网络)、Bluetooth(蓝牙)或IrDA(Infrared Data Association,红外数据协会)通信接口来满足一些互相关联器具的要求。除此之外,为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML(Hypertext Markup Language,超文本链接标示语言)、WML(Wireless Markup Language, 无线标记语言)等[6]。

(3)电子设备小型化、微功耗和低成本的需求

为了实现电子设备的小型化、微功耗和低成本,而又不降低设备的相应性能和对信息的处理能力,要求嵌入式设备选用最佳的编程模型还有不断改进机器内部的算法结构,这对嵌入式提出了巨大的挑战。

(4)多媒体人机界面的需求

人们之所以喜欢一种电子产品很大程度上在于其精巧的人机结合的亲和力。手写文字输入、语音拨号、收发电子邮件以及彩色的图形图像的设计都是为了满足更加贴近人们的需求而开发的,可是自然的人机交互界面,人们与信息终端交互要求以GUI屏幕为中心的多媒体界面的开发升级对于嵌入式依旧是一个有待努力的短板。

1.2.3软件新技术

(1)行业性开放系统和自由软件技术

面对当今日趋激烈的国际市场竞争态势,走行业开放系统和自由软件技术是嵌入式软件技术发展和抢占先机的快捷通道。实现软件重用、构建兼容、维护方便可以增强产品的竞争力,国际上一些自由软件的发展对嵌入式软件产业产生了深远的影响,GPL(General Public License,GUN通用公共许可证)概念和GNU(Grantor Underwritten Notes,银团承担票据)软件在日常生活、生产的应用推动了嵌入式软件的发展,也为我国嵌入式产业的发展提供了良好的机遇和条件[5]。

(2)IP构件库技术的出现

嵌入式系统实现的最高形式是单一芯片系统(SOC,System On Chip),而SOC(System on Chip,片上系统)的核技术是IP(Intellectual Property Kernels,知识产权核)构件。IP核有硬件核、软件核和固件核,硬件核主要指8/16/32/64位MPU(Micro Processor Unit,微处理器)核或DSP核。硬件提供商以数据软件库的形式,将其久经验证的处理器逻辑和芯片版图数据,供EDA(Electronic Design Automatic,电子设计自动化).工具调用在芯片上直接配置MPU/DSP功能单元;而软件核则是软件提供商将SOC所需的RTOS(Real Time Operating System,实时操作系统)内核软件或其它功能软件,如通信协议软件,FAX功能软件等构件标准API方式和IP核构件形式供IDE(Integrated Drive Electronics,电子集成驱动器)和EDA(Electronic Design Automation,电子设计自动化)工具调用制成FLASH(fast large area scan hardware,快速大面积扫描硬件)或ROM(Read-Only Memory,只读存储器)可执行代码单元,加速SOC嵌入式系统定制或开发。目前一些嵌入式软件供应商纷纷把成熟的RTOS内核和功能扩展件,以软件IP核构件形式出售,如MICROTEC(扫描仪制造商)的VRTXOC for ARM就是典型例子。正在兴启的IP构件软件技术正为一大批高智小型软件公司提供发展机遇[9]。

(3)无线网络操作系统的出现

未来移动通信网络不仅能够提供丰富的多媒体数据业务,而且能够支持更多功能和更强的移终端设备。为了有效地发挥第三代移动通信系统的优势,许多设备厂商针对未来移动设备的特点努力开发无线网络操作系统(M. Tim Jones, 2008)。

1.3 课题研究内容

我们主要运用嵌入式技术来打造一个功能相对丰富,操作起来简单、快捷,界面美观实用的嵌入式终端应用。其具有支持各种控件、各种图形格式,具有体积小、可裁剪、可移植的的特性,它可以在嵌入式终端运行,对各种平台通用。

本文通过对嵌入式Linux和Qt的分析,在嵌入式Qt的基础上,开发了面向嵌入式终端的记事本和电子相册应用软件。记事本不仅支持英文输入和显示,而且支持中文和日文的显示,还支持记事本文件的浏览、编辑、删除等功能。电子相册不仅支持中、英、日文图片名字的显示,还支持如放大、缩小、旋转等各种方式下的图片浏览。它们体积小,移植方便,适用于掌上电脑、智能电话及一些高端的嵌入式设备中。此外它作为一种小型GUI解决方案,可用于那些对GUI 大小要求苛刻的各种应用系统中。

第二章Linux和Qt简介

2.1 Linux主要特性

Linux是个完全内存保护、以Unix核心为基础类似于多用户、多任务操作系统多任务多进程的系统。其程式源代码向大众公开,任何人都可以修改并在通用公共许可证GNU(General Public License)下发行,大家都可以对操作系统进行定制,同时由于有GPL的控制,公众开发并发行的所有代码与视图窗口都可以相互兼容,该系统便不会分裂。该系统可以支持现有的大部分芯片,例如:X86,Alpha,SPARC(SUN公司的工作站系统),MIPS,PPC(Power PC的缩写),ARM,NEC等。当Linux用户遇到困难时,可以通过互联网向所有的Linux开发者请教。众多用户开发的gcc、g++都可以在Linux系统下分享,其他开发者有人容易得到。除此之外,Linux还集成了Unix用户所熟悉的开发工具,所以,Unix上几乎所有的软件都可以移植到Linux上运行,这就使得Linux使用得更方便。另外,Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。所有的这些优点让Linux更受用户的青睐[4]。

Linux的跨平台特性使得众多的研究项目都选择Linux作为开发工具,通过Linux方便的开发工具开发完后移植到其他平台进行应用,这加快了整个项目中软件与硬件的开发过程。Linux具有许多其他系统所不具有的优点,例如,因为Linux是集公众的智慧开发的,其不受商家的控制,所以研究者在进行开发的时候不需要向公司付费购得许可证。Linux还有另外一个巨大的优点,那就是其免费的源代码,这可以大量的节省开发费用。为了符合当今网络世界的发展趋势Linux内部还集成了网络支持,使用户更为方便。由于Linux的高度模块化,这使用户可以便捷地添加所需要的各种部件。Linux系统安装在台式机上以后,该系统便走进了千家万户,日趋广泛。

基于Linux的杰出特点与优势,当今社会的主流与趋势是Linux,其蕴藏的巨大商业价值必然给信息也电子产业甚至是社会生活带来巨大的冲击也会带来巨大的机遇。Linux操作系统将为嵌入式产品创造辉煌的未来。

2.2 Qt开发工具简介

2.2.1 Qt主要特性

Qt支持Unix和Linux系统,为了使开发者更加方便快捷,Nokia发布了Windows版了Qt,其在Windows下运行不需要占用太大内存,比Linux下运

行更节省内存。Qt内部包含了许多开发工具,Linux下的KDE环境也是基于Qt 开发而成的。其内部开发工具有:Qt/X11、基于Frame buffer(帧缓冲区)的Qt/Embedded、快速开发工具Qt Designer以及国际化工具Qt Linguist(Qt语言学家)等。

Qt的主要特点是面向对象,容易扩展,对各个模块进行了良好的封装,使各个模块都具有较好的可重用性,它还允许真正的组件编程;其优良的跨平台特性使用Qt类编写的程序也可以在其他平台上编译、运行,使跨平台开发变得容易。对于窗口与窗口,界面与界面之间的通信,Qt没有使用与其他软件所采用的函数回调方法,其采用了一种全新的并可选的对象间通信机制通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效,这种通信方式叫做“信号与槽”。Qt所具有的的以上各种优点使得各个组件之间的协同工作变得简单,非常适合真正的构件编程。此外,Qt是直接基于X lib ( X Window System协议)的,不依赖Motif(开放软件基金会的图形接口) 工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高[10]。

2.2.2 Qt编程机制简介

(1)Qt系统的信号与槽机制

在图形用户界面编程的时候,我们总希望一个窗口部件的变化能够引起其他窗口部件的响应,我们更希望任何一类的对象可以和其他对象进行通信。Qt之前的工具包在进行窗口通信的时候使用的是一种叫做回调的通讯方式。回调是指一个函数的指针,在通信的时候通常是把一个函数的指针传递给处理函数,而处理函数则在适当的时候调用回调。但是,回调有两个主要缺点,第一,在进行回调的时候我们无法确定处理函数使用了正确的参数,这样便容易导致系统崩溃。第二,回调是一种将图形用户接口的功能元素紧紧绑定的通讯方式,这样很难将开发进行独立分离。

信号与槽是Qt的中心特征,也是其区别于其他工具包的主要特点。Qt的信号与槽机制与其他通讯机制是不同的,我们在进行Qt窗口设计的时候要实现窗口功能就需要进行信号与槽的配置。Qt的窗口部件预先定义了许多信号,我们在设计的时候需要对自己要用的信号进行处理,我们则可以通过继承来加入我们自己的信号,信号与槽设定好以后,当对象内部状态发生改变后,信号就被发射出去。当一个信号被发射出去,与它链接的槽就会被执行,好比调用一个实现设定好的函数一样。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路,

当所有的槽都返回后发射的信号也将返回。信号与槽的运作不需要类与类之间了解明细,这样我们开发出来的代码便具备了较高的可重用性。

信号与槽的运作可以简化为一下实例:假设类X的状态发生变化需要另一个对象Y响应,执行类Y的成员函数slot()用来处理这种变化。所谓的信号是指类X所定义的一个成员函数,例如signal(),当X发生变化的时候,对象X将状态信息封装在该函数的参数中,调用该函数。所谓的槽也就是类Y的一个成员函数,比如上述的slot()。我们使用Qt提供的Q Object::connect()函数将一个信号函数与槽绑定,当函数被调用时,与其一同绑定的槽函数便会被调用,这是一种高效灵活的处理方式。开发人员在进行软件设计的时候只需要指定一个类含有哪些信号函数和那些槽函数,Qt自带的一种处理信号与槽的机制会自动来处理信号与槽函数的绑定,一个信号被调用时,与其绑定的槽函数相应被调用,而且一个信号允许与多个槽进行绑定,Qt会执行所有与该信号绑定的槽函数[11]。

总体来看,信号和槽构成了一个强有力的组件编程机制。

如果一个类要使用信号与槽机制,它就必须是从Q Object或Q Object的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C++编译器。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽(Andrew Krause,2007) 。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。一个private slots包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。

(2)Qt元对象系统

Qt中的元对象系统是一个基于下列三类:Q Object类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(MOC),用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性的系统。

MOC读取C++源文件。如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。

除了提供对象间通讯的信号和槽机制之外(介绍这个系统的主要原因),Q Object中的元对象代码实现其它特征:

1)class Name()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持。

2)inherits()函数返回这个对象是否是一个继承于Q Object继承树中一个特定类的类的实例。

3)t r ( )和trUtf8( ) 两个函数是用于国际化中的字符串翻译。

4)set Property()函数和property()函数,这两个函数是用来通过名称动态设置和获得对象属性的。

5)meta Object()函数返回这个类所关联的元对象。

虽然使用Q Object作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。根据元对象系统的观点,一个没有元代码的Q Object的子类和它含有元对象代码的最近的祖先相同。举例来说就是,class Name()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。故强烈建议Q Object 的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性( Jonathan Co r bet , 2005)[15]。

(3)跨平台特性

1)Qt支持各种操作系统,例如:Microsoft Windows 95/98、Microsoft Windows NT、Linux、Solaris、SunOS、HP-UX、Digital UNIX(OSF/、Tru64)、IRIX FreeBSD BSD/OS、SCO、AIX、OS390和QNX等;

2)Qt 是一个跨平台的C++图形用户界面应用程序框架;它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。

3)Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。

第三章开发平台简介

3.1 S3C4210开发板简单介绍

Samsung 公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。

它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了一种叫做Advanced Microcontroller Bus Architecture(AMBA) 新型总线结构。S3C2410A的显著特性是它的CPU核心,是一个由Advanced RISC Machines(ARM)有限公司设计的16/32位ARM920T RISC处理器。ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。这一结构具有独立的16KB 指令Cache和16KB数据Cache,每个都是由8字长的行(line)构成。

通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了为系统配置额外器件的需要。本文档将介绍S3C2410A中集成的以下片上功能:

● 1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;

●具备16KB的I-Cache和16KB的D-Cache/MMU;

●外部存储控制器(SDRAM 控制和片选逻辑)

●LCD 控制器(最大支持4K 色STN 和256K 色TFT)提供1 通道LCD 专用

DMA。

● 4 通道DMA 并有外部请求引脚。

● 3 通道UART(IrDA1.0,16 字节TX FIFO ,和16 字节Rx FIFO)/2 通道SPI ● 1 通道多主IIC-BUS/1 通道IIS-BUS 控制器。

●兼容SD 主接口协议1.0 版和MMC卡协议2.11兼容版。

● 2 端口USB 主机/1 端口USB 设备(1.1 版)

● 4 通道PWM 定时器和1 通道内部定时器

●看门狗定时器

●117个通用I/O 口和24 通道外部中断源。

●功耗控制模式:具有普通,慢速,空闲和掉电模式。

●8 通道10 比特ADC 和触摸屏接口

●具有日历功能的RTC

●具有PLL 片上时钟发生器

图3-1 S3C4210开发板开发平台

3.2 主要功能模块介绍

3.2.1 S3C2410处理器简单介绍

S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用FBGA 封装,采用0.18um制造工艺的32位微控制器。该芯片集成了丰富的功能单元,其功能单元如下:

◆内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB指令Cache,MMU。

◆内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。

◆ LCD控制器,一个LCD专业DMA。

◆ 4个带外部请求线的DMA。

◆ 3个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPI

◆一个多主I2C总线,一个I2S总线控制器。

◆ SD主接口版本1.0和多媒体卡协议版本2.11兼容。

◆两个USB HOST,一个USB DEVICE(VER1.1)。

◆ 4个PWM定时器和一个内部定时器。

◆看门狗定时器。

◆ 117个通用I/O。

◆ 56个中断源。

◆ 24个外部中断。

◆电源控制模式:标准、慢速、休眠、掉电。

◆ 8通道10位ADC和触摸屏接口。

◆带日历功能的实时时钟。

◆芯片内置PLL。

◆设计用于手持设备和通用嵌入式系统。

◆ 16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。

◆带MMU的先进的体系结构支持WinCE、EPOC32、Linux。

◆指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小了对主存储器带宽和性能的影响。

◆ ARM920T CPU核支持 ARM调试的体系结构。

◆内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。

S3C2410的引脚图如3-2所示。

图3-2 S3C2410引脚图

3.2.2 SRAM

SRAM(Static RAM)静态随机存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。它也由晶体管组成。接通代表1,断开表示0,并且状态会保持到接收了一个改变信号为止。这些晶体管不需要刷新,但停机或断电时,它们同DRAM一样,会丢掉信息。SRAM的速度非常快,通常能以20ns或更快的速度工作。一个DRAM存储单元仅需一个晶体管和一个小电容,而每个SRAM单元需要四到六个晶体管和其他零件。所以,除了价格较贵外,SRAM芯片在外形上也较大,与DRAM相比要占用更多的空间。由于外形和电气上的差别,SRAM和DRAM是不能互换的[12]。

3.2.3 NOR Flash

NOR Flash的特点是芯片内执行(XIP, execute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

其电路图如图3-3所示。

图3-3 NOR Flash 电路图

3.2.4 触摸屏

图3-4是S3C2410A上的A/D转换器和触摸屏接口的功能框图。这个A/D转换器是一个循环类型的。

图3-4 S3C2410A的A/D转换器和触摸屏接口电路图

AIN[7]连接触摸屏的X+引脚,而AIN[5]连接触摸屏的Y+引脚的。要控制触摸屏的引脚(X+,X-,Y+,Y-),就要应用4个外部晶体管,并采用控制信号n YPON, YMON, n XPON 和XMON来控制晶体管的打开与关闭。

3.2.5 触摸屏接口工作模式

(1)普通转换模式

普通转换模式(AUTO_PST = 0,XY_PST = 0)是用作一般目的下的ADC转换。这个模式可以通过设置ADCCON和ADCTSC来进行对AD转换的初始化;而后读取ADCDAT0(ADC数据寄存器0)的XPDATA域(普通ADC转换)的值来完成转换。(2)分离的X/Y轴坐标转换模式

分离的X/Y轴坐标转换模式可以分为两个转换步骤:X轴坐标转换和Y轴坐标转换。X轴坐标转换(AUTO_PST=0且XY_PST=1)将X轴坐标转换数值写入到ADCDAT0寄存器的XPDATA域。转换后,触摸屏接口将产生中断源(INT_ADC)到中断控制器。Y轴坐标转换(AUTO_PST=0且XY_PST=2)将X轴坐标转换数值写入到ADCDAT1寄存器的YPDATA域。转换后,触摸屏接口将产生中断源(INT_ADC)到中断控制器。(3)自动(连续)X/Y轴坐标转换模式。

自动(连续)X/Y轴坐标转换模式(AUTO_PST=1且XY_PST= 0)以下面的步骤工作:触摸屏控制器将自动地切换X轴坐标和Y轴坐标并读取两个坐标轴方向上的坐标。触摸屏控制器自动将测量得到的X轴数据写入到ADCDAT0寄存器的XPDATA

Qt嵌入式开发环境的建立

Qt/Embedded嵌入式开发环境的建立 一.开发环境 (1)Red Hat Linux 9 (2)Linux Kernel 2.6.14 (3)qt-x11-2.3.2.tar.gz (Qt开发包) (4)qt-embedded-2.3.10-free.tar.gz (Qt/Embedded开发包) (5)tmake-1.13.tar.gz (自动创建Makefile文件的工具) (6)gcc-2.95 (C编译器,RH9自带) 二.解压安装包并设置环境变量 (如下均假设在/root/qte目录下进行) (1)安装tmake: #cd ~/qte #tar zxvf tmake-1.13.tar.gz #export TMAKEDIR=$PWD/tmake-1.13 (2)安装qt: #cd ~/qte #tar zxvf qt-x11-2.3.2.tar.gz #export QT2DIR=$PWD/qt-2.3.2 (3)安装qte: #cd ~/qte #tar zxvf qt-embedded-2.3.10-free.tar.gz #export QTEDIR=$PWD/qt-2.3.10 三.编译Qt和Qt/Embedded (1)编译Qt: #cd $QT2DIR //设置环境变量 #export TMAKEPA TH=$TMAKEDIR/lib/linux-g++ #export QTDIR=$QT2DIR #export PATH=$QTDIR/bin:$PA TH //将Qt库加入到系统共享库中 #ldconfig $QTDIR/lib //开始编译 #make clean //configure命令对Qt进行编译设置,其包含很多选项,可通过./configure –help //来获取详细的帮助信息。 #./configure -no-xft –system-jpeg #make //将uic工具复制到Qt/Embedded目录中,可覆盖原文件 #cp bin/uic $QTEDIR/bin/ (2)编译qvfb: //qvfb工具用来生成Virtual Frame Buffer,它可以模拟在嵌入式开发板上的显示 //状况,如果在qvfb中模拟运行没有问题的话,就可以直接通过交叉编译在

java 记事本程序设计报告

Xxx学校 JAVA程序设计课程设计报告 课题: 记事本 姓名: 学号: 同组姓名: 专业班级: 指导教师: 设计时间

目录 一、系统描述 (3) 二、分析与设计 (4) 1. 分析 (4) 2. 功能模块划分 (4) 3. 功能模块流程图 (5) 4. 各模块的关键代码 (5) 三、系统测试 (7) 四、心得体会 (10) 五、参考文献 (10) 六、附录 (11)

一、系统描述 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的eclipse开发工具。

java记事本课程设计论文附源码

设计题目:记事本课程设计 专业:电子信息科学与技术 班级:电子1202班 学号:20121210606 姓名:王鹏 2015 年7月

XXX学院本科学生课程设计任务书

摘要 目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。该程序主要用到了Java swing和事件监听等。 关键词记事本程序,java语言,Java swing

目录 摘要 (1) 1 需求分析 (3) 1.1需求分析 (3) 1.2功能设计 (3) 2 概要分析 (4) 2.1概要设计思想 (4) 2.2程序运行界面 (4) 2.3程序模块说明 (4) 2.4流程图 (5) 2.5程序相关说明 (6) 3 程序详细设计与分析 (8) 3.1构建菜单栏及其下拉菜单 (8) 3.2“文件”菜单操作的事件监听 (8) 3.3“编辑”、“格式”等菜单的事件监听 (10) 3.4异常处理 (11) 4 测试分析 (12) 5 源程序清单 (15) 结论 (22) 参考文献 (23)

1 需求分析 1.1需求分析 现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。 1.2功能设计 本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: 1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。 2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。 4、“格式”菜单中有“自动换行”和“字体”两个子菜单。 5、“查看”菜单只是显示状态栏。 6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。

JAVA简单记事本程序设计实验报告(带源码).

JAVA程序设计 实验报告 院系:信息工程系 专业:计算机应用技术 班级:11计算机01班 姓名:Civen 任课教师:XXX 实验题目:JA V A简单记事本程序设计

目录 目录 (1) 一、引言 (2) 1.1 课程设计目的 (2) 1.2 题目说明 (2) 1.3 开发工具介绍 (2) 二、总体设计 ......................................................................... - 4 - 2.1系统开发平台.............................................................. - 4 - 2.2 系统流程图 (4) 2.3功能结构图.................................... 错误!未定义书签。 2.4数据库设计.................................... 错误!未定义书签。 三、详细说明 (4) 3.1 系统实施................................................................... - 11 - 四、系统的调试和运行 (9) 五、课程设计总结 (9) 六、参考文献 (9) 附录(源程序代码) (10)

一、引言 1.1 课程设计目的 1) 复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; 2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和 实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力; 3) 培养学生在项目开发中团队合作精神,创新意识及能力。 1.掌握窗口、菜单等高级组件的应用。 2.掌握Java Swing的使用方法。 3.了解GUI应用程序的创建过程与方法。 1.2 题目说明 课题:学生成绩管理 4.功能要求: 编写一个简单记事本程序,要求包含以下菜单项 文件新建、打开、保存、退出 编辑剪切、拷贝、粘贴、查找 帮助关于 5.实现文件和编辑菜单里的功能 1.3 开发工具介绍 Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同

嵌入式系统之基于QT的简单计算器

嵌入式系统课程设计报告 题目:基于QT的简单计算器 专业:计算机科学与技术 班级: 姓名: 学号: 指导老师: 日期:2012-12-26 第一章前言 设计背景 计算器(calculator;counter)一般是指“电子计算器”,计算器是能进行数学运算的手持机器,拥有集成电路芯片,其结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑)。计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,虽然功能较单一,但因其操作模式的方便快捷和价格的低廉,携带方便等特点,已经被广泛应用于工程、学习、商业贸易等日常生活中,极大的方便了人们对于数字的整合运算,成为人们生活和办公中的必备品之一,深得使用者的青睐。 设计目的 本程序是基于linux下的嵌入式开发,所用软件为QT Creator,程序虽然简单,但是通过本程序的设计,可以进一步了解嵌入式系统开发工具以及熟悉linux环境下的常用命令,为以后进入嵌入式领域打下一定的基础。 通过该计算器程序软件的设计,培养独立思考、综合运用所学有关相应知识的能力,更好地巩固《C++程序语言设计》和《高级程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,体验理论与实践相结合的过程。

第二章功能需求分析 功能描述 本次设计的计算器在功能上大致与Windows系统自带的计算器程序相似,对于所设计的科学计算器,其功能大致为可以进行加(+)、减(-)、乘(*)、除(/)、简单算术计算。由于接触QT时间还不太久,所以目前只能简单地实现这些功能,相信随着以后逐步的了解,本程序将实现更多的功能。 第三章开发工具简介 QT简介 由于本次设计的小程序是用QT Creator所设计的,所以我觉得有必要先介绍下QT开发工具的背景。 Qt是一个1991年由奇趣科技开发的跨平台C++图形界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。 QT所具有的优势是:优良的跨平台特性,Qt支持下列操作系统: Microsoft Windows 95/98,Microsoft Windows NT,Linux,Solaris,SunOS,HP-UX,Digital UNIX (OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX 等等。 面向对象:Qt 的良好封装机制使得Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为signals/slots 的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。 丰富的API:Qt 包括多达250 个以上的C++ 类,还提供基于模板的collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。支持2D/3D 图形渲染,支持OpenGL大量的开发文档。 第四章详细设计过程 开发环境的搭建 本次所用系统环境为Ubuntu LTS,内核为Ubuntu搭建QT环境大致过程为: 1.安装g++,ubuntu默认是不带g++的,如果不安装的话,后面是无法进行桌面版的qt应用程序进行编译的,在终端中执行以下命令: sudo apt-get install g++ 2. Qt桌面版的安装 3.安装arm-linux-gcc (配置环境变量gedit /.bashrc 添加路径 export PATH=$PATH:/opt/FriendlyARM/toolschain/) 使配置文件立即生效:source /.bashrc或者注销logout 最好重启

QT中的网络编程实例

QT中的网络编程实例 Qclient.h /**************************************************************************** ** $Id: /sample/10/qclient.h 2.3.2 edited 2004-10-12 $ ** ** Copyright (C) 2004-2005 OURSELEC AS. All rights reserved. ** https://www.doczj.com/doc/795135180.html, ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef QCLIENT_H #define QCLIENT_H #include #include #include #include #include #include #include #include #include class QClient : public QWidget { Q_OBJECT public: QClient(QWidget *parent = 0, const char *name = 0); private slots: void closeConnection(); void sendToServer(); void connectToServer(); void socketReadyRead(); void socketConnected(); void socketConnectionClosed(); void socketClosed(); void socketError(int); private: QSocket *socket; QTextView *infoText;

JAVA记事本软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 记事本软件设计 学生姓名:吴林美 学号:2012914211 年级专业:12级教育技术学 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2014年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 记事本功能 (3) 2.3 界面设计 (3) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 输入后的文件保存 (5) 3.2.2 打开文件,显示文件对话框 (6) 3.2.3 文件的修改 (6) 3.2.4 设计总体认识 (7) 3.2.5 程序流程图 (8) 4. 运行结果 (8) 5. 测试分析 (9) 5.1 程序运行情况 (9) 5.2 测试的各个结果 (9) 6. 源程序 (9) 参考文献 (27) 设计总结 (27)

摘要:这是一个界面简单的java记事本,界面友好,能快捷简单地进行操作,可即时记录身边的事,可把它当做标签使用,充分用到日常生活工作中的记事,方便、简洁。可进行文件的打开、保存、另存为和关闭;可进行简单的复制、粘贴、剪切。这是一个简单的文字编辑器,日常生活的大小琐事记录上面,工作行程安排,可当做笔记本使用。方便各国语言使用;界面为纯白色。 关键字:java记事本,记事本类,界面,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的记事本,可以实现简单的文字记事编辑功能,满足日常基本的生活需要和记事需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。

记事本程序说明书

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2012年秋季学期 Java 课程设计 题目:记事本程序 专业班级:计算机科学与技术四班 姓名:杨大武 学号:10240426 指导教师:李睿 成绩:____________________

一、摘要 (1) 二、前言 (4) 三、设计分析 (5) 3.1系统概述 (5) 3.2系统运行环境 (5) 3.3功能需求描述 (5) 四、总体设计 (5) 五、系统的实现 (6) 5.1主界面包括 (6) 5.2完成图5-1程序代码 (8) 六、操作方法与试验结果 (8) 6.1 操作方法 (8) 6.2复制粘贴功能 (9) 6.3实验结果 (10) 七、设计体会 (10) 八、致谢 (11) 九、参考文献 (12) 附录 (13)

一、摘要 随着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机的算法理论基础和软件设计的基础。JAVA是实践性很强的课程。课程设计是加强实践能力的一个强有力手段。要求掌握JAVA的应用、编写、上机调试的基本方法。本次课程设计实现了一个简单记事本系统所需的功能,以及具体的设计步骤。该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,能实现编辑、保存、另存为、查找替换等功能等功能。该程序主要用到了Java swing和事件监听等 在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。 关键词:java , Java swing,事件监听,简单记事本

程序设计基础作业答案

《程序设计基础(C)》作业 第1章C语言的基本构成 一、选择题 1.(A)是构成C语言程序的基本单位。 (A)函数(B)过程 (C)子程序(D)文件 2.(B)是C语言提供的合法的数据类型关键字。 (A)Float (B)signed (C)integer (D)Char 3.以下选项中不合法的用户标识符是(A)。 (A)abc.c (B)file (C)Main (D)PRINTF 4.以下选项中不合法的用户标识符是(AB)。 (A)l23 (B)printf (C)A$(D)Dim 5.合法的C语言长整型常数是(A)。 (A)0L (B)5712700 (C)(D) 6.C语言中,要求运算数必须是整型的运算符是(A)。 (A)% (B) / (C)< (D)! 7.以下选项中正确的整型常量是(B)。 (A)12. (B)-20 (C)l,000 (D)0458 8.以下选项中不正确的实型常量是(B)。 (A)-1 (B). (C)(D)456e-2 9.C语言中运算对象必需是整型的运算符是(D)。 (A) \ (B) + (C) * (D) % 二、程序调试题 1.编辑、调试以下程序 步骤1:在Visual C++环境下新建文件可用[开始]→[程序]→[Microsoft Visual C++] →[Microsoft Visual C++] →[文件] →[新建]→[文件] →[C++ Sourse File],输入文件名,

z=x+y; return z; } int main( ) { int add(int,int); /* 函数的说明,告诉系统在主函数中要调用add函数 */ int a,b,c; /* 变量的定义*/ scanf("%d %d\n",&a,&b); c=add(a,b); /* 函数调用 */ printf("%d+%d=%d\n",a,b,c); /* 调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */ } 请思考文件由几个函数构成? 由个函数构成 调用了那几个系统函数? 调用2个系统函数,分别是scanf和printf 此程序中用到了哪几个保留字?哪几个用户自定义标识符? 保留字:int,return 自定义表示符:z,x,y,a,b,c 步骤3: 编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。 20+40=60 2.编辑、调试以下程序 步骤1:在Visual C++环境下新建文件可用[开始]→[程序]→[Microsoft Visual C++] →[Microsoft Visual C++] →[文件] →[新建]→[文件] →[C++ Sourse File],输入文件名步骤2:在文本编辑器中输入以下C程序 #include<> /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/ #include<1-2-2> int main( ) { int and(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int or(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int a,b,c; /* 变量的定义*/ scanf("%d %d",&a,&b); c=and(a,b); /* 函数调用 */ printf("%d && %d=%d\n",a,b,c); /*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */ c=or(a,b); /* 函数调用 */ printf("%d || %d=%d\n",a,b,c); } int and(int a,int b) {

C++记事本课程设计

课程设计 本科生通用 题目:编程类课程设计 设计项目:记事本程序设计 专业班级: 学号: 姓名: 成绩:导师签字: 2014 年12月11日

任务书 设计题目: 记事本程序设计 要求: 设计一个软件记事本,能够记录用户输入的信息,并能实现保存输入信息,查看备忘信息。该记事本具有输入、修改、删除、查看信息的功能。具有日历功能,可以根据时间,标记备忘信息,方便用户使用。 日程安排: 12月8日:确定设计题目,查阅相关资料 12月9日:根据功能设计整体方案,划分系统各个模块功能 12月10日:建立工程,编写程序实现设计方案的功能 12月11日:调试程序,完善界面设计,书写设计报告

目录 第一章概述 (3) 1.1 设计目的 (3) 1.2 设计背景 (3) 第二章设计过程 (4) 2.1 设计框图 (4) 2.2 设计步骤 (4) 2.2.1 建立工程 (4) 2.2.2 向对话框添加控件 (4) 2.2.3 添加变量 (5) 2.2.4 编程 (5) 2.2.5 调试运行 (5) 设计结论 (7) 参考文献 (7) 附件(程序) (8)

第一章概述 1.1设计目的 使学生熟悉VC++6.0编译环境,了解面向对象的编程策略。 深入了解和掌握MFC原理与方法。 提升学生的编程技巧及编程能力。 以实际问题为切入点,锻炼学生运用VC++编程解决实际问题的能力。 培养学生的设计创新意识。 1.2设计背景 1.2.1 软件记事本简介 记事本是一个很有用的程序,主要操作包括对文件的储存,修改等,有编辑功能:包括剪贴、复制等,有对字体修改等。记事本可以提醒用户一些重要的事项,可以方便用户的生活。 1.2.2 VC++ 6.0简介 Visual C++6.0由Microsoft开发, 它不仅是一个VC++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。 1.2.3 C++语言简介 C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。

基于QT和ARM的嵌入式点菜系统

基于QT和ARM的嵌入式点菜系统 摘要:餐饮企业的传统点菜方式既费时又增加开销,而且经常会出现丢单,漏单的情况的发生。最近流行的点菜宝等系统一方面采用Wince操作系统,增加额外开销,令一方面它们都是服务员手持,顾客面对的还是纸质菜单,虽然说是电子点菜,但是它为我们解决的无非是客人点完菜后服务员不用往厨房跑。从某种意义上说,这些不能称之为真正的电子点菜。在总结以往电子电子点菜的基础上,我们利用S3C2440芯片开发了基于Linux 操作系统和Arm9处理器的电子点菜系统。该系统利用QT进行图形界面设计,利用Sqlite 数据库进行数据存储,依赖TCP/IP网络进行数据传输。 关键词:嵌入式ARM 点菜系统Linux Qt 嵌入式点菜系统是利用计算机技术、网络通信技术、Sqlite数据库,QtGui图形界面设计等,根据当今餐饮企业的需求而设计的餐饮企业智能控制和管理的一种嵌入式系统。 一、嵌入式系统 目前,在嵌入式系统应用领域中,不少人对什么是嵌入式系统不甚了解。有些人搞了十多年的单片机应用,不知道单片机就是一个最典型的嵌入式系统;也有些人在解释什么是嵌入式系统时,不是从定义出发,而是列举了嵌入式系统的一些特点,往往不知所云。因此,有必要从现代计算的发展历史,了解嵌入式系统的由来,从学科建设的角度来探讨嵌入式系统较为准确的定义。 嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。由于嵌入式计算机系统要嵌入到对象体系中,实现的是对象的智能化控制,因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。 通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。

用QT Designer快速开发嵌入式系统gui概要

用QT Designer快速开发嵌入式系统 gui 用QT Designer快速开发嵌入式系统gui 类别:嵌入式系统 用QT Designer快速开发嵌入式系统guiRAD(快速应用程序开发)是一种高效的软件开发形式,可以让用户在极短的时间里创建一个图形化的用户界面。通常情况下,在一张空白的表单上,开发人员可以通过拖拉或点击的方式,在窗口的适当位置上添加一些输入框和按钮等窗口组件。这时,RAD工具 会自动编写和维护代码。而用户所要做的只是确定当点击按钮或选择选单选项时将要发生什么事件。在Linux下,一个非常流行的RAD工具就是Qt Designer。它是嵌入式公司Trolltech的Qt软件包的一个组成部分。如果用户使用的是KDE桌面,那么Qt已经自动安装上了,Qt Designer也很有可能已经被安装好。如果用户的系统没有安装,那么针对不同的版本,可以很方便地找到KDE Development Tools,并安装之。以Red Hat 9.0为例,用户可以从主 选单→系统设置→添加/删除应用程序中选择KDE软件开发,即可完成Qt Designer的安装(如图1所示)。图1 安装Qt Designer创建为了快速地向大家展示一下Qt Designer功能,先创建一个简单的摄氏温度和华氏温度的转换程序。本文里将设计一个简单的GUI,并且添加一些简单的代码来实现温度 的转换。因为是为了展示一下快速的开发过程,而不是一个严谨的软件项目的开发,所以这里不会进行任何的错误检查,也不进行输入检验(也就是检查用户的输入是否为合法的温度形式)、缓冲溢出检查等在日常软件开发中一定要做的步骤。如果用户使用的是KDE,那么选单上应该已经有Qt Designer的图标。不同的发行版,图标的位置会有所不同。如果用户的发行版没有Qt Designer图标,那么可以在命令行模式下输入“designer”命令来启动该开发工具。在Red Hat 9.0中,可以通过点击主选单→编程→更多编程工具→Qt Designer来启动(如图2)。图2 启动Qt DesignerQt Designer首先呈现给用户的是一个New/Open对话框(如图3所示)。因为这里要创建一个C++程序,所以在此选择C++ Project,点击“OK”继续。图3 New/Open对话框选 择一个想要保存文件的位置,并且给出一个文件名,在此使用的文件名是cfconv。注意这里文件名的扩展名一定要是.pro。点击“Save”后,返回到了Project Settings对话框(见图4)。图4 保存文件图5 Qt Designer主窗口现在就已经在Qt Designer主窗口上了(见图5),确保Property Editor 可见。如果它是不可见的,用户可以通过Windows→Views→Property Editor/Signal Handlers选单选项来使其可见(缺省情况下是可见的)。图6 创建一个新的表单图7 更改表单的属性通过选择File→New选单,然后选择Dialog来创建一个新的对话框。这时Qt Designer会创建一个新的空白表单(见图6),用户可以在其上放置输入框和按钮。打开Property Editor(见图7),把name的值改为“cfconvMainForm”,把caption的值改为

QT应用程序设计

南昌航空大学实验报告 二00 一四年五月十四日 课程名称:嵌入式系统设计及应用实验名称:QT应用程序设计 班级:姓名:同组人: 指导教师评定:签名: 一、实验内容 1. 阅读QT主窗口程序helloworld.cpp,然后编译并运行。 2.在helloworld.cpp程序中增加一个名为“hello”的按钮。 3. 编写一个登陆对话窗程序 二、实验步骤 (一)helloword程序 1.我们用File->New菜单来新建工程。 2这里我们选择Qt4 Gui Application。 3下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。 4这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。 5.我们将base class选为QDialog对话框类。然后点击Next。 6点击Finish,完成工程的建立。 7我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的绿色的run按钮或者按下Ctrl+R快捷键运行程序。 (二)登陆对话框程序 1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为 Base class,这样便建立了主窗口 2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中 3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入 框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。 4.将exitBtn的单击后效果设为退出程序,关联如下: 5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写 入一句 void loginDlg::on_loginBtn_clicked()

vb课程设计记事本程序的编写

1 选题的背景与意义 记事本创建的背景 通过一学期的vb课程学习,理解并掌握了许多相关知识,知道了面向对象程序设计的基本概念和可视化程序设计的基本方法。为了更好地掌握与运用vb 中最常用的有关窗体和各种控件的运用、菜单、工具栏、对话框、状态栏、的设计以及文件操作等技术,因此在在学完该课程之后,设计了一个能够编辑编辑文本文档、RichText 文档,其文字处理能力类似于Word的简易记事本。 记事本创建的意义 该记事本具有操作简单,易懂灵活,一目了然的特点,同时由于运用了RichText控件,因此能够打开和编辑任意大的文档,运用起来比windows自带的记事本方便的多。从而为那些计算机技术应用并不熟练但需要使用计算机快速编辑和修改文档的用户提供了便利。同时该程序的编写也使得自己的知识掌握的更见牢固。 2 系统详细设计 主要功能 能够编辑文本文档,其文字处理功能类似于Word。 具有打开、保存、新建和退出文件功能。 具有剪切、复制、粘贴、设置文字的字体以及大小、颜色、对齐等文字编功能。以及字符串的查找功能。 打印功能。

要点的实现既使用技术 首先,在创建程序是应先设置窗体大小和编辑框的大小。 '窗体的加载事件 Private Sub Form_Load() = 0 = 0 = - 4000 = - 5000 = "宋体" '程序运行时字体是宋体 End Sub '设置编辑框的大小和位置 Private Sub Form_Resize() = 60 = 20 = - 100 = - 100 End Sub 第二,程序设计过程中必须先在窗体中添加CommonDialog和RichText控件。 如左图所示。CommonDialog控件的应用使得它提 供了如打开和保存文件,设置打印选项,选择颜 色和字体等操作的一组标准对话框,使我们通过 对话框填写的方式来实现上述操作。RichText控 件的使用是编辑和打开的文件大小不受限制。有 利于文件的编辑。

实验11 QT程序设计及烧写

实验5 QT程序设计及烧写 ●实验目的: 1、掌握QT简单程序的设计方法及步骤。 2、掌握QT资源文件的添加 3、掌握QT多界面的跳转。 4、掌握QT程序的移植方法。 ●实验要求: 理解QT编程的一般方法和程序移植的思路。 ●实验器材: 软件: 1. 安装了Ubunt的vmware虚拟机 2. GEC210 开发板 硬件:PC机一台 ●实验题目及操作步骤: 1、不使用集成开发工具,用纯代码编写第一个QT程序hello, 实现运行效果如下图, 注意:在Linux环境的编译步骤,可以使用qmake –v命令查看QT版本。 qmake –project

qmake make ./hello 2、学习信号和槽的机制,实现单机按钮退出界面。效果如下图所示: 参考代码如下: #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button,SIGNAL(clicked()),&a,SLOT(q uit())); button->show(); return a.exec(); }

3、用集成开发环境实现上题功能。 4、如下图界面上有一个label,两pushbutton。当点击一个pushbutton时,Label显示字符1 点击另一个pushbutton时,label显示字符2 4、添加资源练习,实验效果如下图所示。 设计过程如下所示。

搭建嵌入式QT开发环境

搭建嵌入式QT开发环境 网上看了好多关于Qt开发平台搭建的帖子,但发现上面的帖子都比较旧,是针对Qt旧版本而写的。本人喜欢用较新版的东西,相信新版的东西肯定比旧版的东西好用,果不其然Qt的新版本真的很好用,而且搭建起来更加容易。刚开始接触的时候,Qt的众多版本搞的自己头昏脑涨,什么Qt/x11,Qt /win, Qt/embedded ,Qtopia core,Qtopia等等,真的是丈二和尚摸不着头脑,幸好有网络,上网总能找到自己想要的东西,而且又不需要给予别人回报,当然自己也有些责任共享自己的资料,看来共产主义在互联网已经开始萌芽了,哈哈。先看看Qt的各个版本简介: 1.什么是QT Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致,因而Qt应用的开发和部署与平台无关。 2.什么是Qtopia Qtopia 是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出 PDA或者智能电话。Qtopia实质上依赖Qt/Embedded。 3.什么是Qt/Embedded Qt/Embedded 是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像Qtopia Core说的也是它。最近,奇趣公司又该名字了,它的新名字叫做 qt-embedded-linux-xxxx,看来这个Qt/Embedded的马甲还很多哈。 下面就是搭建Qt开发平台了,我的平台是fedora core 7,需要的Qt版本有两个: qt-x11-opensource-src-4.3.2.tar.gz qt-embedded-linux-opensource-src-4.4.0-rc1.tar.bz2 qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。下面是安装步骤: 1. 解压这两个qt包 a) tar –jxvf qt-x11-opensource-src-4.3.2.tar.gz

C++与Qt编程基础(看资料总结)

C++与Qt编程基础(看资料总结) C++部分: 1.C++编译模式 通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称 作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。 C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件a.cpp中定义了一个全局函数“void a() {}”,而在文件b.cpp中需要调用这个函数。即使这样,文件a.cpp和文件b.cpp并不需要相互知道对方的存在,而是可以分别地对它们进行编译,编译成目标文件之后再链接,整个程序就可以运行了。 这是怎么实现的呢?从写程序的角度来讲,很简单。在文件b.cpp中,在调用“void a()”函数之前,先声明一下这个函数“void a();”,就可以了。这是因为编译器在编译b.cpp的时候会生成一个符号表(symbol table),像“void a()”这样的看不到定义的符号,就会被存放在这个表中。再进行链接的时候,编译器就会在别的目标文件中去寻找这个符号的定义。一旦找到了,程序也就可以顺利地生成了。 注意这里提到了两个概念,一个是“定义”,一个是“声明”。简单地说,“定义”就是把一个符号完完整整地描述出来:它是变量还是函数,返回什么类型,需要什么参数等等。而“声明”则只是声明这个符号的存在,即告诉编译器,这个符号是在其他文件中定义的,我这里先用着,你链接的时候再到别的地方去找找看它到底是什么吧。定义的时候要按C++语法完整地定义一个符号(变量或者函数),而声明的时候就只需要写出这个符号的原型了。需要注意的是,一个符号,在整个程序中可以被声明多次,但却要且仅要被定义一次。试想,如果一个符号出现了两种不同的定义,编译器该听谁的? 这种机制给C++程序员们带来了很多好处,同时也引出了一种编写程序的方法。考虑一下,如果有一个很常用的函数“void f() {}”,在整个程序中的许多.cpp文件中都会被调用,那么,我们就只需要在一个文件中定义这个函数,而在其他的文件中声明这个函数就可以了。一个函数还好对付,声明起来也就一句话。但是,如果函数多了,比如是一大堆的数学函数,有好几百个,那怎么办?能保证每个程序员都可以完完全全地把所有函数的形式都准确地记下来并写出来吗? 2.头文件 很显然,答案是不可能。但是有一个很简单地办法,可以帮助程序员们省去记住那么多函数原型的麻烦:我们可以把那几百个函数的声明语句全都先写好,放在一个文件里,等到程序员需要它们的时候,就把这些东西全部copy进他的源代码中。 这个方法固然可行,但还是太麻烦,而且还显得很笨拙。于是,头文件便可以发挥它的作用了。所谓的头文件,其实它的内容跟.cpp文件中的内容是一样的,都是C++的源代码。但头文件不用被编译。我们把所有的函数声明全部放进一个头文件中,当某一个.cpp源文件需要它们时,它们就可以通过一个宏命令“#include”包含进这个.cpp文件中,从而把它们的内容合并到.cpp文件中去。当.cpp文件被编译时,这些被包含进去的.h文件的作用便发挥了。 需要注意的是,.h文件不用写在编译器的命令之后,但它必须要在编译器找得到的地方(比如跟main.cpp 在一个目录下)。main.cpp和math.cpp都可以分别通过编译,生成main.o和math.o,然后再把这两个目标文件进行链接,程序就可以运行了。 #include: #include 是一个来自C语言的宏命令,它在编译器进行编译之前,即在预编译的时候就会起作用。#include 的作用是把它后面所写的那个文件的内容,完完整整地、一字不改地包含到当前的文件中来。值得一提的是,

相关主题
文本预览
相关文档 最新文档