找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机温度监测 个位无法显示 求帮助

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. sbit smg1=out^4;
  7. sbit smg2=out^5;
  8. sbit DQ=P3^7;
  9. void delay5(uchar n);
  10. void init_ds18b20(void);
  11. uchar readbyte(void);
  12. void writebyte(uchar dat);
  13. uchar retemp(void);
  14. void main()
  15. {
  16.   uchar i,temp;
  17.         while(1)
  18.         {
  19.                 P0=0xff;
  20.           temp=retemp();
  21.                 for(i=0;i<5;i++)
  22.                 {
  23.                   out=(temp/10)&0x0f;
  24.                         smg1=0;
  25.                         smg2=1;
  26.                         delay5(100);
  27.                         out=(temp%10)&0x0f;
  28.                         smg1=1;
  29.                         smg2=0;
  30.                         delay5(100);
  31.                 }
  32.         }
  33. }
  34. void delay5(uchar i)
  35. {
  36.    while(i--);
  37. }
  38. void init_ds18b20(void)
  39. {
  40.   uchar x=0;
  41.         DQ=0;
  42.         delay5(120);
  43.         DQ=1;
  44.         delay5(16);
  45.         delay5(80);
  46. }
  47. uchar readbyte(void)
  48. {
  49.   uchar i=0;
  50.         uchar date=0;
  51.           for(i=8;i>0;i--)
  52.            {
  53.                    DQ=0;
  54.                          delay5(1);
  55.                          DQ=1;
  56.                          date>>=1;
  57.                          if(DQ)
  58.                          date|=0x80;
  59.                          delay5(11);
  60.                  }
  61.                  return(date);
  62. }
  63. void writebyte(uchar dat)
  64. {
  65.   uchar i=0;
  66.           for(i=8;i>0;i--)
  67.            {
  68.                    DQ=0;
  69.                          DQ=dat&0x01;
  70.                          delay5(12);
  71.                          DQ=1;
  72.                          dat>>=1;
  73.                          delay5(5); }
  74. }
  75. uchar retemp(void)
  76. {
  77.   uchar a,b,tt;
  78.          uint t;
  79.          init_ds18b20();
  80.         writebyte(0xcc);
  81.         writebyte(0x44);
  82.         init_ds18b20();
  83.         writebyte(0xcc);
  84.         writebyte(0xbe);
  85.         a=readbyte();
  86.         b=readbyte();
  87.         t=b;
  88.         t<<=8;
  89.         t=t|a;
  90.         tt=t*0.0625;
  91.         return(tt);
  92. }
复制代码

所有资料51hei附件下载:
温度监测.rar (76.43 KB, 下载次数: 4)


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

使用道具 举报

沙发
ID:477474 发表于 2022-1-1 12:02 | 只看该作者
不是吧,仿真图少了条电阻连个位三极管基极连线
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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