当前位置:首页 > 教学设计 > 数据采集论文_论文数据采集方法有哪些
 

数据采集论文_论文数据采集方法有哪些

发布时间:2019-07-24 09:31:02 影响了:

摘要

摘要

随着科学技术的发展和微型计算机技术的广泛应用,数据采集监测已成为日益重要的检测技术。在现代工业中,多路数据采集已被广泛应用于工业和农业等等场合,因此对数据采集系统的许多方面,如采样率、分辨率、存储深度、数字信号处理速度、抗干扰能力等方面提出了越来越高的要求。目前常用的方式是在PC 机中安装数据采集卡,它采集速率高,数据传输速度快,但是安装不方便,价格高,所以设计一种安装方便、价格低的实用数据采集系统很有必要。

结合单片机的相关知识本论文设计和完成了基于ATmega16AVR 单片机的多路数据采集系统的设计。系统可以采集多路信号,如电压、电流、频率和开关量等,在显示模块上准确显示,可以经过改进应用在监控多路温度、湿度和压力等场合。系统的实现是利用MEGA16自带ADC 转换的强大功能,将模拟量等数据采集并传送到主机,然后送到12864液晶显示器上显示。多路数据采集系统最多可采集8路模拟数据,通过键盘可以选择采集相应的数据。另外,本装置还可以通过RS232接口与电脑连接,数据送到电脑后可以显示在屏幕上,有广大的应用前景。

关键词 单片机; 液晶显示器; 电位器; 数据采集

- I -

Abstract

With the development of science and technology and the range of micro-computer technology applications becoming wider and wider, data collection has become increasingly important to monitor the detection technology. In modern industry, multi-channel data acquisition has been widely used in industry and agriculture, and so on. So the demand in many areasof the data collection system, such as the sampling rate, resolution, memory depth, digital signal processing speed, anti-interference capability is geting increasingly high.Now the commonly used method is to install data acquisition cards in PC, these cards have a high rate of collection and data transmission .But it is not convenient to install.So it is necessary to design a inexpensive and practical data acquisition system .

With the knowledge of MCU I have designed and completed a thesis on ATmega16 AVR microcontroller chip to control the multi-channel data acquisition system design. The purpose of this design is collecting multiple signals, such as voltage, current, frequency and volume switch, accurately display module that can be improved in the application of multi-monitor temperature, humidity and pressure, and other occasions. its own system using the power of conversion, data acquisition and will be sent it to the host,then to 12864 LCD display.At most it can get up to 8 channels to collect information,which canrely on the keyboard to choice a kind of idea. In addition, the device can also connect RS232 interface with the computer. Data can display on the screen after senting back to computer. There are a majority of the application.

Keywords MCU; Liquid crystal display; Potentiometers; Data acquisition

- II -

目录

摘要 ......................................................................................................................... I Abstract ................................................................................................................ II

第1章 绪论 ........................................................................................................... 1

1.1 课题背景 ................................................... 1

1.2 数据采集技术与特点 ......................................... 1

1.2.1 数据采集技术分析 ............................................................................... 1

1.2.2 数据采集的的特点 ............................................................................... 2

1.3 数据采集技术的发展状况 ..................................... 2

1.3.1 数据采集的的研究现状 ....................................................................... 2

第2章 系统总体方案设计 ................................................................................... 6

2.1 系统方案论证 ............................................... 6

2.1.1 电源模块的选择 ................................................................................... 6

2.1.2 显示模块的选择 ................................................................................... 6

2.1.3 键盘模块的选择 ................................................................................... 7

2.2 系统总体方案设计 ........................................... 9

第3章 系统硬件设计 ......................................................................................... 10

3.1 总体设计部分 .............................................. 10

3.2 硬件电路设计部分 .......................................... 11

3.2.1 MEGA16单片机 .................................................................................... 11

3.2.2 输入电路设计 ..................................................................................... 11

3.2.3 12864液晶显示电路设计 ................................................................... 22

3.2.4 MAX232和串行口插座电路设计 ........................................................ 27

3.2.5 系统原理图 ......................................................................................... 29

第4章 系统软件设计 ......................................................................................... 30

4.1 软件设计思想 .............................................. 30

4.2 主程序设计 ................................................ 30

4.3 A/D转换程序的设计 . ........................................ 31

4.4 串口程序设计 .............................................. 32

4.5 显示程序设计 .............................................. 34

结论 ....................................................................................................................... 36

- I -

致谢 ....................................................................................................................... 37

参考文献 ............................................................................................................... 38

附录Ⅰ ................................................................................................................... 39 附录Ⅱ

- II -

目录

第1章 绪论

1.1 课题背景

数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统,是指从传感器和其它待测设备等模拟和数字被测单元中自动采集信息的过程。

在计算机广泛应用的今天,数据采集的重要性是十分显著的。它是计算机与外部物理世界连接的桥梁。各种类型信号采集的难易程度差别很大。实际采集时,噪声也可能带来一些麻烦。数据采集时,有一些基本原理要注意,还有更多的实际的问题要解决。

随着电子技术的不断进步,芯片处理速度大幅提高,同时,接口技术的发展和软件的进步越来越快,当今的数据采集效率在各方面的应用都得到了飞速的提升数据采集。网络化制造系统中的信息化终端是在车间环境中实施网络化制造的关键装置之一,而数据采集系统是实现制造企业整个生产过程的信息集成,实施综合自动化,以及网络化制造中设备层远程监控的基础。在实际应用中,数据采集常常和工业控制联系在一起,形成一套完整的数据采集监控系统。由于各种工业现场条件不同,对现场的数据采集与控制功能的要求也不尽相同,而且各种信息化终端采用的体系结构和设计方案都有很大的差异,因此如何在各种信息化终端的基础上灵活扩展数据采集与控制模块来满足现场需要具有很大的研究意义。

1.2 数据采集技术与特点

1.2.1 数据采集技术分析

在现有的资料中,多路数据采集系统一般由CPU 模块、数据采集模

- 1 -

块、数据输出模块、时钟模块、液晶显示模块、RS-232通讯模块、CAN 总线模块、DeviceNet 模块、电源模块组成。主要设计了模拟量采集接口电路、CPU 外围电路、通讯模块接口电路。其中典型的有为实现数据的定时采集和按时间日期保存数据而扩展了一片实时时钟日历芯片DS12887;为便于输入各种数据而扩展了键盘接口管理器件SK5278;为便于实时显示采集的数据及人机交互而扩展了中文液晶图文显示器;为便于将采集的数据传送给上位计算机进行数据的处理分析而使用MAX232扩展了RS-232接口,而大部分功能都由单片机芯片中实现。

1.2.2 数据采集的的特点

单片机系统采集的信号有模拟电压信号、模拟电流信号、PWM 信号、数字逻辑信号等。现在,绝大多数传感器的信号都是模拟量,电流和电压。所以模拟信号的采集应用最为广泛,处理过程也相对复杂。相对于模拟信号,PWM 信号和数字逻辑信号的采集比较直接,单片机能够直接处理这类信号,无需额外的器件进行信号转换。

1.3 数据采集技术的发展状况

随着计算机技术的飞速发展和普及,数据采集系统迅速得到广泛应用,它渗透到工业、地质、医疗器械、通讯、遥感遥测等各个领域,为获取信息提供了良好的基础。在生产过程中应用这一系统,可实现对生产现场各种参数的采集、监视和记录,为安全生产、提高产品质量、以及降低成本和减少损失提供信息和手段。

1.3.1 数据采集的的研究现状

常用的数据采集系统有两种。一是以MCU 为核心的数据采集系统,即MCU+A/D形式。它的主要构成通常包括传感器、模拟多路开关、程控放大器、采样保持器,A/D转换器、MCU 及特殊外设等组成部分。这类系

- 2 -

第1章 绪论

统具有价格低廉、体积小、结构简单、功能强大、应用灵活、稳定可靠等许多优点,因而得到了人们充分的关注并发展成熟起来,现己广泛应用于工业控制、仪器仪表以及简单的通讯设备中; 而且,由于功能的添加和技术改进,它们在这些领域还占有相当的数量。这种数据采集系统注重的是数据采集和控制的实时性,除了进行一些简单的数字处理之外,一般不进行大规模的数据存储,这是由单片机本身的架构所决定的。对于一些比较复杂的应用场合,比如通讯和控制领域,这种基于MCU 的数据采集系统的应用就受到限制。合具备相应能力的数据采集和控制的硬件模块。但是,由于各种信息化终端采用的体系结构和设计方案各有不同,要让信息化终端针对每种现场需求量身定制数据采集与控制模块不大现实,因为这需要针对不同的现场要求开发不同的硬件和软件,这样会大大增加产品的开发周期和成本,同时也不利于信息化终端的抗干扰和可靠性的设计。因此,如何在降低成本,保证信息化终端的可靠性,又能够灵活的适应各种工业现场对数据采集与控制功能不同要求的前提下,为各种信息化终端开发出能够灵活扩展的通用数据采集与控制模块成为本文重点研究的内容。目前关于多路数据采集系统已经有很多较为成熟的课题,集成度也很高。数据采集技术是一种广泛应用于信号检测、信号处理、仪器仪表等领域的电子技术。目前,低速、低分辨率的数据采集技术已相当成熟,因而系统的组建也相对容易,而近年来,随着数字化技术的不断发展,数据采集技术呈现出速度更高、通道更多、数据量更大的发展态势,这种高速、高分辨率的数据采集系统存在很多实际技术问题,其关键技术在于高速A/D技术、抗干扰技术、数据的存储和传输技术、信号调理技术和接口技术等。随着PXI 总线系统的产生,为研制作为自动测试系统的基本模块数据采集模块提供了非常理想的环境。

二是以计算机为控制核心的数据采集系统,可归结为 PC+数据采集板卡的形式。自从IBM 公司的个人计算机问世以来,PC 及其兼容机的应用范

- 3 -

围越来越广泛。它不再仅仅局限于科学计算和事务管理,而是与基于PC 的各种内总线的接口卡结合,逐渐被应用到实时数据采集等测控领域中。用于工业控制的PC 采用了标准总线,包括工控标准总线STD 、传输位总线BIT-BUS, CAN 总线、PC 总线等总线系统。目前的数据采集板/卡一般都采用PC 总线,可以插入主机内形成内插式工作方式。这些总线技术利用PC 机强大的数据处理能力、丰富的软硬件资源,为数据的应用提供了非常有利的条件:

a. 用户环境好,系统投运时对操作人员的培训期短;

b. 软件开发便利,有许多成熟的支持程序和应用程序可利用和借鉴; c. 维护支持环境好。

与前一种数据采集系统相比,PC+数据采集卡方式的数据采集和处理的速度比较快; 但是PC 的接口资源有限,而且需要对接口卡的硬件资源进行合理配置,扩展难度较大。虽然后来推出的即插即用接口标准 (PCI和ISA PnP ) ,由基本输入输出系统和操作系统自动完成对接口卡的资源配置,使得功能扩展接口卡的使用变得相对简单方便,但仍然存在如下一些问题。

第一,卡的配置必须停机,并且需要打开PC 机箱进行安装和拆卸,使用仍然存在很大的不方便之处。

第二,接口卡设备驱动程序的安装、调试,甚至正常运行过程都需要各种技术支持,特别是接口卡作为一种硬件设备插入PC 后,要占用PC 的各种硬件资源,其安装配置过程仍然需要人工干预。当扩展卡较多时,常常会出现因一块或多块插卡无法合理配置而不能正常工作的情形,严重时甚至导致整个系统崩溃。

第三,接口卡的质量高低、兼容性、以及驱动程序的可靠性直接影响计算机的寿命和系统的稳定性。

第四,对于笔记本电脑等小型PC 很难对插卡接口进行扩展。

- 4 -

第1章 绪论

随着科学技术的进步发展,数据采集装置的性能不断提高。简单的说,数据采集装置已经历了四不发展阶段:

(1)初期阶段 它由电磁机械结构的继电器多路开关,低性能的A/D转换器,以及由数字寄存译码电路及打印机组成的数据处理部件三者构成,而同步控制器是简单的顺序控制器。

(2)早期阶段 逐渐形成专用装置,通称巡回检测装置,各部件性能有较大改进,如输入切换开关的半导体化,控制器的功能复杂化,A/D转换器精度的提高等等,使这种装置的应用性能不断提高,获得大量推广。

(3)中期阶段 上述装置均为服务于某一特定测量对象的专用设备而缺少通用性,因而人们采用了更先进的应答式控制方式,创造了通用性很强,能适用于许多对象的装置。但无论是早期或中期的装置,都是结构复杂、体积庞大、价格昂贵、阻碍了更广泛的应用。

(4)近期阶段 由于计算机和微电子技术的发展,使数据采集装置进入了一个全新的阶段。有较早的上架安装演进到今天功能强大的模块化数据采集装置,它不但性能好、实用性强、功能多、并且体积小。具有代表性的是基于ISA, PCI, GPIB, VXI, PXI等总线的数据采集模块,辅以软件便构成了功能强大的虚拟仪器。

本文由五章组成。第一章综述了数据采集技术的简介、技术、特点和发展状况。第二章介绍系统的总体设计方案,其中包括有关设计的总体工作流程、系统方案的论证和总的系统框图。第三章介绍各硬件电路的设计。在本章中简要的介绍了ATMEGA16单片机的功能、内部结构和外围电路,12864液晶显示屏、MAX232、DB9针串行口各引脚的定义、时序图和与单片机的电路连接。第四章介绍软件的设计。本章主要是介绍C 语言的应用和优势,描述了液晶显示、键盘、串口、读写时间的程序和画出各部分的程序框图。第五章对本设计的工作进行了概括和总结。

- 5 -

第2章 系统总体方案设计

2.1 系统方案论证

2.1.1 电源模块的选择

方案一:双电源供电。将继电器驱动电源与单片机及其周边电路电源完全隔离,利用光电耦合器传输信号。

方案二:所有器件采用单一5V 电源。这样供电比较简单。

经过上述分析,拟采用方案二,电源电路如图2-1所示。

图 2-1 GND

电源电路

2.1.2 显示模块的选择

方案一:通过单片机,直接驱动LED 。LED 应用可分为两大类:一是LED 单管应用,包括背光源LED ,红外线LED 等;另外就是LED 显示屏。LED 显示屏是由发光二极管排列组成的一显示器件。它采用低电压扫描驱动,优点是:使用寿命长、成本低、亮度高、故障少、视角大、电路结构简单、可视距离远等。 缺点是:体积大,功耗和散热量高(LED 与LCD

- 6 -

第2章 系统总体方案设计

的功耗比大约为10:1)、占用的I\O口数量多,编程比较复杂。

方案二::通过单片机,直接驱动LCD 。其工作原理就是利用液晶的物理特性:通电时排列变得有序,使光线容易通过;不通电时排列混乱,阻止光线通过。 LCD 的好处有: 与LED 相比,LCD 的优点主要包括零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利、占用的I\O口数量少等。 缺点是:价格昂贵。

经过上述分析,在本设计中,显示电压时最少要用四个LED ,这样最少也需要12个I\O口,如果用LCD 显示只需要3个I\O口,还有就是从编程的角度考虑,LCD 的编程比较简单和易于管理,拟采用方案二。

2.1.3 键盘模块的选择

方案一:矩阵式键盘。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图2-4所示。

图 2-4矩阵式键盘电路

矩阵式键盘中,行、列线分别连接到按键开的两端,行线通过上拉电阻接到+5V 上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别

- 7 -

按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。由图可知,一个4×4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。

方案二:独立式按键。单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。独立式按键电路如图2-3所示。独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。此外,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线。

图 2-3 独立式按键电路

经过上述分析,本设计单片机所用按键少,拟采用方案二。

- 8 -

第2章 系统总体方案设计

2.2 系统总体方案设计

本次多路数据采集系统的设计,主要是以ATMEGA16单片机为控制核心,由多路模拟量输入、频率量输入、开关量输入、12864液晶显示模块、键盘模块、MAX232转换模块和单片机七个部分组成。本设计主要研究的是从采集多路输入量,然后通过单片机送入12864液晶屏上准确显示,由于采集信号时有干扰,为了能够获得更准确的结果,本设计采取了前端调整电路,同时,还可以通过按键控制采集指定的那路信号。系统框图如图2-4。

图 2-4 系统框图

- 9 -

第3章 系统硬件设计

3.1 总体设计部分

本系统应具有如下功能:

(1)可实现模拟量8路单端输入,通道循环扫描;

(2)可程控量程转换;

(3)可选的多种触发方式;

其主要性能指标如下:

(1)8通道单端信号输入,最高采样率200ksps;

(2)分辨率:10bits;

(3)准确度:0.01%;

(4)输入信号电压范围:0-+O.1V, 0-+1V, 0-+2V及0-+5V四种方式可程控选择。

电路设计的原则有以下几点:

(1)软硬结合。在单片机应用系统中,许多硬件能完成的功能也可以由软件完成。用软件来实现的硬件功能可以减少硬件电路,但响应时间则比硬件实现要长的多,而且占用许多CPU 的执行时间,且部分算法的实现往往非常复杂。在考虑硬件软化是需要考虑这些因素。

(2)选用典型的芯片促进硬件系统的标准化和模块化。

(3)全面规划系统资源,再进行系统开发是要考虑系统的扩展,以利于系统的二次开发。

(4)信号兼容性。考虑设计好的单元电路之间接口信号的类型,如TTL 信号与RS-232信号的转换、高速信号与低速信号的缓冲等等。

根据以上原则,进行硬件设计。

- 10 -

第3章 系统硬件设计

3.2 硬件电路设计部分

3.2.1 MEGA16单片机

本设计选用ATmega16单片机作为系统的CPU 。ATmega16是基于增强的AVR RISC结构的低功耗8位CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPSMHz ,从而可以缓减系统在功耗和处理速度之间的矛盾。

AVR 内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10倍的数据吞吐率。

产品特性:

(1)131条指令,大多数指令执行时间为单个时钟周期

(2)32个8位通用工作寄存器

(3)全静态工作

(4)工作于16MHz 时性能高达16MIPS

(5)只需两个时钟周期的硬件乘法器

ATMEGA16还配有16K 字节的系统内可编程Flash(具有同时读写的能力,即RWW) ,512字节EEPROM ,1K 字节SRAM ,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数(T/C),片内/外中断,可编程USART ,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU 停止工作,而USART 、两线接口、A/D转换器、SRAM 、T/C、SPI 端口以

- 11 -

及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。本芯片是以ATMEL 高密度非易失性存储器技术生产的。片内ISP Flash允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash 存储区(Application Flash Memory)。在更新应用Flash 存储区时引导Flash 区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。通过8位RISCCPU 与系统内可编程的Flash 集成在一个芯片内,ATmega16成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

JTAG 接口符合JTAG 标准的边界扫描功能支持扩展的片内调试功能。 通过JTAG 接口实现对Flash 、EEPROM 、熔丝位和锁定位的编程外设特点:

(1)两个具有独立预分频器和比较器功能的8位定时器/计数

(2)一个具有预分频器、比较功能和捕捉功能的16位定时器/计数

(3)具有独立振荡器的实时计数器RTC

(4)四通道PWM

(5)8路10位ADC ,8个单端通道

(6)TQFP 封装的7个差分通道

2个具有可编程增益(1x,10x, 或200x )的差分通道:

–面向字节的两线接口

- 12 -

GND :地 引脚说明如下: –片内模拟比较器

口A 处于高阻状态。 VCC :数字电路的电源 –两个可编程的串行USART ATmega16的引脚图如图3-1。

–可工作于主机/从机模式SPI 串行接口 –具有独立片内振荡器的可编程看门狗定时器 图3-1 ATmega16的芯片图 第3章 系统硬件设计 被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特

端口B(PB7—PB0) : 端口B 为8位双向I/O口,具有可编程的内部上拉电端口A(PA7—PA0) : 端口A 做为A/D转换器的模拟输入端。端口A 为8位

- 13 -

阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。端口B 也可以用做其他不同的特殊功能。

端口C(PC7—PC0) : 端口C 为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如JTAG 接口使能,即使复位出现引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻被激 活。端口C 也可以用做其他不同的特殊功能。

端口D (PD7—PD0) : 端口D 为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能。

RESET :复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。

XTAL1: 反向振荡放大器与片内时钟操作电路的输入端。

XTAL2:反向振荡放大器的输出端。

AVCC : AVCC是端口A 与A/D转换器的电源。不使用ADC 时,该引脚应直接与V 连接。使用AVCC 时应通过一个低通滤波器与VCC 连接。

AREF : A/D的模拟基准输入引脚。

结构综述AVR 结构的方框图

- 14 -

第3章 系统硬件设计

图3-2 AVR结构的方框图

为了获得最高的性能以及并行性,AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令(在本文称为预取) 。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH 。

快速访问寄存器文件包括32个8位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU 操作。在典型的ALU 操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。

寄存器文件里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16位的X 、Y 、Z 寄存器。 ALU 支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU 也可以执行单寄存器操作。运算完成之后状态寄存器的内容得到更新以反映操作结

- 15 -

果。

程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间大多数指令长度为16位,亦即每个程序存储器地址都包含一条16位或32位的指令。

TDI–端口C,Bit5 TDI,JTAG 测试数据输入:串行输入数据移入指令寄存器或数据寄存器(扫描链) 。当JTAG 接口使能,该引脚不能作为I/O引脚。

TDO –端口C,Bit4 TDO,JTAG 测试数据输入:串行输入数据移入指令寄存器或数据寄存器(扫描链) 。当JTAG 接口使能,该引脚不能作为I/O引脚。TD0引脚在除TAP 状态情况外为三态,进入移出数据状态。

TMS –端口C,Bit3 TMS,JTAG 测试模式选择:该引脚作为TAP 控制器状态工具的定位。当JTAG 接口使能,该引脚不能作为I/O引脚。

TCK –端口C,Bit2 TCK,JTAG 测试时钟:JTAG 工作在同步模式下。当JTAG 接口使能,该引脚不能作为I/O引脚。

计数器单元8位T/C的主要部分为可编程的双向计数单元。图3-3

计数器单元方框图。

图3-3 计数器单元方框图

信号说明(内部信号) :

count 使TCNT0加1或减1。

direction 选择加操作或减操作。

clear 清除TCNT0(将所有的位清零) 。

- 16 -

第3章 系统硬件设计

top 表示TCNT0已经达到了最大值。

bottom 表示TCNT0已经达到了最小值(0)。

根据不同的工作模式,计数器针对每一个clk 实现清零、加一或减一操作。clk 可以由T0T0内部时钟源或外部时钟源产生,具体由时钟选择位CS02:0确定。没有选择时钟源时 (CS02:0=0)定时器即停止。但是不管有没有clk ,CPU 都可以访问TCNT0。CPU 写操T0作比计数器其他操作(如清零、加减操作) 的优先级高。计数序列由T/C控制寄存器(TCCR0)的WGM01和WGM00决定。计数器计数行为与输出比较OC0的波形有紧密的关系。T/C溢出中断标志TOV0根据WGM01:0设定的工作模式来设置。TOV0可以用于产生CPU 中断。

Bit7–FOC0:强制输出比较FOC0仅在WGM00指明非PWM 模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM 时,写TCCR0要对其清零。对其写1后,波形发生器将立即进行比较操作。

比较匹配输出引脚OC0将按照COM01:0的设置输出相应的电平。要注意FOC0类似一个锁存信号,真正对强制输出比较起作用的是COM01:0的设置。FOC0不会引发任何中断,也不会在利用OCR0作为TOP 的CTC 模式下对定时器进行清零的操作。读FOC0的返回值永远为0。

Bit6,3–WGM01:0:波形产生模式。这几位控制计数器的计数序列,计数器的最大值TOP ,以及产生何种波形。T/C支持的模式有:普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM 模式。

Bit5:4–COM01:0:比较匹配输出模式这些位决定了比较匹配发生时输出引脚OC0的电平。如果COM01:0中的一位或全部都置位,OC0以比较匹配输出的方式进行工作。同时其方向控制位要设置为1以使能输出驱动器。当OC0连

- 17 -

接到物理引脚上时,COM01:0的功能依赖于WGM01:0的设置。Table39给出了当WGM01:0设置为普通模式或CTC 模式时COM01:0的功能。

Bit2:0–CS02:0:时钟选择。用于选择

T/C的时钟源。

通过T/C寄存器可以直接对计数器的8位数据进行读写访问。对TCNT0寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0的数值有可能丢失一次TCNT0和

OCR0的比较匹配。

输出比较寄存器包含一个8位的数据,不间断地与计数器数值TCNT0进行比较。匹配事件可以用来产生输出比较中断,或者用来在OC0

引脚上产生波形。

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

当OCIE0和状态寄存器的全局中断使能位I 都为”1”时,T/C0的输出比较匹配中断使能。

当T/C0的比较匹配发生,即TIFR 中的OCF0置位时,中断服务程序得以执行。

Bit0–TOIE0:T/C0溢出中断使能。当TOIE0和状态寄存器的全局中断使能位I 都为”1”时,T/C0的溢出中断使能。T/C0产生出,即TIFR 中的TOV0位置位时,中断服务程序得以执行。

- 18 -

第3章 系统硬件设计

Bit1–OCF0:输出比较标志0。

当T/C0与OCR0(输出比较寄存器0) 的值匹配时,OCF0置位。此位在中断服务程序里硬件清零,也可以对其写1来清零。当SREG 中的位I 、OCIE0T/C0比较匹配中断使能OCF0都置位时,中断服务程序得到执行。

Bit0–TOV0:T/C0溢出标志。

当T/C0溢出时,TOV0置位。执行相应的中断服务程序时此位硬件清零。此外,TOV0也可以通过写1来清零。当SREG 中的位I 、TOIE0T/C0溢出中断使能)TOV0都置位时,中断服务程序得到执行。在相位修正PWM 模式中,当T/C0在0x00改变记数方向时,TOV0置位。

串行外设接口-串行外设接口SPI 允许ATmega16和外设或其他AVR 器件进行高速的同步数据传输。

ATmega16有一个10位的逐次逼近型ADC 。ADC 与一个8通道的模拟多路复用器连接,能对来自端口 A 的 8 路单端输入电压进行采样。单端电压输入以 0V (GND) 为基准。

器件还支持 16 路差分电压输入组合。两路差分输入 ADC1、 ADC0 与 ADC3、 ADC2有可编程增益级,在 A/D 转换前给差分输入电压提供 0dB(1x)、20dB(10x) 或 46dB(200x)的放大级。七路差分模拟输入通道共享一个通用负端 ADC1),而其他 ADC 输入可做为正输入端。如果使用 1x 或 10x 增益,可得到 8 位分辨率。如果使用 200x 增益,可得到 7 位分辨率。ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定。ADC 由 AVCC 引脚单独提供电源。 AVCC 与 V之间的偏差不能超过 ± 0.3V。标称值为 2.56V的基准电压,以及 AVCC,都位于器件之内。基准电压可以通过在AREF 引脚上加一个电容进行解耦,以更好地抑制噪声。

2. ATMEGA16单片机的晶体振荡器

XTAL1和XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如

- 19 -

图3-5所示。这个振荡器瓷谐振器。熔丝位CKOPT 用来选择这种放大器模式的其中之一。当 CKOPT被编程时振荡器在输出引脚产生满幅度的振荡,这种模式适合于噪声环境,以及需要通过 XTAL2 驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽。当保持 CKOPT为未编程状态时,振荡器的输出信号幅度比较小,其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。对于谐振器, CKOPT 未编程时的最大频率为8 MHz,CKOPT 编程时为16MHz 。C1和C2的数值要一样。

3. ATMEGA16单片机的复位

复位 复位时所有的 I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。如果程序永远不会使能中断,则中断向量可以由一般的程序代码所覆盖。复位源生效时 I/O 端口立即复位为初始值,不需要任何时钟的辅助。当所有的复位信号消失之后,延迟计数器被激活,从而延长了内部复位,并使得在 MCU正常工作之前电源达到稳定的电平。延迟计数器的溢出时间通过熔丝位 CKSEL 由用户设定。复位源ATmega16有5个复位源:

(1)上电复位。电源电压低于上电复位门限V 时,POTMCU 复位。

(2)外部复位。引脚RESET 上的低电平持续时间大于最小脉冲宽度时MCU 复位。

(3)看门狗复位。看门狗使能并且看门狗定时器溢出时复位发生。

(4)掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限V 时BOTMCU 即复位。

(5)JTAGAVR 复位。复位寄存器为1时MCU 复位。

图3-5是单片机的连接图。

- 20 -

3.2.2 输入电路设计

放大器的电压增益:V o

低通滤波器的截止频率:=V i f 0=

12πRC OP07构成同相放大器,对输入信号进行一级放大。R2、C1构成一阶低通滤波器,对输入信号中的噪声进行滤波。 图3-6 调整电路

第3章 系统硬件设计 ⎛R 4⎫ ⎪ ⨯1+ ⎪R 3⎭⎝图3-5 单片机的连接图

- 21 -

模拟输入端采用电位器。如图3-7。

图3-7 模拟输入端

3.2.3 12864液晶显示电路设计

液晶显示模块是 128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312 码简体中文字库(16X16 点阵)、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM (GDRAM )。可与 CPU 直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式,本设计中采用串行方式,如图3-8是12864与ATMEGA16串行接口电路图,图3-4是12864串行连接时序图。

图3-8液晶屏的串行接口

- 22 -

第3章 系统硬件设计

图3-9串行连接时序图

1. 引脚说明,如表3-2所示:

表3-2 12864引脚说明

2.12864指令集

128×64点阵汉字图形型液晶显示模块的有一套用户指令集,这套指令集的具体功能介绍如下:

(1)清除显示(指令代码为 01H) :功能为清除显示屏幕,把 DDRAM 位址计数器调整为“00H ”。

- 23 -

(2)位址归位(02H):功能为把 DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示

DDRAM 。

(3)点设定(07H/04H/05H/06H):功能为设定光标移动方向并指定整体显示是否移动。 I/D=1 光标右移,I/D=0 光标左移; SH=1且DDRAM 为写状态,整体显示移动,方向由 I/D 决定(I/D=1 左移,I/D=0 右移);SH=0 或

DDRAM 为读状态,整体显示不移动。

(4)显示状态 开/关(08H/0CH/0EH/0FH):功能为D=1,整体显示开;C=1,游标开;

B=1,游标位置开。

(5)游标或显示移位控制(10H/14H/18H/1CH):功能10H/14H表示光标左/右移动;18H/1CH表示整体显示左/右移动,光标跟随移动,AC

值不变。

(6)功能设定(36H/30H/34H):功能为DL=1(必须设为 1);RE=1,表示扩充指令集动作;RE=0,表示基本指令集动作。“RE ”为基本指令集与扩充指令集的选择控制位元,当变更“RE ”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE ”位元,否则使用相同指令集时,不需每次重设“

RE ”位元。

(7)设定 CGRAM 位址(40H-7FH):功能为设定CGRAM 位址到位址

- 24

-

第3章 系统硬件设计

计数器(AC )。

(8)设定DDRAM 位址(80H-9FH ):功能为设定DDRAM 位址到位址计数器(AC )。

(9)读取忙碌状态(BF )和位址(BF=1, 状态忙) :功能为读取忙碌状态(BF )可以确认内部动作是否完成,同时可以读出位址计数器(AC )的值。当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取 BF 标志时 BF 需为0,方可接受新的指令;如果在送出一个指令前并不检查 BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成。

(10)写资料到 RAM :功能为写入资料到内部的 RAM 。

(11)读出RAM 的值:功能为从内部 RAM 读取资料。

(12)待命模式(01H):功能为进入待命模式,执行其他命令都可终止待命模式。

(13)卷动位址或 IRAM 位址选择(02H/03H):功能为SR=1,允许输入卷动位址;SR=0,允许输入 IRAM 位址。

- 25 -

(14)反白选择(04H\05H):功能为选择 4

行中的任一行作反白显示,并可决定反白的与否。

(15)睡眠模式(08H/0CH):功能为SL=1,脱离睡眠模式 ;SL=0

,进入睡眠模式。

(16)扩充功能设定(36H/30H/34H):功能为RE=1,扩充指令集动作;RE=0,基本指令集动作 ;G=1,绘图显示开;

G=0,绘图显示关。

(17)设定 IRAM 位址或卷动位址(40H-7FH ):功能为SR=1,AC5~AC0为垂直卷动位址;SR=0,AC3~AC0写

ICONRAM 位址。

(18)设定绘图RAM 位址(80H-FFH ):功能为设定 GDRAM 位址到位址计数器(AC

)。

3.12864显示步骤

显示资料RAM 提供 64×2 个位元组的空间,最多可以控制4 行16 字(64 个字)的中文字型显示,当写入显示资料 RAM 时,可以分别显示CGROM 、HCGROM 与 CGRAM 的字型;ST7920A 可以显示三种字型,分别是半宽的HCGROM 字型、CGRAM 字型及中文CGROM 字型,三种字型的选择,由在DDRAM 中写入的编码选择,在 0000H —0006H 的编码中将自动的结合下一个位元组,组成两个位元组的编码达成中文字型的编码(A140—D75F )。

- 26 -

第3章 系统硬件设计

3.2.4 MAX232和串行口插座电路设计

1.MAX232芯片说明

由于电脑和单片机的电平是不一样的,因此两者要进行数据交换,必须采用相应的电平转换电路。用的最多的就是RS232通讯方式,采用MAX232芯片即可完成。UARTO 使用的RS232电平转换芯片是美信公司生产的MAX232CPE , MAX232CPE 引脚图如图3-10所示。

图3-10 MAX232CPE引脚图

MAX232包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F 电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F 电平转换成5-V TTL/CMOS电平。供电脚为+5V ,中间连接的电解电容取50V 1UF。

TTL/CMOS INPUTS 这个端口是的作用是输入TLL 或CMOS 信号的,一般为0-5V ,低电平为零,高电平为VCC 。

TTL/CMOS OUTPUTS 端, 这个端口的作用是输出TLL 或CMOS 信号,输出电压一般为0-5V ,低电平为零,高电平为VCC 。

RS232 OUTPUTS 这端口是把TTL 或CMOS 的信号转为RS232的信号输出,输出为正负12V 到电脑。

RS232 INPUTS 这个端口是接收到电脑发出的正负12伏,由232输出转为

- 27 -

TTL 或CMOS 信号,这个信号也为正负12V 。

MAX232内部有二组232转换电路,使用的时候一般是11脚和14 脚一组,13脚和12脚为一组,10脚和7脚一组,8脚和9脚一组。

RS232接口是1970年由美国电子工业协会(EIA )联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。 它的全名是“数据终端设备(DTE )和数据通讯设备(DCE )之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。 RS232接口的特点:

(1)应用广泛:目前RS-232是PC 机与通信工业中应用最广泛的一种串行接口。

(2)设计简单:通常RS232接口存在于PC 机与终端板(TTL 电平),一般情况,需使用电平转换电路才能相连。

(3)适用于低速通讯系统:传输速率较低,一般在200K 以内为。 (4)传输距离较短:最大传输距离标准值为50英尺。

2.DB 9针串行口插座

本设计中的串行口座用 DB9 的母头,这样 就能用买来的 PC 串行

口延长线进行和电脑相连接,也能直接接到电脑 COM 口上。 如图3-11所示,各引脚定义和功能如表3-3所示。

- 28 -

第3章 系统硬件设计

表3-3 功能表

图3-11串行9 针插座3.MAX232、串行口与单片机的电路连接

MAX232、串行口与单片机的电路连接如图3-12所示:

图3-12MAX232、串行口与单片机的电路连接图

3.2.5 系统原理图

系统总原理图见附录Ⅱ。

- 29 -

第4章 系统软件设计

4.1 软件设计思想

本系统以C 语言结合AVR 单片机的特有指令和格式进行软件设计。C 语言作为一种编程语言十分受人欢迎,是目前世界上流行、使用最广泛的高级程序设计语言。C 语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C 语言明显优于其它高级语言,许多大型应用软件都是用C 语言编写的。根据总体设计的思想及本系统的实现的功能,在系统软件设计之中主要包括以下子程序模块:主程序、A/D程序、键盘子程序、显示子程序等五部分,完整程序见附录Ⅰ。

4.2 主程序设计

在本设计中主程序主要是菜单管理程序,先从模拟输入端获得数据,然后送入单片机内部A/D进行转换并在LCD 上显示。也可以通过按键来选择循环的方式采集数据。主程序流程图如图4-1所示。

- 30 -

第4章 系统软件设计

图4-1 主程序流程图

4.3 A/D转换程序的设计

设计中以ATmega16的内部参考电压为准,主要是对输入的,以下是12887的部分程序,程序流程图如图4-2所示。 /****获取时间和日期的程序****/

void adc_init(void)

{ ADMUX = (1

(1

- 31 -

//ADLAR = 0,转换结果选择右对齐

ADCSRA = (1(1

图4-2 A/D转换程序流程图

4.4 串口程序设计

串口程序主要是通过串口将采集的数据传送给电脑可以显示在屏幕上。程序流程图如图4-3所示。

void USART_Operation(void) {char i=0; CLI(); uart0_init();

- 32 -

第4章 系统软件设计

init_12864(); CLR_LCD(); SEI(); while(1)

{if(!Receive_flag)

{display_Chinese(0,20,0,3,0,Link); //联机中... display_Letter(0,68,0,3,Points);//... } else if(Receive_flag&&Receive_value==0xaa) {display_Chinese(0,20,0,2,0,Link); //联机 display1616(0,52,0,Chinese[43]);//成功 display1616(0,68,0,Chinese[44]); display8_16(0,84,0,Letter[37]);//! UCSR0B&=~(1

for(i=0;i

else {UCSR0B&=~(1

display_Chinese(2,20,0,2,0,Link); //联机 display1616(2,52,0,Chinese[45]);//失败 display1616(2,68,0,Chinese[46]); display8_16(2,84,0,Letter[37]);//!

display_Chinese(4,20,0,5,0,check);//请检查网络!

- 33 -

display8_16(4,100,0,Letter[37]);//! UCSR0B|=(1

}}}

图4-3 串口程序流程图

4.5 显示程序设计

显示程序中主要是显示从单片机中读取数据和相应的管理菜单,让人可以一目了然,可以使在操作上更加简单,以下是显示中的部分程序,程序流程图如图4-4所示。

/*****

显示初始化程序*****/ void port_init(void) { PORTA = 0x20; DDRA = 0x20; PORTB = 0xBE; DDRB = 0xBE;

PORTC = 0x80; 图4-4 显示程序流程图

- 34 -

第4章 系统软件设计

DDRC = 0x80;

PORTD = 0x00; DDRD = 0x0f; } void LCD_Init(void) { uchar cmd; cmd=0x30;

//功能设置 8位数据,基本指令

W_1byte(0,0,cmd); Delay(2); cmd=0x0C;

//显示状态 ON ,游标OFF ,反白OFF

W_1byte(0,0,cmd); Delay(2); cmd=0x01;

//写指令

//清除显示 //写指令

W_1byte(0,0,cmd); Delay(2); cmd=0x02;

//地址归位 //写指令

W_1byte(0,0,cmd); Delay(2);

cmd=0x80; W _1byte(0,0,cmd);Delay(2);}

- 35 -

结论

毕业设计很快就要结束了,我做得数据采集模块的主要实现如下功能:根据预先设定的数据采集触发方式、通过A/D转换采集各通道被测量。通过对多路模拟开关扫描序列的调整,可实现各通道不同的采样速率。从而在一次数据采集过程中,完成对多个不同测试点、不同特性被测信号的获取。板上采用了功能强大的微处理器,可实时对测得数据进行处理显示。装置还可以通过RS232接口与电脑实现连接,数据送到电脑后可以显示在屏幕上,有广大的应用前景。通过对数据采集资料的认真研读,解决了我在本设计中的主要问题,而且学会了分析问题、处理问题以及解决问题的方法。

通过以上硬件设计及软件的编程,基本上达到了毕业设计的设计要求,软、硬件实现了基本的功能和技术指标。

本设计属于设计了简单的多路数据采集系统, 还有许多地方可以改进。比如:

1.可以设计控制程序实现当外界输入超出某界限时,实施报警,并调整输入端。

2. 还可以采用CH375等接口方式把系统改变成高速数据采集系统。

- 36 -

致谢

致谢

本论文是在我的导师、尊敬的姜宝林教授的悉心指导下完成的。在三个

月的毕业设计中姜老师无论从学习上还是在生活中,都给了我无私和细心的

关怀与帮助,恩师严谨的治学态度和勤恳的工作作风给我留下了深刻印象,

更将成为我一生受用不尽的最宝贵的则富。使我们受益的不仅仅是姜老师广

博的知识,丰富的经验,更为重要的是姜老师在为人师,以及科研中的态

度。在为人方面,我懂得了做人要积极乐观,正直,乐于助人; 为师方面,

要不遗余力、无私奉献; 科研中,要严谨认真、脚踏实地、勤于动脑、勤于

动手。这些在我以后的工作和生活中将是我所要努力做到的。在此向他表示

最真挚的感谢。感谢姜老师为我们提供实验室的良好环境,让我有机会反复

进行试验,使自己的毕业实物得以实现。感谢他给我提供了宝贵的建议指导

我如何选择芯片和的设计电路,在姜老师都给予了很大的帮助,才能使得毕

业设计顺利完成。

同时,感谢实验室许亮老师,许老师在我调试程序、论文的完成以及

PPT 制作过程中给予的细心解答和帮助。

感谢在论文撰写期间和我分享他们宝贵经验和知识的同组的同学。其中

郭文刚同学设计的实现和论文的完成提出了许多宝贵建议及真知灼见。与此

同时,我还要感谢实验室的其他同学们,他们是王寅、张宇、江信桢、马如

飞、王焕荣等等。他们给我提出了许多宝我写作的灵感,在此表示最深的谢

意.

感谢大学四年所有给予我关怀和帮助的老师和同学们!

感谢我的父母和哥哥在我求学期间给予我的支持和鼓励!

最后,对评审论文的各位老师表示衷心的感谢!

- 37 -

参考文献

[1] 汪惊奇,周功业,黎书生·基于USB 接口的便携式数据采集系统的实

现[M]. 电子工业出版社,2002. 8

[2] 周坚编·单片机C 语言轻松入门[M].北京航空航天大学出版社,2006

[3] 谢自美·电子线路设计. 试验. 测试 [M].华中科技大学出版社,2004

[4] 吴双力,崔剑,王伯岭· AVR-ICC 与AVR 单片机C 语言开发[M].北

京航空航天大学出版社,2004

[5] 陈冬云·ATmega128 单片机原理与开发指导[M].机械工业出版社,

2005.10

[6] 李曼·多通道高速数据采集电路设计. 西安科技学院学报[J],2000,第

20卷第二期:143145

[7] 马永杰,杨志民·I OOMHz 高速数据采集卡研制中关键技术的探讨. 西

北师范大学学报 (自然科学版)[J],1999. (1): 37-37

[8] 周兴华·单片机智能化产品C 语言设计实例详解[M]. 北京:北京航天航

空大学出版社 .2006

[9] AVR Studio User Guide. ATMEL Corporation Version4.07 Debugging Tool

for the AVR family Build 240

[10] Proakis J G, Manolakis D G. Introduction to Digital Signal Processing.

New York: Macmillan Publishing Company,1988. 234~326

[11] Rao.Guthikonda V. Microprocessors and microcomputer system. Van

Nostrand Reinhold Company, 1982. 11~426

[12] Fu, K.S,Control System, IEEE Trans,Vol.AC-16,No.1,1971. 124~258

[13] K.Chipperfield. Exploring VXIbus Systems and Instrumentation. IEEE

- 38 -

附录Ⅰ

附录Ⅰ

#pragma interrupt_handler adc_isr:15

void adc_isr(void)

{

unsigned int temp=0;

while(temp

temp++;

adc_result = ADC;

//ADCSRA |= (1}

void data_con(void)

{

unsigned int temp;

unsigned char i;

temp=(unsignedint)(((unsignedlong)((unsigned

long)adc_result*vref))/1024);

for(i=0;i

{

adc_show[3-i]=temp%10+0x30;

temp=temp/10;

}

adc_show[0]=adc_show[1];

adc_show[1]=".";

adc_show[4]="V";

adc_show[5]=0;

}

#pragma interrupt_handler int0_isr:2

void int0_isr(void)

{

extint_count++;

if (act_flag!=1)

- 39 -

{

act_flag = 1;

}

}

void adc_init(void)

{

ADMUX = (1

ADCSRA = (1void adturn(unsigned char td)

{ADMUX =ADMUX&0xf0;

ADMUX =ADMUX|td;

ADCSRA |= (1Delay(10);

data_con();

}

uchar key(void)

{uchar keybuf;

//DDRD=0x07;

keybuf=PIND;

keybuf&=0xf0;//70.b0.d0.e0

if(keybuf==0x70)

{keybuf=4;

}

if(keybuf==0xb0)

{keybuf=1;

}

if(keybuf==0xd0)

{keybuf=2;

}

if(keybuf==0xe0)

{keybuf=3;

}

- 40 -

附录Ⅰ

//else keybuf=0;

return keybuf;

}

void tc(void)

{uchar keydat;

uchar loada=0;

uchar loadb=0;

uint loadx=0;

sprinta(loadx);

keydat=key();

TCNT0=0;

LCD_Init();

while(keydat!=4)

{loada=TCNT0;

if(loada==(loadb+1))

{loadb=loada;

loadx=loadx+1;

sprinta(loadx);

disup=1;

}

if(disup==1)

{Lcd_wrconst(0, 0, logoa);

Lcd_wrconst(0, 1, tclcd);

Lcd_writestr(0,2, bufa);

disup=0;

}

keydat=key();

}

disup=1;

}

void ad(void)

{uchar keydat;

//uchar addata;

- 41 -

uchar i;

keydat=key();

LCD_Init();

while(keydat!=4)

{

if(disup==1)

{

Lcd_wrconst(0, 0, logoa);

Lcd_wrconst(0, 1, adlcd);

Lcd_wrconst(0, 2, ad1lcd);

Lcd_wrconst(0, 3, ad2lcd);

disup=0;

}

for(i=0;i

{keydat=key();

adturn(1);

Lcd_writestr(4,2, adc_show);

Delay(10);

if(keydat==4)

{peak;}

adturn(5);

Lcd_writestr(4,3, adc_show);

disup=1;

}

keydat=key();

}

disup=1;

}

void icp(void)

{uchar keydat;

uchar icpdat=0;

keydat=key();

LCD_Init();

- 42 -

附录Ⅰ

while(keydat!=4)

{sprinta(icpdat);

if(disup==1)

{

Lcd_wrconst(0, 0, logoa);

Lcd_wrconst(0, 1, iclcd);

Lcd_writestr(0,2, bufa);

Lcd_writestr(4,2, "Hz");

disup=0;

}

keydat=key();

}

disup=1;

}

void countnet(void)

{TCCR0=0x06;

TCNT0=0;

}

void sprinta(uchar dat1)

{bufa[0]=dat1/1000+0x30;

bufa[1]=dat1/100%10+0x30;

bufa[2]=dat1/10%10+0x30;

bufa[3]=dat1%10+0x30;

//bufa[4]=dat1%10+0x30;

bufa[4]=0;

}

void init_devices(void)

{

CLI();

port_init();

MCUCR = 0x00;

GICR = 0x00;

TIMSK = 0x00;

- 43 -

adc_init();

SEI();

}

void main()

{uchar keynum=0;

init_devices();

Delay(50);

LCD_Init(); //初始化两边是关键,否则液晶上电重起将不能显示 Delay(50);

Lcd_wrconst(0, 0, logoa);

Lcd_wrconst(0, 2, logob);

Delay(500);

disup=1;

countnet();

while(1)

{keynum=key();

switch (keynum)

{case 1:disup=1;ad();peak;

case 2:disup=1;icp();peak;

case 3:disup=1;tc();peak;

default : peak;

}

if(disup==1)

{LCD_Init();

Lcd_wrconst(0, 0, logoa);

Lcd_wrconst(0, 1, init);

Lcd_wrconst(0, 2, inita);

Lcd_wrconst(0, 3, initb);

disup=0;

} }}

- 44 -

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3