问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

基于AT89C51和DS18B20制作的温度报警器原理图和单片机内部程序?

发布网友 发布时间:2023-07-14 02:44

我来回答

2个回答

热心网友 时间:2023-10-06 08:11

  #include <reg52.h>
  #include <stdio.h>
  #define uchar unsigned char
  #define uint unsigned int
  sbit ds=P2^2; //温度传感器信号线
  sbit la=P2^6; //数码管段选线
  sbit wela=P2^7; //数码管位选线
  sbit beep=P2^3; //蜂鸣器

  uint temp;
  float f_temp;
  uint warn_l1=260;
  uint warn_l2=250;
  uint warn_h1=300;
  uint warn_h2=320;

  sbit led0=P1^0;
  sbit led1=P1^1;
  sbit led2=P1^2;
  sbit led3=P1^3;

  unsigned char code table[]={
  0x3f,0x06,0x5b,0x4f,
  0x66,0x6d,0x7d,0x07,
  0x7f,0x6f,0xbf,0x86,
  0xdb,0xcf,0xe6,0xed,
  0xfd,0x87,0xff,0xef}; //不带小数点的编码

  void delay(uint z)//延时函数
  {
  uint x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
  }

  void dsreset(void) //18B20复位,初始化函数
  {
  uint i;
  ds=0;
  i=103;
  while(i>0)i--;
  ds=1;
  i=4;
  while(i>0)i--;
  }

  bit tempreadbit(void) //读1位函数
  {
  uint i;
  bit dat;
  ds=0;i++; //i++ 起延时作用
  ds=1;i++;i++;
  dat=ds;
  i=8;while(i>0)i--;
  return (dat);
  }

  uchar tempread(void) //读1个字节
  {
  uchar i,j,dat;
  dat=0;
  for(i=1;i<=8;i++)
  {
  j=tempreadbit();
  dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里
  }
  return(dat);
  }

  void tempwritebyte(uchar dat) //向18B20写一个字节数据
  {
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++)
  {
  testb=dat&0x01;
  dat=dat>>1;
  if(testb) //写 1
  {
  ds=0;
  i++;i++;
  ds=1;
  i=8;while(i>0)i--;
  }
  else
  {
  ds=0; //写 0
  i=8;while(i>0)i--;
  ds=1;
  i++;i++;
  }

  }
  }

  void tempchange(void) //DS18B20 开始获取温度并转换
  {
  dsreset();
  delay(1);
  tempwritebyte(0xcc); // 写跳过读ROM指令
  tempwritebyte(0x44); // 写温度转换指令
  }

  uint get_temp() //读取寄存器中存储的温度数据
  {
  uchar a,b;

  dsreset();
  delay(1);
  tempwritebyte(0xcc);
  tempwritebyte(0xbe);
  a=tempread(); //读低8位
  b=tempread(); //读高8位
  temp=b;
  temp<<=8; //两个字节组合为1个字
  temp=temp|a;
  f_temp=temp*0.0625; //温度在寄存器中为12位 分辨率位0.0625°
  temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入
  f_temp=f_temp+0.05;
  return temp; //temp是整型
  }

  ////////////////////显示程序//////////////////////////
  void display(uchar num,uchar dat)
  {
  uchar i;
  la=0;
  P0=table[dat];
  la=1;
  la=0;

  wela=0;
  i=0XFF;
  i=i&(~((0X01)<<(num)));
  P0=i;
  wela=1;
  wela=0;
  delay(1);
  }

  void dis_temp(uint t)
  {
  uchar i;
  i=t/100;
  display(0,i);
  i=t%100/10;
  display(1,i+10);
  i=t%100%10;
  display(2,i);
  }
  //////////////////////////////////////////////
  void warn(uint s,uchar led) //蜂鸣器报警声音 ,s控制音调
  {
  uchar i;i=s;
  la=0;
  wela=0;

  beep=0;
  P1=~(led);
  while(i--)
  {
  dis_temp(get_temp());
  }
  beep=1;
  P1=0XFF;
  i=s;
  while(i--)
  {
  dis_temp(get_temp());
  }
  }
  void deal(uint t)
  {
  uchar i;
  if((t>warn_l2)&&(t<=warn_l1)) //大于25度小于27度
  {
  warn(40,0x01);

  }
  else if(t<=warn_l2) //小于25度
  {
  warn(10,0x03);
  }
  else if((t<warn_h2)&&(t>=warn_h1)) //小于32度大于30度
  {
  warn(40,0x04);
  }
  else if(t>=warn_h2) //大于32度
  {
  warn(10,0x0c);
  }
  else
  {
  i=40;
  while(i--)
  {
  dis_temp(get_temp());
  }
  }
  }

  void init_com(void)
  {
  TMOD = 0x20;
  PCON = 0x00;
  SCON = 0x50;
  TH1 = 0xFd;
  TL1 = 0xFd;
  TR1 = 1;
  }

  void comm(char *parr)
  {
  do
  {
  SBUF = *parr++; //发送数据
  while(!TI); //等待发送完成标志为1
  TI =0; //标志清零
  }while(*parr); //保持循环直到字符为'\0'
  }

  void main()
  {
  uchar buff[4],i;
  la=0;
  wela=0;
  init_com();
  while(1)
  {
  tempchange();
  for(i=10;i>0;i--)
  {
  dis_temp(get_temp());}
  deal(temp);

  sprintf(buff,"%f",f_temp);

  for(i=10;i>0;i--)
  {
  dis_temp(get_temp());}

  comm(buff);

  for(i=10;i>0;i--)
  {
  dis_temp(get_temp());}

  }
  }

热心网友 时间:2023-10-06 08:11

这个我有,程序及论文+硬件
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2198香辣虾是什么意思 虾什么梗 肖战 刻纸制作需要哪些步骤 好玩的生存游戏手游(好玩的生存游戏手游推荐) 北京电脑职业培训学校都有哪些北京电脑培训班都有哪些 欧盟商标注册需要提供什么资料? 怎么注册欧盟商标?需要准备哪些材料? 5g手机有什么好处 5g手机大概多少钱 口水臭是什么原因呢? 口水臭是什么原因 口水臭怎么改善 有没有跟倩女幽魂差不多的游戏,加帮派不用上yy的,我是妹子没时间yy而且还有生活技能做装备做食物做 有没有新出的跟倩女幽魂手游差不多的手游 推荐几个跟倩女幽魂相似的网游,O(∩_∩)O谢谢 入宅后4个月内不能做的事新房入住后,发现厨房的台面有裂缝 ,能更换石材吗? 有没有类似倩女幽魂的好玩的手游? 为什么果蔬热风干制品一般会收缩变形,而冻干品则可以保持原来的形状? 厨房台面更换 衣康酸H是制备高效除臭剂,粘合剂等多种精细化工的重要原料,可经下列反应路线得到(部分反应条件略) 衣康酸的基本信息 幻影坦克怎么下载 平板怎么下载坦克风暴玩 在点P(1,1),Q(1,2),M(2,3),N(1&#47;2,1&#47;4)四点中,函数y=a^x图像与其反函数图像公共点只可能是什么 要是每天都去健身房能瘦身吗 临沂市河东区农业生产资料总公司汤头农机分公司怎么样? 临沂市汤头镇管委在哪里,具体怎么去?有多少路公交可到呢?镇管委和镇*是一回事吗? 下一站婚姻里的男主角手机铃声是什么? 男歌手唱的粤语歌 节奏比较慢的 高潮部分很好听 山海经异兽录寒冰雪猿和玄锋那个强 2023元旦澳门有烟花吗 黑龙江生物科技职业学院高考录取通知书什么时候发放,附EMS快递查询方法 求MCS-51单片机温度控制系统源程序 这是我画的基于51单片机的温度报警系统的原理图,在实验板上仿真成功了,在原理图上数码管不亮!下面是图 梦见女儿成绩考得好 大乐透5倍追加中2加1多少钱 梦到女儿考了好成绩 梦见女儿考了好成绩是什么预兆 梦见女儿成绩好的预兆 大乐透10+2要多少钱一注 怀疑自己买到了假药怎么办 药店买假药怎么投诉从药店买回来的酒精是假的怎么办? 车一多或人一多就心慌,害怕,是怎么回事 平时很乖的孩子人一多就变的爱哭爱闹是怎么回事 人的命运怎么改变 freedom from want and freedom from fear怎么翻译呢?这里的freedom from是什么意思? 楸木家具的优缺点有哪些?辨别方法有哪些? 3dsmax里,怎样自定义物体的默认状态 3ds max中的默认灯光的设置 3DsMAX中默认照明的是几盏灯?布置灯光时,要把默认灯光关闭吗 17K小说网的签约分成是多少?根据签约条件还是根据情况来的?? 小耳朵 大眼睛 双眼皮 长睫毛 高鼻梁的动漫形象 河南省中小学生微信团学怎样改年级啊?