毕业设计=基于GP32温度测试系统的设计.doc

上传人:laozhun 文档编号:2884339 上传时间:2023-03-01 格式:DOC 页数:30 大小:1.40MB
返回 下载 相关 举报
毕业设计=基于GP32温度测试系统的设计.doc_第1页
第1页 / 共30页
毕业设计=基于GP32温度测试系统的设计.doc_第2页
第2页 / 共30页
毕业设计=基于GP32温度测试系统的设计.doc_第3页
第3页 / 共30页
毕业设计=基于GP32温度测试系统的设计.doc_第4页
第4页 / 共30页
毕业设计=基于GP32温度测试系统的设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《毕业设计=基于GP32温度测试系统的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计=基于GP32温度测试系统的设计.doc(30页珍藏版)》请在三一办公上搜索。

1、目 录第一章 前 言 21.1 MCU与嵌入式系统21.2 传感器简介31.3 热敏电阻温度传感器4第二章 硬件测试 52.1 单片机系统52.2 单片机的选择52.2.1 MC68HC908GP32单片机的特点52.2.2 MC68HC908GP32内部结构62.2.3 GP32MCU的引脚功能82.3 测温系统的原理框图92.3.1 温度传感器电路102.3.2 信号放大电路102.3.3 A/D转换模块112.3.4 温度显示系统11第三章 软件设计 123.1 MCU方程序123.1.1 Main函数123.1.2 A/D转换模块的基本编程方法133.1.3 串行口初始化子程序173.

2、1.4 串口通行模块183.1.5 WllDef.c程序223.2 PC机方(VB编程)22第四章 测试与总结 274.1 测试274.1.1 连接硬件电路274.1.2 08C语言程序调试274.2 总结284.3 参考文献30基于GP32温度测试系统的设计第一章 前 言1.1 MCU与嵌入式系统MCU的基本含义:在一块芯片上集成了中央处理器单元(CPU)、存储器(RAM/ROM)、定时器/计数器及多种输入/输出(I/O)接口的比较完整的数字处理系统。MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计,能很好地满足应用系统的嵌入,面向测控对象和现场可靠运行等方面的要求。因此由MC

3、U构成的系统是发展最快、品种最多、数量最大、应用最广的嵌入式系统。由于MCU有嵌入式应用的专用体系结构与指令系统,而且具有体积小、可靠性高等特点,同时具有各种各样的型号,可以满足不同的需求,实际应用时,开发者可根据具体要求选用最佳型号的MCU嵌入到所需的应用系统中2。一个以MCU为核心,比较复杂的嵌入式产品或实际嵌入式应用系统,包含模拟量的输入、模拟量的输出,开关量的输入、开关量的输出以及数据通信部分。如图1为一个典型的嵌入式应用系统框图。MCU工作支撑电路保障MCU能够正常运行,如电源提供、晶振电路及必要的滤波电路等。实际模拟信号一般来自相应的传感器。但是,一般传感器将实际模拟信号转成的电信

4、号都比较弱,MCU无法直接获得该信号,需要将起放大,然后经过模/数(A/D)转换变为数字信号,进行处理。目前许多MCU内部包含A/D转换模块,实际应用时也可根据需要外接A/D转换芯片。常见的模拟量有:温度、湿度、压力、质量、气体浓度、液体浓度、流量等。对MCU来说,模拟信号通过A/D转换变成相应的数字序列进行处理。 实际开关信号一般也来自相应的开关类传感器。如光电、电磁开关、干簧管、声控、红外开关等,在一些儿童电子玩具就有一些类似的开关。手动开关也可以作为开关信号送到MCU中。对MCU来说,开关信号就是只有“0”和“1”两种可能值的数字信号。其他输入信号通过通信方式与MCU沟通。常用的通信方式

5、有:异步串行(SCI)通信方式、串行外设接口(SPI)通信方式、并行通信方式、USB通信方式、网络通信方式等。在执行机构中,有开关量执行机构,也有模拟量执行机构。开关量执行机构只有“开”、“关”两种状态。模拟量执行机构需要连续变换的模拟量控制。MCU一般不能直接控制这些执行机构,需要通过相应的驱动电路实现。还有一些执行机构,即不是通常的开关量控制,也不是通常的D/A转换量控制,而是“脉冲”量控制,如控制空调电动机,MCU则通过软件对其控制。MCU放大器:将微弱电信号放 大 成MCU可接受的电信号传感器:将实际物理信号转换为微弱电信号模拟量驱动机构:将MCU送出的信号放大模拟量执行机构将实际开关

6、信号转换成MCU可接受的电信号MCU与嵌入式系统开关量驱动机构:将MCU送出的信号放大开关量执行机构其他输入信号其他输出信号MCU工作支撑电路其他通信设备通信信号匹配电路A/D转换接口D/A转换接口I/O接口通信接口实际模拟信号实际开关信号图1 一个典型的嵌入式应用系统框图1.2 传感器简介传感器是一种把物理量或化学量转变成便于利用的电信号的器件,其实质是一种功能块,其作用是将来自外界的各种信号转变为电信号。它是实现测试与自动控制系统的首要环节。如电子计价秤中所安装的称重传感器,它是电子计价秤的重要部件,它担负着将重量转换成电信号的任务,它所输出的电信号被放大器放大并经A/D转换后由相关电路显

7、示出称重信息。如果没有传感器对原始参数进行精确可靠的测量,哪么无论是信号转换或信息处理,或者最佳数据的显示和控制都将无法实现。在现代电子信息系统中,信息采集传感器技术、信息传感痛惜技术、信息处理微处理器技术是现在电子信息技术的3大核心技术。传感器的种类可分为力、热、湿、气,磁、光、电等。室温传感器用于测量室内和室外的环境温度,管温传感器用于测量蒸发器和冷凝器的管壁温度。室温传感器和管温传感器的形状不同,但温度特性基本一致。按温度特性划分,目前美的使用的室温管温传感器有二种类型:1、常数B值为4100K3%,基准电阻为25对应电阻10K3%。温度越高,阻值越小;温度越低,阻值越大。离25越远,对

8、应电阻公差范围越大;在0和55对应电阻公差约为7%;而0以下及55以上,对于不同的供应商,电阻公差会有一定的差别。1.3 热敏电阻温度传感器温度传感器利用一些金属、半导体等材料与温度有关的特性而制成的,这些特性包括热膨胀、电阻、电容、磁性、热电势、热噪声、弹性及光学特征。根据制造材料将其分为热敏电阻传感器、半导体热电偶传感器、PN结温度传感器和集成温度传感器等类型。热敏电阻传感器,其最基本电气特性是随着温度的变化自身阻值也随之变化。热电阻材料热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性。第二章 硬件测试2.1 单片机系统单片机选用的是Freescale公司的MC908GP32,主

9、要完成对AD转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为ADC0809提供工作时钟2.2 单片机的选择嵌入式系统的核心就是各种不同类型的MCU,选择MCU时要考虑的因素有处理性能、功耗、价格、封装形式、软硬件开发工具、设计者的熟悉程度等。对于许多嵌入式系统设计来说,目标不在于挑选速度最快并且功能最强的MCU(这样的MCU往往价格较高),而是选择对于完成功能最合适的MCU。应遵循的原则有:MCU的总I/O口个数应略多于系统功能所需的个数,以备功能扩展和调试时使用;对于使用到的外设功能模块应尽可能集成在MCU的内部,以简化硬件系统,减少系统工作功耗,提高系统的可靠性;尽量选择

10、设计者较为熟悉和开发工具完备的芯片型号,这样可以减少开发周期,提高开发效率。基于上述选型原则,本设计采用了MC68HC908GP32(42引脚)单片机,它稳定性高、开发周期短、成本低、兼容性好;按各种型号带有不同大小的片内闪速(FLASH)存储器,具有非常高的性价比;增加了增强型的串行通讯接口SCI和串行外围接口SPI。2.2.1 MC68HC908GP32单片机的特点MC68HC908GP32单片机的主要特点概述如下:1)512B片内RAM;32K片内Flash程序存储器,具有在线编程能力和保密功能。 2)时钟发生器模块,具有32KHz晶振PLL电路,可产生各种工作频率;8MHz 内部总线频

11、率。 3)增强的HC05 CPU结构;16种寻址方式(比HC05多8种);16位变址寄存器和堆栈指针;存储器至存储器数据传送;快速88乘法指令;快速16/8除法指令;扩展的循环控制功能;BCD功能. 4)33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTA、PTC和PTD的输入口有可选择的上拉电阻;PTC0PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (总体驱动电流应小于150mA);所有口有最高5mA输入电流保护功能。 5)增强型串行通讯口SCI;串行外围接口SPI;两个16位双通道定时器接口模块(TIM1和TIM2),每个通道可选择为输入捕捉、输出

12、比较和PWM,其时钟可分别选为内部时钟的1、2、4、8、6、32和64的分频值;带时钟预分频的定时基模块有8种周期性实时中断(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式时使用外部32KHz晶振周期性唤醒CPU;8位键盘唤醒口。6)系统保护特性:计算机工作正常(COP)复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。 7)具有PDIP40、SDIP42和QFP44封装形式。 8)优化用于控制应用;优化支持C语言。 2.2.2 MC68HC908GP32内部结构MC68HC908GP32 MCU(以下简称GP32 MCU)的

13、三种封装形式只有引脚数量和形式有所区别,其他方面是一致的。图4给出了GP32的 内部结构框图。图4中I/O接口是按44引脚的GP32给出的,对于42引脚的GP32 MCU则没有PTC5、PTC6两个引脚,对于40引脚的GP32 MCU则没有PTC5、PTC6及PTD6/T2CH0、PTD7/T2H1四个引脚。从内部结构简图可以看出,GP32内部有以下主要部分:M68HC08 CPU、存储器、定时接口模块、定时基模块、看门狗模块、并行I/O接口、串行通信接口SCI、串行外设接口SPI、断点模块、A/D转换模块、键盘中断模块、时钟发生模块及锁相环电路、低电压禁止模块、复位与中断模块、鉴控模块MON

14、、系统设置模块。M68HC08 CPUCPU寄存器算数逻辑单元 64B控制和状态寄存器32KB片内Flash程序寄存器512B片内RAM307B监控ROM36B用户Flash矢量空间时钟发生模块32KHz振荡器锁相环PLL系统集成模块SIM矢量空间外中断模块IRQ8位A/D转换模块电源PORTADDRAPORTCDDRCPORTBDDRBPORTDDDRD监视模式入口模块加密模块PTA7/KBD7 PTA0/KBD0定时器模块TBM断点模块BRK低电压禁止模块LVI键盘中断控制模块KBI定时器接口模块TIM1定时器接口模块TIM2内存映像模块串行通信接口模块SCI串行外设接口模块SPI监控模块

15、MON数据总线开关模块系统操作正常监视模块COP配置寄存器模块1配置寄存器模块1上电复位模块PTB7/AD7 PTB0/AD0PTC4 PTC0PTD7/T2CH1PTD6/T2CH0PTD5/T1CH1PTD4/TICH0PTD3/SPSCKPTD2/MISOPTD1/MOSIPTD0/SSVDDVSSVDDAVSSAVDDAD/VREFHVSSAD/VREFLOSC1OSC2CGMXFCRSTIRQ图4 MC68HC908GP32结构框图2.2.3 GP32MCU的引脚功能 MC68HC908GP32的引脚图 电源类引脚VDD 、VSS(20引脚、19引脚):电源供给端。VDDAD/VRE

16、FH、VSSAD/VREFL(31引脚、32引脚):内部A/D转换模块的电源供给及参考电压输入端。VDDA、VSSA(1引脚、2引脚):时钟发生器模块(CGM)的电源供给端。 控制类引脚R(-)S(-)T(-) (6引脚):外部低有效复位输入或输出引脚,有内部上拉电阻。(14引脚):外部中断输入引脚,有内部上拉电阻。 I/O类引脚PTA7/KBD7-PTA0/KBD0(42-35引脚):8位通用双向I/O接口,每个可编程为键盘输入引脚。PTB7/AD7-PTBO/AD0(32-25引脚):8位通用双向I/O接口,也可作为8位A/D转换输入引脚。PTC4-PTC0(11-7引脚):5位通用双向I

17、/O接口。PTD7/T2CH1-PTD0/SS(24-21引脚、18-15引脚):8种特殊功能、双向I/O接口,其中PTD4-PTD7用于定时器模块(TIM1和TIM2)。SPSCK、MOSI、MISO、SS用语串行外围接口(SPI)。PTE1/TxD、PTE0/RxD(12引脚、13引脚):2位双向I/O接口或串行通信。 其他CGMXFC(3引脚):CGM的外部滤波电容连接引脚。OSC1、OSC2(5引脚、4引脚):芯片内振荡器引脚。2.3 测温系统的原理框图温度传感器电路信号放大电路A/D转换电路单片机系统温度显示系统图1 测温系统的原理框图本测温系统由温度传感器电路、信号放大电路、AD转

18、换电路、单片机系统、温度显示系统构成,如图1所示。其基本工作原理:温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至AD转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。如图2所示。 2.3.1 温度传感器电路温度传感器采用的是NS公司生产的LM35,它具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供14的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0时输出为0 V,每升高1,输出电压增加10 m

19、V。其电源供应模式有单电源与正负双电源两种,其接法如图3与图4所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25下电流约为50 mA,非常省电。本系统采用的是单电源模式。2.3.2 信号放大电路由于温度传感器LM35输出的电压范围为00.99 V,虽然该电压范围在AD转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行AD转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器A741对LM35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图5所示。2.3.3 A/D转换模块A/D转换

20、模块(Analog To Digital Convert Module),即模数转换,是将电压信号转换为对应的数字信号。进行A/D转换的基本问题:1)采样精度:数字量变化一个最小量时模拟信号的变化量,即采样位数。 2)采样速率:完成一次A/D采样所要花费的时间。 3)滤波:对采样的数据进行筛选去掉误差较大的毛刺。 4)物理量回归:把A/D采样值与实际物理量对应起来。A/D转换数据寄存器ADR:ADR存放A/D转换的8位结果,每次A/D转换结束更新该寄存器。编程从该寄存器读取A/D转换结果。该寄存器地址为:$003D,为只读寄存器,复位时为$00。2.3.4 温度显示系统该温度显示系统较为简单,

21、由可编程并行输入输出芯片8255A的A,B,C端口外接3个8段LED显示器来实现。MC908GP32的P2.6为8255提供片选信号,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控制口的地址为BF3FH,BF7FH,BFBFH,BFFFH。MC908GP32处理好的温度数据输出至8255,并由MC908GP32对8255编程控制其A,B,C端口输出高电平或低电平,以便从8段LED显示器显示实际温度。8段LED显示器选用共阳极,8255的A,B,C端口与8段LED显示器之间接限流电阻。第三章 软件设计在MCU上的程序包括头文件定义、温度驱动子程序、系统初始化子程

22、序、串口通信子程序等,通过专用编译器和写入工具写到MCU中。系统的软件部分用C语言编程,采用模块化结构,主要由AD转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。系统的所有程序文件,见下表: 温度测量系统工程文件文件类型文件名功能简介头文件GP32C. hGP32 MCU映像寄存名定义头文件EnDisInt.h开放或禁止MCU各模块中断头文件Type.h类型别名定义头文件Includes.h总头文件AD.hA/D转换头文件SCI.h串行通信头文件C语言子函数文件Setup.c芯片初始化文件SCI.c串口通信文件AD.cA/D转换文件C语言主函数Main.c主函数文件

23、3.1 MCU方程序该模块是系统的核心模块3.1.1 Main函数#include Includes.h /总头文件/主函数void main(void) DisableMCUInt(); /禁止总中断 MCUInit(); /芯片初始化 /在此处添加用户程序 SCIinit(); ADCinit(); while(1) SCIsend1(ADCave(0,200); 3.1.2 A/D转换模块的基本编程方法根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。本系统采用延时方式。延时程序实际上是无条件传送IO方式,当向AD转换器发出启动命令后

24、,即进行软件延时,延时时间稍大于进行一次AD转换所需要的时间,之后打开AD转换器的输出缓冲器读数即为转换好的数字量。AD转换时间为64个时钟周期,因为系统中ADC0809的工作时钟为500 kHz,故AD转换时间为128 s,延时时间可大致选择160s。程序段如下:1)A/D转换初始化 对ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。 2)启动A/D转换 对ADSCR写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。 3)获A/D转换结果 若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR的第7位(COCO

25、位)取得,当COCO=1时可从ADR中取数。/ADC.hA/D转换头文件-*#include GP32C.h /GP32 MCU映像寄存器名定义#include Type.h /类型别名定义#define COCOBit 7void ADCinit(void); /A/D转换初始化 INT8U ADCvalue(INT8U channel); /1路A/D转换函数INT8U ADCmid(INT8U channel); /1路A/D转换函数(中值滤波) INT8U ADCave(INT8U channel, INT8U n); /1路A/D转换函数(均值滤波)/ADC.cA/D转换-*/硬件连

26、接: /PTB0/AD0 接模拟量输入端 /-*#include ADC.h/ADCinit:A/D转换初始化-*/功能:设置A/D转换时钟频率为1MHz /-*void ADCinit(void) ADCLK = 0b00110000; /|_不用 /|_选择内部总线时钟 /|_分频系数为2/ADCave:1路A/D转换函数(均值滤波)-*/功能:通道channel进行n次中值滤波,求和再作均值,得出均值滤波结果 /-*INT8U ADCave(INT8U channel, INT8U n) INT8U i; INT16U j; j = 0; for (i = 0; i j) tmp = i

27、; i = j; j = tmp; if (k i) if (k j) tmp = j; else tmp = k; else tmp = i; return tmp;/ADCvalue:1路A/D转换函数-*/功能:获取通道channel的A/D转换结果 /-*INT8U ADCvalue(INT8U channel) INT8U tmp; /1. 选取通道号ADch4-ADch0 = 00000-00111:AD0引脚 AD7引脚 channel &= 0b00011111; /取通道号变量的低五位(实际通道号) tmp = ADSCR & 0b11100000; /取ADSCR的高三位(

28、取上电复位默认值000) ADSCR = tmp | channel; /合并上述8位 /2. 取A/D转换结果 while (ADSCR & (1COCOBit) = 0); return ADR;/总头文件#include Includes.h/主程序void main(void) DisableMCUint(); /禁止总中断 /1. 芯片初始化 MCUinit(); /2. 模块初始化 SCIinit(); /(1) 串行口初始化 ADCinit(); /(2) A/D转换初始化 while (1) /在通道0做A/D转换,200次中值滤波,串口发送均值滤波结果 SCIsend1(AD

29、Cave(0, 200); 3.1.3 串行口初始化子程序该模块是对串行通信接口(Serial Communication Interface,SCI)的比特率寄存器(SCBR)、控制寄存器1(SCC1)、控制寄存器2(SCC2)进行设置。/SCI.h串行通信头文件/头文件#include GP32C.h /GP32 MCU映像寄存器名定义#include Type.h /类型别名定义/与SCI模块相关的MCU寄存器及有关标志位的宏定义#define ReSendStatusR SCS1 /SCI状态寄存器 #define ReTestBit 5 /接收缓冲区满标志位 #define Send

30、TestBit 7 /发送缓冲区空标志位 #define ReSendDataR SCDR /数据寄存器 /串行通信函数声明void SCIInit(void); /串行口初始化void SCISend1(INT8U o); /发送1字节void SCISendN(INT8U n,INT8U ch); /发送n字节INT8U SCIRe1(INT8U *p); /接收1字节INT8U SCIReN(INT8U n,INT8U ch); /接收n字节/SCIInit:串行口初始化-*/功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验, 允许发送器,允许接收器.查询方式收

31、发,波特率为9600(设fBUS2.4576MHz) /参 数:无/返 回:无/-*void SCIInit(void) /1.总线频率fBUS2.4576MHz,定义波特率Bt=9600 SCBR=0b00000010; /2.设置允许SCI,正常码输出、8位数据、无校验 SCC1=0b01000000; /3.设置允许发送、允许接收,查询方式收发 SCC2=0b00001100; 3.1.4 串口通行模块串口通信的主要功能是:接收时,把外部单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转为单线输出。图20给出了普遍意义上的SCI的编程模型。在比特

32、寄存器中可设置比特率,在控制寄存器中设置通信格式、是否效验、是否中断等。SCI数据寄存器既做接收数据寄存器,也可做发送数据寄存器,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收移位寄存器”完成。发送移位寄存器接收移位寄存器SCI数据寄存器MCU内部总线(Internal Bus)SCI比特率寄存器SCI状态寄存器SCI控制寄存器图20 SCI 编程模型该模块包括:单字节接收、多字节接收、单字节发送、多字节发送等子程序,结构图如图21。串口通信模块单字节接收单字节发送多字节接收多字节发送图21 串口通信/*-*文件描述:本文件包含了串行通信的4子程序,分别为: * *(1)

33、SCISend1:串行发送1字节 *(2)SCISendN:串行发送n字节 *(3)SCIRe1:串行接收1字节 *(4)SCIReN:串行接收n字节 *-*/以下为子程序源代码/包含头文件#include SCI.h/*SCISend1:串行发送1个字节-*功 能:串行发送1个字节 *参 数:要发送的数据 *返 回:无 *-*/void SCISend1(unsigned char o) /判断ReStatusR的第SendTestBit位是否为1,是1可以发送 while(1) if (ReSendStatusR & (1SendTestBit) != 0) ReSendDataR=o;b

34、reak; /*SCISendN:串行发送N个字节-*功 能:发送数组中的N个字节数据 *参 数:待发送的数据字节数及其要存放的数组首地址 *返 回:无 *待添加的隐藏文字内容3*-*/void SCISendN(unsigned char n,unsigned char ch) int i; for(i=0;in;i+) SCISend1(chi); /*SCIRe1:串行收一个字节数据-*功 能:从串行口接收1个字节的数据 * *参 数:标志指针p *返 回:接收到的数据(若接收失败,返回0xff) * *说 明:参数*p带回接收标志=0收到数据,=1未收到数据 * *-*/unsigned char SCIRe1(unsigned char *p) unsigned int k; unsigned char i; /ReStatusR第ReTestBit位为1表示可接收数据for(k=0;k0xfbbb;k+) if (ReSendStatusR & (1=0xfbbb) i=0xff; *p=0x01; return i;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号