基于ARM的温度采集系统设计样本.doc
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。HUBEI NORMAL UNIVERSITY嵌入式系统开发课程设计论文Courses Thesis课程名称嵌入式系统开发论文题目基于ARM的温度采集系统学生姓名何 刚学 号2指导教师熊旭辉所在院系计算机科学与技术学院专业名称通信工程完成时间 /12/31基于ARM的温度采集系统ARM概述ARM(Advanced RISC Machines), 既可认为是一个公司的名字, 也可认为是对一类微处理器的通称, 还可认为是一种技术的名字。1990年ARM公司成立于英国剑桥, 主要出售芯片设计技术的授权。当前, 采用ARM技术知识产权IP核的微处理器, 即一般所说的ARM微处理器, 己遍及工业控制、 消费类电子产品、 通信系统、 网络系统、 无线系统、 军用系统等各类产品市场, 基于ARM技术的微处理器应用占据了32位RISC微处理器70%以上的市场份额, ARM技术正在逐步渗入到我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司, 作为知识产权供应商, 本身不直接从事芯片生产, 靠转让设计许可, 由合作公司生产各具特色的芯片。世界各大半导体生产商从ARM公司购买其ARM微处理器核, 根据各自不同的应用领域, 加入适当的外围电路, 从而形成自己的ARM微处理器芯片进入市场。一、 设计内容1.1设计目的1、 注重培养综合运用所学知识、 独立分析和解决实际问题的能力, 培养创新意识和创新能力, 并获得科学研究的基础训练。2、 了解所选择的ARM芯片各个引脚功能, 工作方式, 计数/定时, I/O口, 中断等的相关原理, 并巩固学习嵌入式的相关内容知识。3、 经过软硬件设计实现利用ARM芯片对周围环境温度信号的采集及显示。1.2设计意义嵌入式系统是以应用为中心, 以计算机技术为基础, 且软硬件可裁剪, 适应应用系统对功能、 可靠性、 成本、 体积、 功耗有严格要求的专用计算机系统。它一般由以下几部分组成: 嵌入式微处理器、 外围硬件设备、 嵌入式操作系统。嵌入式系统是面向用户、 面向产品、 面向应用的, 它必须与具体应用相结合才会具有生命力、 才更具有优势。因此嵌入式系统是与应用紧密结合的, 它具有很强的专用性, 必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、 半导体技术和电子技术和各个行业的具体应用相结合后的产物, 这一点就决定了它必然是一个技术密集、 资金密集、 高度分散、 不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪, 满足应用系统的功能、 可靠性、 成本、 体积等要求。因此, 如果能建立相对通用的软硬件基础, 然后在其上开发出适应各种需要的系统, 是一个比较好的发展模式。当前的嵌入式系统的核心往往是一个只有几K到几十K微内核, 需要根据实际的使用进行功能扩展或者裁减, 可是由于微内核的存在, 使得这种扩展能够非常顺利的进行。数据采集(DAQ), 是指从传感器和其它待测设备等模拟和数字被测单元中自动采集非电量或者电量信号, 送到上位机中进行分析, 处理。数据采集系统是结合基于计算机或者其它专用测试平台的测量软硬件产品来实现灵活的、 用户自定义的测量系统。被采集数据是已被转换为电讯号的各种物理量, 如温度、 水位、 风速、 压力等, 能够是模拟量, 也能够是数字量。采集一般是采样方式, 即隔一定时间( 称采样周期) 对同一点数据重复采集。采集的数据大多是瞬时值, 也可是某段时间内的一个特征值。准确的数据量测是数据采集的基础。数据量测方法有接触式和非接触式, 检测元件多种多样。不论哪种方法和元件, 均以不影响被测对象状态和测量环境为前提, 以保证数据的正确性。传统的温度采集系统由于存在响应慢、 精度低、 可靠性差、 效率低、 操作繁琐等弊端, 已经不能完全适应现代化工业的高速发展。随着嵌入式技术的迅猛发展, 设计高速度、 高效率、 低成本、 高可靠性、 操作方便的温度采集系统成为当务之急。基于ARM的温度采集系统就成为了解决传统温度采集系统各种弊端的优先选择方案。温度控采集是无论是在工业生产过程中, 还是在日常生活中都起着非常重要的作用, 现代冶金、 石油、 化工及电力生产过程中, 温度是极为重要而又普遍的热工参数之一。在环境恶劣或温度较高等场合下, 为了保证生产过程正常安全地进行, 提高产品的质量和数量, 以及减轻工人的劳动强度、 节约能源。在本系统的设计过程中, 根据嵌入式系统的基本设计思想, 系统采用了模块化的设计方法, 而且根据系统的功能要求和技术指标, 系统遵循自上而下、 由大到小、 由粗到细的设计思想, 按照系统的功能层次, 在设计中把硬件和软件分成若干功能模块分别设计和调试, 然后全部连接起来统调。二、 设计方案2.1设计要求1、 查阅相关文献资料, 熟悉所选ARM芯片及温度传感器2、 总体设计方案规划3、 系统硬件设计, 熟悉AD转换原理及过程, 温度传感器与ARM芯片的硬件接口实现及温度显示。4、 系统软件设计, 包括温度的AD转换及显示的软件实现, 用C语言编程。本设计是基于嵌入式技术作为主处理器的温度采集系统, 利用S3C44B0x ARM微处理器作为主控CPU, 辅以单独的数据采集模块采集数据( 温度采集模块电路采用AT89S52单片机作为模块的协控制器) , 实现了智能化的温度数据采集、 传输、 处理与显示等功能, 并讨论了如何提高系统的速度、 可靠性和可扩展性。并解决了传统的数据采集系统由于存在响应慢、 精度低、 可靠性差、 效率低、 操作繁琐等弊端, 能够完全适应现代化工业的高速发展。2.2方案论证有许多客观需求促进了ARM处理器的设计改进。首先, 便携式的嵌入式系统往往需要电池供电。为降低功耗, ARM处理器已被特殊设计成较小的核, 从而延长了电池的使用时间。 高的代码密度是嵌入式系统的又一个重要需求。由于成本问题和物理尺寸的限制, 嵌入式系统的存储器是很有限的。因此, 高的代码密度对于那些只限于在板存储器的应用是非常有帮助的。另外, 嵌入式系统一般都是价格敏感的, 因此一般都使用速度不高、 成本较低的存储器。 ARM 内核不是一个纯粹的RISC体系结构, 这是为了使它能够更好的适应其主要应用领域嵌入式系统。在某种意义上, 甚至能够认为ARM 内核的成功, 正是因为它没有在RISC的概念上沉入太深。现在系统的关键并不在于单纯的处理器速度, 而在于有效的系统性能和功耗。在本系统的设计过程中, 根据嵌入式系统的基本设计思想, 系统采用了模块化的设计方法, 而且根据系统的功能要求和技术指标, 系统遵循自上而下、 由大到小、 由粗到细的设计思想, 按照系统的功能层次, 在设计中把硬件和软件分成若干功能模块分别设计和调试, 然后全部连接起来统调。三、 硬件设计3.1 S3C44B0x ARM微处理器简介: 嵌入式微处理器S3C44B0X中集成了ARM公司的ARM7TDMI核, 这个核也称为CPU单元, 另外还集成了边界扫描控制器等多个功能模块( 也称模块、 单元) 。S3C44B0X中有2条总线, 即系统总线和外设总线。经过系统总线, 将CPU单元、 电源管理模块( 含时钟发生器) 、 存储器控制器、 LCD控制器、 中断控制器和2通道ZDMA连接在一起。总线仲裁器对系统总线上的总线请求进行仲裁。经过外设总线, 将AD转换器、 看门狗定时器、 RTC、 通用IO控制器( GPIO) 、 IIC总线控制器、 IIS总线控制器、 UART、 SIO、 PWM等连接在一起。系统总线与外设总线经过系统总线桥与仲裁2通道BDMA连接在一起。S3C44B0X的160个引脚中, 有71个引脚能够经过编程的方法, 定义为多功能输入输出引脚。这71个引脚被分成A、 B、 C、 D、 E、 F和G端口。例如, 端口A能够定义为输出端口, 或定义为地址总线ADDR24ADDR16和ADDR0。在Reset后, 默认值是地址总线ADDR24ADDR16和ADDR0, 之后能够重新定义端口A的功能。除这71个引脚外, 其余引脚功能是单一的。S3C44B0X微处理器中含有ARM7TDMI核, 使用的指令系统就是ARM7TDMI的指令系统。ARM7TDMI有2种指令集: 32位的ARM指令集和16位的Thumb指令集。ARM指令集的主要特点有: 所有的指令都是32位定长, 便于译码和流水线实现, 而且在内存中以4字节边界地址对齐保存; 只有 LOAD-STORE类型的指令才能够访问内存; 所有的指令都能够条件执行; 使用了桶型( barrel) 移位器, 能够在一个指令周期内完成移位操作和ALU( 算术逻辑) 操作。片上集成的主要功能如下: *2.5V ARM7TDMI 内核, 带有8K Cache( SAMBA II总线体系结构, 主频高至66MHZ) ;*外部存储器控制器( FP/EDO/SDRAM控制器, 片选逻辑) : *LCD控制器( 最大支持256色DSTN) ,并带有1通道LCD专用DMA: *2通道通用DMA,2通道外设DMA 并具有外部请求引脚;*2通道UART带有握手协议( 支持IRDA1.0,具有16-byte FIFO) /1通道SIO;*1通道多主IIC-BUS控制器; *1通道IIS-BUS控制器; *5个PWM定时器和1个内部定时器; *看门狗定时器; *71个通用I/O口/8通道外部中断源*功耗控制: 具有正常, 低速, 空闲和停止模式; *8通道10位ADC;*具有日历功能的RTC;*带PLL的片上时钟发生器.体系结构: *集成了手持设备和通用嵌入式系统应用的解决方案: *13/32位RISC体系结构和ARM7TDMI处理器内核强大的指令体系; *Thumb代码压缩机, 最大化代码密度同时保持了32位指令的性能; *基于JTAG的片上集成ICE调试支持解决方案; *32*8位硬件乘法器; *实现低功耗SAMBAII的新型总线结构; 系统存储管理: *支持大/小端模式( 经过外部用脚来选择) ; *地址空间: 每bank位32M字节( 共256M字节) ; *支持每bank可编程的5.16/32位数据总线宽度; *7个bank具有固定的bank起始地址和可编程的bank大小; *1个bank具有可编程的bank起始地址和bank大小; *8个存储器bank; -6个ROM,SRAM存储器bank; -2个ROM/SRAM/DRAM(快速页面, EDO和同步DRAM);*所有的存储器bank具有可编程的访问周期; *支持外部等待信号延长总线周期; *支持掉电时DRAM/SDRAM的自刷新模式; *支持对称和非对称地址的DRAM.3.2 AT89S52单片机简介AT89S52是一种低功耗、 高性能CMOS8位微控制器, 具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造, 与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程, 亦适于常规编程器。在单芯片上, 拥有灵巧的8 位CPU 和在系统可编程Flash, 使得AT89S52为众多嵌入式控制应用系统提供高灵活、 超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash, 256字节RAM, 32 位I/O 口线, 看门狗定时器, 2 个数据指针, 三个16 位定时器/计数器, 一个6向量2级中断结构, 全双工串行口, 片内晶振及时钟电路。另外, AT89S52 可降至0Hz 静态逻辑操作, 支持2种软件可选择节电模式。空闲模式下, CPU停止工作, 允许RAM、 定时器/计数器、 串口、 中断继续工作。掉电保护方式下, RAM内容被保存, 振荡器被冻结, 单片机一切工作停止, 直到下一个中断或硬件复位为止。常见I/O口具体介绍如下: 1、 P0 口: P0口是一个8位漏极开路的双向I/O口。作为输出口, 每位能驱动8个TTL逻辑电平。对P0端口写”1”时, 引脚用作高阻抗输入。当访问外部程序和数据存储器时, P0口也被作为低8位地址/数据复用。在这种模式下, P0具有内部上拉电阻。在 flash编程时, P0口也用来接收指令字节; 在程序校验时, 输出指令字节。程序校验时, 需要外部上拉电阻。 2、 P1 口: P1 口是一个具有内部上拉电阻的8 位双向I/O 口, p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写”1”时, 内部上拉电阻把端口拉高, 此时能够作为输入口使用。作为输入使用时, 被外部拉低的引脚由于内部电阻的原因, 将输出电流( IIL) 。另外, P1.0和P1.2分别作定时器/计数器2的外部计数输入( P1.0/T2) 和时器/计数器2的触发输入( P1.1/T2EX) , 具体如下表所示。在flash编程和校验时, P1口接收低8位地址字节。引脚号 第二功能P1.0 T2 ( 定时器/计数器T2的外部计数输入) , 时钟输出P1.1 T2EX ( 定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI ( 在系统编程用) P1.6 MISO ( 在系统编程用) P1.7 SCK ( 在系统编程用) 3、 P2 口: P2 口是一个具有内部上拉电阻的8 位双向I/O 口, P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写”1”时, 内部上拉电阻把端口拉高, 此时能够作为输入口使用。作为输入使用时, 被外部拉低的引脚由于内部电阻的原因, 将输出电流( IIL) 。在访问外部程序存储器或用16位地址读取外部数据存储器( 例如执行MOVX DPTR) 时, P2 口送出高八位地址。在这种应用中, P2 口使用很强的内部上拉发送1。在使用8位地址( 如MOVX RI) 访问外部数据存储器时, P2口输出P2锁存器的内容。在flash编程和校验时, P2口也接收高8位地址字节和一些控制信号。 4、 P3 口: P3 口是一个具有内部上拉电阻的8 位双向I/O 口, p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写”1”时, 内部上拉电阻把端口拉高, 此时能够作为输入口使用。作为输入使用时, 被外部拉低的引脚由于内部电阻的原因, 将输出电流( IIL) 。P3口亦作为AT89S52特殊功能( 第二功能) 使用, 如下表所示。在flash编程和校验时, P3口也接收一些控制信号。3.3设计思路本设计的基于ARM 的嵌入式数据采集和显示装置的原理框图如图3-1 所示。由图可见, 本系统采用”电源部分ARM 核心控制模块温度采集模块”实现所需功能。并考虑到系统的可扩展性和延伸性, 本系统采用主从CPU协同工作, 实现了数据的实时采集、 传输与显示, 具有处理速度快、 精度高、 人机交互界面友好、 稳定性高、 扩展性好等优点。本设计的基于ARM 的嵌入式数据采集和显示装置的原理框图如图3-1 所示。由图可见, 本系统采用”电源部分ARM 核心控制模块温度采集模块”实现所需功能。 电源部分LCD显示器温度采集模块电源电路多路温度传感器Flash ROM存储器协控制器RS-232ARM处理器SD RAM存储器键 盘ARM核心控制模块图3-1 系统原理框图3.2系统电路设计3.2.1 电源电路设计本系统的电源电路由两部分组成: 系统总电源电路和RAM核心模块电源电路。如图3-2: +12V恒定直流电源经电容滤波, 分别进入7809和7805稳压, 得到+9V和+5V的稳定电压输出后分别供给ARM核心控制模块和其余电路部分使用。图中IN4148是为了防止输出端并接高于本稳压模块的输出电压而烧坏7809和7805而特别设计, 达到了可靠性电源设计目的。另外, 由于系统正常工作电流较大, 因此使用时均应在7809和7805上加散热片散热。 由图可见, 系统采用双电源供电, 提供了系统正常工作所需的电源电压。另外, 由于考虑到便携目的, 本系统采用+12V铅蓄电池提供系统所需的恒定直流电源。图3-2 系统电源电路原理图如图3-2: I/O 口提供了相应的稳定直流电源。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。由于S3C44B0x采用2.5V作为ARM 内核电源, 使用3.3V作为I/O 口电压, 故ARM核心控制模块电源需要另外单独设计, 其电源电路如图3-2所示。由系统总电源电路提供的+9V稳压电源作为输入, 分别经AS1117-5.0、 AS1117-3.3、 AS1117-2.5稳压后, 输出5.0V、 3.3V和2.5V恒定电源, 为RAM 内核和I/O口提供了相应的稳定直流电源 。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。3.2.2温度采集电路设计 温度采集模块电路采用AT89S52单片机作为模块的协控制器。对于温度传感器的选用DS18B20, 因为DS18B20是Dallas公司最新单总线数字温度传感器, 该传感器集温度变换、 A/D转换于同一芯片, 输出直接为数字信号, 大大提高了电路的效率。由于现场温度直接以”一线总线”的数字方式传输, 大大提高了系统的抗干扰性, 且提高了CPU的效率。AT89S52单片机的P0 口与8路温度传感器相连, 用于采集温度数据; 另外, 模块提供RS-232串行口与RAM核心控制模块通信, 达到数据传输的目的。温度采集模块电路原理图如图3-3。图3-3 温度采集电路原理图四、 软件设计本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本温度数据采集与显示装置的主体由S3C44B0x核心控制模块和温度数据采集模块构成, 因此系统软件也是围绕这两个模块来编写的。而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作, 因此软件的编写需要对这两个CPU分别编写, 以实现所要求的功能。4.1设计思路本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本温度数据采集与显示装置的主体由S3C44B0x核心控制模块和温度数据采集模块构成, 因此系统软件也是围绕这两个模块来编写的。而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作, 因此软件的编写需要对这两个CPU分别编写, 以实现所要求的功能。程序流程图如图4-1。开始ARM初始化硬件装置初始化通信初始化LED显示初始化键盘初始化扫描键盘有键按下处理数值相应显示数据获取数据处理数据显示YN图4-1程序流程图由该流程图可看出, 刚上电时, S3C44B0x要先进行ARM 内部的初始化, 以使ARM进入相应的状态和模式; 然后初始化硬件装置, 以使硬件系统能够正常支持温度数据采集; 接着通信初始化, 以确定温度采集模块与ARM核心控制模块连接正常, 并经过UART复位温度数据采集模块, 确保其进入正常温度数据采集状态; 然后初始化LCD显示和键盘, 在LCD上显示相应的菜单列表, 供用户经过键盘选择操作; 至此, 系统初始化完成, 并进入正常主程序循环状态。在正常主程序循环状态中, 首先扫描键盘, 以快速的响应用户的按键操作; 若没有键值按下, 则ARM立即进行数据的采集、 处理与显示, 以实现实时数据采集与显示等功能。其主程序包括温度采集程序、 ARM获取温度子程序、 温度处理和转换子程序。当ARM 处理器接收到正确的温度数据后, 立即进行相应的温度数据处理与转换, 变成可被LCD直接显示的正确温度值。4.2程序代码温度处理与转换子程序如下: /存放读取到的当前温度值, 未转换Static U16 a-temp-now8=8*0/存放经精度计算后的实际温度值, 高8位整数部分, 低8位小数部分static U16 b-temp-now8=8*0;/存放8路转换后温度值,分别为百位,十位,个位,小数位static U8 temp-convent-all32=32*0;/-/温度处理与转换子程序/-void temp-change(void)U8 negtive=0x00; /存放数的符号, 若为正=0; 若为负, =0xffU8 j=0;U8 *pt=temp-convent-all;U16 *p1=a-temp-now;U16 *p3=b-temp-now;U16 temp=0;for(j=0;j<8;j+)negative =0x00;temp=*p1;/若温度为负值, 进行相应处理if(temp&0xf80) ! =0)temp=(temp)+1; /转为正的原码negative=0xff; / 同时置符号为0xff/根据精度消除无关数据switch(a-temp-prec)case 0x1f: /精度为9位,则清除最低3位无效位temp=temp&0xfff8;break;case 0x3f: /精度为10位,则清除最低2位无效位temp=temp&0xfffc;break;case 0x5f: /精度为11位,则清除最低1位无效位temp=temp&0xfffe;break;case 0x7f: /精度为12位break;/换算成实际温度,并扩大10倍,去掉小数部分temp=(U16)(float)(temp)*0.625);/折算放入b-temp-now 数组中/高8位放整数部分, 低8位放小数部分, 最高位放符号位if(negtive= 0xff) /若为负值*p3=(temp/10)<<8)|(temp%10)|0x8000;else*p3=(temp/10)<<8)|(temp%10)&0x7fff;if(negative=0xff) /若为负值(*pt+)=0x80;else(*pt+)=temp/1000%10+0x30;(*pt+)=temp/100%10+0x30;(*pt+)=temp/10%10+0x30;(*pt+)=temp%10+0x30;p1+;p3+;/转换完成后清除读回的原始温度p1=a-temp-now;for(j=8;j>0;j-)*p1+=0x0;五、 结束语我的设计课题是基于ARM的温度采集系统设计。经过这次设计, 我对ARM嵌入式系统特别是数据处理中的温度采集系统有了更进一步的了解, 同时知识面也进一步得到了扩展和加深。本次设计的任务主要是对基于传统温度采集系统的使用环节中遇到的一些问题提出的一种改进方法, 有助于温度采集系统更好的发展与使用, 帮助我们更好的理解嵌入式系统和温度采集系统的原理和应用。温度采集是一种直接数字处理方法。所谓温度采集系统, 就是经过温度传感器对被采集物体进行温度数据的收集与处理, 最后得到我们所需要的有用的数字信号并送入系统的下一环节进行其它操作。当前, 由于传统的温度采集系统存在响应慢、 精度低、 可靠性差、 效率低、 操作繁琐等弊端, 已经不能完全适应现代化工业的高速发展。随着嵌入式技术的迅猛发展, 设计高速度、 高效率、 低成本、 高可靠性、 操作方便的温度采集系统成为当务之急。因此, 学习和应用温度采集系统及其应用技术对我们以后的学习和工作有着十分重要的意义。经过本次设计, 让我很好的锻炼了理论联系实际, 与具体项目、 课题相结合开发、 设计产品的能力。既让我懂得了怎样将理论应用于实际, 又让我懂得了在实践中遇到的问题怎样用理论去解决。在设计过程中, 总是会遇到这样或那样的问题。有时一个问题可能会需要去查阅资料, 做大量的工作, 花大量的时间才能解决。经过不断地发现问题, 解决问题, 自然而然, 我的发现问题和解决问题的能力便在其中建立起来了。这都为以后的工作积累了经验, 同时也增强了我解决问题的能力。参考文献1 周立功, ARM嵌入式系统基础教程M. 北京: 北京航空航天大学出版社 2 周立功, 深入浅出ARM7-LPC213X/214XM. 北京: 北京航空航天大学出版社 3 周立功, 从51到ARM-32位嵌入式系统入门M. 北京: 北京航空航天大学出版社 4 王田苗, 嵌入式系统设计与实例开发M. 北京:清华大学出版社, 5 杜春雷, ARM 体系结构与编程M. 北京:清华大学出版社. 6 王中训 李树起等, 基于水温控制的数据采集系统M. 煤矿机械出版社, 第27 卷第5 期: 855857