- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的数字温度计设计 信息学院 郭茹侠 刁含楼 总体设计 功能 系统框图 功能:数字式温度计测温范围在-55~125℃,误差在±0.5℃以内。温度测量间隔时间选择1~2s, 通过键盘扩展(行列式或独立式按键),有温度上下限值及温度报警功能。在数字式温度计的制作中主要以51单片机来控制,用温度传感器检测外界的温度,软件的显示子程序用四位一体数码管显示出来,精确到1位小数点,在超出测温范围时,进行报警功能。在焊接电路时要预留电源线,外接单片机AT89S51调试设计要求 数字式温度计硬件说明 单片机电路 主控制器单片机AT89S51具有低电压和小体积等特点,两个端口刚好满足系统的设计需要很适合便携手持式产品的设计使用。其中时钟振荡电路使用了石英晶体振荡器,接18、19脚,配置了相应的晶振、电容,提供单片机脉冲信号,使单片机能正常的工作。 31脚的EA引脚则接到正电源端,使用片内程序存储器。 测温电路 测温电路则主要采用了型号为DS18B20测温传感器(DS18B20温度传感器是智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式)。 复位电路 复位电路是采用了按键手动复位电路,外接电容电阻与点动开关,这种方式是采用了外部复位电路的电容充放电来实现的,该电路通过电容充电在RST引脚上加了一个高电平,而高电平的持续时间就是取决于这外接的电容与电阻的参数了,按键的功能就是实现人为的复位操作。 报警电路 报警电路由单片机的P10口与外接的蜂鸣器,放光二极管等组成,用于电路在超限的情况下发出声光报警,也可通过取反来实现电路的闪烁报警。 显示驱动与显示电路 显示驱动与显示电路采用了共阳四位LED数码管,用三极管做驱动。 数字式温度计原理图 数字式温度计PCB电路 软件设计 软件设计分为主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。 主程序流程图 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量温度值温度测量每1s进行一次。 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节。在读出时须进行 CRC 校验,校验有错时不进行温度数据的改写。 温度转换命令子程序流程图 温度转换命令子程序主要是发温度转换开始命令。当采用 12 位分辨率时,转换时间约为 750 ms 。在本程序设计中,采用 1s显示程序延时法等待转换的完成。 计算温度子程序流程 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定。 显示数据刷新子程序流程图 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。 调试 先万用表检查硬件连接是否正常,正负极电源是否短路,硬件没问题后。再在程序中测试软件,没问题后再把硬件和软件连接起来一起调试,先测试显示部分,没问题后再全部调试,直至没问题为止 进度安排 附录 /******************************************* 程序功能:利用单线制DS18B20温度传感器 LED数码管显示当前的温度值 ********************************************/ #include //DS18B20温度传感器程序 code unsigned char seg7code[] 0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0xff ; //不带小数点的共阳数码管段码 code unsigned char seg7codeB[] 0x40,0x79,0x24,0x30,0x19,0x12, 0x02,0x78,0x00,0x10,0xff ; //带小数点的共阳数码管段码 sbit P2_0 P2^0; sbit P2_1 P2^1; sbit P2_2 P2^2; sbit P2_3 P2^3; sbit DQ P3^6; //数据传输线接单片机的相应的引脚 unsigned char tempL 0; //设全局变量 unsigned char tempH 0; unsigned int sdata;//测量到的温度的整数部分 unsigned char xiaoshu1;//小数第一位 unsigned char xiaoshu2;//小数第二位 unsigned char xiaoshu;//两位小数 bit fg 1; //温度正负标志 //******************延时子程序 ******************************* /
文档评论(0)