找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3560|回复: 4
打印 上一主题 下一主题
收起左侧

ds18b20体温测量报警仪(单片机at89c51)proteus仿真,c程序及hex文件

  [复制链接]
跳转到指定楼层
楼主
个人原创设计作品,内涵仿真,c与hex文件。c语言白痴,拒绝回答一切有关c的问题。本设计是一款基于DS18B20传感器的实时体温测量报警仪,可以贴身舒适得放置在病人身上用以实时检测体温,然后将检测的数据传到AT89C51单片机进行处理,再用LED屏幕以十进制的方式进行表出。同时还有个警报器模块,当病人体温不正常到达临界值时触发警报用以提醒。程序具体表现为小于37℃时,绿灯亮;大于37℃时,蜂鸣器工作,红灯。(51黑电子为原创出处,转载请注明网址。)得到帮助的小伙伴给个有效回复撒,感谢!!!

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. #define out1 P2
  7. #define out2 P3
  8.     sbit DQ=P1^4;
  9.     void delay5(uchar);
  10.     void init_ds18b20(void);
  11.     void writebyte(uchar);
  12.     uchar retemp(void);
  13.     void main (void)//主函数
  14.     {
  15.         uchar i,temp;
  16.         delay5(1000);
  17.         uchar[9]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  18.         uchar xiaoshudian=0x80;
  19.         while(1)
  20.         {
  21.             temp=retemp();
  22.             for(i=0;i<10;i++)//连续扫描数码管10次
  23.             {
  24.                 out=(uchar[temp/10]);
  25.                 out1=(uchar[temp%10]||xiaoshudian);
  26.             }
  27.         }
  28.     }
  29.     void delay5(uchar n)//延时5微妙函数
  30.     {
  31.         do
  32.         {   _nop_() ;
  33.             _nop_() ;
  34.             _nop_();
  35.             n--;
  36.         }
  37.     while(n);
  38.     }
  39.     void init_ds18b20(void)//对18b20初始化函数
  40.     {
  41.         uchar x=0;
  42.         DQ=0;
  43.         delay5(120);
  44.         DQ =1;
  45.         delay5(16);
  46.         delay5(80);
  47.     }
  48.     uchar readbyte(void)//函数功能:读取1字节数据
  49.     {
  50.         uchar i=0;
  51.         uchar date=0;
  52.     for(i=8;i>0;i--)
  53.     {
  54.         DQ=0;
  55.         delay5(1) ;
  56.         DQ=1;//15微妙内拉释放总线
  57.         date>>=1;
  58.         if(DQ)
  59.         date|=0x80;
  60.         delay5(11);
  61.     }
  62.     return(date);}
  63.     void writebyte (uchar dat)//写1b数据
  64.     {
  65.         uchar i=0;
  66.         for(i=8;i>0;i--)
  67.         {
  68.             DQ=0;
  69.             DQ =dat&0x01;//写"1"在15微妙内拉低
  70.             delay5(12);//写"0"拉低60微妙
  71.             DQ=1;
  72.             dat>>=1;
  73.             delay5(5);
  74.         }
  75.     }
  76.     uchar retemp(void)//读取温度函数
  77.     {
  78.         uchar a,b,tt;
  79.         uint t;
  80.         init_ds18b20();
  81.         writebyte (0xCC);
  82.         writebyte (0x44);
  83.         init_ds18b20();
  84.         writebyte(0xCC);
  85.         writebyte(0xBE);
  86.         a=readbyte();
  87.         b=readbyte();
  88.         t=b;
  89.         t<<=8;
  90.         t=t|a;
  91.         tt=t*0.0625;
  92.         return(tt);
  93.     }
复制代码

所有资料51hei提供下载 仿真,c及hex文件:
Desktop.rar (35.64 KB, 下载次数: 80)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:82285 发表于 2020-5-16 16:47 | 只看该作者
优秀啊
回复

使用道具 举报

板凳
ID:253767 发表于 2020-6-6 07:04 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

地板
ID:535196 发表于 2020-6-6 15:07 | 只看该作者
小白可以问下一P2和P3放大器放大的是什么,以及并没有用到P3把,程序里
回复

使用道具 举报

5#
ID:788940 发表于 2020-6-24 17:57 | 只看该作者
为啥编译不成功啊,一大堆的错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表