《基于C8051F007的晶振温度补偿系统设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于C8051F007的晶振温度补偿系统设计毕业论文.doc(65页珍藏版)》请在三一办公上搜索。
1、本科毕业设计论文题目:基于C8051F007的晶振温度补偿 系统设计 院、 系: 电子信息工程学院学科专业: 自动化 学 生: 学 号: 040403132 指导教师: 基于C8051F007的晶振温度补偿系统设计摘 要现代电子技术的发展对晶体振荡器的频率稳定度、体积、功耗等技术指标提出了越来越高的要求。为了适应形式的发展,本文提出了一种以微处理器为核心的C80F007芯片新型微机补偿晶体振荡器(MCXO),介绍了系统构成及硬件工作原理,同时给出了详细的软件设计方法。通过对一系列补偿温度点的温度值和控制电压值的标定,确定出温度-电压曲线拟合参数,进而实现对控制电压的补偿。本文所设计的微机补偿晶
2、体振荡器具有频率稳定度高、体积小、功耗低、使用方便、非常适合自动化批量生产等特点,具有很大的推广应用价值。关键词: C8051F007 温度补偿 频率稳定度The Design Of Crystal Oscillator Temperature Compensation System Based On C8051F007AbstractWith the development of electronic technology,performance of Crystal oscillator which is stability,volume and low power consuption
3、need be improved greatly.To adapting to the situations development,Microprocessor compensation crystal oscillator (MCXO) based on C8051F007 is described in this paper. This thesis introduces the architecture of MCXO system,the principle of the hardware and detailed design method of the software.Cali
4、brate a series of control voltage U and the value of the temperature of the compensating temperature dot.Gain the temperature_voltage curvature fitting parameter,accomplish the compensation of the control voltage.The MCXO designed in the thesis has lots of advantages in terms of high frequency-tempe
5、rature stability,small size low power consumption,convenient operation and pratical for mass production.Possess great expanding and applicative value.Key Words: C8051F007 temperature compensation frequency stability目 录摘 要(I) (II)1 绪论(1)1.1课题背景(1)1.2 研究意义(1)1.3 国内外相关领域的研究现状(1)1.4 研究内容(2)1.5 论文结构(2)1.
6、6 小结(2)2 微机补偿晶体振荡器硬件系统设计(3)2.1系统的总体设计(3)2.1.1系统组成原理及框图(3)2.1.2系统性能指标(3)2.2压控晶振电路的设计(4)2.2.1晶体振荡器的选择(4)2.2.2压控晶振电路概述(4)2.2.3主振电路分析(4)2.2.4实用电路(5)2.3 温度传感电路(6)2.3.1 芯片选择(6)2.3.2 DS18B20的特性(6)2.3.3 测温原理(6)2.4 微处理器C8051F007(7)2.5 JETG调试电路(9)2.6 外接按键(9)2.7电源接口电路(9)2.8小结(10)3 MCXO补偿电压的算法分析(11)3.1补偿原理概述(11
7、)3.2最小二乘曲线拟合(11)3.3小结(12)4 微机补偿晶体振荡器的程序设计(13)4.1单片机初始化程序(13)4.2温度测量程序(14)4.2.1 DS18B20控制步骤如下(14)4.2.2 程序流程图及其调试程序(17)4.3 FLASH存储程序(23)4.3.1 FLASH存储的调试程序(24)4.4 D/A转换程序(26)4.5 外接按键程序(27)4.6 曲线拟合程序(28)4.7小结(31)5 系统程序调试(32)5.1程序调试环境(32)5.2 程序调试方法及步骤(33)5.2.1 温度采集模块调试(33)5.2.2 FLASH存储模块调试(33)5.2.3 D/A转换
8、模块调试(34)5.2.4 外接按键模块调试(34)5.2.5 曲线拟合模块调试(34)5.3 小结(34)6 总结(35)6.1设计总结(35)6.2设计优化方法(35)6.3小结(35)致 谢(36)参考文献(37)附 录(38)1 绪论1.1课题背景恒温晶体振荡器虽然是频率稳定度最高的晶体振荡器,但是由于其体积大,功耗大,造价高,开机不能立即使用,要预热,因此不可能得到广泛的应用。微机补偿晶体振荡器较好的改善了上述缺点。目前,微机补偿晶体振荡器有两种型式:第一种MCXO可以称为“传统型”。因为它是直接从数字温补晶振升级产生的。近年来,随着IC工艺的飞速发展,这种型式的MCXO在综合指标上
9、取得了长足的发展,其体积、功耗、成本已与模拟温补晶振不相上下,而频率稳定度却高得多,适合于取代模拟温补晶振。第二种MCXO可以称之为“先进型”。在这种类型的MCXO中,普遍采用SC切三次泛音晶体振荡器,双C模自温敏温度传感器,DDS综合器,锁相环等新技术,成为唯一能将频率温度稳定度提高到10-8量级的温度补偿晶体振荡器。它的体积和功耗较模拟温度补偿晶体振荡器稍大,成本较高,是温度补偿晶体振荡器的高端产品。1.2 研究意义通信和信息产业的迅速发展正在推动着晶体振荡器市场的急速增长,小型化、高精度始终是晶体振荡器发展的方向。晶体振荡器具有以下发展趋势:(1)小型化、片式化和集成化,以满足便携式产品
10、轻、薄、小的要求。(2)高精度与高稳定度,目前微机补偿晶体振荡器的稳定度为10-7到10-8量级。(3)低功耗,快速启动,低电压工作,低电平驱动和低电流消耗,以满足野外工作时移动通信设备的要求,同时也满足军事上对即时性的要求。(4)低噪声,高频化:在GPS通信系统中是不允许频率颤抖的,相位噪声是表征振荡器频率的一个重要参数。从以上四方面看出,精度高、体积小、功耗低、易于集成化的微机补偿晶体振荡器具有良好的发展前景。本文所述的微机补偿晶体振荡器,与以往相比,采用了功能强大、体积小的新型芯片C8051F007 ,而且自身带有A/ D 和D/ A , 为实现小型化和高精度提供了前提条件。1.3 国内
11、外相关领域的研究现状目前国外的高端微机补偿晶体振荡器通常采用SC切双C模振荡器,用直接数字频率合成(DDS)和锁相环(PLL)组成的频率综合器来校正输出频率,并能自动校正晶体老化。它一般有两种工作模式,一种是正常模式,在该模式下输出标称频率同时提供1Hz的同步时频信号输出;另一模式为省功耗模式,该模式下不进行温度补偿或是补偿周期很长,因而功耗很低。国内并未见微机补偿晶体振荡器实用品的报道。目前西安电子科技大学在积极的从事于微机补偿晶体振荡器的研发工作。1.4 研究内容用C8051F007和18b20实现晶体振荡器在-4085的温度范围内频率按给定的误差趋近于标称频率f0技术指标:该晶振振荡频率
12、在-40至+85范围内都能够得到误差补偿; 温度采集误差为0.01 ; 其程序能够自动识别“温度试验标定阶段”及“正常运行阶段” ; “温度试验标定阶段”标定的温度点为26个。1.5 论文结构本文分六个章节来叙述:第一章绪论,介绍了课题背景、研究意义、国内外相关领域的研究现状和研究内容。第二章叙述微机补偿晶体振荡器的硬件设计,对芯片及电路的介绍。第三章介绍补偿电压的算法和补偿原理。第四章系统软件设计,介绍了系统主要模块的软件信息及编程方法。第五章主要介绍了程序调试的环境,及各个子程序的调试过程。第六章是对整个设计的总结和提出优化措施。1.6 小结本章主要对课题的研究背景、研究意义、国内外相关领
13、域的研究现状、研究内容以及本论文的结构做出了简要的说明。 2 微机补偿晶体振荡器硬件系统设计2.1系统的总体设计2.1.1系统组成原理及框图本系统“微机补偿晶体振荡器”主要由温度传感电路、压控晶振电路、微处理器及外接按键4部分构成。在后面几节中将对各个部分详细介绍。系统的设计方案如下:首先对一系列补偿温度点的控制电压U和温度值进行标定。标定过程为:在-4085范围内,每5设一个温度测量点,共26个点。在每一个标定点上,通过外接按键调节振荡器的控制电压U,使其振荡频率达到标称频率f0 ,同时对该点的温度及电压值进行存储; 其次,根据得出的26个标定点进行曲线拟合,得出温度补偿曲线的“温度-电压”
14、函数。当曲线拟合结束后,系统对温度实时采集,根据曲线拟合函数即可得到需要补偿的控制电压,进而得出标称频率。系统硬件框图如图2.1所示。18B20把采集到的温度转换为数字量,该数字量经过单总线接口送入CPU;D/A转换把CPU所给的补偿电压输出至压控晶振电路;Flash存储用来储存标定值;键盘用于温度标定控制。电压通过压控晶振电路来控制晶体振荡器的频率。图2.1系统硬件框图2.1.2系统性能指标本方案中,微机补偿晶体振荡器的设计指标为:该晶振振荡频率在-40至+85范围内都能够得到误差补偿; 温度采集误差为0.01 ; 其程序能够自动识别“温度试验标定阶段”及“正常运行阶段” ; “温度试验标定
15、阶段”标定的温度点为26个。2.2压控晶振电路的设计2.2.1晶体振荡器的选择本系统中,我们采用AT切晶体振荡器,标称频率为10MHz,因为和其它切型的晶体振荡器相比,在宽温范围内,AT切晶体振荡器温度频差小,易于制作,且价格低廉。下面给出了AT 切型石英晶体谐振器的频率温度特性曲线如图2.2所示。图2.2 频率温度特性曲线2.2.2压控晶振电路概述压控晶振电路的基本功能是把直流电能转变成具有一定频率与幅度和一定稳定性的交流电能,这种转换是在石英晶体的参与下进行的。其主振电路的作用是将直流能量转换成所需振荡频率(主要取决于石英晶体谐振器)的交流能量,它是晶体振荡电路的核心。振荡电路包括主振级电
16、路、频率放大电路。频率放大电路只对晶体的工作频率放大,而对其它的杂波信号有抑制作用,并增加了负载隔离,有利于电路的稳定性,而且可以使输出的信号更加纯净。2.2.3主振电路分析在温度补偿晶体振荡器的设计中,主振级电路的设计是个关键。因为性能良好的主振电路,才能保证整个振荡器的工作稳定。否则,无论其它部分工作得怎样好,补偿精度设计的多么高,都没有什么意义。只有在保证主振电路稳定性的基础上,对其频率温度特性进行的补偿才能取得良好的效果。本设计用到的主振电路是其结构与电容三点式相似,电容三点式振荡电路又称考毕兹振荡电路,图2.3为电容三点式原理图。图2.3电容三点式原理图对于三点式振荡电路,只要电路工
17、作在振荡频率上,由巴克豪生准则:“它是指交流通路中三极管的三个电级与谐振回路的三个引出端连接时,只要服从以下规律:与发射结相接的为两个同性质的电抗,而与另一个(接在集电极与基极间为异性质电抗”。可以判定,按这种规定连接的三点式振荡器电路必定满足相位起振和平衡条件。2.2.4实用电路图2.4是实际的压控晶振电路,C8051F007的管脚DAC0与电路相连。图2.4实际的压控晶振电路图中C4,C12,C13是有选择范围的,选择条件是根据设计要求而定。C4是调整变容二极管的压控范围,C12,C13的作用是调整振荡电路振荡频率微调和确保振荡振荡电路起振。我们分析电路图可以看出压控晶振电路是共集电容三点
18、式振荡电路,共基频率放大电路,简称为共集-共基电路。2.3 温度传感电路2.3.1 芯片选择本系统中的温度传感器采用DALLAS 半导体公司生产的数字化温度传感器DS18B20。这是世界上第一片支持“单线总线”接口的温度传感器DS1820 的新一代改进型产品。单线总线独特而且经济的特点,使用户可以轻松地组建传感器网络,为测量系统的构建引入全新的概念。DS18B20 数字温度计是DALLAS 公司最新的单线数字式温度传感器。新的“单线器件”体积更小、适用电压更宽,使用更经济、更灵活。现场温度直接以“单线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、工
19、业系统、消费电子产品、过程监测和控制系统、温度计或任何温度传感系统等。其分辨率的设定及用户设定的最高和最低报警温度存储在EEPROM中,掉电后依然保存。DS18B20 的性能是新一代产品中最好的,性能价格比也非常出色。继“单线总线”的早期产品DS1820 开辟了温度传感器技术的新概念后,DS18B20 和DS1822 使电压、特性及封装又有更多的选择,让我们可以构建适合自己的经济的测温系统。2.3.2 DS18B20的特性a.工作电压范围:3.0V5.5V,测量温度范围:-55+125;b.可以直接从数据线上供电(寄生电源方式);c.独特的一线接口,只需要一条口线和中央微处理机进行通信;d.6
20、4 位的ROM 中存有唯一代表该器件身份的序列号,因而能够允许多DS18B20 可以同时挂接到同一条数据线上,从而使用一个CPU 就能控制分布在一个大面积区域的多个DS18B20,占用微处理器的端口较少,可节省大量的引线和逻辑电路;e.在-10+85温度范围内能达到0.5的测量精度,在-55+125的温度范围内测量精度为2;f.程序可选温度分辨率(最小可为0.0625);g.最大转换时间为750 ms;h.用户自定义的非易失性报警温度设置;i.封装方式可选:8-pin SO,8-pin SOP 和3-pin TO-92。2.3.3 测温原理DS18B20的核心功能是其直接数字温度传感器。温度传
21、感器的分辨率是用户可配置的9,10,11,12位,其相对应的增加量为0.5,0.25,0.125和0.0625。在电源上升沿默认的协议是12位。DS18B20的上升沿是处在一个低电平的空闲状态;用来初始化温度测量和A/D转换,控制器必须发出温度转换命令44h。转换结束后,得到的数据存放在暂存器2字节的温度寄存器里,并且DS18B20返回它的空闲状态。如果DS18B20由外部电源供电(见图2.5),在转换温度命令后控制器能够发出“读时间隙”;并且DS18B20通过在温度转换过程中传送0,温度转换结束后传送1来作出响应。如果DS18B20由寄生电源供电,由于在整个温度转换过程中总线必须由一个强的上
22、拉来保持高电平,这种告知方式不能使用。DS18B20输出温度数据通过摄氏度校准,对华氏温度计应用,必须使用一个查询表或转换规定。温度数据作为温度寄存器中16位符号扩展2位补足数来存储。符号位指示温度的正、负:正数S为0,负数S为1。如果DS18B20分辨率配置为12位,温度寄存器的所有位都包含有效的数据。对11位的分辨率,0位是未定义的。对10位的分辨率,0位和1位是未定义的。对9位的分辨率,0、1、2位是未定义的。图2.5 DS18B20外部电源供电2.4 微处理器C8051F007C8051F007是完全集成的混合信号系统级MCU芯片,有一个真正的12位多通道ADC。器件有一个可编程增益放
23、大器、两个12位DAC、一个电压比较器、一个电压基准、一个具有32K字节FLASH存储器并与8051兼容的微控制器内核。还有硬件实现的(不是在用户软件中用位操作模拟)I2C/SMBus、UART、SPI串行接口及一个具有5个捕捉/比较模块的可编程计数器/定时器阵列(PCA)。还有4个通用的16位定时器和4字节宽的通用数字I/O端口。C8051F007有2304字节的RAM,执行速度可达25MIPS。 具有片内VDD监视器、WDT、和时钟振荡器的MCU是真正能独立工作的片上系统。每个MCU都能有效地管理模拟和数字外设。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更
24、新8051固件。每个MCU都可以关闭任何一个或全部外设以节省功耗。 片内JTAG调试支持功能允许使用安装在最终应用系统上的产品MCU进行非侵入式(不占用片内资源)、全速、在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用JTAG调试时,所有的模拟和数字外设都可全功能运行。 每个MCU都可在工业温度范围(-45到+85)内用2.7V-3.6V的电压工作。见图2.6为C8051F007的LQFP封装。图2.6 C8051F007LQFP封装C8051F000系列器件使用Silicon Laboratories的专利CIP-51微控制器内核。CIP-5
25、1与MCS-51TM指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。CIP-51内核具有标准8052的所有外设部件,包括4个16位的计数器/定时器、一个全双工UART、256字节内部RAM空间、128字节特殊功能寄存器(SFR)地址空间及4字节宽的I/O端口。 MCU可有多达7个复位源:一个片内VDD监视器、一个看门狗定时器、一个时钟丢失检测器、一个由比较器0提供的电压检测器、一个软件强制复位、CNVSTR引脚及/RST引脚。/RST引脚是双向的,可接受外部复位或将内部产生的上电复位信号输出到/RST引脚。除了VDD监视器和复位输入引脚以外,每个复位源都可以由用户用
26、软件禁止。在一次上电复位之后的MCU初始化期间,WDT可以一直被使能。 MCU内部有一个能独立工作的时钟发生器,在复位后被默认为系统时钟。如有需要,时钟源可以在运行时切换到外部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、RC或外部时钟源产生系统时钟。这种时钟切换功能在低功耗系统中是非常有用的,它允许MCU从一个低频率(节电)外部晶体源运行,当需要时再周期性地切换到高速(可达16MHz)的内部振荡器。 2.5 JETG调试电路C8051F000系列具有片内JTAG和调试电路,通过4脚JTAG接口并使用安装在最终应用系统中的产品器件就可以进行非侵入式、全速的在系统调试。该JTAG接口完全符合
27、IEEE 1149.1标准,为生产和测试提供完全的边界扫描功能。 Silicon Labs的调试系统支持观察和修改存储器和寄存器、断点、观察点、堆栈指示器和单步执行。不需要额外的目标RAM、程序存储器、定时器或通信通道。在调试时所有的模拟和数字外设都正常工作。当MCU单步执行或遇到断点而停止运行时,所有的外设(ADC除外)都停止运行,以便保持与指令执行同步。 本设计中JTAG电路设计如图2.7,管脚4、5、6、7分别连接C8051F007的TCK、TMS、TDO和TDI。图2.7 JTAG电路图2.6 外接按键 系统通过外接按键调节控制电压的大小,有增加键、减少键和结束键三个键构成。其电路如图
28、2.8所示。S1、S2、S3分别接C8051F007的P0.5、P0.6、和P0.7端口。有键按下时,端口为低电平。图2.8外接按键电路2.7电源接口电路电源接口部分是本设计的重要组成部分,只有提供正确稳定电压,系统才能正常工作,其它部分的设计也才有效。本系统由开关电源提供12V的工作电压,而根据系统功能设计,电源接口部分要为各个功能模块提供以下几种电压:(1)单片机的逻辑电源电压+3.3V,模拟电源电压+3.3V;DS18B20工作电压为+3.3V。(2)压控晶振电路的工作电压为+6V。本设计电源接口部分要提供12V的工作电压,+6V的工作电压由芯片78L05和芯片78L06提供。采用电源转
29、换芯片ASM1117-3.3提供3.3V数字电压和3.3V模拟电压。在电源转换芯片选择过程中,除注意各芯片输入输出电压范围和输出电流之外,对另外一些参数的选择比较也很重要。比如,2.5V电压基准的初始精度必须比单片机内部基准精度高,噪声低,温度系数小;转换效率的考虑;芯片本身工作电流的考虑,以尽量降低功耗为标准。另外芯片在典型应用电路基础上,对电压输出端均作了滤波,隔离(如使用0ohm电阻)等措施以尽量减小干扰,使供给数字部分和模拟部分的电压均符合要求。系统电源接口电路如图2.9所示。图2.9电源接口电路2.8小结本章主要叙述了微机补偿晶体振荡器的设计思想和系统构成。介绍了选用的芯片及其各部分
30、硬件电路的设计和工作原理。系统中C8051F007这个关键部件,充分利用了该单片机所具有的资源并发挥软件的作用,通过软件与简单硬件电路相配合的方法,节约了系统所需的大量硬件电路。与数字温度补偿晶体振荡器(DTCXO)和最初的(MCXO)相比,本章所叙述的微机补偿晶体振荡器具有结构简单,体积小,功耗低,开机预热时间短等优势,使其更具有竞争力。3 MCXO补偿电压的算法分析3.1补偿原理概述利用微处理机(CPU)对压控晶振(VCXO)进行电压补偿,这一思想是在温补晶振(TCXO)的基础上发展起来的。由图2.2可知,AT切晶体谐振器的频温特性曲线在宽温度范围内近似为一条三次曲线,所以其相应的温度补偿
31、曲线也近似为一条三次曲线。本方案通过外接按键调节控制电压U的大小,从而使晶体振荡器的输出频率基本保持不变。我们在标定过程中,每5设一个标定点,那么在两个相邻测量点之间的数据就是未知的。为了解决以上问题,同时达到减少测量时间、提高测试效率和提高补偿精度的目的,我们就需要寻找一个数学函数来近似描述出由温度标定所测到的数据点的规律,再通过这个函数来计算在两个相邻温度测量点之间的温度点上所需的补偿电压值U,这种方法被称为数值逼近。常用的数值逼近方法有多项式插值法(含拉格朗日插值和牛顿插值)、埃尔米特插值、分段插值、样条插值及最小二乘曲线拟合等。由于最小二乘曲线拟合方法简单、拟合精度高,通过理论计算和实
32、际调试得到的补偿结果都证明采用最小二乘曲线拟合方法是可行的。3.2最小二乘曲线拟合曲线拟合是求近似函数的一种数值方法。用最小二乘曲线拟合法求取近似函数时,是根据残差平方和最小作为判断准则的。在做函数逼近时,要求近似函数应尽可能反映给定数据点的基本趋势,在某种意义下与函数最“逼近”。在做函数逼近时,衡量近似函数好坏的标准是残差的大小,这里所说的残差是指检测值与近似函数求得的近似值。按照残差平方和最小(2=min)准则确定参数,求得近似函数的方法称为最佳平方逼近。它的计算比较简单,也是实践中常用的一种函数逼近方法。数据拟合的最小二乘法问题是:根据给定的数据(通常称为结点()其中i=0,1,n),构
33、造逼近函数y=f(x),绘制函数拟合曲线。在节点处曲线上对应点的y坐标值f(xi)与相应的实验数值yi的差=yi-f(xi)称为残差,最小二乘法就是要使残差的平方和最小,即2为最小。二乘法拟合函数时,构造的函数f(x)为一些简单的函数的集合,如低次多项式、指数函数等。在用最小二乘法拟合求取函数时,由给定数据确定近似函数的表达形式,一般可通过描点观察或经验估计得到。当选择代数多项式作为逼近函数时,用最小二乘法构造逼近函数的方法如下:设有n+1个实验观测数据点(),k=0,1,2,n,需要求一个m次的最小二乘拟合多项式: (3.1)其中m=n,一般m远小于n。要满足平方逼近的条件,应使误差的平方和
34、:(3.2)为最小。式中,S为非负的关于的二次多项式,它必有最小值。根据S取极值的条件,分别对求偏导并在处令其为零:(3.3)方程组(3.3)的系数矩阵是一个对称矩阵,并且是正定的。由该方程组可以唯一地解出系数,然后代入m次多项式(3.2),即可得到由标定数据点所确定的满足最小平方逼近条件的拟合多项式。方程组(3.3)中的m+1个方程通常称为法方程。最小二乘法构造的逼近函数,由于全面而不是孤立地考虑各节点的影响,因此其曲线拟合原理与函数插值不同,在曲线拟合问题中,不要求曲线通过所有已知点,只要求得到近似函数能反映数据的基本要求。3.3小结本章主要叙述了微机补偿晶体振荡器的补偿原理及数据处理方法
35、。采用最小二乘法处理数据,讲述了最小二乘法的原理及算法分析。4 微机补偿晶体振荡器的程序设计程序设计是MCXO设计的主要工作之一,良好的程序设计可以有效的发挥单片机的功能,提高系统的可靠性和抗干扰性。总程序主要包括温度补偿程序、曲线拟合程序、FLASH存储程序、D/A转换程序及外接按键程序几部分。本系统的主流程图见图4.1。主流程图主要分三个阶段: (1)标定阶段,完成对温度补偿点的控制电压U和温度值的标定。定义COUNT为标定次数,存放于FLASH存储器某一指定区域。COUNT小于27即前26次为此阶段。通过外接按键调节振荡器的控制电压U,使其振荡频率达到标称频率f0。(2)曲线拟合阶段,完
36、成对26个标定点的曲线拟合,得到曲线拟合参数,此时,COUNT值为28。(3)温度补偿阶段,调用曲线拟合参数,确定需要补偿的电压值。图4.1系统主流程图图4.1系统软件主流程图微机补偿晶体振荡器系统的所有子程序包括温度测量程序、FLASH存储程序、D/A转换程序、外接按键程序及曲线拟合程序都是在单片机的控制之下协调一致的工作的。下面给出C8051F007的初始化程序:void C8051f007_init(void)OSCICN=0xe4;/c8051f007时钟配置为2M,允许时钟丢失检测XBR0=0;/端口I/O交叉开关寄存器:自由I/O口 XBR1=0; /自由I/O口XBR2=0x40
37、; /自由I/O口,弱上拉使能PRT0CF=0x00; / P0.7_P0.0输出方式为漏极开路PRT1CF=0x00; /P1.7_P1.0输出方式为漏极开路PRT2CF=0x00; /P2.7_P2.0输出方式为漏极开路PRT3CF=0xff; / P3.7_P3.0输出方式为推挽 KEY_FIN=1; /确认键初始化为1 KEY_DEC=1; /减少键初始化为1 KEY_INC=1; /增加键初始化为1WDTCN = 0xde; /禁用看门狗WDTCN = 0xad;4.2温度测量程序温度测量子程序使得CPU得以正确地与传感器DS18B20进行通信。DS18B20使用单线总线传递数据,所
38、以就涉及到多个信号共同用一条数据线的问题。DS18B20的各个时序必须严格遵守单总线协议,以确保数据的完整性,具体来说,包括复位脉冲、当前脉冲、写1、写0、读1和读0。由CPU发送除当前脉冲之外的所有上述信号。和DS18B20的所有通信都必须从初始化操作开始,包括CPU发送一个复位脉冲以及随后由DS18B20发送的一个当前脉冲。当DS18B20发送完一个当前脉冲来相应复位脉冲后,就像CPU表明了传感器已在总线上并准备工作。前已述及,所有访问DS18B20的过程都必须经历以下三个步骤:a.初始化;b.ROM命令(后跟必要的数据交换);c.DS18B20的功能命令(后跟必要的数据交换)。如果错过任
39、何一步或时序错误,DS18B20都将不会响应。4.2.1 DS18B20控制步骤如下 a.总线初始化: 当开始对DS18B20进行操作时,首先应该由主控器执行图4.2中的时序。图4.2 总线初始化时序图b.DS18B20的ROM操作: 如果初始化正常,紧接着执行ROM操作。图6为DS18B20的ROM区分布,在多点温度采集系统中,可通过读取ROM区的序列号,选取总线上各个采集点;在单点采集的系统中,无需执行该操作,可通过指令SKIP ROM44H跳过这一步。图4.3 ROM结构分布图c.控制指令: 通过发送特定的命令字,达到控制DS18B20进行温度转换,读其内部存储区,写EEPROM区等操作
40、。以上操作中,总线的读/写应按时序图4.4进行操作。图4.4总线读/写应时序图注意事项:a.关于总线初始化(按照图4.2解析): (1) 首先需要将DQ拉低480us以上。 (2) 然后拉高DQ并延时60us以上。 (3) 接着读取DQ的值,如果DQ为低,则初始化成功;如果DQ为高,则初始化失败,可再次初始化 (4) 拉高DQ并延时480us以上,以结束总线初始化。 b.关于读数据指令(按照图4.4解析): (1) 首先将DQ拉低,并延时1us左右(延时时间不能过长)。 (2) 然后延时几个us(本示例中延迟了5us),并读取DQ的值。 (3) DQ拉低至总线的时间必须限定在15us以内。 (
41、4) 读完一位以后,需要延时45us以上,并将DQ置高。 c.关于写数据指令(按照图4.4解析): (1) 首先将DQ拉低,然后延迟10us到15us。 (2) 接着向总线写入数据,并延时50us以上。 (3) 最后拉高总线。 (4) 按照时序图4.4,读/写每一位数据的间隔时间需要大于1us。 d.如果DS18B20采用外部供电模式,当其执行完转换温度指令(Convert T)后,可读取总线,以判定是否完成温度转换;如果总线响应1,则完成温度转换,如果响应0,则正在进行温度转换。采用寄生供电模式无效,因为该模式下,进行温度转换操作时,总线始终被外部强上拉置高。不同的温度分辨率,所需的温度转换
42、时间也不同,为保证温度转换的完成,应该给予足够的延时,转换完成后,应重新复位总线,然后执行温度读取指令。 e.如果总线初始化不正常,或总线处于不稳定的状态,读出的温度值可能为 50H、05H(85);关于读取的双8位数值与温度的转换算法, 0以上时,可先将16位数转换10进制,然后乘以相应的温度分辨率即可;0以下时,将读取的16位数取反后,再加1,然后乘以相应的温度分辨率,并在前面加上负号即可。4.2.2 程序流程图及其调试程序 由上述分析,结合本系统需要,确定程序的流程图如图4.5所示图4.5 温度测量程序流程图调试程序如下:#include / SFR declarations#inclu
43、de /*函数声明*/void C8051f007_init(void);unsigned int Ds18b20(void);void Start_18b20(void);void Reset_18b20(void);void Write_18b20(unsigned char m1 );unsigned int Read_18b20(void);unsigned char Read_onebyte_18b20(void);void Delay_ms(unsigned char m1);void Delay_6us(unsigned char m1);/*接口定义*/sbit DQ_18b20=P01;/*18b20常量定义*/#define SKIP_18b20 0xcc/跳过ROM监测#define WR_SCR_18b20 0x4e/写1820暂存器#define RD_SCR_18b20 0xbe/读1820暂存器#define CONV_T_18b20 0x44/启动1820温度变换/*CPU初始化*/v