ds18b20 单片机数码管显示原理图和程序_第1页
ds18b20 单片机数码管显示原理图和程序_第2页
ds18b20 单片机数码管显示原理图和程序_第3页
全文预览已结束

下载本文档

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

文档简介

-.z.最近天气热了,想要是做个能显示温度的小设备就好了,于是想到DIY个电子温度计,网上找了很多资料,结合自己的材料,设计了这个用单片机控制的实时电子温度计。作为单片机小虾的我做这个用了2天时间,当然是下班后,做工不行见谅了。主要元件用到了单片机STC89C54RD+,DB18B20温度传感器,4为共阳数码管,PNPS8550三极管等。先上原理图:洞洞板布局图:然后就是实物图了:附上源程序:程序是别人写的,我只是自己修改了下,先谢谢原程序者的无私奉献。#include"reg52.h"#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^4;//温度数据口sbitw*1=P2^0;//位选1sbitw*2=P2^1;//位选2sbitw*3=P2^2;//位选3sbitw*4=P2^3;//位选4unsignedinttemp,temp1,temp2,*s;ucharcodetable[]={0*c0,0*f9,0*a4,0*b0,0*99,//共阳数码管0*92,0*82,0*f8,0*80,0*90,0*88,0*83,0*c6};/******延时程序*******/voiddelay1(unsignedintm){unsignedinti,j;for(i=m;i>0;i--)for(j=110;j>0;j--);}voiddelay(unsignedintm)//温度延时程序{while(m--);}voidInit_DS18B20(){unsignedchar*=0;DQ=1;//DQ复位ds18b20通信端口delay(8);//稍做延时DQ=0;//单片机将DQ拉低delay(80);//准确延时大于480usDQ=1;//拉高总线delay(4);*=DQ;//稍做延时后如果*=0则初始化成功*=1则初始化失败delay(20);}/***********ds18b20读一个字节**************/ucharReadOneChar(){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//高电平拉成低电平时读周期开场dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0*80;//delay(4);}return(dat);}/*************ds18b20写一个字节****************/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;//从高电平拉至低电平时,写周期的开场DQ=dat&0*01;//数据的最低位先写入delay(5);//60us到120us延时DQ=1;dat>>=1;//从最低位到最高位传入}}/**************读取ds18b20当前温度************/voidReadTemperature(){unsignedchara=0;unsignedb=0;unsignedt=0;Init_DS18B20();WriteOneChar(0*CC);//跳过读序号列号的操作/WriteOneChar(0*44);//启动温度转换delay(5);//thismessageisweryimportantInit_DS18B20();WriteOneChar(0*CC);//跳过读序号列号的操作WriteOneChar(0*BE);//读取温度存放器等〔共可读9个存放器〕前两个就是温度/delay(5);a=ReadOneChar();//读取温度值低位/b=ReadOneChar();//读取温度值高位/temp1=b<<4;//高8位中后三位数的值temp1+=(a&0*f0)>>4;//低8位中的高4位值加上高8位中后三位数的值temp1室温整数值temp2=a&0*0f;//小数的值temp=((b*256+a)>>4);//当前采集温度值除16得实际温度值zhenshu*s=temp2*0.0625*10;//小数位,假设为0.5则算为5来显示*s小数*iaoshu}voidwendu*ianshi(){w*1=0;P0=table[temp/10];//显示百位delay1(5);w*1=1;w*2=0;P0=table[temp%10]+0*80;//显示十位加上0*80就显示小数点了。delay1(5);w*2=1;w*3=0;P0=table[*s%10];//显示个位delay1(5);w*3=1;w*4=0;P0=ta

温馨提示

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

评论

0/150

提交评论