目录引言…………………………………………………………………………………1一方案论证与比较………………………………………………………………11.1温度传感器的选择……………………………………………………………11.2显示模块的设计………………………………………………………………11.3控制按键的选择………………………………………………………………2二系统模块分析…………………………………………………………………22.1软、硬件系统分析……………………………………………………………22.2微控制器模块…………………………………………………………………52.3温度采集模块…………………………………………………………………52.4LED温度显示模块……………………………………………………………92.5声光报警模块…………………………………………………………………102.6电子日历、时钟模块…………………………………………………………122.7电子闹钟模块…………………………………………………………………142.8语音播报模块…………………………………………………………………172.9直流稳压电源模块……………………………………………………………172.10键盘扫描模块………………………………………………………………19三调试过程分析…………………………………………………………………223.1调试仪器………………………………………………………………………223.2调试过程………………………………………………………………………223.3调试结果分析…………………………………………………………………24四总结……………………………………………………………………………244.1作品总结………………………………………………………………………244.2自我总结………………………………………………………………………25参考文献……………………………………………………………………………26致谢…………………………………………………………………………………271引言温度是日常生活、工业、医学、环境保护、化工、石油等领域中最常遇到的一个物理量,一般采用温度计对这个物理量进行测量。传统的温度计如:水银玻璃温度计,酒精温度计等,这些温度计通常以刻度的形式表示温度的高低,必须通过读取刻度值来识别温度,即普通温度计对温度值的读取不方便,温度的显示不直观。本次设计的温度计为数字温度计,可以直接驱动数码管显示温度值,并且由单片机控制循环的采集温度信号以实现实时测温,使得温度的读取方便、直观、准确。另外本设计采用高精度的数字温度传感器,不需要A/D转换模块就可以直接与单片机相连接,减小了电路规模,降低了硬件成本,使得整个系统电路简洁、成本降低。为了满足现代仪器仪表功能集成化、智能化的发展趋势,对此温度计的功能进行了扩展,具体扩展功能如下:1.可以实现对多路温度的实时测量;2.可以实现摄氏温度与华氏温度的显示转换;3.可以任意设置上限和下限温度实现超高、低温声光报警功能;4.可以实现电子钟功能,电子钟时间可以任意设定,并且具有两个可以任意设定时间的闹钟;5.可以实现电子日历功能,日历日期可以任意设定,并且具有星期显示功能;6.可以实现电子钟整点语音报时、报温功能。综上所述此数字温度计具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。一、方案论证与比较1.1温度传感器的选择1.1.1方案一使用热敏电阻作为传感器,让热敏电阻与一个普通电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。用单片机收集转换后的数字信息进行处理和温度的显示。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生测量误差。1.1.2方案二采用数字式温度传感器—DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。综合以上两种方案分析,采用数字式温度传感器,可以得到较高的测量精度和较广的测量范围,还可以简化系统电路,以提高系统性价比。1.2显示模块的设计1.2.1方案一采用LCD液晶显示,由单片机驱动。此方案有美观、显示清晰多样的优点。但同时液晶显示器的驱动程序复杂,价格昂贵,从而使整个系统的性价比下降。21.2.2方案二采用LED数码管静态显示方法,电路容易理解,驱动程序简单,但需要多片七段译码器驱动显示,增加成本,而且需要占用单片机多个I/O口,浪费系统硬件资源。1.2.3方案三采用LED数码管动态扫描显示方法,价格低廉,只需要7个I/O口就可以同时驱动八个数码管显示,硬件利用效率高,驱动程序容易理解和编写。综合以上三种方案分析,采用LED数码管动态扫描显示方法。1.3控制按键的选择1.3.1方案一采用独立式按键,每个按键实现一个功能,易于控制,程序编写简单,可是需要大量占用单片机的I/O接口资源,当需要多个功能按键时,需要对单片机外扩I/O口,使得线路繁琐,增加硬件成本开支。1.3.2方案二采用阵列式按键,可以减少对单片机I/O接口的使用,扫描M×N个按键只需要占用M+N个I/O接口即可实现,降低对硬件资源的占用,但是需要编写按键扫描程序,会增加软件程序难度。比较此两种方案,采用阵列式按键。通过增加软件程序来降低硬件开支。二、系统模块分析2.1软、硬件系统分析2.1.1硬件系统框图:经过方案论证与比较,选择出最优方案的系统框图如图1所示:图1总系统框图2.1.2软件程序:软件程序可以分为两大部分,第一部分为主系统,第二部分为温度计,两部分的程序流程图如图2、图3。温度采集模块键盘输入控制模块微控制器模块自制直流稳压电源模块电子闹钟模块电子日历、时钟模块LED温度显示模块声光报警模块语音播报模块3键盘功能表图2主程序流程图年(1)年(2)月日时分清秒星期闹钟1闹钟2关闹1关闹2显温度显华度显星期显日期0123456789101112131415键盘扫描子程序按下键7时星期值加1按下键8、9显示闹钟时间开始数据定义子程序定时器初始化子程序按下键0、1、2、3、4、5时日期中的年(1)、年(2)、月、日、时、分,分别加1按下键6时秒清零按下键12时加1按下键13分加1按下键14按下键12按下键13按下键15时DS18B20复位子程序向DS18B20写入子程序从DS18B20读出子程序温度值运算子程序摄氏温度显示子程序DS18B20读写子程序温度值运算子程序温度值除10子程序温度值乘18子程序温度加32子程序华氏温度显示子程序显示日期子程序4图3温度计程序流程图按键按键功能P0.0转换两路温度显示P0.1摄氏、华氏温度显示转换P0.2上限温度设定P0.3下限温度设定P0.4修改温度上、下限之间是否开始初始化子程序P0.0键按下?传感器1初始化P0.2键按下?P0.3键按下?P0.0键按下?从传感器1读出温度数据温度运算子程序对比温度按下P0.1键?下限报警上限报警华氏温度转换显示子程序低于下限超出上限传感器0初始化上限温度设定子程序下限温度设定子程序从传感器0读出温度数据否是否否否是是是52.2微控制器模块温度计的控制器采用AT89C51单片机,AT89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。电路如图4。第20引脚为接地端;第40引脚为电源端;第31引脚需要接高电位使单片机选用内部程序存储器;第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;第9脚为复位脚,当其接高电位时,单片机停止工作。P0口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P1口连接一片七段译码器和一片3-8译码器以动态扫描方式同时驱动八个数码管,P2口与16个阵列式按键相连以实现对键盘的扫描。图4AT89C51单片机接线图2.3温度采集模块温度采集模块选用数字式温度传感器DS18B20,其可以与单片机I/O口直接连接,不需要外接A/D转换模块。DS18B20的性能特点如下:1.独特的单线接口仅需要一个端口引脚进行通信;2.可通过数据线供电,电压范围为3.0~5.5V;3.温度测量范围为-55℃~+125℃;4.测温分辨率可达0.0625℃;5.温度以9位或12位A/D转换。DS18B20采用3脚PR-35封装,电路如图5所示:图5DS18B20与单片机接口电路图6DS18B20的工作是由单片机软件程序控制的,控制方法如下:1.复位操作:首先单片机应向DS18B20输送复位信号,将数据线拉低并保持480-960μS再释放,然后由上拉电阻拉高16-60μS,最后再由DS18B20发出响应低电平60-240μS就完成复位操作。2.写操作:单片机先将数据线拉低1μS以上,再写入数据。3.读操作:读数据之前,单片机应先将数据线拉低,再释放。DS18B20在数据线从高电平跳低后15μS内将数据送出,单片机在15μS后读取数据线。DS18B20控制程序如下:CONFIG12EQU7FH;定义转换精度为12位TEMPHEQU40H;温度值高位TEMPLEQU41H;温度值低位REG2EQU42HREG3EQU43HREG4EQU44HDATEQUP2.0;数据线ORG0000HSJMPSTARTORG30HSTART:MOVSP,#09MOVP1,#0FFHLCALLINIT;调用初始化程序MAIN:MOVP0,#00HLCALLRDTEMP;调用读温度值程序INIT:LCALLRESET;调用复位子程序MOVA,#0CCHLCALLWRITE;调用写子程序MOVA,#4EHLCALLWRITEMOVA,#CONFIG12LCALLWRITE7RETRDTEMP:LCALLRESETMOVA,#0CCHLCALLWRITEMOVA,#44HLCALLWRITELCALLDELAYLCALLRESETMOVA,#0CCHLCALLWRITEMOVA,#0BEHLCALLWRITELCALLREADMOVTEMPL,ALCALLREADMOVTEMPH,ALCALLREADMOVREG2,ALCALLREADMOVREG3,ALCALLREADMOVREG4,ARETRESET:LA:SETBDATMOVR2,#200LB:CLRDATDJNZR2,LBSETBDATMOVR2,#308LC:DJNZR2,LCCLRCORLC,DATJCLBMOVR6,#80LD:ORLC,DATJCLPDJNZR6,LDSJMPLADJNZR6,LDLP:MOVR2,#250LF:DJNZR2,LFRETWRITE:MOVR3,#8WR1A:SETBDATMOVR4,#8RRCACLRDATWR2A:DJNZR4,WR2AMOVDAT,CMOVR4,#30WR3A:DJNZR4,WR3ADJNZR3,WR1ASETBDATRET9READ:CLREAMOVR6,#8RD1A:CLRDATMOVR4,#6NOPSETBDATRD2A:DJNZR4,RD2AMOVC,DATRRCAMOVR5,#30RD3A:DJNZR5,RD3ADJNZR6,RD1ASETBDATRET2.4LED温度显示模块LED温度显示模块采用动态扫描显示方法电路如图6图6LED动态扫描显示电路从图中可以观察到单片机P1口低4位连接一片七段译码器74LS47,由于1074LS47是共阳极数码管的七段译码器所以要选用共阳极的数码管。单片机P1.0-P1.3的输出信号经过74LS47译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。P1.4-P1.6口接于3-8译码器74LS138的三个输入端,而74LS138的输