基于51单片机的温度检测系统程序及仿真_第1页
基于51单片机的温度检测系统程序及仿真_第2页
基于51单片机的温度检测系统程序及仿真_第3页
基于51单片机的温度检测系统程序及仿真_第4页
基于51单片机的温度检测系统程序及仿真_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档lcd1imiublrv1fo.uad1 poa皿 fi.:i :珈 e po4iaem fo5/ad5 fu副虹比 pq7/ad7:卜thperatur26.er-.p2w f2.1 阳p2a10 p23m11 p24/a12 户 2即k13 p267a14 p27/a15r3.ibrxd p31jtkeplfift 户34忏0 咫ynp2e年p3.7w*欢迎显示,包括空格在内 =16欢迎显示,包空格在内 =16*/* 用 ds18b20s行测量,lcd1602 显示*#include reg51.h#include intrins.h#define uchar unsigned c

2、har#define uint unsigned intuchar code tablel =id:; /uchar code table2 尸name:;/uchar code strl = temperature ;uchar code str2 =;/*管脚定义 *sbit lcd_rs = p3a0; 液晶数据命令选择端sbit lcd_en = p3a1; / 液晶使能sbit dq = p3a6; 液晶使能/*uint tvalue;/uchar tflag;/参数定义 温度值*温度正负标志uchar data disdata5;/*子函数定义 *. 。1欢迎下载精品文档void

3、delay(uchar z);/delay 延时子程序void init_lcd();/lcd1602 初始化函数void write_com(uchar com);/lcd1602 写指令函数void write_data(uchar date); /lcd1602 写数据函数void lcd1602_display(uchar *q,uchar *p);/lcd1602显示函数void welcome();/lcd1602void delay_ds18b20(uint i); /delay_ds18b20void init_ds18b20_display(); /ds18b20void i

4、nit_ds18b20();/ds18b20uchar readonebyte();/ds18b20void writeonebyte(uchar dat); /ds18b20read_temperature();/ds18b20void ds18b20_display(); /ds18b20显示欢迎函数函数初始化显示初始化读一字节写一字节读取温度值并转换温度显示/* 主函数 *void main() welcome();delay(2000);init_ds18b20_display();while(1)read_temperature();ds18b20_display();10 欢迎下载

5、 。/*delay延时子程序*void delay(uchar z)uchar x,y;for(x=0;xz;x+)for(y=0;y0;i-)/ 给脉冲信号dq = 0;dat=1;dq = 1;/ 给脉冲信号if(dq) dat|=0x80; delay_ds18b20(10); return (dat);/*ds18b20 写一字节 * void writeonebyte(uchar dat)uchar i;for(i=8;i0;i-) dq = 0;dq = dat&0x01;delay_ds18b20(10);dq = 1;dat=1;/*ds18b20读取温度值并转换*read_t

6、emperature()uchar a,b;init_ds18b20();writeonebyte(0xcc); / writeonebyte(0x44); / init_ds18b20();writeonebyte(0xcc); / writeonebyte(0xbe); / a = readonebyte(); b = readonebyte(); tvalue=b;tvalue=8; tvalue=tvalue|a; if(tvalue0xfff) tflag = 0;跳过读序列号启动温度转换跳过读序列号读取温度else tvalue = tvalue+1;tflag = 1;tvalu

7、e = tvalue*(0.625); /温度值扩大10 倍,精确到 1 位小数return (tvalue);/*ds18b20温度显示 *void ds18b20_display() uchar flagdat;disdata0=tvalue/1000+0x30; /disdata1=tvalue%1000/100+0x30;/disdata2=tvalue%100/10+0x30; /disdata3=tvalue%10+0x30;if(tflag = 0)flagdat = 0x20; /elseflagdat = 0x2d; / if(disdata0 = 0x30) disdata0 =0x20;if(disdata1 = 0x30)disdata1 =0x20;/write_com(0xc4);write_data(flagdat); / write_com(0xc5);write_data(disdata0);/ write_com(0xc6);write_data(disdata1);/ write_com(0xc7);write_data(disdata2);/write_com(0xc8);write_data(0x2e); / write_com(0xc9);write_data(disdata3);/百位数十位数个位数小数位正温度不显示符号负温

温馨提示

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

评论

0/150

提交评论