找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3943|回复: 1
打印 上一主题 下一主题
收起左侧

基于AVR单片机的温度采集系统设计论文下载(word格式)

[复制链接]
跳转到指定楼层
楼主
目录

摘要
Abstract
0 引言
1 课题背景及研究意义
1.1 温度采集系统设计的意义及其应用目的
1.2 AVR单片机简介
1.2.1 AVR单片机的主要特点
1.2.2 AVR系列单片机简介
1.3 ATmega16单片机系统结构
1.3.1 ATmega16简介
1.3.2 ATmega16的总体结构
1.4 温度传感器
1.4.1 数字式温度传感器
1.5 串口概述
1.5.1 串口介绍
1.5.2 串口分类
1.6 protel DXP2004软件基本概念以及使用
1.7 系统方案设计
1.7.1 软件设计方案
2 数字式温度传感器DS18B20软硬件设计
2.1 DS18B20 数字式温度传感器基本特性
2.2 DS18B20测温模块
2.2.1 DS18B20工作方式
2.2.2 DS18B20温度数据
2.2.3 DS18B20在温度采集系统中的应用
3 ATmega16单片机软硬件设计
3.1 ATmega16引脚说明
3.2系统硬件设计
3.2.1 复位线路的设计
3.2.2 晶振电路的设计
3.2.3 AD转换滤波线路的设计
3.2.4 ISP下载接口设计
3.2.6 电源设计
3.2.7总设计图
3.3 软件系统设计
3.3.1 温度采集软件设计
3.3.2 串口软件设计
3.3.3 程序
4.串口 RS232软硬件设计
4.1 USART
4.2 串口的组成
4.3 串口电平转换电路MAX232
5 研究总结
参考文献
译文
原文说明

摘  要

在国民经济各部门,如电力、化工、机械、冶金、农业、医学以及人们的日常生活中,温度采集是十分重要的。在许多模拟量控制和监视应用中,温度测控通常是基于 -55℃~125℃温度范围内的应用,如环境监测、蔬菜大棚、粮库、热电偶冷端温度补偿、设备运行的可靠性等应用。实时采集温度信息,及时发现潜在故障,并采取相应的处理措施,对确保设备良好运行具有重要意义。
本文介绍了一种基于 ATmega16单片机的温度采集控制系统,该系统能实现温度检测和数值显示,系统主要由温度采集、单片机控制、串口通讯,输出控制几个单元组成。温度采集采用单总线数字传感器 DS18B20进行采集,温度数据在传感器内部转化为数字信号并传送给单片机;单片机对传感器采集来的数据进行处理,通过串口把传感器采集到的温度传输至PC机上。

0 引言

在国民经济各部门,如电力、化工、机械、冶金、农业、医学以及人们的日常生活中,温度采集是十分重要的。在许多模拟量控制和监视应用中,温度测控通常是基于 -55℃~125℃温度范围内的应用,如环境监测、蔬菜大棚、粮库、热电偶冷端温度补偿、设备运行的可靠性等应用。实时采集温度信息,及时发现潜在故障,并采取相应的处理措施,对确保设备良好运行具有重要意义。

本文介绍了一个基于AVR单片机的温度控制系统,该系统可以方便地实现温度采集、温度显示等功能。本系统的温度控制部分采用ATmega16单片机完成。该单片机有着体积小、功耗低、功能强、性能价格比高、使用电子元件较少、内部配线少、制造调试方便等显著优点,将其用于温度检测和控制系统中可大大地提高控制质量和自动化水平,具有良好的经济效益和推广价值。利用单片机对温度进行测控的技术,日益得到广泛应用。

在众多的温度控制系统中,测温元件常常选用热敏电阻、半导体测温二极管、三极管、集成温度传感器等。相比而言,集成温度传感器具有线性好、稳定度高、互换性强、易处理等突出优点,故在许多场所得到了广泛应用。本系统中单片机作为下位机,完成测温任务。另外本系统还可以连接相应的外围加热电路,当环境温度低于设定下限温度时,单片机发出的指令,加热器起动对环境进行加热,当温度回升到下限温度时加热器停止加热。

系统软件主要由初始化程序、主程序、监控显示程序等组成。其中初始化程序是对单片机的接口工作方式,A/D转换方式等进行设置;显示程序包括对显示模块的初始化、显示方式设定及输出显示;主程序则完成对采集数据进行处理。

该系统应用范围相当广泛,同时采用单片机技术, 由于单片机自身功能强大,因而系统设计简单,工作可靠,抗干扰能力强,也可在此基础上加入通信接口电路,实现与上位机之间的通信。


1 课题背景及研究意义
1.1 温度采集系统设计的意义及其应用目的

目前,随着现代信息技术的飞速发展,温度测量采集系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集系统的设计与研究有十分重要的意义。

任何一个物体或者环境都有其温度属性,只有对其温度进行采集,才能更好的了解物体或者环境的特点,所以这就强调了温度采集的重要性。在工业发展初期,人们通过各种简单的工具来采集温度,包括温度计等,但这种采集方式也存在着许多的漏洞,包括数据不精确和不能及时得反映温度的数据。后来随着工业技术的迅猛发展,传感器和单片机技术的出现改变了温度采集系统的方式,温度采集系统也得到了长足的进步,已经变得数字化和电子化,现今在工业中通过数字化的温度采集模块,温度可以迅速得通过单片机进行处理,并传输到PC机中,用来进行进一步的处理。

毕业设计强调综合应用所学知识能力的锻炼与培养,这是毕业设计有别于课程设计等其他实践环节的重要方面,对大学生有着很重要的意义。本次课题的目的在于学习基于AVR单片机的温度采集系统设计的基本原理及基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递单片机上。单片机数据处理之后,在通过串口连接至PC机,显示及进一步处理。

1.2 AVR单片机简介
1.2.1 AVR单片机的主要特点
  •     AVR系列单片机特点
    •     多种I/O接口,可直接驱动继电器、LED、数码电路等器件。
    •     内带模拟比较器。
    •     独立的时钟分频器。
    •     具有休眠省电功能及闲置低功耗功能。
    •     增强形的高速同/异步串口与定时器/计数器及通信接口。
    •      具有硬件乘法器、独立振荡器的实时计数器RTC
    •     内嵌高质量的Flash程序存储器,程序存储器擦写可达10000次以上,可支持ISPIAP
    •     硬件结构采用局部寄存器存储,简化结构、降低成本。
    •       采用Harvard总线结构,吸收了DSP双总线的特点。
    •       具有DIPTQFPPLCC多种封装形式。
  •     AVR51PIC单片机相比的特点
    •     在相同的系统时种下,AVR运行速度最快。
    •     AVR单片机的FLASHEEPROM存储器可以反复烧写、支持在ISP在线编程。
    •     片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,电路设计相对比较简单。
    •     I/O口作输出时,可以输出很强的高、低电平;I/O口作输入时,可以带有高阻抗或者带上拉电阻。
    •     片内采用了先进的数据加密技术,大大提高了破解的难度。
    •      空间大、品种多的片内FLASH。、
    •     部分芯片的引脚与51系列的兼容性。如ATting2313兼容AT89C2051ATmega8515/162兼容AT89S51等。
  •     AVR单片机优点
    •     高可靠性、高保密性、功能强、高速度、低功率。
    •     低功耗的CMOS技术。
    •     丰富的片上资源。
    •     增强型的驱动能力。
    •     型号种类多选择性。
    •      性价比高。
    •     开发语言丰富。
1.2.2 AVR系列单片机简介

ATMEL公司研发的AVR单片机,为满足不同的需求和应用,分为Tiny系列、AT90系列和ATmega系列。这三个系列的所有型号的AVR单片机,指令系统兼容,内核相同,只是存储器容量、片内集成的外围接口的数量和功能存在一些差异。用户可以根据AVR单片机不同的引脚数目和价格各异进行选择,来满足不同的应用水平。

ATmega是AVR单片机的系列之一,ATmega系列单片机属于AVR中的高档产品。

ATmega系列AVR单片机主要有ATmega8/16/32/64/128以及ATmega8515/8535等。

该系列单片机兼容了AT90所具有的特点,并在AT90的基础上进行了较大的改善,新增许多接口功能,在系统的省电特性、稳定性、抗干扰性、灵活性等方面有所提高。

1.3 ATmega16单片机系统结构
1.3.1 ATmega16简介

ATmega16是一种基于增强型的AVR RISC结构的低功耗、CMOS技术的8位微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。是具有高可靠性、高速度、低功耗等特点,是一种高性价比的单片机。

ATmega16采用精简指令集(RISC),一条指令可以在一个时钟周期内同时对两个独立的寄存器进行访问,是以字作为指令长度单位,同时具有取值周期短、可预取指令等特点,运行处理能力可达到1MIPS/MHz。

ATmega16单片机具有Flash程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模拟转换器、定时器/计数器等多种器件和增强可靠性的复位系统。同时有降低功耗抗干扰的休眠模式、中断系统、输入捕获、比较匹配输出、多样化功能的定时器/计数器以及具有替换功能的I/O端口。

1.3.2 ATmega16的总体结构

ATmega128单片机性能十分强大,内部结构相对比较复杂,其总体结构包括以下几个部分,分别介绍如下。







      •       快速存取RISC寄存器

快速存取RISC寄存器是由AVR的内核中的32个通用工作寄存器构成的,在一个时钟周期内可执行一个完整的ALU操作。








      •       32个通用工作寄存器

在32个通用工作寄存器中,有6个可以用作3个16位的间接地址寄存器指针,以寻址数据空间,实现高效的地址运算。他们分别为X寄存器、Y寄存器、Z寄存器。







      •       Harvard结构

AVR单片机采用CMOS技术,具有高速度、低功耗的特点,同时还具有休眠功能。为了最大限度的提高并行处理的运行效率,它采用了Harvard结构,即程序存储器和数据存储器使用不同的存储空间和总结,可直接访问全部的数据存储器和程序存储器,寄存器文件被双向映射并能被访问。算术逻辑单元(ALU)在执行某一指令时,下一个指令被预先从程序存储器中被提取处理,提高了MCU的运行效率。











      •       算术逻辑单元(ALU

算术逻辑单元(ALU)支持寄存器之间以及寄存器和常数之间的算术和逻辑运算,以及单一寄存器操作,每一次的运算结果都通过状态寄存器(SREG)反映出来。







      •       程序存储器

AVR的程序存储器空间由引导程序区和应用程序区组成。他们的读和读/写保护由对应的锁定位来实现。







      •       I/O存储器

I/O存储器空间包含64个I/O寄存器空间,它们用来控制MCU的各个外围功能。







      •       多种独立的时钟分频器

多种独立的时钟分频器为串行异步通信(URAT)、SPI提供传输。8/16位定时器/计数器可用作比较器、计数器外部中断和PWM的控制输出。AVR单片机定时器/计数器(单)双向技术形成三角波和输出比较匹配寄存器配合,可以生成占空比、频率、相位可变的方波信号。








      •       其他电路

AVR单片机有自动上电复位电路(POR),独立的看门狗电路(WDT)、低电压检测电路,多个复位源,只需在复位源接一个上拉电阻即可实现复位,不需要另加外部复位器件。

1.4 温度传感器

人们为了从外界获取信息,必须借助于感觉器官。而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。

新技术革命的到来,世界开始进入信息时代。在利用信息的过程中,首先要解决的就是要获取准确可靠的信息,而传感器是获取自然和生产领域中信息的主要途径与手段。

在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。

在基础学科研究中,传感器更具有突出的地位。传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统,几乎每一个现代化项目,都离不开各种各样的传感器。

由此可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。

1.4.1 数字式温度传感器

数字式温度传感器:就是能把温度物理量,通过温度敏感元件和相应电路转换成方便计算机、plc、智能仪表等数据采集设备直接读取得数字量的传感器。

1.5 串口概述1.5.1 串口介绍

串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。

串行接口Serial Interface是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于由于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。

1.5.2 串口分类

串口通信的两种最基本的方式:同步串行通信方式和异步串行通信方式。

串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

  •     RS-232

也称标准串口,最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。

RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。

  •     RS-422

标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。

RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

  •     RS-485

是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。

RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12kΩ、RS-422是4kΩ;由于RS-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。

RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s

1.6 protel DXP2004软件基本概念以及使用

Altium公司作为EDA领域里的一个领先公司,在原来Protel 99SE的基础上,应用最先进的软件设计方法,率先推出了一款基于Windows2000和Windows XP操作系统的EDA设计软件Protel DXP。

Protel DXP2004是Altium公司于2004年推出的最新版本的电路设计软件,该软件能实现从概念设计,顶层设计直到输出生产数据以及这之间的所有分析验证和设计数据的管理。当前比较流行的Protel 98、Protel 99 SE,就是它的前期版本。

Protel DXP 2004已不是单纯的PCB(印制电路板)设计工具,而是由多个模块组成的系统工具,分别是SCH(原理图)设计、SCH(原理图)仿真、PCB(印制电路板)设计、Auto Router(自动布线器)和FPGA设计等,覆盖了以PCB为核心的整个物理设计。该软件将项目管理方式、原理图和PCB图的双向同步技术、多通道设计、拓朴自动布线以及电路仿真等技术结合在一起,为电路设计提供了强大的支持。如图1-1,图1-2所示为该软件的工作界面及电路图。


图1-1 protel dxp2004 工作窗口


图1-2 protel dxp2004 电路图


与较早的版本——Protel99相比,Protel DXP 2004不仅在外观上显得更加豪华、人性化,而且极大地强化了电路设计的同步化,同时整合了VHDL和FPGA设计系统,其功能大大加强了。

1.7 系统方案设计

系统方案设计由硬件设计方案和软件设计方案组成,如图1-3所示。

本系统的硬件包括温度传感器、AVR单片机以及PC机。其中AVR单片机和PC机通过串口连接。

图1-3 系统设计示意图

1.7.1 软件设计方案

系统以DS18B20为传感器用以将温度模拟量转化为电压数字量以总线传入单片机,以ATmega16为主芯片,在主芯片对DS18B20传入的温度值进行处理,由单片机程序控制,将经处理后的温度由LCD数码管显示出来。

本系统具有电路简洁,性能可靠等特点,易于实现。


2 数字式温度传感器DS18B20软硬件设计

根据系统设定环境,我选择DS18B20作为温度采集系统的数字式温度传感器。

DS18B20 是美国 Dallas 半导体公司的新一代数字式温度传感器,它具有独特的单总线接口方式,即允许在一条信号线上挂接数十甚至上百个数字式传感器,从而使测温装置与各传感器的接口变得十分简单,克服了模拟式传感器与微机接口时需要的A/D转换器及其它复杂外围电路的缺点,由它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高等优点。

2.1 DS18B20 数字式温度传感器基本特性

DS18B20数字式温度传感器的外部形状、内部芯片如图2-1所示。它使用一根总线接口实现和外部微处理器的通信。温度的测量范围为-55~ + 125°C,测量精度为 0. 5°C。传感器的供电寄生在通信的总线上 ,可以从一根总线通信中的高电平中取得,这样可以不需要外部的供电电源。作为替代也可直接用供电端 (VDD)供电。当使用总线寄生供电时 ,供电端必须接地,同时总线口在空闲的时候必须保持高电平,以便对传感器充电。每一个 DS18B20 温度传感器都有一个自己特有的芯片序列号,我们可以将多个这样的温度传感器挂接在一根总线上,实现多点温度的检测。


图2-1  DS18B20外部形状、管脚图及接入图

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-2所示。


图2-2  DS18B20内部结构


DS18B20的特性:

(1)适应电压范围更宽,电压范围:3.0~5.5V,寄生电源方式下可由数据线供电。

(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。

(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

2.2 DS18B20测温模块2.2.1 DS18B20工作方式

根据DS18B20的协议规定,单片机控制DS18B20完成温度转换必须经过以下4个步骤:

  • 每次读写前对DS18B20进行复位初始化。复位要求CPU将数据线下拉480us,然后释放,DS18B20收到信号后等待60us左右,然后发出60us~240us的低脉冲,主CPU收到此信号表示复位成功。如图2-3所示。
  • 发送一条ROM指令。
  • 发送存储器指令。
  • 进行数据通信。

图2-3 总线读写时序图


2.2.2 DS18B20温度数据

   DS18B20传感器的内部数据存储器由9个字节组成。第一、二个字节是温度数据字节(MSB、LSB),可以在系统配置寄存器中自行设置数据位数(9~12位),数据位越多温度分辨率越高,9位数据温度分辨率 为0.5°C,12位数据温度分辨率0. 0625°C,多余的高位是温度数据的符号扩展位,温度数据格式如表2-1所列。第三、四字节是温度上下限报警值(TH、TL)。第五字节是系统置寄存器,寄存器各位定义如下:第八位是设置用来表示传感器的工作状态,是测试状态(设置为“1”)还是操作功能状态(设置为“0”) ,出厂设置为操作功能状态,用户不能修改;第七、六两位是温度转换数据位的设置(00、01、10、11分别对应9、10、11、12位温度数据),出厂设置为 12 位温度数据位,用户可根据需要进行修改;其余位无效。第六、七、八字节保留未用。第9个字节是CRC校验码,是前面8个字节的循环校验码,用在通信中,检验数据传送的正确性。

表2-1 DS18B20温度数据

2.2.3 DS18B20在温度采集系统中的应用

我们采用ATmega16单片机作为微处理器,DS18B20数字式温度传感器提供的9位温度数,指示器件的温度信息经过单接口由DS18B20送出,从DS18B20到单片机只需一条线,因此称为单线。

我所设计的温度采集系统主要有两部分组成,一部分是温度采集部分,一部分是温度显示部分。DS18B20数据线接AVR单片机PA7数据线和Vcc间接一4.7k上拉电阻。

其测温程序流程如图2-3。


图2-3 测温程序流程图

3 ATmega16单片机软硬件设计3.1 ATmega16引脚说明

根据AVR单片机特点及课题所设定环境,故选用ATmega16作为单片机。

图3-1所示ATmega16单片机引脚图。

图3-1 ATmega16引脚图

  •       VCC
    数字电路的电源端
  •       GND
    接地端
  •       端口A(PA7~PA0)
    端口A作为A/D转换器的模拟输入端。
    端口A8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 A 处于高阻状态。
  •       端口B(PB7~PB0)
    端口 B 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 B 处于高阻状态。
  •       端口C(PC7~PC0)
    端口 C 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C 处于高阻状态。如果JTAG 接口使能, 即使复位出现引脚 PC5(TDI)PC3(TMS) PC2(TCK) 的上拉电阻被激活。
  •       端口D(PD7~PD0)
    端口 D 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D 处于高阻状态。
  •       RESET
    复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。
  •       XTAL1
    反向振荡放大器与片内时钟操作电路的输入端。
  •       XTAL2
    反向振荡放大器的输出端。
  • AVCC
    AVCC是端口AA/D转换器的电源。不使用ADC时,该引脚应直接与VCC 连接。使用ADC时应通过一个低通滤波器与 VCC 连接。
  • AREF
    A/D 的模拟基准输入引脚。
3.2系统硬件设计

针对这次的课题设计内容,我所设计的基本ATmega16硬件线路,包括以下几部分:

1。复位线路

2。晶振线路

3。AD转换滤波线路

4。ISP下载接口

5。JTAG仿真接口

6。电源

3.2.1 复位线路的设计

图3-2 复位线路设计图

ATmega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可(R0),如图3-2所示。

为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。

D3(1N4148)的作用有两个:作用一是将复位输入的最高电压钳在Vcc+0.5V 左右,另一作用是系统断电时,将R0(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。

当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。

重要说明:实际应用时,如果不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任何的外围零件。

3.2.2 晶振电路的设计

图3-3 晶振电路设计图

ATmega16已经内置RC振荡线路,可以产生1M、2M、4M、8M的振荡频率。不过,内置的毕竟是RC振荡,在一些要求较高的场合,比如要与RS232通信需要比较精确的波特率时,建议使用外部的晶振线路,如图3-3所示。

早期的90S系列,晶振两端均需要接22pF左右的电容。ATmega系列实际使用时,这两只小电容不接也能正常工作。不过为了线路的规范化,仍建议接上。

重要说明:实际应用时,如果不需要太高精度的频率,可以使用内部RC振荡。即这部分不需要任何的外围零件。

3.2.3 AD转换滤波线路的设计

为减小AD转换的电源干扰,ATmega16芯片有独立的AD电源供电。官方文档推荐在VCC串上一只10uH的电感(L1),然后接一只0.1uF的电容到地(C3),如图3-4所示。ATmega16内带2.56V标准参考电压。也可以从外面输入参考电压,比如在外面使用TL431基准电压源。不过一般的应用使用内部自带的参考电压已经足够。习惯上在AREF脚接一只0.1uF的电容到地(C4)。

重要说明:实际应用时,如果想简化线路,可以将AVCC直接接到VCC,AREF悬空。即这部分不需要任何的外围零件。

图3-4 AD转换滤波线路设计图

3.2.4 ISP下载接口设计

图3-5 ISP下载接口设计图

ISP下载接口,不需要任何的外围零件。使用双排2*5插座。由于没有外围零件,故PB5(MOSI)、PB6(MISO)、PB7(SCK)、复位脚仍可以正常使用,不受ISP的干扰,如图3-5所示。

重要说明:实际应用时,如果想简化零件,可以不焊接2*5座。但在PCB设计时最好保留这个空位,以便以后升级AVR内的软件。
3.2.5 JTAG仿真接口设计

图3-6 JTAG仿真接口设计图

仿真接口也是使用双排2*5插座。需要四只10K的上拉电阻。

重要说明:实际应用时,如果不想使用JTAG仿真,并且不想受四只10K的上拉电阻的影响,可以将JP1-JP4断开,如图3-6所示。

3.2.6 电源设计

图3-7 电源设计图

AVR单片机最常用的是5V与3.3V两种电压。本线路以开关切换两种电压,并且以双色二极管指示(5V时为绿灯,3.3V时为红灯),如图3-7所示。

二极管D1防止用户插错电源极性。D2可以允许用户将电压倒灌入此电路内,不会损坏1117-ADJ。

1117-ADJ的特性为1脚会有50uA的电流输出,1-2脚会有1.25V电压。利用这个特点,可以计算出输出电压:

当SW开关打向左边时,R6上的电流为 1.25/0.33 = 3.78ma 。R8上的电流为1117-ADJ 1脚电流加上R6上的电流,即0.05+3.78=3.83ma. 可以计算得R8上的电压为3.84V。 于是得出VCC=1.25+3.83=5.08V。误差在2%以内。

当SW开关打向右边时,R6上的电流为 1.25/0.62 = 2.02ma 。R8上的电流为1117-ADJ 1脚电流加上R6上的电流,即0.05+2.02=2.07ma. 可以计算得R8上的电压为2.07V。 于是得出VCC=1.25+2.07=3.32V。误差在1%以内。

使用1%精度的电阻,可以控制整个输出电压误差在3%以内。

重要说明:实际应用时,根据使用1117-ADJ的品牌,输入电压可以低至7伏甚至更低。(也可以同时使用低压降的二极管代替1N4007)。

3.2.7总设计图

图3-8 ATmega16硬件总设计图

今将此设计图,如图3-8所示,制作成了以下的ATmega16功能小板。

正面图:晶振可以使用螺丝固定的方法更换,方便做实验,并达到一定的可靠性。VCC,GND均有一测试针,如图3-9所示。

图3-9 ATmega16功能板正面图

底部图:为了方便实验,将这块小板的输出脚,按直插ATmega16的管脚排列定义。为防止不小心掉到地上导致插针折断,加装了一只40脚的圆孔IC座做保护。如果不小心折断,可以方便地更换圆孔IC座,如图3-10所示。

图3-10 ATmega16功能板背面图

3.3 软件系统设计

ATmega16单片机软件设计分为两部分,第一部分为与数字温度传感器的软件设计部分,第二部分为与串口相连的软件设计。

3.3.1 温度采集软件设计

温度采集软件系统包括初始化程序、读出温度子程序、读写时序子程序组成。

1.初始化程序

系统启动前,需要进行初始化,其初始化流程图如图3-11所示。










图3-11 初始化程序流程图

2.读出温度子程序

读出温度子程序的主要功能是读出RAM中的2字节,读出温度的低八位和高八位,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3-12示


图3-12 读温度程序流程图

3.读写时序子程序

系统的读写时序的子程序如图3-13、图3-14、图3-15所示。

图3-13 读时序图(写1、0时序、读0、1时序)



图3-14 写时序子程序流程图       图3-15 读时序子程序流程图

3.3.2 串口软件设计
  • USART I/O 数据寄存器- UDR

图3-16 UDR地址图

USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR(如图3-16)。将数据写入UDR 时实际操作的是发送数据缓冲器存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。在5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。使用位查询指令(SBIC 和SBIS)时也要小心,因为这也有可能改变FIFO 的状态。

  • USART 控制和状态寄存器A UCSRA

图3-17 UCSRA地址图

UCSRA地址如图3-17所示。各地址意义如下:

? Bit 7 – RXC: USART 接收结束

接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断。

? Bit 6 – TXC: USART 发送结束

发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。

? Bit 5 – UDRE: USART 数据寄存器空

UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。复位后UDRE 置位,表明发送器已经就绪。

? Bit 4 – FE: 帧错误

如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE 置位。这一位一直有效直到接收缓冲器(UDR) 被读取。当接收到的停止位为1 时, FE 标志为0。对UCSRA 进行写入时,这一位要写0。

? Bit 3 – DOR: 数据溢出

数据溢出时DOR 置位。当接收缓冲器满( 包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR) 被读取。对UCSRA 进行写入时,这一位要写0。

? Bit 2 – PE: 奇偶校验错误

当奇偶校验使能(UPM1 = 1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE 置位。这一位一直有效直到接收缓冲器 (UDR) 被读取。对UCSRA 进行写入时,这一位要写0。

? Bit 1 – U2X: 倍速发送

这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1 可将波特率分频因子从16 降到8,从而有效的将异步通信模式的传输速率加倍。

? Bit 0 – MPCM: 多处理器通信模式

设置此位将启动多处理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包含地址信息的输入帧都将被忽略。发送器不受MPCM设置的影响。详细信息请参考 P150“多处理器通讯模式” 。

  • USART 控制和状态寄存器B UCSRB

图3-18 UCSRB地址图

UCSRB地址如图3-18所示。各地址意义如下:

? Bit 7 – RXCIE: 接收结束中断使能

置位后使能RXC 中断。当RXCIE 为1,全局中断标志位SREG 置位, UCSRA 寄存器的RXC 亦为1 时可以产生USART 接收结束中断。

? Bit 6 – TXCIE: 发送结束中断使能

置位后使能TXC 中断。当TXCIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的TXC 亦为1 时可以产生USART 发送结束中断。

? Bit 5 – UDRIE: USART 数据寄存器空中断使能

置位后使能UDRE 中断。当UDRIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的UDRE 亦为1 时可以产生USART 数据寄存器空中断。

? Bit 4 – RXEN: 接收使能

置位后将启动USART 接收器。RxD 引脚的通用端口功能被USART 功能所取代。禁止接收器将刷新接收缓冲器,并使 FE、DOR 及PE 标志无效。

? Bit 3 – TXEN: 发送使能

置位后将启动将启动USART 发送器。TxD 引脚的通用端口功能被USART 功能所取代。TXEN 清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD引脚恢复其通用I/O功能。

? Bit 2 – UCSZ2: 字符长度

UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。

? Bit 1 – RXB8: 接收数据位 8

对9 位串行帧进行操作时,RXB8 是第9 个数据位。读取UDR 包含的低位数据之前首先要读取RXB8。

? Bit 0 – TXB8: 发送数据位8

对9 位串行帧进行操作时,TXB8 是第9 个数据位。写UDR 之前首先要对它进行写操作。

  • USART 波特率寄存器- UBRRLUBRRH

UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。

? Bit 15 – URSEL: 寄存器选择

通过该位选择访问UCSRC 寄存器或UBRRH 寄存器。当读UBRRH 时,该位为0 ;当写UBRRH 时, URSEL 为0。

? Bit 14:12 – 保留位

这些位是为以后的使用而保留的。为了与以后的器件兼容,写UBRRH 时将这些位清零。

? Bit 11:0 – UBRR11:0: USART 波特率寄存器

这个12 位的寄存器包含了USART 的波特率信息。其中UBRRH 包含了USART 波特率高4 位,UBRRL 包含了低8 位。波特率的改变将造成正在进行的数据传输受到破坏。写UBRRL 将立即更新波特率分频器。

3.3.3 程序

由于程序内容众多,故指选取主要部分。

⑴初始化程序(部分):

  1. Void port _init(void)
  2. {
  3. PORTA = 0xFF;
  4. DDRA = 0xFF;
  5. PORTB = 0xFF;
  6. DDRB = 0x00;
  7. PORTC = 0xFF;
  8. DDRC = 0x00;
  9. PORTD = 0xFF;
  10. DDRD = 0xFF;
  11. }
  12. Void init devices(void)
  13. {
  14. CLI();
  15. port_init();
  16. LCDInit();
  17. UART_init();
  18. }

  19. ⑵温度传感器通信程序(部分):
  20. unsigned char ds1820_ack(void)
  21. {
  22. unsigned char ack;
  23. PORT |= portnum;
  24. PORT & = ~portnum;
  25. delay_us(500);
  26. PORT |= portnum;
  27. DDR &= ~portnum;
  28. delay_us(45);
  29. ack = portnum & ds18b20PortPIN;
  30. DDR|=portnum;
  31. PORT|=portnum;
  32. delay_us(500);
  33. }
  34. /*=====================================================
  35. //函数功能:读取温度
  36. =====================================================*/
  37. Read_Temperature(void)
  38. {
  39. unsigned char i;
  40. unsigned char a=0;
  41. unsigned char b=0;
  42. unsigned int t=0;
  43. float tt=0;
  44. ds1820_ack();
  45. write_byte(0xCC);
  46. write_byte(0x44);
  47. for(i = 0; i < 20; i++)
  48. delay_us(50);
  49. ds1820_ack();
  50. write_byte(0xCC);
  51. write_byte(0xBE);
  52. a =read_byte();
  53. b =read_byte();
  54. t=b;
  55. t<<=8;
  56. t=t|a;
  57. tt=t*0.0625;
  58. return (tt);
  59. }
  60. ⑶主程序:
  61. #define T_MIN -55 //温度最小值
  62. #define T_MAX 125 //温度最大值
  63. int T_min=10,T_max=50,T_pre,key_value;//温度设置最小,最大值;当前值,键值
  64. unsigned char String[16]; //显示缓冲区
  65. void show_delay(unsigned int dly)
  66. void main()
  67. {
  68. float Temp=0;
  69. unsigned int i=0,j=0;
  70. init_devices();
  71. while(1)
  72. {
  73. key_value=getkey();
  74. Temp=Read_Temperature();
  75. T_pre=Temp;
  76. sprintf(String,"%d,%d,%d,.",T_pre,T_min,T_max);
  77. puts(String);
  78. //DisplayString(0,0,String);
  79. if(key_value==0)
  80. {
  81. for(i=0;i<20000;i++)
  82. }
  83. }
  84. else if(key_value==4)
  85. {
  86. LCDInit();
  87. sprintf(String,"Pre=%d",T_pre);
  88. DisplayString(0,0,String);
  89. sprintf(String,"Min=%d Max=%d",T_min,T_max);
  90. DisplayString(0,1,String);
  91. show_delay(15);
  92. }
  93. else if(key_value==5)
  94. {
  95. if(T_min>T_MIN)
  96. LCDInit();
  97. sprintf(String,"Pre=%d",T_pre);
  98. DisplayString(0,0,String);
  99. sprintf(String,"Min=%d Max=%d",T_min,T_max);
  100. DisplayString(0,1,String);
  101. show_delay(15);
  102. }
  103. LCDInit();
  104. sprintf(String,"Pre=%d",T_pre);
  105. DisplayString(0,0,String);
  106. sprintf(String,"Min=%d Max=%d",T_min,T_max);
  107. DisplayString(0,1,String);
  108. show_delay(15);
  109. }
  110. }
  111. }
复制代码



4.串口 RS232软硬件设计4.1 USART

ATmega16 单片机带有一个全双工的通用同步/异步串行收发模块USART,该接口是一个高度灵活的串行通讯设备。其主要特点如下:

  •          全双工操作,可同时进行收发操作;
  •          支持同步或异步操作;
  •          支持56789位数据位,1位或者2位停止位的串行数据帧结构;
  •          三个完全独立的中断,TX发送完成,TX发送数据寄存器空,RX 接收完成;
  •          支持多机通讯模式;

相关寄存器:









      • USART 数据寄存器—UDR
      • USART 控制和状态寄存器—UCSRAUCSRBUCSRC
      • 波特率寄存器—UBRRL UBRRH
4.2 串口的组成

串口由阴阳两种接口组成。最常使用的信号引脚是TD、RD 和SG,因此最简单的串口调试只需要包含3条引线就可以了。在RS232标准中,利用RD、TD作为接收、发送信号线,加入地线,约定好通讯的波特率,实现串行信号传输。

RS-232作为个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA)所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。

RS-232标准最初是为远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V之间。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3~+12V与-3~-12V之间。RS-232是为点对点通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。

4.3 串口电平转换电路MAX232

PC 的串口工作TTL 信号是12V 的,而在我们一般使用的电路板上,电源信号电平是5V 的(在低功耗电路中是3.3V 的),为了将信号转化为可用,需要做串口的电平转换。这一部分电路已经有相应的生产厂商做出了各种集成芯片,例如MAXIM 公司的MAX232 芯片,如图4-1所示。就是实现5V 电路中和PC 实现串口通信的电平转换芯片,而MAX323可以实现3.3V 的电平转换。

图4-1 MAX232电路图

常用的RS-232C接口有DB-25和DB-9两种类型,其引脚的定义也各不相同。PC采用的是DB-9型连接器,只提供异步通信的9个信号。DB-9型连接器的引脚分配如表 4?1和图4-2所示。

表 4?1 DB9的常用信号脚说明

9针串口(DB9)

针号

功能说明

缩写

1

数据载波检测

DCD

2

接收数据

RXD

3

发送数据

TXD

4

数据终端准备

DTR

5

信号地

GND

6

数据设备准备好

DSR

7

请求发送

RTS

8

清除发送

CTS

9

振铃指示

DELL


最为常用的是三线制接法,即地、接收数据和发送数据三脚连接。本文中的串口的电路如图 4?3所示。

图 4?2 DB9的引脚定义图       图 4?3 串口的连接电路

5 研究总结

本论文描述了基于单片机的温度采集系统设计,描述了采集信号到单片机处理最终到微机接收数据的实现过程,着力研究了实现的方法及其电路,并设计了过程的硬件电路。

(1)介绍了课题中数字式温度传感器和单片机的研究背景及其历史发展,以及其基本构造和原理。

(2)电路的结构由数字式温度传感器、单片机等组成,有效的将它们结合是此次设计的难处及重点。

(3)在系统中,微机的接收程序主要是串口通信的设计。

本课题的研究中,我查阅了各种资料,在导师的帮助下,努力提高了数据采集的精度。但由于时间及本人能力经验所限,本课题的研究存在不足之处在所难免,在今后的工作中需进一步改进和完善。而且在以后的工作中我将会对单片机和输入输出接口进行更近一步的研究,从而完善这个设计方案。

毕业设计终于完成了,虽然说,过程比较累,但我发现它对自己还是很有帮助的,比如说人比较懒,不愿意动,平时知识也不扎实,但在设计过程中碰到自己不懂的问题却只有耐心下来,查书或在网上弄清楚答案。

通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。


译文

基于ARM单片机关于图像采集在现场可编程门阵列的设计



这篇论文全面的展示了ARM7单片机在自行开发的现场可编程门阵列工作板上是如何设计重复添加组态指令和系统验证的,当时这ARM7与互补金属氧化物半导体连接进行图像采集和图像处理单元(IPU)实施在其他现场可编程门阵列工作板上,现在ARM7在这成为一个图像处理单元的单片机,图像处理单元集合了图像采集、卷积和排序在现场可编程门阵列上执行3阶流水线操作能加快系统运行,卷积和排序有助于进一步过滤掉固定图像噪声和暗电流噪声在互补金属氧化物半导体图像传感器,并导致更好的图像质量,有ARM7单片机的现场可编程门阵列板和图像处理单元可以用于教学中央处理器设计、控制器设计及系统单晶片设计,自从所有的电路在一个单一的现场可编程门整列芯片


1、原理简介

这篇论文显示了一个ARM7[1,2,3,4]的中央处理器在现场可编程门阵列工作板上是如何被设计成可添加重复组态指令和被测试的,然后ARM7单片机与互补金属氧化物半导体链接在其他现场可编程门阵列工作板上进行图像采集和设备实施过程,现在ARM7已经成为一个有图像采集和运行单元的单片机,有时候我们形象称其为高速运转的加速器。ARM7可以包含超过5个的指令组,即进行数据处理、数据分支、数据转移和协作处理器,前三个指令组的设计和验证系统是用来描述在2-4部分,现场可编程门阵列图像加速器包含的图像采集算法通常是在8051系列CPU中完成,部分5描述系统单晶体建设和验证导致ARM7作为一个图像加速的界面控制器,最后的结论将被描述在部分6。

人们通常熟悉运用的中央处理器,像8051.80*86、ARM、MIPS系列等,但是很少人想到去描述他们,部分2和3描述成重复添加更多的组态指令包含在ARM7的中央处理器中的方式。

自从中央处理器电路可以被添加,他也可以拿走一些无用的组态来缩小现场可编程门阵列的设计。所以构建特制的ARM单片机在现场可编程门阵列的中央处理器里为了某项具体的应用是完全可能的。


2ARM7系统配置

图1显示在ARM7系统包括一个寄存器(REG)含有16-32位寄存器、内存(MEM)、数据处理单元(DTU)、控制单元(CON)为组织和系统的操作序列。图1同样也显示数据通道这四个单位之间的执行指令28个中央处理器,不包括4位设计条件码条件。如果条件极值是二进制的指令数就可能包括4*28=112。为了简单比较详细的中央处理器就没有显示,这是一个普通的组合电路组成的一个算术与逻辑控制单元包含一个移位器和一个累加器。

图1:ARM7系统配置的28个中央处理器指令


3、补充分支和数据转移指令和控制单元

3.1、分支和数据传输电路

图2显示原理框图中数据通道和控制数据为增加分支和数据转移指令组,图2和图1相比,不断提升的复杂性可以发现数据通道结构、多路输入中央处理器的间接寻址和控制单元(CON)。图2中4比特的总线rd2和m2是输出两个乘法器用来连接rd和rn的寻址寄存器,输入的两个多路转换器为了简单没有显示。

分支指令用于改变程序的执行序列,通常是通过改变程序计数器的值来完成的,数据传送指令涉及到单个和多个之间的数据传输和存储为寄存器如图2所示。这个图2中灰点的DO总线从存储器到寄存器的D端口和其他点的R总线从寄存器块到分配信息的D端口是为了数据传输的目的而被添加的。

图2:ARM7框图包含分支、数据转移和中央处理器指令


3.2、控制单元

当更多的指令被添加进系统,控制单元就变得越来越庞大和复杂,在图2右下角落的控制单元有比图1更多的输入和输出端,控制单元实际上是一种有限状态机,实现形式显示在图3的状态图中,大部分在ARM7中的指令在执行过程中只有三个状态,也就是取码F、解码D和执行E,长乘法(64位的产品)和分支连接(bl)指令都各自的需要额外的E1和E2状态。数据传输包括加载和储存体系结构(ls)、多加载和储存体系结构(mls)都需要额外的状态F1和F2,所以控制单元的输入块是解码指令信号:l、bl、ls、mls,如上所述,ct代表多个过户计数,输出块的状态是F、F1、F2、D、E、E1和E2如图3放大图便于阅读。

图3:控制单元图和从图2框图扩大的控制单元模块


4、工作板展示平台

图4显示了自主开发的现场可编程门阵列工作板提供了80万门数赛灵思公司现场可编程门阵列芯片(xcv800)在中心中,ARM7中每36个指示就被验证了在工作,几个程序如分类拣选、算术运算和计数器被键入进行验证,图5显示了工作板在运行一个通过键盘输入的24小时时间程序在右下角落和全部24小时时钟电路通过并行接口都装进现场可编程门阵列芯片,这7段显示的030903是单帧采集在3小时9分钟3秒时这个24小时时钟程序开始运行。

图4:自制工作平台                图5:自制工作平台单帧采集03:09:03在程序运行中


第二部分到第四部分简要介绍了通过增加组态指令的设计方法和验证我们的ARM7处理器,到目前为止,这个方法很管用,可以继续添加越来越多的指令组。但是在接下来的段落里,重点是在ARM7处理器接口的应用在图像采集和处理单元(IPU)[5],执行于300K计数的现场可编程门阵列芯片(xc2s300e)。


5、基于ARM7单片机或作为SoC设计

图像处理单元(IPU)包括图像采集、二维卷积和二维排序,影像采集是一个自行开发的基于现场可编程门阵列的8051软件程序,二维卷积和二维排序是基于现场可编程门阵列版本的图像处理算法,分别从Crookes到Maheshwari。

图6:a.ARM7和IPU在不同的现场可编程门阵列工作板上。

     b.ARM7和IPU合并在一个单一的现场可编程门阵列芯片。


图7:莉娜的照片通过这个实验


采集、卷积和排序是通常做成系列形式,现在将他们整合在一个单一的现场可编程门阵列芯片中。图像处理单元现在能够被连接到自行开发的ARM7单片机中,显示如图6a。图7显示实验结果利用莉娜的照片作为原始图像,在使用图6a中ARM7单片机执行600k计数用一个总数是800K的计数现场可编程门阵列-2芯片,IPU使用一个300K计数的现场可编程门阵列-1芯片来执行70K计数。可以合并这两个正在执行的现场可编程门阵列芯片在同一个IPU800K芯片,如图6A所示。这种设计模式将成为一种片上系统设计的现场可编程门阵列的版本。


6、结束语

因为现场可编程门阵列是可以重新构造里面的结构单片机是为了给中央处理器可以量身定做,以满足适合特定的用途,假如,假定一个800k现场可编程门阵列芯片电路完全被ARM7包括以致没有足够空间,则可以向另一个70k技术的加速器移动。因为所有计算在图像处理完成图像加速器电路,然后它可以是取出闲置的32*32乘数(占空间可以达到150k左右的计数)同时保证空间可以得到70k计数图像加速器能被包括在里面。

嵌入式ARM7与许多设备控制器在现场可编程门阵列芯片上,显示如图6B的虚线区域内就是演示了一种片上系统的系统建筑设计,它可能会逐渐成为一种平台能够增加中央处理器设计的控制器的控制特别加速器或连接设备,如图想处理、机电一体化、纳米光学等各种技术。


原文说明

原文说明的内容是: 译文的外文原文

题名:ARM Based Microcontroller for Image Capturing in FPGA Design

作者:Chi-Jeng Chang, Wu-Ting Wu, Hui-Ching Su, Zen-Yi Huang, and Hsin-Yen Li

来源:ISVC 2005, LNCS 3804, PP. 672-677, 2005.



全部资料51hei下载地址(word格式论文):

基于单片机的温度采集系统设计.zip (2.22 MB, 下载次数: 22)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:154686 发表于 2018-10-24 10:29 | 只看该作者
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表