多功能数字温度计的设计与制作 车辆电子专业毕业设计 毕业论文_第1页
多功能数字温度计的设计与制作 车辆电子专业毕业设计 毕业论文_第2页
多功能数字温度计的设计与制作 车辆电子专业毕业设计 毕业论文_第3页
多功能数字温度计的设计与制作 车辆电子专业毕业设计 毕业论文_第4页
多功能数字温度计的设计与制作 车辆电子专业毕业设计 毕业论文_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)《多功能数字温度计的设计与制作》专业(系)车辆电子班级学生姓名指导老师完成日期2011.11.16毕业设计任务书课题名称:多功能数字温度计的设计与制作二、指导教师:章若冰三、设计内容与要求1课题概述1)温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,温度常常是表征对象和过程状态的最重要的参数之一。传统的水银或酒精温度计来测量温度,不仅测量时间长、读数不方便、而且功能单一,已经不能满足人们在数字化时代的要求。因此提出一种新型的数字式温度测量电路的设计方案,该方案集成了基于AT89S51的两位数码管显示温度测量电路和通过编程的方式来实现实时时钟的显示、修改、定时闹铃等功能的时钟电路2设计内容与要求设计内容:1)温度测量:能够实时显示当前的环境温度2)时钟功能:能够作为时钟使用,显示当前时间3)闹钟功能:能够在设定时间时钟时,作为闹铃发生4)时钟设置功能:能够设定时钟,修改当前时间5)电源电池或直流稳压电源输入:稳压至9V供电6)完成控制器的原理图和PCB板图的设计和制作7)完成软件程序的编写与调试8)对整机的调试,完成指定功能设计要求: 1)原理图规范 2)PCB板图规范、布局合理 3)电路板制作工整、美观 4)软件流程图标准 5)程序采用结构化设计、可读性强3、设计参考书 电力电子技术与应用 高等教育出版社 电机控制技术 北京航空航天大学出版社 模拟电子技术 高等教育出版社数字电子技术高等教育出版社 单片机C语言程序设计 北京航空航天大学出版社 单片机原理及应用 中南大学出版社传感器与检测技术高等教育出版社4、设计说明书要求(小四、宋体)(一)封面(二)任务书(三)中文摘要(四)外文摘要(五)目录(六)正文(绪论、正文主体、结论)(七)参考文献(八)致谢(九)附录5、毕业设计进程安排序号内容要求完成时间1师生见面,下发毕业设计任务书、布置毕业设计2前期准备完成毕业设计相关资料的收集、设计方案的确定假期3元件选型参数、型号、数量2011.9.154控制板原理图设计2011.9.305控制板PCB板设计与制作6软件程序编写调试7整机调试完成批定功能2011.11.108毕业设计任务书编写毕业设计说明书在规定时间前上交指导教师处9毕业答辩及成绩评定2011年12月6、毕业设计答辩及论文要求(小四、宋体)1毕业设计答辩要求答辩前三天,每个学生应按时将毕业设计说明书或毕业论文、专题报告等必要资料交指导教师审阅,由指导教师写出审阅意见。学生答辩时对自述部分应写出书面提纲,内容包括课题的任务、目的和意义,所采用的原始资料或参考文献、设计的基本内容和主要方法、成果结论和评价。答辩小组质询课题的关键问题,质询与课题密切相关的基本理论、知识、设计与计算方法、实验方法、测试方法,鉴别学生独立工作能力、创新能力。2毕业设计论文要求文字要求:说明书要求打印(除图纸外),不能手写。文字通顺,语言流畅,排版合理,无错别字,不允许抄袭。图纸要求:按工程制图标准制图,图面整洁,布局合理,线条粗细均匀,圆弧连接光滑,尺寸标注规范,文字注释必须使用工程字书写。曲线图表要求:所有曲线、图表、线路图、程序框图、示意图等不准用徒手画,必须按国家规定的标准或工程要求绘制。引言

当今社会逐渐步入信息化时代,快节奏、高效率成为当今时代的主题。人们在日常的工作和生活中对各种信息量的需求也在不断加大,为了满足人们的这种需求,电子万年历应运而生。电子万年历整合了人们所需的日期、时间、气温、日程安排等诸多常用信息,最大限度的方便了人们的信息获取,可以对工作和生活做出有效的安排。首先,电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历时钟因其一目了然的特点已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,为人们提供实时信息。其次,可以通过对电子万年历的研究进一步熟悉和掌握51单片机及其外围电路的应用,加强自己的动手能力,把理论和实际操作联系起来,在实践中达到理论知识的融会贯通,并进一步提高自身在电子技术方面的理论研究及实践能力。

摘要本课题设计了一种基于单片机控制的数字式多功能温度计.该温度计以52单片机为主控器,通过温度传感器DS1620来检测温度,并通过六位共阴极LED数码管来进行数据的显示,可以方便的实现温度采集和显示.同时可以根据需要设置上下限报警温度,当温度不在设置范围内时可以报警.同时还具有时钟显示的功能,当需要进行时间显示的时候可以进行快速切换显示.具有使用方便,精度高、量程宽、灵敏度高、体积小、功耗低等优点.适用于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块嵌入其它系统中作为其他主系统的辅助扩展.DS1620与AT89S52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景.关键词:单片机;温度检测;AT89S52;DS1620ABSTRACTThisprojectisadigitalmulti-functionthermometerbasedonMCU.Thissystemcaneasilyachievetemperatureacquisitionanddisplay,ThisthermometerusesAT89S52asmicrocontroller-basedcontroller,detecttemperaturethroughthetemperaturesensorDS1620,andrealizethetemperaturedisplaybyfourcommoncathodeLEDanditcansetupperandlowerlimitsoftemperatureaccordingtofeedtheneed,whenthetemperatureisnotsetrangeitwillring.Italsohasthefunctionoftheclockdisplay.Itcanswitchthedisplayfastwhenitisneed.Itiseasytouse,withhighprecision,widerange,highsensitivity,smallsizeandlowpowerconsumption.Itissuitableforourdailylivesandindustrialandagriculturalproductioninthetemperaturemeasurement,temperatureprocessingmodulecanalsobeembeddedasothersystems,themainsystemastheotherauxiliaryexpansion.DS1620combinedwiththerealizationofthesimplestAT89S51temperaturedetectionsystem,thesystemissimple,anti-interferenceability,suitableforharshenvironmentsspottemperaturemeasurement,awiderangeofapplications.Keywords:MCU;TemperatureMeasurement;AT89S52;DS1620目录毕业设计任务书引言TOC\o"1-3"\h\u26999摘要 I9945ABSTRACT II10083第1章绪论 1193021.1课题意义及发展前景 116238多功能数字温度计设计的价值 241751.3设计内容及性能指标 228459第2章系统方案论证 3及设计目标4175 44175 412722 512722 512722 6初步确定及硬件详细设计4175 7及主控器件4175 104175 1341755325第3章系统器件选择 16310303.1主控芯片介绍和系统总流程图 18127223.2.1DS1620简单介绍和性能特点 18284943.2.2DS1620内部结构和测温原理 1940163.2.3DS1620使用中的注意事项和控制方法 1928494 20240923.3显示元件的选择 2129333第4章硬件各电路设计 22191054.1AT89S51单片机最小系统电路 2310294.2按键输入电路 2486724.3显示电路 25228554.4测温电路 262804.5控制电路 277234.6报警电路 28176124.7整机电路及工作原理 29第5章软件程序设计 305.1系统总程序19105 3120822第6章系统调试 3320822 388202第7章操作指导书 41310307.1操作技巧 434016展示时刻和温度 444016 46310307.2问题解答 484016闹铃器件工作时叫个不停 504016系统显示不精准(与北京时间和实际温度不附) 514016四位码管有问题 528202第8章总结与体会 5331584参考文献 55致谢31584 563950附录A:设计相关图和表 57第1章绪论1.1课题意义及发展前景随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平.在信息采集、信息传输和信息处理中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义.测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:①传统的分立式温度传感器②模拟集成温度传感器③智能集成温度传感器.计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU).社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,基于单片机的数字温度计设计与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用.2单片机的温度测量及控制系统的硬件结构以及C语言程序设计,系统设计和布线简单,结构紧凑,体积小,重量轻,抗干扰能力强,性价比高,扩展方便,在大型仓库,工厂,智能化建筑等领域的多点温度检测中有广阔的应用前景.此次的多功能数字温度计不同于以往的传统数字温度计,它明显改善了数字温度计的性能,包括温度采集的速度和测量精度大幅度提高,测量温度的范围也得到了明显的提高。多功能数字温度计还兼有时钟显示、闹铃和时钟设置功能,所以更加符合市场需求。如果继续提高测量精度,可以直接作为工业测温仪器使用,由美国DALLAS半导体公司新研制的DS1620型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达℃,测温精度为±℃。随着单片机、温度传感器和数码管显示驱动等技术的不断发展,要实现更加高的精度、显示速率快的数字温度计将很快能够实现。1.3设计内容及性能指标本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:1、温度测量:利用温度传感器(DS1620)测量某一点环境温度2、测量范围为-55℃~+3、时钟功能:能够作为时钟使用显示当前时间4、时钟设置功能:能够设定时钟修改当前时间5、用数码管进行实际温度值显示和时间显示6、闹钟功能:能够在设定时间时钟时作为闹铃发生

第2章系统方案论证2.1总体设计分析本课题设计的是以AT89S52单片机,DS1620温度传感器,MAX7219数码管驱动芯片为核心,采用两个四位数码管显示,辅以必要电路,共同构成的一个具有多功能的数字温度计。该系统能够准确的显示时间、调整时间、闹钟报时并能够对时钟所在的环境温度进行测量显示。主程序进行初始化,其他的程序选择模块式的方式。首先对每个模块进行调试,当模块调试成功后,逐一的加入主程序中,最后完成整个软件部分的设计。2.2方案的选择与设计核心处理器的比较与选择方案一:采用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是而基于SRAM编程的FPGA,其编程信息需存放在外部存储器上,需外部存储器芯片,且使用方法复杂,保密性差,而其对于一个简单的多功能数字温度计而言,实用FPGA有点大材小用,成本太高。方案二:采用ATMEL公司的AT89S52单片机AT89S52是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C52引脚和指令系统完全兼容。芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对程序存储器重复编程。AT89S52(以下简称89C52)将具有多种功能的8位CPU与FPEROM结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比较高。ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合。单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中AT89S52以MCS-52为内核,是单片机中最典型的代表,应用于各种控制领域。经过对比以及我们在日常教学中采用的是采用AT89S52,同时为提高我们对外围电路的焊接等技术,提高综合能力,我们选择使用AT89S52单片机。设计目标

该设计要求实现:[1]显示准确的北京时间(时、分)[2]可以调整系统时间:时、分;[3]可以调节闹铃时间:时、分,可以开启或关闭闹铃;[4]能显示当前日期对应的时间和温度。设计结果要求:完成电路的设计,硬件电路应该设计出原理图并画出PCB板图,完成软件程序的编写(包括流程图和部分源代码)。温度系统的比较与选择方案一:采用DS18b20温度传感器DS18b20数字温度计以9位数字量的形式反映器件的温度值。DS18b20通过一个单线接口发送或接收信息,因此在中央微处理器和DS18b20之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个DS18b20都有一个独特的片序列号,所以多只DS18b20可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。方案二:采用DS1620温度传感器DS1620是一种半导体温度测控芯片,9位温度数据值,测温范围-55~+125℃,℃根据两方案的比较,从我们的实际情况出发,我们采用DS1620温度传感器。数码管驱动芯片的比较与选择方案一:采用CS7219数码管驱动芯片CS7219是一种串行接口的8位数码管显示驱动器。它与通用微处理器只有3根串行线相连,最多可驱动8个共阴数码管和64个发光二极管。它内部有可存储显示信息的8*8静态RAM,动态扫描电路,以及段位驱动器。串行接口的传输速率可达10MHz,独立的发光二极管段控制,有译码非译码两种显示方式可选,数字、模拟两种亮度控制方式,可以级联使用。方案二:采用MAX7219数码管驱动芯片MAX7219是一种串行共阴极数码管动态扫描显示驱动芯片,其峰值段电流可达40mA,最高串行扫描频率为100MHz,典型扫描频率为1.3K。仅使用3线串行接口传送数据,可直接与单片机接口。每个芯片可同时驱动8位共阴极LED或64个独立的LED,可驱动8个数码管。该电路与单片机接口简单,不需附加元件,占用很小的印刷板面积,是微处理器仪表理想的显示电路。经过两方案的比较,并且根据实际情况,我们采用MAX7219作为数码管的驱动芯片。2.3方案初步确定通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以AT89S52单片机作为中央处理器,DS1620温度传感器,MAX7219数码管驱动芯片为主要器件进行此项目的设计。硬件详细设计利用单片机芯片AT89S52来控制数码管显示模块DS1620,通过软件编程改变DS1620的工作模式端口及使能端口,从而显示输出相应的内容。K0键用来设置时钟,当K1=1时,进行闹钟调节,K3键用来移动光标选择调整位置,K4键加法调节。当K1=0时,可以调节系统时间,K3键用来移动光标选择调整位置,K4键加法调节。当K2=1时,闹钟开始工作。当AT89S52的P1.4口输出为高电平时,启动压电式蜂鸣器,整点报时或者闹钟报时。AT89S52的P0口与液晶显示模块的D0~D7口连接,进行数据的传输,P2口的5、6、7数据位控制数码管显示模块的E、RW和RS。S键按下系统复位,晶振频率选用12MHZ。方案的拓展与最终确定:为实现本设计的要求还可以合理地采用以下几种拓展方案:方案1:采用数字电路的方法实现,将用到多级电路的级连,需要考虑电路的延时,如果选择不当,就会有尖峰脉冲产生,导致设计的功能不能实现。方案2:采用专用的电子钟芯片配以显示电路及其所需要的元件组成电子钟。这样,系统的扩展和器件的再利用困难。方案3:利用单片机控制液晶显示模块来实现,不仅具有编程灵活,程序较简洁,便于电子钟功能的扩充,精度较高,而且可将其用于实时控制系统,从而应用到实际工作与生产中去。对比三种设计拓展方案,本设计采用方案3。系统总体设计框图如图1所示,本系统的硬件结构主要由单片机AT89S52控制的计时电路、复位等辅助电路,按键控制电路,SMC1602A液晶显示电路,电源系统等组成。该万年历可以显示年、月、时、分、秒,可以设置年、月、时、分;其中计时控制电路由AT89S52单片机控制,按键电路用于时间设置及复位;时间显示由SMC1602A完成;电源系统由小功率整流滤波稳压电路组成,输出5V直流电压,供各部分使用。本次设计采用图1系统总体设计框图;如下图所示AT89S52单片机控制模块

电源系统按键控制电路SMC1602A液晶显示模块复位等辅助电路T0定时器时钟处理模块图1系统总体设计框图本次设计采用如图2-1所示系统原理结构图;如下图所示图2-1系统原理结构框图通过数字温度芯片对外界温度进行读取,并通过单片机进行转换,再由数码管进行直观的数字显示.同时设定温度比较程序,由单片机进行测量温度与设定温度的比较,若不在设定温度范围内,则令蜂鸣器报警.单片机选用AT89S52作为温度测试系统设计的核心器件.它是具有高性能的8位单片机,属于标准的MCS—51的CMOS产品.不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS—48单片机的体系结构和指令系统.—100摄氏度时,最大线形偏差小于1摄氏度.采用52单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便.既可以单独对多DS1620控制工作,还可以与PC机通信上传数据.利用AT89S52芯片控制温度传感器DS1620进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度.利用按键来进行调时和温度查询.可以看出此方案测温装置电路简单、精确度较高、实现方便、软件设计也比较简单.主控器件

本设计中使用AT89S52为主控芯片,它是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。本设计中AT89S52系统主要包括以下几个部分:[1]晶振电路单片机的时钟信号通常有两种产生方式:一是内部时钟方式,二是外部时钟方式。内部时钟方式是利用单片机内部的振荡电路产生时钟信号。外部时钟方式是把外部已有的时钟信号引入到单片机内。本设计采用内部时钟方式,电路图如图2所示。在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容器C1和C2的作用是稳定频率和快速起振[12]。选用C1=C2=30pF,晶振频率12MHz。[2]复位电路复位是使单片机处于某种确定的初始状态。单片机工作从复位开始,在单片机RST引脚引入高电平并保持2个机器周期,单片机就执行复位操作。复位操作有两种基本方式:一种是上电复位,另一种是上电与按键均有效的复位。上电复位要求接通电源后,单片机自动实现复位操作。开机与按键均有效的复位,开机复位原理与上电复位相同,另外,在单片机运行期间,还可以利用按钮完成复位操作[12]。本设计复位电路如图2中所示,上电后,由于电容C3充电,使RST持续一段高电平时间。若该高电平能保持足够2个机器周期,就可以实现复位操作。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现复位的操作。选用C3=22uF,R1=10KΩ。[3]T0计时器在计时过程中本设计利用了AT89S52计时器T0作为计时源,计时器中断的准确度直接关系到整个系统的精度,因此获取精确的定时时钟信号成为该系统的关键。MCS-51的单片机内有两个16位可编程的定时/计数器,在本系统设计中采用AT89S52的定时器T0并工作在方式1。AT89S52的定时/计数器T0的内部结构和控制信号如图3所示[1],特殊功能寄存器由TL0(低8位)和TH0(高8位)构成,特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。程序开始时需对TL0、TH0、进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。在系统的设计中,要求显示准确的北京时间(时、分、秒)及公历日期(年、月、日),如果用循环去做,无法满足精度要求。选用12MHZ的晶体可得到1us的精度,经分析确定使用定时器T0的模式1,这个模式下定时器T0是16位定时器,也就是最大定时值为FFFFH,12MHZ晶体的每个定时周期为1us,最多可以定时FFFFH*1us=65536us,即使用最大值也无法一次定时为1秒,设计中使用一次定时20ms,50次定时中断得到1秒。20ms定时中断的定时值为:FFFFH-20ms/1us=B1DFH[5]。

C/=0C/=1中断TH0

TL0TF0振荡器12分频T0引脚TR0GATE&1≥1闹铃电路

整点报时或者闹钟报时出口采用压电式蜂鸣器,电路如图2所示,

压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2.6显示部分

数码管显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点。因此本设计显示部分采用了液晶显示器件DS1620,它可以显示两行,每行16个字符,相当于32个LED数码管,而且比数码管显示的信息还多,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。DS1620的8位数据线与AT89S52的P0口相连,在AT89S52的控制下,利用单片机内部的振荡电路产生时钟信号,由P0口输出送液晶显示模块DS1620显示,完成对日历的显示功能,另外在进行时钟调整、闹铃调节等处理相应数据的显示功能。DS1620与单片机的接口电路如图2所示。3条控制线分别接到P2.5、P2.6、P2.7(可以根据具体的硬件电路修改这几条控制线);电阻R8用来调节液晶显示的对比度,可以接一个10K的电位器来调节;电阻R7用来设置背光的亮度,一般情况接一个1K的电阻就可以了,当然也可以接入电位器来调节显示的亮度。它的基本操作时序如下:[1]读状态,输入:RS=L,RW=H,E=H输出:D0~D7=状态字[2]写指令,输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:无[3]读数据,输入:RS=H,RW=HE=H输出:D0~D7=数据[4]写数据,输入:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无电源电路的设计

电源电路由变压器、桥式整流器、电容滤波器、LM7805、LED电源指示灯等组成,其电路如图4所示。其中LM7805为三端稳压器,它的内部由启动电路、基准电压电路、取样比较放大电路、调整电路和保护电路等部分组成。它的输出端可以不加旁路电容,但如果加旁路电容可以改善瞬态响应,如果稳压器远离滤波电容,则必须在输入端加旁路电容。LM7805电路参数:当Tj=+25℃,输入为7V≤Vin≤20V,5.0mA≤IO≤1.0A,PO≤15W时,输出4.75V≤VO≤5.25V,本设计稳压输出5V,电源测试结果(见附件2图1)。电源工作原理:输入的220V左右的交流电压,经变压器、全波整流电桥DB整流后,得到一幅值为8V左右的波动直流。这一波动的直流经C5,C6滤波后,得到一较平稳的直流,再经LM7805稳压为+5V,C7再次滤波后,得到稳定的+5V直流电流,向系统各模块提供能量。

第3章系统器件选择3.1主控芯片介绍和有关器件介绍主控芯片选择单片机AT89S52,该单片机具有低电压供电和体积小等特点,很适合便携手持式产品的设计使用系统可用二节电池供电.[2]AT89S52是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89S52提供了高性价比的解决方案.AT89S52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89S52可以按照常规方法进行编程,也可以在线编程.其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本.AT89S52主要功能特性:●4K字节可编程闪烁存储器●寿命:1000写/擦循环●数据保留时间:10年●全静态工作:0Hz-12Hz●三级程序存储器锁定●128*8位内部RAM●32可编程I/O线●两个16位定时器/计数器●5个中断源●可编程串行通道●低功耗的闲置和掉电模式●片内振荡器和时钟电路各引脚功能简单介绍如下:VCC:供电电压.GND:接地.P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流.当P0口的管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLASH编程和校验时,P1口作为第八位地址接收.P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”“1“1”P3口也可作为AT89S52的一些特殊功能口,如下所示:P3口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(计时器0外部输入)P3.5T1(计时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号.RST:复位输入.当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间.[5]ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节.在FLASH编程期间,此引脚用于输入编程脉冲.在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6.因此它可用作对外部输出的脉冲或用于定时目的.然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲.如想禁止ALE的输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用.另外,该引脚被略微拉高.如果微处理器在外部执行状态ALE禁止,置位无效.[6]/PSEN:外部程序存储器的选通信号.在由外部程序存储器取指期间,每个机器周期两次/PSEN有效.但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现./EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器.注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器.在FLASH编程期间,此引脚也用于施加12V编程电源(VPP).XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入.XTAL2:来自反向振荡器的输出.系统的总流程图

N系统初始化开中断T0,INT0调节时钟(K0=1)Y按键开始显

示进行时钟调节显

示T0计时时间历转换功能模块流程图数码管显示模块数码管显示模块主要完成对日历的显示功能,另外在进行时钟调整、闹铃调节等处理时完成对相应数据的显示,其基本流程图如图6所示。其主要包括个三方面的操作:[1]LCD的初始化,基主要程序实现如下所示:voidlcd_init(){

lcd_wcmd(0x38);//设置显示模式:delay(2);//延时2秒lcd_wcmd(0x08);

//显示开/关设置

delay(1);

lcd_wcmd(0x01);

//清除LCD的显示内容delay(1);

lcd_wcmd(0x06);//文字不动,光标自动右移delay(1);

lcd_wcmd(0x0c);//显示器开、光标关、光标不允许闪烁delay(1);}等待闲状态初始化设置送预置地址写入数据显示内容改变等待开始YN数码管显示流程图

[2]写指令操作,主要完成对LCD显示模式,位置等到处理操作,其主要程序实现如下:voidlcd_write_command(ucharcommand)//(命令,是否等待闲){while(wait_enable());

RS=0;

RW=0;delay(5);

EN=0;

P0=command;

EN=1;EN=0;}[3]写数据到LCD,其主要源代码如下:voidlcd_write_data(ucharchar_data){while(wait_enable());

RS=1;

RW=0;EN=0;

P0=char_data;

EN=1;

delay(1);EN=0;}计时功能模块

在本设计中使用AT89S52的T0中断进行了定时处理,由于中断服务程序及中断处理过程需要一定的时钟周期,因此在进行定时设计时进行了修正处理,程序流程图如图7所示:

YYYNN①T0定时初始化值时长20毫秒T0中断Clocks[0]加1

1秒到?Clocks[1]加1Clocks[0]清0

1分到?Clocks[2]加1Clocks[1]清01小时到??NClocks[3]加1Clocks[2]清0YYYNClocks[4]加1Clocks[3]清0Clocks[5]加1Clocks[4]清0Clocks[6]加1Clocks[5]清0NNY①N计时流程图时钟调整节模块

为了使按键数最少,在时钟的调整中应用了P1口的四个输出位地址和外部中断INT0。在系统初始化打开外部中断时,K0键为高电平时进行时钟调节,此时关闭T0中断,若K1键为高电平则进行系统时钟的调节,为低电平则是进行闹钟的调节,K2键开启/关闭闹钟,K3键用于设置状态的调节,即设置的是年还是其它,利用外部中断INT0进行加法调整,即K4键是加法调节器。

时钟调整时钟调节键K0=1?调系统时钟或调闹钟

K1=1?Mode=1State=0Mode=2State=0K3按下K3按下返回State<=State+1State<=State+1NYNY调节时钟选择流程图INT0中断开中断闹钟模块变量加1时钟模块变量加1State=n(n为0,1,2,3,4)State=n(n为0,1,2,3,4)调系统时钟Mode=1?YN进行增量调节流程图3.2温度传感器的选择DALLAS公司的数字温度传感器DS1620作为测温元件.DS1620简单介绍和性能特点DALLAS最新单线数字温度传感器DS1620是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济.DALLAS半导体公司的数字化温度传感器DS1620是世界上第一片支持“一线总线”-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS1620可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS1620通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路.因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便.[8]DS1620的性能特点: ●独特的单线接口方式,DS1620在与微处理器连接时仅需要一条口线即可实现微处理器与DS1620的双向通讯●DS1620支持多点组网功能,多个DS1620可以并联在唯一的三线上,实现组网多点测温●DS1620在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电●温范围-55℃~+125℃,在-10~+85℃●零待机功耗●℃℃℃℃,可实现高精度测温●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快●用户可定义报警设置●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件●测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作以上特点使DS1620非常适用与多点、远距离温度检测系统.3.2.2DS1620内部结构和测温原理DS1620内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器.DQ为数据输入/输出引脚.开漏单总线接口引脚.当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚.当工作于寄生电源时,此引脚必须接地.DS1620采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图所示图3-2DS1620内部结构框图如表所列指

令说

明读ROM(33H)读DS1620的序列号匹配ROM(55H)继读完64位序列号的一个命令,用于多个DS1820时定位跳过ROM(CCH)此命令执行后的存储器操作将针对在线的所有DS1820搜ROM(F0H)识别总线上各器件的编码,为操作各器件作好准备报警搜索(ECH)仅温度越限的器件对此命令做出响应表3-1ROM的命令DS1620温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EPROM.前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新.第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率.DS1620工作时寄存器中的分辨率转换为相应精度的温度数值.温度低位温度高位THTL配置保留保留保留8位CRCLSBMSBDS1620测温原理当DS1620接收到温度转换命令后,开始启动转换.转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节.单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示.温度值格式如下:232221202-12-22-32-4LSBMSBSSSSS262524LSBMSB这是12位转化后得到的12位数据,存储在DS1620的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度.图中,S表示位.对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值.例如+125℃℃℃的数字输出为FF6FH,-55℃的数字输出为FC90H.另外,由于DS1620单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要.系统对DS1620的各种操作必须按协议进行.操作协议为:初始化DS1620(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据.℃℃℃℃为进位界限的关系,实际温度Ts可用下式计算:Ts=(Tz℃)+(CD-Cs)/CD3.2.3DS1620使用中的注意事项和控制方法DS1620虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:●DS1620从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85.●在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度精度降低.●较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果.在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现.●在DS1620的有关资料中均未提及单总线上所挂DS1620数量问题,容易使人误认为可以挂任意多个DS1620,在实际应用中并非如此,当单总线上所挂DS1620超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意.●在DS1620测温程序设计中,向DS1620发出温度转换命令后,程序总要等待DS1620的返回信号,一旦某个DS1620接触不好或断线,当程序读该DS1620时,将没有返回信号,程序进入死循环,这一点在进行DS1620硬件连接和软件设计时也要给予一定的重视.在硬件上,DS1620与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O.无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻.此次设计选择的是前面一种控制.CPU对DS1620的访问流程是:先对DS1620初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作.DS1620每一步操作都要遵循严格的工作时序和通信协议.如主机控制DS1620完成温度转换这一过程,根据DS1620的通讯协议,须经三个步骤:每一次读写之前都要对DS1620进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS1620进行预定的操做.3.3显示元件的选择显示元件本设计选择六位的八段共阴极数码管.数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管.共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮.当某一字段的阴极为高电平时,相应字段就不亮..共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管.共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮.当某一字段的阳极为低电平时,相应字段就不亮.数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出需要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类.静态显示驱动单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动.静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性.动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮.通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动.在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低.

第4章硬件各电路设计4.1AT89S52单片机最小系统电路在该设计中采用了AT89S52单片机作为核心处理器,因此在电路中首先需要设计的是AT89S52的最小系统。AT89S52单片机的最小系统电路包含以下几个部分:单片机供电电路:AT89S51需要具有可靠的5V供电,在电路图中的VCC和GND为供电网络标识符;振荡电路:AT89S52需要一个稳定的振荡电路才能够正常工作,在该电路采用了12Mhz的晶振作为AT89S52的时钟源;复位电路:复位电路是单片机正常运行的一个必要部分,复位电路应该保证单片机在上电的瞬间进行一次有效的复位,在单片机正常工作时将RST引脚置低。此外通过一个按键进行手动复位,在单片机运行不正常时使用。图4-1最小系统原理图4.2按键输入电路单片机的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号.2.4-2按键输入电路4.3显示电路正如前面所说显示电路采用的元器件为四位一体的八段共阴极数码管.采用动态显示驱动形式,电路图如下.P0.0-P0.7为数据输入端,根据所要显示的不同数据从数组里进行调取.由于P0口本身不含有驱动能力,所以需要在P0口接上拉电阻,以保证有足够的电流来驱动数码管进行显示.P2.0-P2.3为位选择端口,分别控制四位数码管的显示与否.本设计通过选择位的不同对四位数码管进行分别显示,利用人的眼睛残留视觉以达到显示数据的目的.此电路的优点的电路简单控制方便.可以实现四位数码管的分别控制,以便于实现多方面的显示需求.图4-3显示电路4.4测温电路Ω左右的上拉电阻.单片机的数据读取和输出都通过P2.6口与DS1620的I/O口进行.采用单串口进行数据通信,电路设计简单.但对软件有更多的要求.图4-4测温电路4.5控制电路本电路摒弃了复杂的矩阵键盘电路,而仅仅采用了四个按键组成简单电路来实现需要的控制.不仅降低了硬件的成本,也使编程变的简单.电路图如下.四个按键分别连接单片机的P3.1,P3.0,P3.2和P3.3端.P32和P33为外部中断端口,通过他们来进行相应的控制操作.而P31和P30端口则分别实现了数据的减和增的操作.操作起来简单易懂,硬件开发的消耗也大为减少.图4-5控制电路4.6报警电路本设计采用软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电.当所测温度超过或者低于所预设的温度时,数据口相应拉高电平,报警输出.(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM的内容是否与预设一样,如不一样,则发光报警).并在电路中添加开关按键,只有当开关闭合时才会报警,否则仅仅显示温度,通过开关键控制报警,非常方便和容易操作.报警电路硬件连接见图.蜂鸣器通过NPN管连接到单片机的P27口,采用外部电源进行连接,NPN起到了电流放大的作用,以保证有足够的电流去驱动蜂鸣器进行报警.图4-6报警电路4.7整机电路及工作原理当接通电源以后,温度传感器正常工作,温度传感器将根据被测温度的不同来采集不同的数据,然后通过计算把数据转化成相应的字库代码,通过调用字库数组的数据进行数字的显示.通过外部中断1可以进行时间显示与温度显示的切换.当处于不同的显示状态时可以通过外部中断0来实现时间的调整和温度上下限的调整.P30口实现了数据的增加,每按一下数据增加一位,为P31口则实现的数据的递减.在程序中设定数据上下限以防止数据的溢出.图4-7整机电路图

第5章软件程序设计从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系.二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等.每一个执行软件也就是一个小的功能执行模块.这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义.各执行模块规划好后,就可以规划监控程序了.首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系.程序如下:#include"reg52.h"#include"intrins.h"unsignedchardataDisBuffer[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//7219显示缓存区unsignedcharshi,fen,miao,count,n; //引用变量unsignedchara=1,b=1,hour,minute,second; //引用变量unsignedcharalarm_flag=1; //引用变量unsignedcharjia(unsignedchar); //引用变量unsignedcharjian(unsignedchar); //引用变量 /**********************************宏定义*******************************************/#defineHIGH1#defineLOW0#defineMSB0x80#defineNoOp 0x00 //空操作#define shu1 0x01 //数码管第1位#defineshu2 0x02 //数码管第2位#defineshu3 0x03 //数码管第3位#defineshu4 0x04 //数码管第4位#define shu5 0x05 //数码管第5位#define shu6 0x06 //数码管第6位#define shu7 0x07 //数码管第7位#define shu8 0x08 //数码管第8位#defineshu- 0x0a //数码管显示-#defineDECODE_MODE0x09 //译码寄存器#defineINTENSITY0x0A //亮度寄存器#defineSCAN_LIMIT0x0B //扫描寄存器#defineSHUT_DOWN0x0C //停机寄存器#defineDISPLAY_TEST0x0F //测试寄存器/***********************************************************************************//**********************************7219通信口***************************************/sbitDIN=P2^3; //MAX7219串行数据输入sbitLOAD=P2^4; //MAX7219串行数据锁存sbitCLK=P2^5; //MAX7219时钟输入/***********************************************************************************//**********************************1620通信口***************************************/sbitRST=P2^0; //复位输入sbitCLK_CONV=P2^1; //时钟输入sbitDQ=P2^2; //数据输入/***********************************************************************************//***********************************按键输入****************************************/sbitkey1_moshi=P0^0;//选择模式(调时钟和闹钟)sbitkey2_xuanze=P0^1;//选择要调的数码管sbitkey3_jia=P0^2;//数码管数字加sbitkey4_jian=P0^3;//数码管数字减sbitbeep=P2^7; //蜂鸣器接口sbitled=P1^4; //秒闪烁/***********************************************************************************//*************************************申明******************************************/voidWrite_Max7219_byte(unsignedchartemp);//writemax7219abytevoidWrite_Max7219(unsignedcharaddress,unsignedchardat);//writemax7219commandanddatavoidInit_Max7219(void); //Initizemax7219voiddisplay_time();voidshizhong();voidbaoshi();voidnaozhong();voidkey_saomiao();voiddisplay_temp();/***********************************************************************************//***********************************************************************************//*********************************************************************************** DS1620部分/***********************************************************************************//***********************************************************************************/voidWR_byte(unsignedcharval){ chari; //临时变量 unsignedcharb; //移位变量 b=1; //赋初值 for(i=0;i<8;i++) //循环发送 { CLK_CONV=0; //CLK_CONV低 DQ=(val&b); //输出数据 CLK_CONV=1; //CLK_CONV高 b<<=1; //移位 }}unsignedcharRD_byte(void){ unsignedchari; //临时变量 unsignedcharb; //移位变量 unsignedcharvalue; //返回变量值 value=0;//赋初值 b=1;//赋初值 for(i=0;i<8;i++) { DQ=1;//置高,准备读取 CLK_CONV=0;//CLK_CONV低 if(DQ)//读取 value|=b; //读取一位 CLK_CONV=1; //CLK_CONV高 b<<=1; //移位 } return(value); //返回读取值}unsignedcharDS1620startConv(void){ RST=1; //RST高 WR_byte(0xEE); //写命令字 RST=0; //RST低 return0x00; //返回值}unsignedcharDS1620ReadConf(void){ unsignedchartmp; //返回值临时变量 RST=1; //RST高 WR_byte(0xAC); //写命令字 tmp=RD_byte(); //读控制寄存器值 RST=0; //RST低 returntmp; //返回值}unsignedcharDS1620SetConf(unsignedcharval){ RST=1; //RST高 WR_byte(0x0C); //写命令字 WR_byte(val); //写控制寄存器参数 RST=0; //RST低 return1; }unsignedintDS1620read(void){ unsignedcharhbyte,lbyte;//温度值高低字节 unsignedinttemp; //临时变量 RST=1; //RST高 WR_byte(0xAA); //写命令字 lbyte=RD_byte(); //读取温度低字节 hbyte=RD_byte(); //读取温度高字节 RST=0; //RST低 temp=hbyte; //合成温度值 temp<<=8; temp|=lbyte; returntemp; //返回值}voidInitDS1620(void){ DS1620SetConf(0x8A); //设置初始化值为0x8A}/***********************************************************************************//***********************************************************************************//*********************************************************************************** 时钟--闹钟--按键/****************

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论