51单片机18b20例程

上传人:枫** 文档编号:564857728 上传时间:2023-10-30 格式:DOCX 页数:4 大小:13.88KB
返回 下载 相关 举报
51单片机18b20例程_第1页
第1页 / 共4页
51单片机18b20例程_第2页
第2页 / 共4页
51单片机18b20例程_第3页
第3页 / 共4页
51单片机18b20例程_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《51单片机18b20例程》由会员分享,可在线阅读,更多相关《51单片机18b20例程(4页珍藏版)》请在金锄头文库上搜索。

1、/*数码管显示温度,利用定时器中断扫描显示数字*/选择为定时器模式,工作方式 2/给定时器赋初值,定时 100us/打开定时器0 中断允许#include#define uchar unsigned char#define uint unsigned intsbit ds=P3A7;ucharnum;uchar code tabledu= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f;uchar code tablewe= 0xff,0xfb,0xf7,0xf3, 0xef,0xeb,0xe7,0xe3;uintdisp8= 0x3f,

2、0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,0x3f;uchar init_18b20(); void write_byte(uchar); ucharread_byte(); voidchange_com(); voidread_com(); intread_temp();voidinit();voidjisuan(int);void delay(uint);void main()init();while(1)jisuan(read_temp();voidinit()TMOD=0X02;TH0=0X9C;TL0=0X9C;ET0=1;/段选/位选/初始化子函数/ 向 18B

3、20 写入一个字节/读取一个字节/读取温度EA=1;TR0=1;/打开总中断/打开定时器voidjisuan(int temp)uchardatas = 0, 0, 0, 0, 0;floattp;if(temp50000) return 0;return 1; voidwrite_byte(uchardat) uinti,j;EA=0;for(j=0;j=1;EA=0;/将总线拉低 480us-960us/ 延时 642us/等待 18b20 将总线拉低/延时 50ms/初始化失败/初始化成功每写入一位数据之前先把总线拉低1US/然后写入一个数据,从最低位开始/延时68us,持续时间最少60

4、us然后释放总线,至少1US给总线恢复时间才能接 ucharread_byte()ucharbyte,bi; uinti,j;EA=0; for(j=8;j0;j-) ds=0;/先将总线拉低 1usi+;ds=1;/然后释放总线i+;i+;/延时 6us 等待数据稳定bi=ds;/读取数据,从最低位开始读取/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/byte=(byte1)|(bi7);i=4;读取完之后等待48us再接着读取下一个数while(i-);EA=1;return byte;voidchange_com()init_18b20();delay(

5、1);write_byte(0xcc);write_byte(0x44);delay(100);/让 18b20 开始转换温度 voidread_com()init_18b20();delay(1);write_byte(0xcc);/发送读取温度命令write_byte(0xbe); intread_temp()int temp=0; uchartmh,tml; change_com(); read_com();tml=read_byte(); tmh=read_byte(); temp=tmh; temp0;y-) for(z=110;z0;z-);void Display() interrupt 1P0=0;P2=tablewenum;P0=dispnum; num+;if(num7)num=0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号