ATMEGA128单片机的数据实时采集系统 - 图文

更新时间:2024-05-08 21:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

沈阳理工大学学士学位论文

摘 要

随着电子科技的不断发展与进步,电压测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的要求也越来越高,而电压的测量与显示系统甚为重要。本文介绍的重点是电压数据的采集与显示系统,数据采集与通信控制采用了单片机ATMEGA128来实现,硬件部分是以单片机为核心,还包括ISP下载模块,显示模块,复位和晶振部分,还有一些简单的外围电路。8路被测电压通过ATMEGA128自带的模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用LED数码管模块来显示所采集的结果,由相关控制器完成数据接收和显示,c程序编写了更加明了化数据显示界面。本系统主要包括四大模块:数据采集模块、控制模块、显示模块、A/D转换模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,采用了C语言进行编程,开发环境使用相关集成开发环境。开发了显示模块程序、通道切换程序、A/D转换程序。

关键词:单片机;LED;A/D转换;模块显示;电压测量

I

沈阳理工大学学士学位论文

Abstract

Along with the development of electronic technology progress, voltage measurement of electronic fields become broad must grasp of the process, and the accuracy of measurement and collection function requirements, and more and more is also high voltage measurement and display system is very important. This paper focuses on voltage data acquisition and display system, data collection and communication control using modular design, data collection and communication control adopted MCU ATMEGA128, hardware part is, still include singlechip mode - several module, ISP download module, display module, Reset and

part of vibration, and some simple outer circuit. 8 and the voltage to be measured by

ATMEGA128 own mode - and to count the collected data for analog to digital, by SCM processing of data, using a digital display module to show the tube, the related results of collecting data receiving and display controller, C programming and the data showed that the interface. This system mainly including four modules: the data acquisition module, control module, display module, A/D conversion module. Draw circuit principle diagram and the work flow, and debugging, finally completed the system design of hardware circuit. In software programming, the C language program development environment, use the integrated development environment. Develop A display module procedures, channel switching procedures, A/D conversion program..

Key words: SCM, LED, A/D conversion, module display voltage measurements.

II

沈阳理工大学学士学位论文

目 录

引 言……………………………………………………………………………………..…….1 1 绪论………………………………………………………………………………..….……2 1.1 研究背景及其目的意义………………………………………………………..……2 1.2 国内外研究现状…………………………………………………………..…………3 1.3 该课题研究的主要内容……………………………………………………….…….3 2 数据采集总体设计………………………………………………….………………….….5 2.1 系统设计的基本要求……………………………………………………………..…5 2.2 数据采集系统结构功能及简介………………………………………………….….5 2.3 硬件开发工具……………………………………………………………………..…6

2.3.1 Altium Designer6.9简介 ……………………………………………............6 2.3.2 Altium Designer6.9设计理念………………………………………………..6 2.3.3 Altium Designer6.9特点……………………………………………………..7 2.4 软件开发工具………………………………………………………………....…….8

2.4.1 ICCAVR…...…………………………………………….…………..………..8 2.5 SLISP软件………………………………………………….………………………9

2.5.1 软件特点………………………………………….…………………………10 2.5.2 软件使用步骤…………………………………………………………….…10

3 硬件设计……………………………………………………………………………….…12 3.1 CUP选型……………………………………………………………………………12

3.1.1 3.1.2 3.1.3 3.1.4 3.1.5

ATmega128L简介 ...................................................................................... .12 ATmega128L特点 ...................................................................................... .12 定时器\\计数器 ............................................................. 错误!未定义书签。 AVR单片机的中断系统 ............................................................................. 19 可编程I/O端口 ........................................................................................... 20

3.2 直流稳压电源…………………………………………………….………….......…24 3.3 单片机基本模块………………………………………………..………………..…25 3.3.1 ISP下载模块………………………………………………………..............25 3.3.2 复位电路模块…………………………………………………………….....25

3.3.3 晶振模块………………………………………………………………….....26

III

沈阳理工大学学士学位论文

3.3.4 蜂鸣器模块.....................................................................................................27 3.3.5 LED显示模块................................................................................................27 3.3.6 A/D转换模块.................................................................................................29

4 软件设计……………………………………………………………………………….…33 4.1 单片机C语言程序设计技术………………………………………………………33

4.1.1 单片机C语言的主要特点 ........................................................................... 33 4.2 主流程 ....................................................................................................................... 34

4.2.1 整体程序的设计 ........................................................................................... 34

4.2.2 ATmega128函数 ...........................................................................................34

4.2.3 AD转换函数 ................................................................................................. 35

4.3 系统运行 .................................................................................................................... 36

4.3.1 程序下载软件................................................................................................ 36

4.3.2 系统运行结果................................................................................................36 结 论…………………………………………………………………………….…….….…..39 致 谢…………………………………………………………………………………....….…40 参考文献…………………………………………………………………………………...…41 附录A 英文原文………………………………………………………………….……..…42 附录B 中文翻译……………………………………………………………………...……49 附录C 原理图………………………………………………………………………………54 附录D PCB图…………………………………………………………………………..….55 附录E 程序清单……………………………………………………………………………57

IV

沈阳理工大学学士学位论文

引 言

当今,电压采集技术应用范围非常的广阔。通常根据采集电压大小不同而采集装置不同,有些电压采集装置只适合于采集比较大的电压,则有些适用于采集比较小的电压。AVR的ATMEGA128单片机的快速性、可靠性以及易更新性使得它成为完成这一任务的目前很好的选择。利用ATMEGA128单片机设计的模块非常简洁,因为该芯片自身带有AD转换模块,可以将采集的模拟电压信号转换成数字量。

本系统针对电压采集精度的局限性,充分利用ATMEGA128单片机芯片的优越性,设计一种基于单片机的电压采集系统,实现实时测量,并用数码管显示其电压,对于促进电压检测技术的发展有着重要现实意义。

随着计算机技术的快速发展,电压采集装置在工业生产中迅速得到了应用。作为电力产业新领域,电压采集技术显示出强劲的发展势头,在安全生产,家用电器,数据采集等领域发挥出越来越重要的作用,甚至在一些特殊情况下。各种实际应用结果表明,该系统具有很好的应用效果和良好的应用前景。

1

沈阳理工大学学士学位论文

1 绪论

1.1 研究背景及其目的意义

近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。

数据采集系统起始于20世纪50年代,1956年美国最先在军事上研究的数据采集测试系统,目标是测试过程中不依靠相关的测试文件,由非熟练人员进行操作,并且是由测试设备自动控制高速完成测试任务。由于该种数据采集测试系统具有高速和灵活等特性,可以满足许多传统方法不能完成的数据采集和测试任务,因而得到了人们的初步认可。大概在60年代后期,国外市场就有成套的数据采集设备出现[1]。

20世纪70年代后期,随着微型机的发展,出现了采集器、仪表同计算机溶为一体的数据采集系统。由于这种数据采集系统优良的性能,超过了传统的专用数据采集系统和自动检测仪表,因而获得了高速的发展。从70年代起,数据采集系统在以后发展过程中逐渐演变成为两类,一类是工业现场的数据采集系统,另一类是实验室的数据采集系统[2]。

20世纪80年代计算机的高速发展和在生活中的应用,使数据采集系统获得了较快的发展,逐步出现了自动测试系统与通用的数据采集。那时候的数据采集系统主要分为两类,一类由采集器和通用接口总线、仪表仪器和计算机组成。这类系统不仅在实验室获得了较多的应用,在工业生产中也有一定程度的应用。第二类以标准总线、数据采集卡和计算机构成,这一类主要应用于工业现场。20世纪80年代中后期,数据采集发生了惊人的变化,单片机、大规模集成电路和工业计算机的组合,用软件来完成管理任务,使系统的体积变小,成本降低,功能大大增强,数据处理能力倍增[3]。

自20世纪90年代至今,一些技术先进的国家,数据采集系统已成功的运用到工业、航空电子设备及宇航技术、军事等诸多领域。随着集成电路制造技术的提高,出现了高性能、可靠性较高的单片机数据采集系统(DAS)。数据采集技术俨然已经成为一种专门的技术,在工业等领域得到了广泛应用[4]。该阶段的数据采集系统采用模块化结构,根据不同的应用需求,通过简单的增加和更改模块,并结合系统编程,就可以扩展和修改系统,迅速组成一个新的系统。

尽管现在以微机为核心的可编程数据采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽内并辅以应用软

2

沈阳理工大学学士学位论文

件,就能实现数据采集的功能,但这并不会对基于单片机为核心的数据采集系统产生根本性的影响。相较于数据采集板卡功能和成本的限制,单片机具高效率、高性能、低电压、低功耗、低价格、多功能等优点,而双单片机又具有精度较高、转换速度快、能够对多点同时进行采集,因此能够开发出能满足实际应用要求的、电路结构简单的、可靠性高的数据采集系统。这就使得以单片机为核心的数据采集系统能在许多领域得到广泛的应用。

1.2 国内外研究现状

数据采集系统是通过采集传感器输出的模拟信号并转换成数字信号,并进行分析、处理、传输、显示、存储和显示。它起始于20世纪中期,在过去的几十年里,随着信息领域各种技术的发展,在数据采集方面的技术也取得了长足的进步,采集数据的信息化是目前数据采集技术发展的主流方向。多数领域都用到了数据采集,在飞机飞行、石油勘探、科学实验、地震数据采集领域已经得到广泛的应用。

我国的数字地震观测系统主要采用TDE-124C型TDE-224C型地震数据采集系统。近年来,又成功研制了动态范围更大、线性度更高、兼容性更强、低功耗可靠性的TDE-324C型地震数据采集系统。该数据采集对拾震计输出的电信号模拟放大后送至A/D数字化,A/D采用同时采样,采样数据经DSP数字滤波处理后,变成数字地震信号。该数据采集系统具备24位A/D转化位数,采样率有50HZ、100HZ、200HZ [5].

美国PASCO公司生产的“科学工作室”是数据采集应用于物理实验的崭新系统,它主要由3部分组成:(1)传感器:利用先进的传感技术可实时采集物理实验中各种物理量;(2)计算机接口:将传感器采集到的数据信号输入计算机,采样速率最高为25万次/S;(3)软件:英文及中文的应用软件[6]。

受需求牵引,新一代机载数据采集系统为满足飞行实验应用也在快速地发展。如爱尔兰ACRA公司2000年研发推出的新一代KAM500机载数据采集系统到了2006年。该系统采用16位(A/D)模拟数字变换,总采样率达500K/S,同步时间为+/-250ns,可以利用方式组成高达1000通道的大容量的分布式采集系统。

1.3 该课题研究的主要内容

数据采集技术是信息科学的重要分支之一, 它研究信息数据的采集、存储、处理以

3

沈阳理工大学学士学位论文

及控制等问题。它是对传感器信号的测量与处理, 以微型计算机等高技术为基础而形成的一门综合应用技术。数据采集也是从一个或多个信号获取对象信息的过程。随着微型计算机技术的快速发展和普及应用,数据采集监测技术已成为非常重要的检测技术,被广泛地应用于工农业等需要同时监控压力、温度和湿度等数据的场合。数据采集是工业控制等系统不可缺少的环节,大多采用一些功能相对独立的专用单片机系统来实现其控制功能。作为测控系统至关重要的部分,数据采集系统的性能直接影响到整个系统的运转。

传统的基于单片机的数据采集系统就是因为没有上位机的支持,所以无论使用什么样的数据存储器,它都只有有限的存储容量,所以不得不覆盖刷新历史数据,这样一来不利于用户整体分析数据,因而也不能准确地把握生产过程的状况并做出适当的计划。

本系统采用下位机负责模拟数据的采集,单片机负责采集八路数据,并应答主机发送的命令,上位机即主机是负责处理接受过来的数字量的处理及显示,主机和从机之间用ISP下载进行通信。这样用户可以在上位机上编写各种程序对文件中的数据进行有效查询和分析,有利于工业过程的长期正常运行和检查。该系统采用的是ATMEGA128单片机,此芯片功能比较强大,能够满足设计要求。

4

沈阳理工大学学士学位论文

2 数据采集总体设计

2.1 系统设计的基本要求

1、将采集的模拟信号转换成方便处理的数字量。 2、对完成转换后的数字量进行处理。 3、能够控制信号的采集、处理、显示等。 4、该系统要具有准确性、可靠性和稳定性。 5、给出具体的硬件和软件。

在系统的扩展和配置设计中,应遵循以下原则 : 为了给硬件系统的标准化、模块化打下基础,尽可能多地选择典型电路。系统外围设备的配置要满足系统的功能要求,留有余地,以便进行改进。应将硬件结构和软件相结合。系统中相关器件要尽可能做到性能匹配

2.2 数据采集系统结构功能及简介

数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。

70年代初,随着大规模集成电路及计算机技术的发展,特别是微处理器及高速A/D转换器的诞生,数据采集的系统结构发生了重大的改变。原来由硬件程序控制器组成的采集系统及小规模集成的数字逻辑电路变为被由微处理器控制的采集系统所代替。由微处理器完成程序控制,逻辑操作及大部分数据处理,使系统的可靠性和灵活性得到了较大的提高,系统的硬件成本和重建费用也得到了较大的降低[7]。

在本系统中需要将模拟量转换为数字量,而 A/D是将模拟量转换为数字量的器件,它需要考虑的指标有:分辨率、转换时间、转换误差等等。而单片机是该系统的基本的微处理系统,它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。在该系统中采用的是AVR系列的单片机。双机通信的串行口可以采用ISP实现双机的通信。而数据的显示则采用的是LCD1602液晶显示,该器件比较简单,在生活中接触也较多。 其中:ATMEGA128 ( 主控芯片) : CPU 作为该系统的核心控制芯片, 起采集、控制显示的作用。显示模块:采用LCD1602用来显示采集到的数值。通信模块:采用ISP实现单片机与PC机间的通信。模数转换模块:采用ATMEGA128自带的10位A/D转换进行模拟信号到数字信号的转换,以供给单片机采集数据。

5

沈阳理工大学学士学位论文

系统框图如图2.1所示:

晶振电源模拟电压电位器单片机PC机七段数码管

图2.1系统框图

2.3 硬件开发工具

2.3.1 Altium Designer6.9简介

Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案——一个既满足当前,也满足未来开发需求的解决方案。

2.3.2 Altium Designer6.9设计理念 1、原理图设计系统

这是一个易于使用的具有大量元件库的原理图编辑器,主要用于原理图的设计。它可以为印制电路板设计提供网络表。该编辑器除了具有强大的原理图编辑功能以外,其分层组织设计功能、设计同步器、丰富的电气设计检验功能及强大而完善的打印输出功能,使用户可以轻松完成所需的设计任务。 2、印制电路板设计系统

它是一个功能强大的印制电路板设计编辑器,具有非常专业的交互式布线及元件布局的特点,用于印制电路板(PCB)的设计并最终产生PCB文件,直接关系到印制电路板的生产。Altium Designer6.9的印制电路板设计系统可以进行多达32层信号层、16层

6

沈阳理工大学学士学位论文

内部电源/接地层的布线设计,交互式的元件布置工具极大地减少了印制板设计的时间。同时它还包含一个具有专业水准的PCB信号完整性分析工具、功能强大的打印管理系统、一个先进的PCB三维视图预览工具。

此外,Altium Designer6.9还包含一个功能强大的基于SPICE 3f5的模/数混合信号仿真器,使设计者可以方便地在设计中对一组混合信号进行仿真分析。 同时,它还提供了一个高效、通用的可编程逻辑器件设计工具。

2.3.3 Altium Designer6.9设计理念

Altium Designer6.9提供了大量的仿真元件和数学模型器件,可以对电工电路,低频电子线路、高频电子线路和脉冲数字电路在一定范围内进行仿真分析。 仿真结果以多种图形方式输出,直观明了,可以单图精细分析,也可以多图综合比较分析、并可通过不同的角度进行分析,以获得对电路设计的准确判断。 Altium Designer6.9仿真方面其具有的特点有: 1、强大的分析功能

用户可以根据Altium Designer6.9电路仿真器所提供的功能,分析设计电路的各方面性能,如电路的交直流特性、温度漂移、噪声、失真、容差、最坏情况等特性。 2、丰富的信号源

其中包括基本信号源:直流源、正弦源、脉冲源、指数源、单频调频源、分段线性源,同时还提供了齐全的线性和非线性受控源。 3、充分的仿真模型库

Altium Designer6.9提供了20多个模拟和数字仿真元件库,共包含6000多个常用元器件。这些组件库包括了常用二极管、三极管、单结晶体管、变压器,晶闸管、双向晶闸管等分立组件,还有大量的数字器件和其它集成电路器件。同时Altium Designer6.9提供了一个开放的库维护环境,允许设计者改变原有器件模型,也可创建新器件模型。

4、友好的操作界面

(1)无需手工编写电路网表文件。系统将根据所画电路原理图自动生成网表文件并进行仿真。

(2)通过对话框完成电路分析各参数设置。

(3)方便地观察波形信号。可同时显示多个波形,也可单独显示某个波形;可对波形

7

沈阳理工大学学士学位论文

进行多次局部放大,也可将两个波形放置于同一单元格内进行显示并分析比较两者的差别。

(4)强大的波形信号后处理,可利用各种数学函数对波形进行各种分析运算并创建一个新的波形。

方便地测量输出波形。Altium Designer6.9提供了两个测量光标,打开它们可测量波形数据。

2.4 软件开发工具

2.4.1 ICCAVR

运行ICCAVR,则出现以下界面

图2.6 ICCAVR操作界面图

自ATMEL公司的AT90系列单片机诞生以来有很多第三方厂商为AT90系列开发了用于程序开发的C语言工具,ICCAVR就是ATMEL公司推荐的第三方C编译器之一。

ICCAVR是一种符合ANSI标准的C语言来开发MCU(单片机)程序的一个工具,功能合适、使用方便、技术支持好,它主要有以下几个特点:

1、ICCAVR是一个综合了编辑器和工程管理器的集成工作环境(IDE);

2.、源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成,错误显

示在状态窗口中,并且当你点击编译错误时,光标自动跳转到错误的那一行;

8

沈阳理工大学学士学位论文

3、.该工程管理器还能直接产生 INTEL HEX格式文件的烧写文件(该格式的文件可被大多数

编译器所支持,可以直接下载到芯片中使用)和符合 AVRStudio的调试文件(COFF格式)。ICCAVR是一个32位的程序,支持长文件名,。ICCAVR]是一个综合了编辑器和工程管理器的集成开发环境(IDE),是一个纯32位的程序,可在 Win 95、Win 98、Win ME、Win NT、Win 2000、Win XP和Win 7环境下运行。

iccavr简介iccavr 是一种使用ansi 标准c 语言来开发微控制器(mcu)程序的一个工具,它是一个综合了编辑器和工程管理器的集成工作环境(ide)。源文件全部被组织到工程之中,文件的编辑和工程(project)的构筑也在ide 的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到出错行。这个工程管理器还能直接产生intel hex格式的烧写文件和可以在avr studio 中调试的coff 格式的调试文件。 这里特别要提一下iccavr 中的应用构筑向导,可以在tools 栏中选择“application biulder”或者直接点击快捷工具栏中的“application biulder”图标,就可以打开应用构 筑向导对话框,可以根据需要设定芯片种类,各个端口初始值,是否使用定时器,中断,uart等,选好以后单击“ok”就可以得到所需的硬件初始化程序段,非常可靠而且方便。 下面介绍一下创建并编译一个工程文件的简要步骤:新建一个源文件从file 菜单中选择new,创建一个新文件,在改文件中输入源程序并进行编辑和修改,然后存盘,在存盘时必须指定文件类型,如命名为:try.c 。写一个新文件的步骤:首先用biulder 初始化需要用到的硬件资源,生成初始化程序,然后再写需要的代码实现所要的功能。新建一个project从projrct 菜单中选择new 命令,ide 会弹出一个对话框,在对话框中用户可以指定工程存放的文件夹和工程的名称。在建立一个新工程之后,在工程管理器的窗口会出现三个子目录,files, headers, documents,这时就可以将要编译的文件添加到project 中了。把文件添加到工程中可以在project-files 里单击右键,选择需要添加的文件;也可以在编辑窗口中单击右键选择弹出窗口的“add to project”命令。编译源文件

在编译之前特别要注意在project options 中选择与硬件相应的芯片。在project 中选择make project,也可以直接单击快捷键f9,这时要是有错则会弹出出错信息,修改调试正确以后单击快捷键isp 就可以烧写到硬件中去了。

2.5 SLISP 软件

9

沈阳理工大学学士学位论文

2.5.1 软件特点

1、支持的下载线有两种:双龙电子的串行通信下载线SL-AVRL和并行通信下载线AVR-ISP 。该软件还适用所有双龙SL系列AVR/AT89S单片机开发实验器。

2、支持的器件为ATMEL公司的AT89S 系列(包含AT89S51/52)和AVR 系列。 3、支持的烧录文件格式:INTEL 格式的HEX文件、EEP 文件,二进制BIN 文件。 4、支持缓冲区数据修改和保存,缓冲区中的数据可以保存为二进制BIN 文件,INTEL 格式的HEX或EEP 文件。

5、缓冲区中的数据还可以保存为C 程序中的char 或unsigned char 类型数组文件,以方便程序开发者处理某些特殊应用 。

6 、软件通过串口和下载线相连接,支持USB转换成的串口通信,适合一些使用没有串口的NOTE BOOK 的用户。

7、下载线默认的波特率为 19200 ,用户可以向双龙公司订购波特率较高的下载线,以提高在系统编程的速度。

8、本软件的OS平台可以是WIN98/ME、WIN2K、WINXP。

9 、本程序还支持ATMEL 通信协议的IAP 编程(Self-programming) ,但软件标识应当标志为“AVRBOOT ”。

10、只有注册用户才可以使用并行通信下载线 AVR-ISP ,双龙电子为更好地服务于客户,实行免费注册制。

2.5.2 软件使用步骤 1、安装软件;

2、打开软件选芯片、接口

10

沈阳理工大学学士学位论文

图2.7程序下载操作界面图

3、配置熔丝

图2.8配置熔丝操作界面图

4、开始调试

11

沈阳理工大学学士学位论文

3 硬件设计

3.1 CUP选型

3.1.1 ATmega128 简介

本课题是基于AVR单片机。所以选用ATMEL公司推出的ATMEG128L完成。 ATmega128为基于AVR RISC 结构的8 位低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时间,ATmega128 的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

3.1.2 ATmega128 特点

图3.1 ATmega128引脚图

12

沈阳理工大学学士学位论文

高性能、低功耗的 AVR?8 位微处理器先进的 RISC 结构 133 条指令 – 大多数可以在一个时钟周期内完成32 x 8 通用工作寄存器 + 外设控制寄存器全静态工作工作于16 MHz 时性能高达16 MIPS只需两个时钟周期的硬件乘法器非易失性的程序和数据存储器128K 字节的系统内可编程Flash 寿命: 10,000 次写 / 擦除周期 具有独立锁定位、可选择的启动代码区通过片内的启可以对锁定位进行编程以实现软件加密可以通过SPI 实现系统内编程JTAG 接口( 与IEEE 1149.1 标准兼容)遵循JTAG 标准的边界扫描功能支持扩展的片内调试通过JTAG 接口实现对Flash, EEPROM, 熔丝位和锁定位的编程外设特点两个具有独立的预分频器和比较器功能的8 位定时器 / 计数器两个具有预分频器、比较功能和捕捉功能的16位定时器 / 计数器具有独立预分频器的实时时钟计数器两路8 位PWM6路分辨率可编程 (2 到16位)的PWM输出比较调制器

8路10位ADC8 个单端通道个差分通道个具有可编程增益 (1x, 10x, 或200x)的差分通道 面向字节的两线接口 两个可编程的串行USART可工作于主机 / 从机模式的 SPI 串行接口具有独立片内振荡器的可编程看门狗定时器片内模拟比较器特殊的处理器特点上电复位以及可编程的掉电检测 片内经过标定的RC振荡器 片内 / 片外中断源6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式可以通过软件进行选择的时钟频率通过熔丝位可以选择ATmega103 兼容模式 全局上拉禁止功能I/O 和封装53个可编程I/O 口线64引脚TQFP 与 64 引脚 MLF 封装工作电压 2.7 - 5.5V ATmega128L 4.5 - 5.5V ATmega128 速度等级 0 - 8 MHz ATmega128L0 -16 MHz ATmega128L

3.1.3 定时器和计数器

T/C0是一个通用的,单通道8 位定时器/ 计数器模块。其主要特点如下: 单通道计数器,比较匹配发生时清除定时器( 自动加载)无毛刺的相位修正PWM 频率发生器,10位时钟预分频器,溢出和比较匹配中断源(TOV0 和OCF0),允许外部32kHz 钟振作为时钟与T/C0相关的寄存器T/C0控制寄存器(TCCR0)

图3.2寄存器TCCR0图

13

沈阳理工大学学士学位论文

8位寄存器TCCR0是T/C0的控制寄存器,通过对其各个标志位的设置,用户可以设计计数器的计数源、工作模式以及比较输出方式等进行选择,它的地址为﹩0053,初始化值为﹩00。Bit 7 – FOC0: 强制输出比较FOC0 仅在WGM指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM 时,写 TCCR0要对其清零。对其写1 后,波形发生器将立即进行比较操作。比较匹配输出引脚 OC0 将按照COM01:0的设置输出相应的电平。要注意FOC0 仅仅是一个启动信号,真正对强制输出比较起作用的是COM01:0的设置。 FOC0 不会引发任何中断,也不会在使用 OCR0 作为TOP的CTC模式下对定时器进行清零。读FOC0 的返回值永远为0。Bit 6, 3 – WGM01:0: 波形产生模式这几位控制计数器的计数序列,计数器最大值TOP的来源,以及使用何种波形。T/C 支持的模式有:普通模式,比较匹配发生时清除计数器模式(CTC) ,以及两种PWM 模式,如表3.1

表3.1

模式

WGM01 (CTC0) 0 1

0 0

WGM00(PW0)

0 1

T/C的工作模式

普通 PWM,相位修正

2 3

1 1

0 1

CTC 快速PWM

OCR0 OXFF

立即更新 TOP

MAX MAX

0XFF 0XFF TOP

OCR0的更新时间

立即更新 TOP

TOV0

置位时间 MAX BOTTM

Bit 5:4 – COM01:0: 比较匹配输出模式这些位控制输出比较引脚OC0的行为。若 COM01:0的任意一位或两位都置位,OC0输出功能将重载普通端口功能。此时数据方向寄存器 (DDR) 需要按照OC0功能进行设置。当OC0连接到物理引脚上时,COM01:0式时COM01:0的功能。

表3.2

COM01 0 0 1

1

COM00

0 1 0 1

说明 正常的端口操作,OC0未连接 比较匹配发生时OC0取反 比较匹配发生时OC0清0 比较匹配发生时OC0置位

14

沈阳理工大学学士学位论文

下面给出了当WGM01:0设置为快速PWM 模式时COM01:0的功能

表3.3

COM01 0 0 1 1

COM00

0 1 0 1

说明 正常的端口操作,OC0未连接 保留

比较匹配发生时OC0清零,计数到TOP时OC0置位 比较匹配发生时OC0置位,计数到TOP时OC0清零

Bit 2:0 ( CS02:0): 时钟选择位

这三个标志位用来选择设定T/C0的时钟源,如下表所示

表3.4

CS02 0 0 0 0 1 1 1 1

CS01 0 0 1 1 0 0 1 1

CS00 0 1 0 1 0 1 0 1

说明

无时钟,T/C 不工作 clkTOS/( 没有预分频) clkTOS/8 ( 来自预分频器) clkTOS/32 ( 来自预分频器) clkTOS/64 ( 来自预分频器) clkTOS/128 ( 来自预分频器) clkTOS/256 ( 来自预分频器) clkTOS/1024 ( 来自预分频器)

T/CO寄存器(TCNT0)

图3.3寄存器TCNT0图

通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对 TCNT0寄存器的写

15

沈阳理工大学学士学位论文

访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0的数值有可能丢失一次TCNT0和OCR0 的比较匹配。它的地址为$0052,初始化值为$00。 定时器/计数器中断屏蔽寄存器(TIMSK)

定时器/计数器中断屏蔽寄存器(TIMSK)的地址为$0057,初始化值为$00.寄存器TIMSK各位的定义如下:

图3.4寄存器TCNT0图

Bit 1 – OCIE0: T/C0 输出比较匹配中断使能

当OCIE0和状态寄存器的全局中断使能位I 都为‘1’ 时,T/C0的输出比较匹配中断使能。当T/C0的比较匹配发生,即TIFR中的OCF0 置位时,中断例程得以执行。 Bit 0 – TOIE0: T/C0溢出中断使能当OCIE0和状态寄存器的全局中断使能位I 都为‘1’ 时,T/C0的溢出中断使能。当 T/C0发生溢出,即TIFR中的TOV0 位置位时,中断例程得以执行。定时器/计数器中断标志寄存器(TIFR)

定时器/计数器中断标志寄存器(TIFR)的地址为$0056,初始化值为$00。寄存器各位的定义如下:Bit 1 – OCF0: 输出比较标志0

当T/C0与OCR0(输出比较寄存器0) 的值匹配时,OCF0 置位。此位在中断例程里硬件清零,或者通过对其写1 来清零。当SREG 中的位I、OCIE0和OCF0 都置位时,中断例程得到执行。Bit 0 – TOV0:T/C0 溢出标志

当T/C0溢出时,TOV0 置位。执行相应的中断例程时此位硬件清零。此外,TOV0 也可以通过写1 来清零。当 SREG 中的位I、TOIE0 和TOV0 都置位时,中断例程得到执行。

在PWM 模式中,当T/C0在$00 改变记数方向时,TOV0 置位。

16位定时/计数器116位的T/C 可以实现精确的程序定时( 事件管理) 、波形产生和信号测量。其主要特点如下真正的16位设计( 即允许16位的PWM)3 个独立的输出比较单元双缓冲的输出比较寄存器 一个输入比较单元 输入捕捉噪声抑制器 比较匹配发生时清除寄存器( 自动重载)无毛刺的相位修正PWM可变的PWM 周期频率发生器 外部事件计数器10个独立的中断源(TOV1 、OCF1A、 OCF1B 、 OCF1C 、 ICF1 、

16

沈阳理工大学学士学位论文

TOV3 、 OCF3A 、 OCF3B 、 OCF3C和ICF控制寄存器A(TCCR1A) 寄存器TCCR1A的地址为$004F,初始化值为$00。其各位的定义如下:

图3.5寄存器TCCR1A图

Bit 7:6 – COMnA1:0: 通道A 的比较输出模式 Bit 5:4 – COMnB1:0: 通道B 的比较输出模式 Bit 3:2 – COMnC1:0: 通道C 的比较输出模式

COMnA1:0 、COMnB1:0 与COMnC1:0分别控制OCnA 、OCnB 与OCnC 的状态。如果COMnA1:0(COMnB1:0 或COMnC1:0)的一位或两位被写入 \”,OCnA( OCnB或OCnC )输出功能将取代I/O 端口功能。此时OCnA( OCnB 或OCnC ) 相应的输出引脚数据方向控制必须置位以使能输出驱动器。

当OCnA(OCnB 或OCnC )与物理引脚相连时,COMnx1:0 的功能由WGMn3:0的设置决定。

控制寄存器B (TCCR1B)

寄存器TCCR1B的地址为$004E,初始化值为$00.其各位的定义如下:

图3.6寄存器TCCR1B图

Bit 7 – ICNCn: 输入捕捉噪声抑制器

置位ICNC1 将使能输入捕捉噪声抑制功能。此时外部引脚ICPn 的输入被滤波。其作用是从ICPn 引脚连续进行4 次采样。如果4 个采样值都相等,那么信号送入边沿检测器。因此使能该功能使得输入捕捉被延迟了4 个时钟周期。 Bit 6 – ICESn: 输入捕捉触发沿选择

该位选择使用ICPn 上的哪个边沿触发捕获事件。ICESn 为\” 选择的是下降沿触发

17

沈阳理工大学学士学位论文

输入捕捉;ICESn 为\” 选择的是逻辑电平的上升沿触发输入捕捉。

按照ICESn 的设置捕获到一个事件后,计数器的数值被复制到 ICRn 寄存器。捕获事件还会置为ICFn。如果此时中断使能,输入捕捉事件即被触发。当ICRn 用作TOP值(见TCCRnA与TCCRnB寄存器中WGMn3:0位的描述 ) 时,ICPn与输入捕捉功能脱开,从而输入捕捉功能被禁用。 Bit 5 – 保留位

该位保留。为保证与将来器件的兼容性,写TCCRnB时,该位必须写入\”。 Bit 2:0 – CSn2:0:时钟选择

这三个标志位用于选择T/C1 的时钟源

表3.5

CS02 0 0 0 0 1 1 1 1

CS01 0 0 1 1 0 0 1 1

CS00 0 1 0 1 0 1 0 1

说明

无时钟,T/C 不工作 clkTOS/( 没有预分频) clkTOS/8 ( 来自预分频器) clkTOS/64( 来自预分频器) clkTOS/256 ( 来自预分频器) clkTOS/1024 ( 来自预分频器) 外部Tn引脚。下降沿驱动后 外部Tn引脚。上降沿驱动

控制寄存器C(TCCR1C)

控制寄存器TCCR1C的地址为$007A,初始化值为$00.其各位的定义如下:

图3.7寄存器TCCR1C图

Bit 7 – FOC1A:强制输出比较通道A Bit 6 – FOC1B: 强制输出比较通道B Bit 5 – FOC1C: 强制输出比较通道C

18

沈阳理工大学学士学位论文

当标志位只在WGMn3:0 位被设置为非PWM 模式时才有效。当对写\” 将强制波形发生器产生一次成功的比较匹配,并使波形发生器依据 COMnx1:0 的设置而改变的输出状态的电平。FOC1x的作用如同一个选通信号,COMnx1:0 的设置才是最终确定比较匹配结果的因素。这三个标志位不会产生任何中断请求,也不会对计数器清零。FOC1x 的读返回值总为零。Bit 4:0 – 保留位

这几位保留。为保证与将来器件的兼容性,写TCCR1C时,这几位必须写入\”。 定时/计数器1寄存器(TCNT1H和TCNT1L)

TCNT1H 与TCNT1L 组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数器单元的16位计数器进行读写访问。为保证CPU对高字节与低字节的同时读写,必须使用一个8 位临时高字节寄存器TEMP 。TEMP 是所有的16位寄存器共用的。 定时/计数器1寄存器TCNT1H(高8位)的地址为$004D,TCNT1L(低8位)的地址为$004C,初始化值都为$00。其各位的定义如下:

图3.8寄存器TCNT1图

3.1.4 AVR单片机的中断系统

中断系统的定义中断是单片机实时的处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去执行中断事件的处理,中断处理完毕,又返回被中断的程序处,继续执行下去。中断系统即为中断装置和中断处理程序的统称。中断系统是计算机的重要组成部分。中断系统提高了计算机的应用效率,故此中断系统一般应用在实时控制、故障自动处理、计算机与外围设备间的数据传送等。中断系统的功能实现中断相应和中断返回。实现优先权排队。

实现中断嵌套。中断系统的优点分时操作实时处理唤醒状态故障处理中断源的分类 非屏蔽中断:MCU不能屏蔽的中断源产生的中断请求信号,一旦发送中断请求,MCU必须应该中断。外部中断RESET产生的复位信号是非屏蔽中断。可屏蔽中断:用户程序通过中断屏蔽标志位对中断源产生的中断请求信号进行控制,即允许或禁止MCU对该中断

19

沈阳理工大学学士学位论文

的响应。可屏蔽中断的中断请求是否被MCU响应。最终是由用户程序控制的。在单片机中,大多的中断都是可屏蔽中断。软件中断:CPU具有相应的软件中断指令,当MCU执行这条指令是就进入软件中断服务,以完成特定的功能。大多数单片机都不具备软件中断的指令,因此不能直接实现软件的功能。因此,在单片机系统中,若要实现软件中断,必须通过间接的方式实现。

3.1.5 可编程IO端口

在ATmege128单片机中,提供了53个可编程的I/O端口,分别为PA-PG口。当用SBI或CBI指令改变某个I/O引脚的输入/输出方向、改变引脚的输出电平或在禁止/允许引脚的内部上拉电阻时,其它引脚的状态不会被改变。同时它可以输出或吸收大电流,直接驱动LED。当上拉电阻激活且引脚被拉低时该引脚会输出电流。I/O端口的特点

AVR单片机大部分I/O端口都具有双重功能,可分别与片内的各种不同功能的外围接口电路组合成一些可以完成特殊功能的I/O口,如定时器、计数器、串行接口、模拟比较器、捕捉器等。AVR单片机通用的主要特点如下:可自行定义输入输出工作方式。 输出/吸收大电流。内部上拉电阻可控。DDRX可控的方向寄存器。

PA口为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A 为三态。它配有三个数据存储地址,分别为数据寄存器PORTA($003B)、数据方向控制寄存器DDRA($003A)和A口的输出引脚寄存器PINA($0039).A口的输入引脚地址为只读方式,而数据方向控制寄存器和数据寄存器为读写方式。

寄存器端口A数据寄存器(PORTA)的各位定义如下:

图3.9 PORTA图

端口A数据方向控制寄存器(DDRA)的各位定义如下:

20

沈阳理工大学学士学位论文

图3.10 DDRA图

端口A输入引脚寄存器(PINA)的各位定义如下:

图3.11 PINA图

第二功能

端口A的第二功能为外部存储器接口的低字节地址以及数据。

图3.12 PORTA第二功能图

PB口B 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口B 为三态。它配有三个数据存储地址,分别为数据寄存器PORTB($0038)、数据方向控制寄存器DDRB($0037)和B口的输出引脚寄存器PINB($0036).B口的输入引脚地址为只读方式,而数据方向控制寄存器和数据寄存器为读写方式。寄存器与A 相似。 B口的第二功能如表:

表3.6

引脚 PB7

第二功能

OC2/OC1C (T/C2 的输出比较和PWM输出,或是T/C1的输出比较和PWM输出C)

PB6

OC1B (T/C1 的输出比较和PWM 输出B)

21

沈阳理工大学学士学位论文

采用30p或者22p。

3.3.4 蜂鸣器模块

图3.17蜂鸣器电路图

此蜂鸣器的作用主要用于报警,当采集的电压低于某个值或者高于某个值时,自动报警提醒。此蜂鸣器是无源的,外接有+5v的电压和三极管,电阻,以及地。三极管的作用是起到开关作用,三极管是PNP的,当PF7端口输出低电平时,三极管导通,此时蜂鸣器工作。电阻主要用于限流

3.4.5 LED数码管显示模块

图3.18 LED数码管原理图

27

沈阳理工大学学士学位论文

LED(Light Emiting Diode)是发光二极管的缩写。LED数码管里面有8知发光二极管。分别记作a、b、c、d、e、f、g、dp。其中dp是小数点,每一只发光二极管都有一根电极引到外部引脚上,而另外一只引脚就连接在一起同样也引到外部引脚上,记作公共端(COM),如表所示。

表3.10

显示数字 0 1 2 3 4 5 6 7 8 9 7 dp 0 0 0 0 0 0 0 0 0 0 3 g 0 0 1 1 1 1 1 0 1 1 2 f 1 0 0 0 1 1 1 0 1 4 e 1 0 1 0 0 0 1 0 1 0 5 d 1 0 1 1 0 1 1 0 1 1 8 c 1 1 0 1 1 1 1 1 1 1 9 b 1 1 1 1 1 0 0 1 1 1 10 a 1 0 1 1 0 1 1 1 1 1 16进制代码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 1

显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一。市面上常用的LED数码管有两种,分为共阳极与共阴极。共阳极:当数码管里面的发光二极管的阳极接在一起作为公共引脚,在正常使用时此引脚接电源正极。当发光二极管的阴极接低电平时,发光二极管被

28

沈阳理工大学学士学位论文

点亮,从而相应的数码管显示。而输入高电平的段则不能点亮。相反,共阴极:当数码管里面的发光二极管的阴极接在一起作为公共引脚,在正常使用时此引脚接电源负极。当发光二极管的阳极接高电平时,发光二极管被点亮。从而相应的数码管显示,而输入低电平的段则不能点亮。

3.3.6 A/D转换模块

图3.19 AD转换电路图

电压采集主要是用一个滑动变阻器来实时产生变化的电压。 此AD转换主要用于模拟电压转换数字电压。

ATMEGA128自带的AD转换主要用了两个寄存器ADMUXA和ADCSRA

ADMUXA寄存器

图3.20 ADMUXA寄存器图

Bit 7:6 – REFS1:0: 参考电压选择

通过这几位可以选择参考电压。如果在转换过程中改变了它们的设置,

只有等到当前转换结束(ADCSRA 寄存器的ADIF 置位) 之后改变才会起作用。如果在

29

沈阳理工大学学士学位论文

AREF 引脚上施加了外部参考电压,内部参考电压就不能被选用了。

Bit 5 – ADLAR: ADC 转换结果左对齐ADLAR影响ADC转换结果在ADC数据寄存器中的存放形式。ADLAR置位时转换结果为左对齐,否则为右对齐。ADLAR 的改变将立即影响ADC 数据寄存器的内容,不论是否有转换正在进行。 Bits 4:0 – MUX4:0: 模拟通道与增益选择位

通过这几位的设置,可以对连接到ADC 的模拟输入进行选择。也可对差分通道增益进行选择。细节见Table 98。如果在转换过程中改变这几位的值,那么只有到转换结束 (ADCSRA 寄存器的ADIF 置位) 后新的设置才有效。

ADCSRA寄存器

图3.21 ADCSRA寄存器图

Bit 7 – ADEN: ADC 使能

ADEN置位即启动ADC,否则ADC功能关闭。在转换过程中关闭ADC将立即中止正在进行的转换。

Bit 6 – ADSC: ADC 开始转换

在单次转换模式下,ADSC 置位将启动一次ADC 转换。在连续转换模式下,ADSC 置位将启动首次转换。第一次转换( 在ADC 启动之后置位ADSC,或者在使能ADC 的同时置位ADSC) 需要25 个ADC 时钟周期,而不是正常情况下的13 个。第一次转换执行ADC初始化的工作。在转换进行过程中读取ADSC 的返回值为\,直到转换结束。ADSC 清零不产生任何动作。

Bit 5 – ADFR: ADC 连续转换选择当该位写1, ADC 工作在连续转换模式。在该模式下, ADC 不断对 数据寄存器采样与更新。 该位写0,停止连续转换模式。

Bit 4 – ADIF: ADC 中断标志在ADC 转换结束,且数据寄存器被更新后, ADIF 置位。如果ADIE 及SREG 中的全局中断使能位I 也置位,ADC 转换结束中断服务程序即得以执行,同时ADIF 硬件清零。此外,还可以通过向此标志写1 来清ADIF。要注意的是,如果对ADCSRA 进行读-修改-写操作,那么待处理的中断会被禁止。这也适用于SBI

30

沈阳理工大学学士学位论文

及CBI 指令。

Bit 3 – ADIE: ADC 中断使能若ADIE 及SREG 的位I 置位, ADC 转换结束中断即被激活。

Bits 2:0 – ADPS2:0: ADC 预分频器选择位

这几位确定了XTAL 与ADC 输入时钟之间的分频因子。

AD转换结果转换结束后(ADIF 为高),转换结果被存入ADC 结果寄存器(ADCL, ADCH)。

单次转换的结果如下:ADC?1024*VINv

REF式中,VIN为被选中引脚的输入电压,VREF为参考电压。

0x000 代表模拟地电平, 0x3FF 代表所选参考电压的数值减去1LSB。

AD转换概述在我们所采集的信号中大多是连续变化的物理量,而要对各种信号进行处理,则需要将其转换为计算机能处理的数字量,A/D转换器就是将连续变化的模拟量转换成计算机能接受的数字量。A/D转换器的种类很多,就位数来说,可以分为8位、10位、12位和16位等。位数越高其分辨率就越高,价格也就越贵。A/D转换器型号很多,而其转换时间和转换误差也各不相同。按模拟量转换成数字量的原理可以分为3种:双积分式、逐次逼近式及并行式A/D转换器。逐渐逼近式A/D转换器:它是一种速度快、精度较高、成本较低的直接式转换器,其转换时间从几微秒到几百微秒。双积分A/D转换器:它是一种间接式的A/D转换器,优点是抗干扰能力强,精度比较高,不足是数度很慢,适用于系统对转换度要求不高的场合。并行式A/D转换器:它又被称为flash(快速)型,它的转换速度很高,但她采用较多的比较器,而n位的转换就需要2n-1个比较器,因此电路规模也极大,价格也很贵,只适用于视频A/D转换器等数度特别高的领域[10]。比较以上三种方案,在价格、转换速度等多种标准的考虑下,本设计选用ATMEGA128自带的AD转换模块。ATmega128有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口A 的8 路单端输入电压进行采样。单端电压输入以0V (GND) 为基准。器件还支持16 路差分电压输入组合。两路差分输入(ADC1、ADC0 与ADC3、ADC2)有可编程增益级,在A/D 转换前给差分输入电压提供0 dB (1x)、20 dB (10x) 或46 dB(200x) 的放大级。七路差分模拟输入通道共享一个通用负端(ADC1),而其他任何ADC 输入可做为正输入端。如果使用1x 或10x 增益,可得到8 位分辨率。如果使用200x 增益,可得到7 位分辨率。

31

沈阳理工大学学士学位论文

ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定。ADC 的ADC 由AVCC 引脚单独提供电源。AVCC 与VCC 之间的偏差不能超过± 0.3V。请参考P219“ADC 噪声抑制器” 来了解如何连接这个引脚。标称值为2.56V 的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。ADC 通过逐次逼近的方法将输入的模拟电压转换成一个10 位的数字量。最小值代表GND,最大值代表AREF引脚上的电压再减去1 LSB。通过写ADMUX寄存器的REFSn位可以把AVCC 或内部2.56V 的参考电压连接到AREF 引脚。在AREF 上外加电容可以对片内参考电压进行解耦以提高噪声抑制性能。 模引脚,像GND 及固定能隙参考电压,都可以作为ADC 的单端输入。ADC 输入引脚可选做差分增益放大器的正或负输入。如果选择差分通道,通过选择被选输入信号对的增益因子得到电压差分放大级。然后放大值成为ADC 的模拟输入。如果使用单端通道,将绕过增益放大器。通过设置ADCSRA 寄存器的ADEN 即可启动ADC。只有当ADEN 置位时参考电压及输入通道选择才生效。ADEN 清零时ADC 并不耗电,因此建议在进入节能睡眠模式之前关闭ADC。

ADC转换结果为10位,存放于ADC数据寄存器ADCH及ADCL中。默认情况下转换结果为右对齐,但可通过设置ADMUX 寄存器的ADLAR 变为左对齐。如果要求转换结果左对齐,且最高只需8 位的转换精度,那么只要读取ADCH 就足够了。否则要先读ADCL,再读ADCH,以保证数据寄存器中的内容是同一次转换的结果。一旦读出ADCL, ADC 对数据寄存器的寻址就被阻止了。也就是说,读取ADCL 之后,即使在读ADCH 之前又有一次ADC 转换结束,数据寄存器的数据也不会更新,从而保证了转换结果不丢失。ADCH 被读出后, ADC 即可再次访问ADCH 及ADCL 寄存器。ADC转换结束可以触发中断。即使由于转换发生在读取ADCH与ADCL之间而造成ADC无法访问数据寄存器,并因此丢失了转换数据,中断仍将触发。

32

沈阳理工大学学士学位论文

4 软件设计

4.1 单片机C语言程序设计

4.1.1 单片机C语言的主要特点

随着AVR技术的发展以及系统的日益发展,对嵌入式系统代码的执行效率与可靠性要求越来越高。同时为了满足工程师的协作要求,执行代码还必须有规范性、模块化的特点。C语言作为一门结构化的语言,具有功能性强、效率高和与系统接近等特点。 用C编写程序比汇编更符合人们的思考习惯,开发者可以摆脱与硬件无必要的接触,更专心的考虑功能和算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。C语言具有良好的程序结构,适用于模块化程序设计,因此采用C语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,将功能模块化,由不同的模块完成不同的功能,这样可使整个应用系统程序结构清晰,易于调试和维护。不同的功能模块,分别指定相应的入口参数和出口参数,对于一些要重复调用的程序一般把其编成函数,这样可以减少程序代码的长度,又便于整个程序的管理,还可增强可读性和移植性。

在实际单片机程序设计中,程序结构一般均采用如下结构: #include /*头文件说明部份*/ unsigned char x1,x2; /*全局变量声明部份*/ …Function1(… ){ /*功能函数定义部份*/ …… } main() {

inti,j; /* 整型变量声明部份*/ Function1(…); /* 功能函数说明部份*/ ……}

C语言具有很强的功能性和结构性,可以缩短单片机控制系统的开发周期,而且易于调试和维护,已经成为目前单片机语言中最流行的编程语言。

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

33

沈阳理工大学学士学位论文

对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好。

而C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。

综上所述,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。

4.2 主流程

4.2.1 整体程序的设计

整体程序采用分模块设计法,各模块主要包括:ATmege128函数、AD转换函数和LED显示函数等。

4.2.2 ATmega128函数

34

沈阳理工大学学士学位论文

图4.1 初始化程序流程图

4.2.3 AD转换函数

根据ATmega128自带的10位AD转换,所以需要配置ADCSRA和ADNUX两个寄存器,程序里面配置的ADCSRA=0xC6则是选择64分频,连续转换,使能AD转换的意思。ADMUX=0x00则是参考电压为AREF,输出结果右对齐,模拟通道为单端输入,输入引脚为PF0。因为用的晶振是11.0592,所以系统时钟是93us,(1/11.0592)*1024=93us。定时器的时间t=(FFFF-TCNT1)*93us=508*93=47.24ms。所以转换时间为1S。其流程踢如图4.2所示。

图4.2 AD转换程序流程图

35

沈阳理工大学学士学位论文

4.3 系统运行

4.3.1 程序下载软件

如果使用并口下载线,并口接电脑 ,另一端接电路板上 。ISP下载需使用软件SLISP。

图4.3 程序下载界面图

4.3.2 系统运行结果

程序下载完毕后,LED显示出电压图4.4是显示的3.5V

36

本文来源:https://www.bwwdw.com/article/1jbg.html

Top