- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简易温度计项目报告
简易温度计
团队成员:蒋颂
刘其聪
摘要
【关键词】 单片机 DS18B20 LCD1602
使用STC89C52控制处理温度传感器DS18B20的信号,并驱动1602显示实时温度。
[keyword] single-chip DS18B20 LCD1602
Using STC89C52 to control and process signal that DS18B20 generates ,meanwhile it drive LCD1602 display contemporary temperature
目录
摘要 ………………………………………………………………………………1
前言 ………………………………………………………………………………3
设计要求…………………………………………………………………………3
任务分析…………………………………………………………………………总体设计…………………………………………………………………………硬件设计…………………………………………………………………………软件设计…………………………………………………………………………检测调试…………………………………………………………………………7………………………………………………………………………………8
参考文献…………………………………………………………………………8
附录 ………………………………………………………………………………9
前言
本作品电源部分采用一块节3.7V 18650锂电池,温度测量范围-55℃~+55℃,电路板及各元件使用厚纸板固定及包装定型。
设计要求
利用单片机软硬件资源控制温度传感器完成温度检测,并将转换结果在液晶显示屏上显示。具体要求如下:
温度测量范围-30℃
测量精度:0.1℃
利用字符型液晶模块显示当前温度值任务分析
根据设计要求可知在该系统中单片机控制功能比较简单,因此从成本上考虑选用STC。
由于热电偶电路硬件接口复杂、调试难度大、检测精度较低且元器件参数变化影响等等缺点,所以本系统设计拟采用单总线数字式温度传感器
显示模块选用
总体设计
据任务分析,该测温系统设计需一个温度检测电路、一个液晶显示电路、单片机最小系统电路、电源电路。系统结构图如下:
硬件设计
软件设计
检测调试
电路板检查: 对照元器件表,检查所有元器件的规格、型号有无装配错误。按照原理图检查接线是否有错,集成电路模块有无反接等故障。
接通电源:检查电源电压和极性无误后给电路板上电。上电后检查各引脚电位是否正常。
Proteus仿真:打开proteus,装载本系统的硬件仿真图,将keil软件开发环境下编译生成的
将符合设计要求的源程序编译后生成的
设计总结
参考文献[1] 杨志忠 《数字电子技术》[M] 高等教育出版社[2]张筱云 李淑萍《单片机原理及接口技术项目教程》 [M] 苏州大学出版2012.8
[3]李金祥 顾小晶 《实用C语言程序设计教程》 [M] 中国电力出版社 2010.6
附录:
#includereg51.h
#includelcd.h
#includetemp.h
void LcdDisplay(int);
void main()
{
LcdWriteData(C);
while(1)
{
LcdDisplay(Ds18b20ReadTemp());
// Delay1ms(1000);//1s钟刷一次
}
}
void LcdDisplay(int temp) //lcd显示
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //定义数组
float tp;
if(temp 0) //当温度值为负数
{
LcdWriteCom(0x80); //写地址 80表示初始地址
LcdWriteData(-); //显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5; }
else
{
LcdWriteCom(0x80); //写地址 80表示初始地址
LcdWriteData(+); //显示正
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*100+0.5; }
datas[0] = temp / 10000;
datas[1] = te
文档评论(0)