1、 西安欧亚学院本科毕业论文(设计) 1 基于 ARM 的温度测量系统 设计 摘要: 本设计以我校自主研发的 ARM 嵌入式系统用户板为开发平台,外部配有LCM12864 显示屏、 LED 显示模块 ,按键及各种通讯接口等。该设计主要应用了 ARM的 ADC 模块、液晶显示模块及外加的一个 PT100 温度传感器。利用温度传感器将温度变化转化为电压变化,再由 ADC 模块将采集到的电压信号通过液晶显示屏显示出来,以此来实现温度实时测量系统的开发。本文对 所用 芯片的工作特性、 ADC 模块及 温度传感器 PT100 的工作原理做了简要说明,对 系统 软件设计的方法及流程进行了详细的描述。实验测试
2、结 果表明,该温度测量系统能正常工作,并可 移植应用于多种温度监控系统。 关键词 : PT100 ARM7 液晶屏 ADC ADC module development and application Based on the ARM temperature measurement system Absrtact:This design with taking our self-developed ARM embedded system user plate as development platform ,using ARM7 TDMI-S- LPC2148 producted by Phi
3、lips as MCU.Peripheral equipment include the LCM12864 screen, LED display module,buttons,various communication interface,etc. The design mostly depends on ADC module of ARM, LCD module, temperature sensor PT100. In order to realize the development of temperature real-time measuring system, the tempe
4、rature sensor transforms temperature fluctuation into voltage change, and show the voltage signal collected by ADC module on the LCD display.This article makes brief explanation about the job character of chip, basic principle of ADC and pt100 besides describing the method and process of software de
5、sign in details. The test results indicate the temperature measurement system can work normly, and can be applied to various temperature monitoring system. Key words: PT100 ARM7 LCD ADC 西安欧亚学院本科毕业论文(设计) 2 绪论 1.1 技术背景 基于 ARM 核的 32 位 RISC 微处理 器的应用日益广泛,该处理器 具有高速 、低耗、多功能等独特亮点。尤其是微型 操作系统的嵌入,实现了 ARM 嵌入式系统
6、高实时性、高可靠性、多任务管理等优异 特性, 成为真正意义上的嵌入式系统。目前,嵌入式系统的应用己遍及网络、通讯、信息家电、工业控制、航空、航天等高端应用领域 ,并且 正在逐步渗入到人们生 活 的各个方面,越来越多的 工程技术 人员 进入了 ARM 嵌入式系统 的开发 应用 。 1.2 选题意义 1.2.1 ADC的作用 采集是认知的开始、测量的前提、分析的基础,绝 大多数的电子设备、仪器都是以数据采集技术为基础。随着电子技术和数字技术的飞速发展,信号的传输速度和CPU 的处理速度越来越快,因此对数据采集和处理的要求也越来越高。 模数转换是把模拟信号转换成等效数字量的 量化过程 ,可采用 单片
7、集成电路 和 高性能的组件 。 模数转换器 的重要特性通过 精度、线性度、单调性、分辨率、转换速度、稳定性 等指标来衡量 ,还有一些可供选用的其 它 技术性能,诸如输入范围、数字输出编码等。模拟数据以数字形式收集后可便于存贮、传送、处理和显示,因此,模数转换在音、视频信号处理、电子测量和工业控制等领域得到了广 泛的应用。 1.2.2 基于 ARM 的温度测量系统开发的意义 数据采集系统 多 用于电子测量和工业控制系统。采集到的信号通过 A/D 转换 送入微处理器主控单元 ,通过处理实现过程控制 。现在的高速系统对 ADC 模块的要求很高,由于低端的 MCU 和 ADC 芯片已经难以满足高性能的
8、应用要求,因此大多数开发人员将目光瞄向了 ARM 芯片的模数转换器。 AMR 芯片的模数转换器 由于其 高速、多路、廉价等诸多优势 而 被 广泛采用 。 利用 ARM 的 10 位 AD 转换器,外加一个铂电阻( PT100 精密温度传感器)就可以实现宽温度范围、高 精度 温度测量 系统。 选择 基于 ARM 的温度测量系统题目,在于 提高我对 ARM 系列单片机的应用 能力 和工业测控系统的设计能力 。 1.3 开发设计方案 本课题设计是根据我校老师自主研制的 ARM 实验板进行设计开发的。用 IAR 软件对各个模块进行程序编写并进行调试,当程序调试无误后,将程序下载到 ARM 实验板上。
9、运用一个 PT100 温度传感器 将温度信号转换为电压, 经 ARM 芯片的 AD 转换器 ,经过模数转换器,将输入的模拟信号 (电压 )转换成数字信号,再通过 LCD 显西安欧亚学院本科毕业论文(设计) 3 示出所采集到的数字信号 。由 PT100 温度传感器将温度转换为电压,将电压送到LPC2148 的 ADC 模块中,经过数模转换,将得到的数字信号存储在寄存器中并送到实验班的 LCD 显示屏上,实时显示温度变化。 设计方案如图 1-1 所示 : PT100温 度 传感 器LPC2148模 数转 换LPC2148数 据处 理温 度 信 号电 压 信 号LCD显 示 屏 显示 温 度数 字
10、信 号数 字 信 号图 1-1 设计方案图 2 功能模块说明 2.1 ARM主控芯片( LPC2148) 2.1.1 工作特性 LPC2148 是基于一个支持实时仿真和嵌入式跟踪的 32/16 位 ARM7 TDMI-S 的微控制器,带有 32kB 和 512kB 嵌入的高速 Flash 存储器。独特的加速结构,使 32 位代码能够在最大时钟速率下运行。 对代码规模有严格控制的应用可使用 16 位 Thumb 模式将代码规模降低超过 30%,而性能的损失却很小。 其主要特性如下 : (1) 16/32 位 ARM7TDMI-S 微控制器,超小 LQFP64 封装; (2) 32kB 的片内静态
11、 RAM 和 512KB 的片内 Flash 程序存储器, 加速器可实现 60 MHz 工作频率 ; 西安欧亚学院本科毕业论文(设计) 4 (3) 通过片内 boot 装载程序实现在系统编程和在应用编程( ISP 和 IAP) , 单个Flash 扇区或整片擦除时间只有 400ms, 256 字节的编程时间为 1ms; (4) Embedded ICE RT 和嵌入式 跟踪接口提 供实时调试 (通过片内 Real Monitor 软件 )和高速跟踪指令执行; (5) USB 2.0 全速设备控制 具有 2KB 的端点 RAM,此外 LPC2146/8 提供 8KB 的片内 RAM,可被 USB
12、 的 DMA 控制器访问 ; (6) 2 个 10 位 ADC 转换器,提供总共 6/14 路模拟输入, 每个通道的 模数 转换时间低至 2.44us; (7) 1 个 10 位的 D/A 转换器提供可变的模拟 .信号的 输出 ; (8) 2 个 32 位定时器 /外部事件计数器 (带 4 路捕获和 4 路比较通道 ), PWM 单元 (6路输出 )和看门狗; (9) 低功耗实时时钟 (RTC)具 有独立的电源和特定的 32kHz 时钟输入; (10) 多个串行接口,包括 2 个 UART(16C550)、 2 个高速 I2C 总线 (400 kbit/s)SPI和具有缓冲作用和数据长度可变功
13、能的 SSP; (11) 向量中断控制器( VIC)可以配置优先级和向量地址; (12) 多达 45 个可承受 5V 电压的通用 I/O 接口( LQFP64 封装); (13) 多达 9 个边沿或电平触发的外部中断管脚; (14) 通过一个可编程的片内 PLL(100ms 的设置时间 )可以实现最大为 60MHz 的CPU 操作; (15) 片内集成振荡器可操作频率 为 1MHz30MHz 的外部晶体或频率高达50MHz 的外部振荡器; (16) 具有低功耗模式 (空闲和掉电模式 ); (17) 可以通过个别使能 /禁止外围功能和外围时钟分频来优化额外的功耗; (18) 可外部中断, USB
14、,掉电检测或实时时钟将处理器从掉电模式中唤醒; (19) 单电源,具有上电复位和掉点检测功能; (20) CPU 可操作 电压范围: 3.0V3.6V( 3.3V 10); 2.1.2 结构 图 结构图如图 2-1 所示: 西安欧亚学院本科毕业论文(设计) 5 图 2-1 LPC2148 结构方框图 由上图可见, LPC2148 的结构包含一个支持实时仿真的 ARM7TDMI-S CPU、片内存储器控制接口 ARM7 局部总线、中断控制接口的 AMBA 高性能总线 (AHB)和链接片内外设功能的 VLSI 外设总线 (VPB, ARM, AMBA 总线的兼容超集 )。 AHB 外设分配了 2M
15、B 的地址范围 ,它位于 4GB 的 ARM 存储器空间的最顶端,每个 AHB 外设也分配了 16KB 的地址空间。并且其外设功能都能连接到 VPB 总线,外设包括外部中断、 I2C 串行接口、捕获 /比较定时器 0/1、 SPI 串行接口、 ADC、 UART、通用 I/O 接口、 PWM、看门狗定时器、实时时 钟、系统控制等。 AHB 到 VPB 的桥将VPB 总线与 AHB 总线相连。 VPB 外设也分配了 2MB 的地址范围,从 3.5GB 地址开始 ,并且每个 VPB 外设在 VPB 地址空间内斗分配了 16KB 的地址空间。 西安欧亚学院本科毕业论文(设计) 6 2.1.3 应用
16、ARM 芯片开发应用最重要的环节之一就是底层 软件的开发 ,即 用汇编语言及 C语言混合编写 的 启动代码。 本应用中 系统配置 及 部分启动代码如下: (1)系统配置头文件 Confug.h #define_ CONFIG_H #define_ CONFIG_H #ifndef TRUE #deflne TRUE #endif #ifndef FALSE #define FALSE 0 #endif typedef unsigned char uint8; /*无符号 8 位整型变量 */ typedefsigned char int8; /*有符号 8 位整型变量 */ typedef u
17、nsigned short uintl6; /*无符号 16 位整型变量 */ typedef signed short int16; /*有符号 16 位整型变量 */ typedef unsigned int uint32; /*无符号 32 位整型变量 */ typedef signed int int32; /*有符号 32 位整型变量 */ typedef float fp32; /*单精度浮点数 (32 位长度 )*/ typedef double fp64; /*双精度浮点数 (64 位长度 )*/ #include”nxp/iolpc2148.h” #include”stdio
18、.h” #include”intrinsics.h” /*ARM 核特征头文件 */ /*系统时钟配置: Fosc、 Fcclk、 Fcco、 Fpclk*/ #define Fosc 12000000 / *时钟 频 率: 12MHz */ #define Fcclk (Fosc*5) / *系统时钟: 60MHz) */ #define Fcco (Fcclk*4) /*流控振荡频率: 240MHz */ #define Fpclk (Fcclk/4)*2 /*外设时钟频率: 30MHz */ #define KOM_H IOlSET_bit.P1_24=1; #define KOM_L
19、IOlCLR_bit.P1_24=1; void ZLG7289_cod_dat(char cmd, char dat); 西安欧亚学院本科毕业论文(设计) 7 void ZLG7289_Init(); #endif (2)用汇编语言编写的部分启动代码 /MODE MSK DEFINE Ox1F USR MODE DEFINE 0x10 FIQ MODE DEFINE 0x11 IRQ MODE DEFINE 0x12 SVC MODE DEFINE 0x13 ABT MODE DEFINE 0x17 UND MODE DEFINE Ox1B SYS MODE DEFINE Ox1F msr
20、r0, cpsr bic r0, r0, #MODE_MSK orr r0, r0, #SVC_MODE msr cpsr_c, r0 ldr sp, =SFE(SVC_STACK) bic r0, r0, #MODE_MSK orr r0, r0, #ABT_MODE msr cpsr_c, r0 ldr sp, =SFE(ABT_STACK) bic r0, r0, #MODE_MSK orr r0, r0, #UND_MODE msr cpsr_c, r0 ldr sp, =SFE(UND_STACK) bic r0, r0, #MODE_MSK orr r0, r0, #FIQ_MOD
21、E msr cpsr_c, r0 ldr sp, =SFE(ABT_STACK) bic r0, r0, #MODE_MSK orr r0, r0, #IRQ_MODE msr cpsr_c, r0 西安欧亚学院本科毕业论文(设计) 8 ldr sp, =SFE(IRQ_STACK) bic r0, r0, #MODE_MSK orr r0, r0, #SYS_MODE msr cpsr_c, r0 ldr sp, =SFE(CSTACK) 2.2 ADC模块 2.2.1 概述 在科研、生产中,要经常进行模拟量的测量和控制。为了对温度、压力、流量、速度、位移等物理量进行测量和控制,需要通过各种
22、传感器把上述物理量转换成模拟量的电信号,即模拟电信号 ; 将模拟电信号经过处理并转换成计算机能 识别的数字量,送进计算机,这就是 A/D 变换过程或称为数据采集。 大部分传感器输出的 是电压或电流等模拟信号,所以需要将这些模拟信号转换成易于处理和存储的数字信号。 A/D 转换可分为 4 个阶段 : 即采样、保持、量化和编码。 A/D 模数转换器将测试得到的模拟量转换为数字量, 送入 ARM 微处理器控制单元,经计算、处理后输出至外设显示和控制。 LPC2148 中的 A/D 转换器的基本时钟由 VPB 时钟提供。每个转换器包含一个可编程分频器,可将时钟调整至逐步逼近转换所需的 4.5MHz。完
23、全满足精度 要求的转换需要 11 个 这样子的时钟周期。 2.2.2 技术特性 (1) 有两个 10 位逐次逼近式模数转换器; (2) 6 或 8 个管脚复用为输入脚 (ADCO 和 ADC1); (3) 可用掉电模式; (4) 测量范围: 0VVREF(通常为 3V;不超过 VDDA 电压电平 ); (5) 10 位 转换时间 2.44us; (6) 一个或多个输入的突发转换模式; (7) 可选择由输入跳变或定时器匹配信号触发转换; (8) 转换器的全局起始命令。 2.2.3 功能 寄存器 框图 A/D 寄存器及功能框图如图 2-2 所示: 西安欧亚学院本科毕业论文(设计) 9 图 2-2
24、A/D 转换器内部寄存器及功能框图 2.2.4 相关寄存器 ADC 模块的工作模式设置和转换结果控制由两个 32 位寄存器完成,对于这两寄存器的描述见表 2-1: 表 2-1 主要寄存器 名称 描述 访问 复位值 地址 ADCR A/D 控制寄存器: A/D 转换开始前,必须设置 ADCR 寄存器来悬着工作模式; 读写 0X00000001 0XE0034000 ADDR A/D 数据寄存器:该寄存器包含 ADC的结束标志位和 10 转换结果 (当结束标志位为 1 时,换换结果才有效 ); 读写 NA 0XE0034004 A/D 控制寄存器( ADCR 0xE0034000) ADCR 寄存
25、器描述见下表 2-2 表 2-2 A/D 控制寄存器 ADCR 名称 描述 复位值 7:0 SEL 从 AIN3 AIN0(LPC2114/2124) 或 AIN7 AIN0(LPC2212/2214)中选择采样和转换输入脚。在 64 脚封0X01 西安欧亚学院本科毕业论文(设计) 10 装的 LPC2114/2124 中只有 bit3 bit0 可置位。软件控制模式下,只有一位可被置位。硬件扫描模式下, SEL 可为 18 中的任何一个值(在 64 脚封装的 LPC2114/2124 中 SEL从 1 4 中取值)。 SEL 为零时等效于为 0x01 15:8 CLKDIV 将 VPB 时钟
26、( PLCK)进行( CLKDIV 的值 +1)分频得到A/D 转换时钟,该时钟必须小于或等于 4.5MHz。典型地,软件将 CLKDIV 编程为最小值来得到 4.5MHz 或稍低于4.5MHz 的时钟,但某些情况下(例如测量高 阻抗的模拟信号)可能需要更低的时钟 0 16 BURST 如果该位为 0,转换由软件控制,需要 11 个时钟方能完成。如果该位为 1, A/D 转换器以 CLKS 字段选择的速率重复执行转换,并从 SEL 字段中为 1 的位对应的引脚开始扫描。A/D 转换器起动后的第一次转换的是 SEL 字段中为 1 的位中的最低有效位对应的模拟输入,然后是为 1 的更高有效位对应的
27、模拟输入(如果可用)。重复转换通过清零该位终止,但该位被清零时并不会中止正在进行的转换 0 19:17 CLKS 该字段用来选择 Burst 模式下每次转换使用的时钟数和所得ADDR 转换结果的 LS 位中可确保精度的位的数目, CLKS可在 11 个时钟( 10 位) 4 个时钟( 3 位)之间选择: 000 11 个时钟 /10 位, 001 10 个时 钟 /9 位, 111 4 个时钟/3 位 000 21 PDN 1: A/D 转换器处于正常工作模式。 0: A/D 转换器处于掉电模式。 0 23:22 TEST1:0 这些位用于器件测试。 00正常模式, 01数字测试模式,10 D
28、AC 测试模式, 11一次转换测试模式。 000 26:24 START 当 BURST 为 0 时,这些位控制着 A/D 转换是否启动和何时启动: 000:不启动( PDN 清零时使用该值) 001:立即启动转换 010 :当 ADCR 寄存器 bit27 选择的边沿出现在P0.16/EINT0/MAT0.2/CAP0.2 脚时启动转换 011 :当 ADCR 寄存器 bit27 选择的边沿出现在P0.22/CAP0.0/MAT0.0 脚 时启动转换 注意: START 选择 100-111 时 MAT 信号不必输出到引脚上 100:当 ADCR 寄存器 bit27 选择的边沿在 MAT0.1 出现时启动转换 101:当 ADCR 寄存器 bit27 选择的边沿在 MAT0.3 出现时启动转换 110:当 ADCR 寄存器 bit27 选择的边沿在 MAT1.0 出现时启动转换 111:当 ADCR 寄存器 bit27 选择的边沿在 MAT1.1 出现时启动转 000 27 EDGE 该位只有在 START 字段为 010 111 时有效