- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
温度计-通信1班-唐健-20102553 课题报告
数字温度计实验报告
实验目的
设计一个可以测定温度并显示温度的数字温度计,并具有要求的功能;
用仿真软件设计出数字温度计的电路图,用相应的软件编写出代码,并用仿真软件仿真,在单片机板上用电路元件连接出设计的电路图,并将代码写入硬件并使之成功运行。
实验要求
1、能够实时显示环境温度。
2、能够保存使用时间内的最大值和最小值,能够查阅。
3、有温度报警功能,能够设置报警温度。用绿灯表示正常温度,红灯表示报警同时发 声。
4、自由发挥其他功能.
5、要求有单片机硬件系统框图,电路原理图,软件流程图。
三、实验原理
利用DS18B20的实时测定温度的功能对环境温度进行测定。因为DS18B20利用的是单行 通信,所有只有一根数据线,这里命名为DQ。通过DQ,将实时测得的温度在数码管上 显示出来。数码管显示数字是利用通过对每位数码管的依次扫描,使对应数码管亮,同 时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短以及人眼的视 觉暂留效应,使数码管看起来总是亮的,从而实现了数字的动态显示。关于最大值与最 小值的记录,设置两个变量,将第一次读取的温度值存入,然后每一次读取的温度值都 会与其进行比较,较大或较小的值会覆盖原来的值,最值的显示也是通过段选和位选的 数据线来控制显示。当程序没有检查到DS18B20或读取温度在设置范围以外时,程序会 报警并不可操作。这是通过从键盘输入设置温度,然后通过DQ写入DS18B20,在代码 中要求程序在温度不在合理范围内时报警来实现的。
四、元器件清单
名称 数量 AT89C52单片机 1 排阻 1 LED灯 2(红色绿色各一) 4*3小键盘 1 8位数码管 1 蜂鸣器 1 DS18B20 1
硬件系统框图
六、电路原理图
软件流程图
代码分析
1、延迟函数:起到时间延迟的作用。
void delay(unsigned int time)
{
while(time--);
}
2、DS18B20初始化函数:检测DS18B20是否正常连接,若是,则初始化;反之则报错,程序进入死循环,等待查明原因并改正。
bit Init_DS18B20(void)
{
bit flag; //记录DS18B20数据传输是否正常
DQ = 1;
delay(8);
DQ = 0;
delay(90);
DQ = 1;
delay(8);
flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在)
delay(100);
DQ=1;
return (flag); //返回flag
}
3、向DS18B20写入数据的函数:每次调用即向DS18B20中写入一 个字节的数据。
unsigned char ReadOneChar(void)
{
unsigned char i=0; //循环变量
unsigned char dat; //储存要写入的数据
for (i=0;i8;i++)
{
DQ =0;
dat=1; //右移一位
DQ = 1;
nop_(); //代表一个机器周期
nop_();
if(DQ==1) dat|=0x80; //若是1,即存入1;若是0,即存入0
else dat|=0x00;
delay(30);
DQ = 1;
}
return(dat);
}
4、向DS18B20写入数据的函数:每次调用向DS18B20中写入一个字节的数据。
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=0; i8; i++)
{
DQ=0;
DQ=dat0x01; //利用与运算取出要写的某位二进制数据,
//并将其送到数据线上等待DS18B20采样
delay(5);
DQ=1;
dat=1; //将dat中的各二进制位数据右移1位
}
}
5、读温度准备函数:在读取温度之前做好初始化等工作。
void ReadyReadTemp(void)
{
I
您可能关注的文档
最近下载
- 泰山版小学三年级(上册)信息技术学历案.pdf VIP
- 2025年通信公司基站铁塔建设项目技术指导手册 基站类铁塔类项目技术规范标准化.pdf VIP
- FastReport46程序员手册.doc VIP
- 凯度-2019年社交媒体趋势英文-2019 1.pdf VIP
- 班组早会培训课件.pptx VIP
- 班组早会培训课件.pptx VIP
- 幼儿教师口语 第2版 课件 19项目六任务2态势语训练.ppt
- 《空乘旅游英语视听说》课件——Check-in and Security Check.pdf VIP
- (高清版)ZT 0227-2010 地质岩心钻探规程.pdf VIP
- 医师培训考核合格证明_sample.pdf VIP
原创力文档


文档评论(0)