1、 西安欧亚学院本科毕业论文(设计) 1基于 ARM 的温度测量系统ADC 模块开发及应用摘要:本设计以我校自主研发的 ARM 嵌入式系统用户板为开发平台,外部配有LCM12864 显示屏、LED 显示模块,按键及各种通讯接口等。该设计主要应用了ARM 的 ADC 模块、液晶显示模块及外加的一个 PT100 温度传感器。利用温度传感器将温度变化转化为电压变化,再由 ADC 模块将采集到的电压信号通过液晶显示屏显示出来,以此来实现温度实时测量系统的开发。本文对所用芯片的工作特性、ADC 模块及温度传感器 PT100 的工作原理做了简要说明,对系统软件设计的方法及流程进行了详细的描述。实验测试结果表
2、明,该温度测量系统能正常工作,并可移植应用于多种温度监控系统。关键词:PT100 ARM7 液晶屏 ADCADC module development and applicationBased on the ARM temperature measurement systemAbsrtact:This design with taking our self-developed ARM embedded system user plate as development platform ,using ARM7 TDMI-S- LPC2148 producted by Philips as MCU
3、.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 temperature sens
4、or 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 design in det
5、ails. 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 芯片已经难以满足高性能的应用要求,因此大多数开发人员将目光瞄向了 ARM 芯片的模数转换器。AMR 芯片的模数转换器由于其高速、多路、廉
8、价等诸多优势而被广泛采用。利用 ARM 的 10 位 AD 转换器,外加一个铂电阻(PT100 精密温度传感器)就可以实现宽温度范围、高精度温度测量系统。选择基于 ARM 的温度测量系统题目,在于提高我对 ARM 系列单片机的应用能力和工业测控系统的设计能力。1.3 开发设计方案本课题设计是根据我校老师自主研制的 ARM 实验板进行设计开发的。用 IAR软件对各个模块进行程序编写并进行调试,当程序调试无误后,将程序下载到 ARM西安欧亚学院本科毕业论文(设计) 3实验板上。运用一个 PT100 温度传感器将温度信号转换为电压,经 ARM 芯片的AD 转换器,经过模数转换器,将输入的模拟信号(电
9、压)转换成数字信号,再通过LCD 显示出所采集到的数字信号。由 PT100 温度传感器将温度转换为电压,将电压送到 LPC2148 的 ADC 模块中,经过数模转换,将得到的数字信号存储在寄存器中并送到实验班的 LCD 显示屏上,实时显示温度变化。设计方案如图 1-1 所示:P T 1 0 0 温 度 传感 器L P C 2 1 4 8 模 数转 换L P C 2 1 4 8 数 据处 理温 度 信 号电 压 信 号L C D 显 示 屏 显示 温 度数 字 信 号数 字 信 号图 1-1 设计方案图2 功能模块说明2.1 ARM 主控芯片(LPC2148)2.1.1 工作特性LPC2148
10、是基于一个支持实时仿真和嵌入式跟踪的 32/16 位 ARM7 TDMI-S 的微控制器,带有 32kB 和 512kB 嵌入的高速 Flash 存储器。独特的加速结构,使 32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用 16 位Thumb 模式将代码规模降低超过 30%,而性能的损失却很小。其主要特性如下:(1) 16/32 位 ARM7TDMI-S 微控制器,超小 LQFP64 封装;西安欧亚学院本科毕业论文(设计) 4(2) 32kB 的片内静态 RAM 和 512KB 的片内 Flash 程序存储器,加速器可实现60 MHz 工作频率;(3) 通过片内 boot
11、装载程序实现在系统编程和在应用编程(ISP 和 IAP) ,单个Flash 扇区或整片擦除时间只有 400ms,256 字节的编程时间为 1ms;(4) Embedded ICE RT 和嵌入式跟踪接口提供实时调试(通过片内 Real Monitor 软件)和高速跟踪指令执行;(5) USB 2.0 全速设备控制具有 2KB 的端点 RAM,此外 LPC2146/8 提供 8KB 的片内 RAM,可被 USB 的 DMA 控制器访问;(6) 2 个 10 位 ADC 转换器,提供总共 6/14 路模拟输入,每个通道的模数转换时间低至 2.44us;(7) 1 个 10 位的 D/A 转换器提供
12、可变的模拟 .信号的输出;(8) 2 个 32 位定时器/外部事件计数器(带 4 路捕获和 4 路比较通道),PWM 单元(6 路输出 )和看门狗;(9) 低功耗实时时钟 (RTC)具有独立的电源和特定的 32kHz 时钟输入;(10) 多个串行接口,包括 2 个 UART(16C550)、 2 个高速 I2C 总线(400 kbit/s)SPI 和具有缓冲作用和数据长度可变功能的 SSP;(11) 向量中断控制器( VIC)可以配置优先级和向量地址;(12) 多达 45 个可承受 5V 电压的通用 I/O 接口(LQFP64 封装) ;(13) 多达 9 个边沿或电平触发的外部中断管脚;(1
13、4) 通过一个可编程的片内 PLL(100ms 的设置时间)可以实现最大为 60MHz 的CPU 操作;(15) 片内集成振荡器可操作频率为 1MHz30MHz 的外部晶体或频率高达50MHz 的外部振荡器;(16) 具有低功耗模式 (空闲和掉电模式) ;(17) 可以通过个别使能 /禁止外围功能和外围时钟分频来优化额外的功耗;(18) 可外部中断, USB,掉电检测或实时时钟将处理器从掉电模式中唤醒;(19) 单电源,具有上电复位和掉点检测功能;(20) CPU 可操作 电压范围:3.0V3.6V(3.3V10) ;2.1.2 结构图结构图如图 2-1 所示:西安欧亚学院本科毕业论文(设计)
14、 5图 2-1 LPC2148 结构方框图由上图可见,LPC2148 的结构包含一个支持实时仿真的 ARM7TDMI-S CPU、片内存储器控制接口 ARM7 局部总线、中断控制接口的 AMBA 高性能总线(AHB)和链接片内外设功能的 VLSI 外设总线(VPB,ARM, AMBA 总线的兼容超集)。AHB 外设分配了 2MB 的地址范围 ,它位于 4GB 的 ARM 存储器空间的最顶端,每个 AHB 外设也分配了 16KB 的地址空间。并且其外设功能都能连接到 VPB 总线,外设包括外部中断、I2C 串行接口、捕获/比较定时器 0/1、SPI 串行接口、ADC、 UART、通用 I/O 接
15、口、PWM、看门狗定时器、实时时钟、系统控制等。AHB 到 VPB 的桥将 VPB 总线与 AHB 总线相连。 VPB 外设也分配了 2MB 的地址范围,从 3.5GB 地址开始,并且每个 VPB 外设在 VPB 地址空间内斗分配了 16KB的地址空间。西安欧亚学院本科毕业论文(设计) 62.1.3 应用ARM 芯片开发应用最重要的环节之一就是底层软件的开发,即用汇编语言及C 语言混合编写的启动代码。本应用中系统配置及部分启动代码如下:(1)系统配置头文件Confug.h#define_ CONFIG_H#define_ CONFIG_H#ifndef TRUE#deflne TRUE#end
16、if#ifndef FALSE#define FALSE 0#endiftypedef unsigned char uint8; /*无符号 8 位整型变量*/typedefsigned char int8; /*有符号 8 位整型变量*/typedef unsigned short uintl6; /*无符号 16 位整型变量*/typedef signed short int16; /*有符号 16 位整型变量*/typedef unsigned int uint32; /*无符号 32 位整型变量*/typedef signed int int32; /*有符号 32 位整型变量*/ty
17、pedef float fp32; /*单精度浮点数(32 位长度)*/typedef double fp64; /*双精度浮点数(64 位长度)*/#include”nxp/iolpc2148.h”#include”stdio.h”#include”intrinsics.h” /*ARM 核特征头文件 */*系统时钟配置:Fosc、Fcclk、Fcco、Fpclk*/#define Fosc 12000000 / *时钟频率:12MHz */ #define Fcclk (Fosc*5) / *系统时钟:60MHz) */#define Fcco (Fcclk*4) /*流控振荡频率:240
18、MHz */#define Fpclk (Fcclk/4)*2 /*外设时钟频率:30MHz */#define KOM_H IOlSET_bit.P1_24=1;#define KOM_L IOlCLR_bit.P1_24=1;void ZLG7289_cod_dat(char cmd,char dat);西安欧亚学院本科毕业论文(设计) 7void ZLG7289_Init();#endif(2)用汇编语言编写的部分启动代码/MODE MSK DEFINE Ox1FUSR MODE DEFINE 0x10FIQ MODE DEFINE 0x11IRQ MODE DEFINE 0x12SVC
19、 MODE DEFINE 0x13ABT MODE DEFINE 0x17UND MODE DEFINE Ox1BSYS MODE DEFINE Ox1Fmsr r0,cpsrbic r0,r0,#MODE_MSKorr r0,r0,#SVC_MODEmsr cpsr_c,r0ldr sp,=SFE(SVC_STACK)bic r0,r0,#MODE_MSKorr r0,r0,#ABT_MODEmsr cpsr_c,r0ldr sp,=SFE(ABT_STACK)bic r0,r0,#MODE_MSKorr r0,r0,#UND_MODEmsr cpsr_c,r0ldr sp,=SFE(UND
20、_STACK)bic r0,r0,#MODE_MSKorr r0,r0,#FIQ_MODEmsr cpsr_c,r0ldr sp,=SFE(ABT_STACK)bic r0,r0,#MODE_MSKorr r0,r0,#IRQ_MODEmsr cpsr_c,r0西安欧亚学院本科毕业论文(设计) 8ldr sp,=SFE(IRQ_STACK)bic r0,r0,#MODE_MSKorr r0,r0,#SYS_MODEmsr cpsr_c,r0ldr sp,=SFE(CSTACK)2.2 ADC 模块2.2.1 概述在科研、生产中,要经常进行模拟量的测量和控制。为了对温度、压力、流量、速度、位移等
21、物理量进行测量和控制,需要通过各种传感器把上述物理量转换成模拟量的电信号,即模拟电信号;将模拟电信号经过处理并转换成计算机能识别的数字量,送进计算机,这就是 A/D 变换过程或称为数据采集。大部分传感器输出的是电压或电流等模拟信号,所以需要将这些模拟信号转换成易于处理和存储的数字信号。A/D 转换可分为 4 个阶段:即采样、保持、量化和编码。A/D 模数转换器将测试得到的模拟量转换为数字量,送入 ARM 微处理器控制单元,经计算、处理后输出至外设显示和控制。LPC2148 中的 A/D 转换器的基本时钟由 VPB 时钟提供。每个转换器包含一个可编程分频器,可将时钟调整至逐步逼近转换所需的 4.
22、5MHz。完全满足精度要求的转换需要 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 A/D 转换器内部寄存器及功
23、能框图2.2.4 相关寄存器ADC 模块的工作模式设置和转换结果控制由两个 32 位寄存器完成,对于这两寄存器的描述见表 2-1:表 2-1 主要寄存器名称 描述 访问 复位值 地址ADCRA/D 控制寄存器:A/D 转换开始前,必须设置 ADCR 寄存器来悬着工作模式; 读写 0X00000001 0XE0034000ADDRA/D 数据寄存器:该寄存器包含 ADC的结束标志位和 10 转换结果(当结束标志位为 1 时,换换结果才有效);读写NA 0XE0034004A/D 控制寄存器(ADCR0xE0034000)ADCR 寄存器描述见下表 2-2表 2-2 A/D 控制寄存器ADCR 名
24、称 描述 复位值7:0 SEL 从 AIN3AIN0(LPC2114/2124)或AIN7 AIN0(LPC2212/2214)中选择采样和转换输入脚。在0X01西安欧亚学院本科毕业论文(设计) 1064 脚封装的 LPC2114/2124 中只有 bit3bit0 可置位。软件控制模式下,只有一位可被置位。硬件扫描模式下,SEL可为 18 中的任何一个值(在 64 脚封装的 LPC2114/2124中 SEL 从 14 中取值) 。SEL 为零时等效于为 0x0115:8 CLKDIV 将 VPB 时钟( PLCK)进行( CLKDIV 的值+1 )分频得到A/D 转换时钟,该时钟必须小于或
25、等于 4.5MHz。典型地,软件将 CLKDIV 编程为最小值来得到 4.5MHz 或稍低于4.5MHz 的时钟,但某些情况下(例如测量高阻抗的模拟信号)可能需要更低的时钟016 BURST 如果该位为 0,转换由软件控制,需要 11 个时钟方能完成。如果该位为 1,A/D 转换器以 CLKS 字段选择的速率重复执行转换,并从 SEL 字段中为 1 的位对应的引脚开始扫描。A/D 转换器起动后的第一次转换的是 SEL 字段中为 1 的位中的最低有效位对应的模拟输入,然后是为 1 的更高有效位对应的模拟输入(如果可用) 。重复转换通过清零该位终止,但该位被清零时并不会中止正在进行的转换019:1
26、7 CLKS 该字段用来选择 Burst 模式下每次转换使用的时钟数和所得 ADDR 转换结果的 LS 位中可确保精度的位的数目,CLKS 可在 11 个时钟(10 位)4 个时钟(3 位)之间选择:00011 个时钟/10 位, 00110 个时钟/9 位,1114 个时钟/3 位00021 PDN 1:A/D 转换器处于正常工作模式。0:A/D 转换器处于掉电模式。023:22 TEST1:0 这些位用于器件测试。00正常模式,01数字测试模式,10DAC 测试模式,11一次转换测试模式。00026:24 START 当 BURST 为 0 时,这些位控制着 A/D 转换是否启动和何时启动
27、: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.
28、0 出现时启动转换111:当 ADCR 寄存器 bit27 选择的边沿在 MAT1.1 出现时启动转000西安欧亚学院本科毕业论文(设计) 1127 EDGE 该位只有在 START 字段为 010111 时有效0:在所选 CAP/MAT 信号的下降沿启动转换1:在所选 CAP/MAT 信号的上升沿启动转换A/D 数据寄存器(ADDR0xE0034004)ADDR 寄存器描述见表 2-3,其中 ADDR15:6为 10 位的 A/D 转换结果,bit15 为最高位。表 2-3 A/D 数据寄存器ADDR 名称 描述 复位值31 DONE A/D 转换完成标志位,当 A/D 转换结束时该位置位。
29、该位在 ADDR 被读出和 ADCR 被写入时清零。如果 ADCR 在转换过程中被写入,该位置位,并启动一次新的转换。030 OVERUN Burst 模式下,如果在转换产生 LS 位的结果前一个或多个转换结果被丢失和覆盖,该位置位。该位通过读 ADDR 寄存器清零029:27 这些位读出为 0。它们用于未来 CHN 字段的扩展,使之兼容包含更多通道的转换器。026:24 CHN 这些位包含的是 LS 位的转换通道。 X23:16 这些位读出时为 0。它们允许连续 A/D 值的累加,而不需要使用与门屏蔽处理,使得至少有 256 个值不会溢出到CHN 字段。015:6 V/VddA 当 DONE
30、 为 1 时,该字段包含一个二进制数,用来代表SEL 字段选中的 Ain 脚的电压。该字段根据 VddA 脚上的电压对 Ain 脚的电压进行划分。该字段为 0 表明 Ain 脚的电压小于,等于或接近于 VssA;该字段为 0x3FF 表明 Ain脚的电压接近于,等于或大于 VddA。X5:0 这些位读出时为 0。专门用于未来的扩展和功能更强大的A/D 转换器。0读取 A/D 转换结果时,必须要等到转换结束,然后才可以读取。由于 10 位二进制数位于 ADDR15:6这个位置,所以转换结束后还必须将值从这个位置取出来,程序如下:Uint32 ADC_Data;While(ADDR&0X80000
31、0000)=0); /*等待转换结束*/ADC_Data=ADDR;ADC_Data=(ADC_Data6)&0x3ff; /*取出转换值*/2.2.5 初始化初始化 ADC 模块如下程序所示,使用 AIN0 进行 10 位 ADC 转换的初始化程序,转换时钟设置为 1MHzPINSEL1=0x00400000; /*设置 P0.27 为 AIN0 功能*/西安欧亚学院本科毕业论文(设计) 12ADCR=(1 4 0 m s功能设置控制字 3 0 H延时 1 0 0 u s功能设定控制字 3 0 H延时 3 7 u s显示开关控制字 0 C 0 H延时 1 0 0 u s清除显示屏控制字 0
32、1 H延时 1 0 m s进入设定点控制字 0 6 H初始化结束图 2-6 液晶显示模块初始化流程图西安欧亚学院本科毕业论文(设计) 213 开发工具3.1 IAR 开发环境3.1.1 功能简介IAR Embedded Workbench(简称 IAR EW)是调试/仿真/ 编程/的集成开发环境,是一种非常高效的嵌入式系统开发工具。它使用户能够充分有效地开发和管理嵌入式应用项目,其界面类似于 MS Visual C+,可以在 Window95/98/2000/XP 平台上完美运行,功能十分完善。IAR EW 中包含了源程序文件编辑器、项目管理器、源程序调试器等,并且为 C/C+编译器、汇编器、
33、链接定位器等提供了单一而且灵活的开发环境。IAR EW 的源级浏览器功能利用符号数据库使用户可以快速浏览源文件,还可以通过详细的符号信息来优化变量存储器;文件查找功能可在制定的若干文件中进行全局搜索。IAR EW 还提供了强大的第三方工具软件的接口,允许用户启动指定的应用程序,为用户带来方便的编译环境。IAR EW 适用于开发基于 8 位、16 位以及 32 位微处理器的嵌入式系统,其集成开发环境具有统一界面,为用户提供了一个易学和具有最大代码继承能力的开发平台,以及对各种特殊目标的支持。IAR 公司提出了所谓 “不同架构,惟一解决方案”的理念用户可以针对多种不同的目标处理器,在相同的集成开发
34、环境中进行基于不同 CPL 嵌入式系统应用程序的开发,以效提高工作效率,节省工作时间。IAT EW还是一种可扩展的模块化环境,允许用户采用自己喜欢的编辑器和源代码控制系统,链接定位器可以输出多种格式的目标文件,使用户可以采用第三方软件进行仿真调试。编译器、汇编器和链接器也可在命令行上运行,用户可以在一个已建好的项目中把它们作为外部工具使用。3.1.2 主要功能模块(1)高度优化的 IAR ARM C/C 斗+编译器(compile);(2) IAR ARM 汇编器(Assembler);(3)通用的 IAR XLINK 链接器(Linker ;(4)IAR XAR 和 XLIB 建库程序和 I
35、AR DLIB C/C+运行库;(5)功能强大的编辑器;(6)项目管理器;(7)命令行实用程序;(8)IAR C-SPY 调试器(先进的高级语言调试器);3.1.3 软件特点(1)完善的 ARM 内核支持;(2)客户化地芯片级支持;西安欧亚学院本科毕业论文(设计) 22(3)编译器速度优化及浮点运算库功能扩展;(4)支持多种嵌入式操作系统;(5)功能强大的 Debug 功能;3.1.4 芯片及支持特性(1)各 场 商 完 整 的 ARM 处 理 器 C/C+和 汇 编 语 言 外 设 寄 存 器 定 义 文 件( *.h) ;(2)大 量 适 于 嵌 入 式 代 码 的 编 程 语 言 扩 展
36、 特 性 , 包 括 : 存 储 器 关 键 字 、 本 征关 键 字 、 本 征 函 数 、 中 断 函 数 、 存 储 器 映 射 I/O 等 ;(3)多 种 评 估 板 例 程 , 包 括 : IAR、 Analog Devices、 Aiji System、 ARM、 Atmel、 Cirrus Logic、 Freescale、 Keil、 OKI、 Olimex、 Pasat、 Philips、 Phytec、 ST 和 TI等 等 ;(4)支 持 ARM 或 Thumb 模 式 下 大 至 4G 字 节 的 应 用 程 序 ;(5)每 个 函 数 都 能 选 择 在 ARM 或
37、Thumb 模 式 下 编 译 ;(6)可 生 成 VFP 向 量 浮 点 协 处 理 器 代 码 ;(7)支 持 Analog Devices、 Atmel、 Freescale、 OKI、 Philips、 ST 和 TI 等场 商 的 ARM 处 理 器 的 Flash Loader 程 序 ;(8)支 持 ARM Angel Debug monitor;3.1.5 IAR 集成开发环境界面特色(1)分 层 次 的 工 程 组 织 ;(2)同 一 工 作 空 间 中 允 许 存 放 多 个 工 程 ;(3)可 停 靠 的 窗 口 和 多 视 图 ;(4)源 代 码 浏 览 ;(5)创 建
38、 和 维 护 库 的 工 具 ;(6)可 以 和 源 代 码 控 制 系 统 相 集 成 ;(7)文 本 编 辑 器 ;3.1.6 IAR 开发界面IAR 开发界面图如图 3-1 所示:西安欧亚学院本科毕业论文(设计) 23图 3-1 IAR 开发界面3.2 JTAG3.2.1 JATG 简介JTAG 是基于边缘扫描技术的嵌入式系统软件开发工具,具有程序代码的实时仿真、调试及编程功能。常见的 JTAG 有:H-JTAG 、J-LINK、FTDI 等。图 3-2 H-JTAG 实物图西安欧亚学院本科毕业论文(设计) 24P C 机J T A G实 验 目 标 板图 3-4 JTAG 与 PC 机
39、和目标板连接示意图西安欧亚学院本科毕业论文(设计) 254 编程和调试4.1 初始化4.1.1 整机初始化流程图整机初始化如图 4-1 所示:开 始功 能 选 择时 钟 配 置A D C 初 始 化L C D 初 始 化初 始 化 界 面 显 示主 程 序图 4-1 整机初始化 4.1.2 初始化源程序功能:初始化 ADC、LCD、时钟频率/*ADC 初始化*/void adc_int()AD0CR_bit.SEL = 2; /允许 ADC0.1西安欧亚学院本科毕业论文(设计) 26AD0CR_bit.CLKDIV = PCLKFREQ / 4500000;AD0CR_bit.BURST =
40、1; / 开启连续转换模式AD0CR_bit.CLKS = 0; /10 位精度AD0CR_bit.PDN = 1; /上电PINSEL1_bit.P0_28 = 1; / 配置电位器输出/*plc 端口初始化*/void plc_port_init(void)SCS_bit.GPIO1M=1;IO0DIR = 0x0040000f;FIO1DIR3=0X01;FIO1DIR2=0XFF;/*时钟频率初始化 */void feed (void)PLLFEED=0xAA;PLLFEED=0x55;/*LCD 初始化 * */void Lcd_Init(void)WriteCommand(0x30
41、);/使用 8 位控制界面WriteCommand(0x30);/使用基本指令集WriteCommand(0x0C);/整体显示 ONWriteCommand(0x06);/显示右移/*LCD 初始化界面显示 */西安欧亚学院本科毕业论文(设计) 27void IntShow(void) str1 = “*“;UpdateDisp(0, str1);str1 = “ 温度检测系统 “;LineDisp(1, str1);str1 = “ “;LineDisp(2,str1);str1 = “*“;LineDisp(3, str1); Delay(2000000); 4.2 ADC 程序设计4.
42、2.1 ADC 流程图ADC 流程框图如图 4-2 所示:西安欧亚学院本科毕业论文(设计) 28开 启 A / D 转 换取 出 A D C R 中 转 换 值换 算 取 出 的 值查 表 显 示 温 度再 次 启 动 A / D 转 换判 断 转 换 是 否 完 成D O N E = 0D O N E = 1D e l a y图 4-2 A/D 转换程序流程图4.2.2 A/D 转换源程序while(1) while(AD0DR_bit.DONE = 0); / /等待转换AD0DR_bit.CHN = 0; / 通道 0 数据ADCresult = AD0DR_bit.VVDDA ; /
43、保存 ADC 的值ADCresmV = (ADCresult2)/256; / 取出 ADC 的值ShowTemp(); / 显示温度 AD0CR_bit.START = 0x0001; / 启动下次转换Delay(2000000);西安欧亚学院本科毕业论文(设计) 29void ShowTemp(void) /显示温度 temp=ADCresmV;str2 = “ 温度检测系统 “;UpdateDisp(0, str2);str2 = “当前温度: “;LineDisp(1,str2) ; str2 = “*“;LineDisp(2, str2); str2 = “*“;LineDisp(3
44、, str2);if(temp867) /温度 201 度到 300 度 ShowT1(temp); else if(temp611) /温度 101 度到 200 度ShowT2(temp);else if(temp355) /温度 51 度到 100 度ShowT3(temp);else if(temp99) /温度 0 度到 50 度ShowT4(temp);else ShowT5(temp); /温度-60 度到-1 度Delay(100000); 西安欧亚学院本科毕业论文(设计) 304.3 液晶显示模块程序设计4.3.1 液晶显示字符串程序流程图液晶显示字符串程序流程图如图 4-3 所示:第 一 行第 二 行第 三 行第 四 行写 入 相 应 的 端 口 地 址判 断 输 入 字 符 是 否 结 束在 L C D 中 输 出 字 符指 向 下 一 个 字 符N OY E S图 4-3 液晶显示字符串流程图在程序中,根据用户设置判断要写入的行数,再将对应的显示端口地址写入液晶屏中,最后再逐个将字符写入液晶屏中。在显示数字的程序设计与字符显示基本相同。先将数字转化为该数字的字符,然后以同样的方式写入液晶屏中。在显示转化出来的温度时详细流程图如图 4-4 所示: