付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 AT89C51 , DS18B20和 1602 液晶屏的温度传感器DS18B20 与 51 单片机的连接非常简单,只须把DS18B20 的数据线DQ 与 51 单片机的一根并口线连接即可,51单片机通过这根并口就能实现对DS18B20 的所有操作,这根并口线一般通过电阻接电源。DS18B20 的电源可采用外部电源供电,也可采用内部寄生电源供电。当外部电源供电时,VDD 接外部电源, GND接地地。当采用内部寄生电源供电时,VDD 与 GND 一起接地。另外,也可用多片DS18B20 连接组网形成多点测温系统,在多片连接时,DS18B20 必须采用外部电源供电方式。C 语言程序:/ 晶振为
2、 12MHz/ 测量的温度范围 -55 +99 ,温度精确到小数点后一位#include <REG52.H>#define uchar unsigned char#define uint unsigned intsbit DQ =P10;/sbit RS=P17;sbit RW=P16;sbit EN=P15;unionuchar c2;uint x;temp;uchar flag;/flag为温度值的正负号标志单元uint cc,cc2;/变量 cc 中保存读出的温度值float cc1;定义端口 , "1"表示为负值,"0"时表示为正值。
3、uchar buff113="temperature:"uchar buff26="+00.0"/ 检查忙函数void fbusy()P2 = 0xff;RS=0;RW=1;EN=1;EN=0;while(P2 & 0x80)EN=0;EN=1;/ 写命令函数void wc51r(uchar j)fbusy();EN=0;RS=0;RW=0;EN=1;P2 = j;EN=0;/ 写数据函数void wc51ddr(uchar j)fbusy();EN=0;RS=1;/ 读状态;RW=0;EN=1;P2 = j;EN=0;void init()wc
4、51r(0x01);/清屏wc51r(0x38);/使用 8 位数据,显示两行,使用5*7的字型wc51r(0x0c);/显示器开,光标开,字符不闪烁wc51r(0x06);/字符不动,光标自动右移一格void delay(uint useconds)/ 延时程序for(;useconds>0;useconds-);uchar ow_reset(void)/ 复位uchar presence;DQ = 0;/ DQ低电平delay(50);/ 480msDQ = 1;/ DQ高电平delay(3);/等待presence = DQ;/ / presence信号delay(25);retu
5、rn(presence);/0允许,1禁止uchar read_byte(void)/ 从单总线上读取一个字节uchar i;uchar value = 0;for (i=8;i>0;i-)value>>=1;DQ=0;DQ=1;delay(1);if(DQ)value|=0x80;delay(6);return(value);void write_byte(uchar val)/向单总线上写一个字节uchar i;for (i=8; i>0; i-)/一次写一字节DQ=0;DQ = val&0x01;delay(5);DQ=1;val=val/2;delay(
6、5);void Read_Temperature(void)/ 读取温度ow_reset();write_byte(0xCC);/跳过 ROMwrite_byte(0xBE);/读temp.c1=read_byte();精选文库2精选文库temp.c0=read_byte();ow_reset();write_byte(0xCC);write_byte(0x44);/开始return;void main()/ 主程序uchar k;delay(10);EA=0;flag=0;init();wc51r(0x80);/ 写入显示缓冲区起始地址为第1 行第 1 列for (k=0;k<13;k
7、+)/ 第一行显示提示信息"current temp is:" wc51ddr(buff1k);while(1)delay(10000);Read_Temperature();/ 读取双字节温度cc=temp.c0*256.0+temp.c1;if (temp.c0>0xf8) flag=1;cc=cc+1;else flag=0;cc1=cc*0.0625;/ 计算出温度值cc2=cc1*100;/ 放大 100 倍,放在整型变量中便于取数字buff21=cc2/1000+0x30;if ( buff21=0x30) buff21=0x20;/取出十位,转换成字符,如果十位是0 不显示。buff22=cc2/100-(cc2/1000)*10+0x30;/取出个位,转换成字符buff24=cc2/10-(cc2/100)*10+0x30;/取出小数点后一位,转换成字符if (flag=1) buff20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源培训标准化流程与资源
- 高科技行业研发人员绩效评定表
- 一件物品的寓意写物并展开联想想象作文11篇
- 《细胞的分裂与分化:七年级生物基础教案》
- 农业生产技术支持与研发合作协议
- 居家服务保障责任承诺函4篇范文
- 货物配载培训
- 公共利益保护优先承诺书(5篇)
- 酒店客房服务质量调查与反馈工具包
- 酒店会议室租赁合同
- fc游戏金手指代码
- 十字相乘法因式分解专项练习200题及答案
- 中建技术总工(技术负责人)竞聘报告
- DLT 573-2021电力变压器检修导则-PDF解密
- 《浙江省安装工程预算定额》(2010版)
- 东方铸造行业分析
- 财务会计核算制度范本
- 在C51单片机上对读写卡芯片MFRC522编程
- 《西游记》电子版阅读-小学版
- 2024年全年日历表带农历(A4可编辑可直接打印)预留备注位置 精心整理
- TISCO二期扩建工程项目总承包(EPC)合同 中英文
评论
0/150
提交评论