找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机数码管显示温度测量资料程序

  [复制链接]
跳转到指定楼层
楼主
       下面是51单片机数码管显示温度测量设计源程序,测量范围-9.9~99.9℃,当温度高于定值时,蜂鸣器发出滴、滴、滴报警志响,同时发光二极管闪光。温度低于-9.9℃时,显示 L L .L C ,温度高于99.9℃时,显示 H H.H C”。
下载:
单片机数码管显示温度测量报警程序.zip (2.05 MB, 下载次数: 372)

如下列图所示:





















    源程序:

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char           //宏定义
sbit DQ=P3^7;                                     //定义DS18B20 的 I/O        
sbit DIAN = P0^7;                        //显示小数点用
sbit LED=P1^7;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit BEEP=P3^6;
uchar x=0;                                      //计数器
signed char m;                                     //温度值全局变量
uchar n,zf,l;                                              //温度值全局变量
uint z;
int c;
uint gaowen=28;                         //高温报警温度,默认值为35
uint diwen=0;                                    //低温报警温度,默认值0
uchar code  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar Data[]={0,0,0};


/*****延时子程序*****/
void Delay_DS18B20(int num)
{
        while(num--) ;
}
/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
        unsigned char x=0;
        DQ = 1;                 //DQ复位
        Delay_DS18B20(8);   //稍做延时
        DQ = 0;                           //单片机将DQ拉低
        Delay_DS18B20(80);  //精确延时,大于480us
        DQ = 1;                 //拉高总线
        Delay_DS18B20(14);
        x = DQ;                   //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
        Delay_DS18B20(20);
}
/*****读一个字节*****/
unsigned char ReadOneChar(void)
{
        unsigned char i=0;
        unsigned char dat = 0;
        for (i=8;i>0;i--)
          {
            DQ = 0;                         //给脉冲信号
            dat>>=1;
            DQ = 1;                     //给脉冲信号
            if(DQ)
            dat|=0x80;
            Delay_DS18B20(4);
          }
          return(dat);
}
/*****写一个字节*****/
void WriteOneChar(unsigned char dat)
{
        unsigned char i=0;
          for (i=8; i>0; i--)
          {
            DQ = 0;
            DQ = dat&0x01;
            Delay_DS18B20(5);
            DQ = 1;
            dat>>=1;
          }
}
/*****读取温度*****/
unsigned int ReadTemperature(void)
{
        unsigned char a=0;
          int b=0;
          int t=0;
          float tt=0;
          Init_DS18B20();
          WriteOneChar(0xCC);  //跳过读序号列号的操作
          WriteOneChar(0x44);  //启动温度转换
          Init_DS18B20();
          WriteOneChar(0xCC);  //跳过读序号列号的操作
          WriteOneChar(0xBE);  //读取温度寄存器
          a=ReadOneChar();     //读低8位
          b=ReadOneChar();         //读高8位
          t=b;                                 //高8位转移到t
          t<<=8;                             //t数据左移8位
          t=t|a;                             //将t和a按位或,得到一个16位的数
          tt=t*0.0625;                 //将t乘以0.0625得到实际温度值
                                             //(温度传感器设置12位精度,最小分辨率是0.0625)
          t= tt*10+0.5;        //放大10倍(将小数点后一位显示出来)输出并四舍五入
          return(t);                     //返回温度值
}
/*****延时子程序*****/
void Delay(uint num)
{
        while( --num );
}                        
/*****读取温度*****/
void check_wendu(void)
{
        int a,b;
        c=ReadTemperature();                  //获取温度值
         if(c<0)                                  //温度正负值判断处理
        {
                c=-(c-1);
                   zf=1;
        }
        else
        {
                zf=0;
        }
        a=c/100;                                     //计算得到十位数字
        b=c/10-a*10;                            //计算得到个位数字
        m=c/10;                                      //计算得到整数位
        if(m<=0)                                    //如果温度小于0,限制显示为0
        {
                m=0;
        }
        n=c-a*100-b*10;                            //计算得到小数位
        Data[0]=LEDData[n];             //显示小数位
        Data[1]=LEDData[m%10];    //显示个位
............................................................................................
需要完整源程序的请自己下载



评分

参与人数 1黑币 +4 收起 理由
qjzyx + 4 赞一个!

查看全部评分

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

使用道具 举报

沙发
ID:108622 发表于 2017-10-21 19:12 | 只看该作者
感谢完美程序
回复

使用道具 举报

板凳
ID:201936 发表于 2017-10-22 14:47 | 只看该作者
感谢楼主的分享
回复

使用道具 举报

地板
ID:156573 发表于 2018-2-26 10:54 | 只看该作者
感谢作者
回复

使用道具 举报

5#
ID:266116 发表于 2018-2-26 12:00 | 只看该作者
收藏,谢谢分享
回复

使用道具 举报

6#
ID:98767 发表于 2018-3-14 18:00 | 只看该作者
谢谢楼主,收藏一份了
回复

使用道具 举报

7#
ID:113209 发表于 2018-3-29 11:26 | 只看该作者
感谢分享
回复

使用道具 举报

8#
ID:369215 发表于 2018-7-11 09:26 | 只看该作者
谢谢楼主,感谢感谢
回复

使用道具 举报

9#
ID:456932 发表于 2018-12-27 23:42 来自手机 | 只看该作者
楼主我想要完整程序,
回复

使用道具 举报

10#
ID:456932 发表于 2018-12-27 23:51 来自手机 | 只看该作者
情谊森林 发表于 2018-3-29 11:26
感谢分享

有程序吗
回复

使用道具 举报

11#
ID:458606 发表于 2018-12-30 19:32 | 只看该作者
谢谢楼主,想请问您的位选频率大概是多少?我用您这个图和程序显示不出来温度值,只有初始的----和关闭显示。数码管八位显示的高低电平是变化的,但是位选信号改变频率极低,且几乎一直保持高电平,所以没有显示……
回复

使用道具 举报

12#
ID:469742 发表于 2019-1-17 16:41 | 只看该作者
好帖子 就是没黑币不能下完整的
回复

使用道具 举报

13#
ID:469846 发表于 2019-1-17 20:00 | 只看该作者
感谢分享加油

回复

使用道具 举报

14#
ID:491024 发表于 2019-3-17 22:35 | 只看该作者
unsigned_char_ 发表于 2018-12-30 19:32
谢谢楼主,想请问您的位选频率大概是多少?我用您这个图和程序显示不出来温度值,只有初始的----和关闭显示 ...

同志我和你问题一样 ,如果你解决了的话 ,麻烦也给我解下惑 不胜感激
回复

使用道具 举报

15#
ID:532255 发表于 2019-5-10 10:16 | 只看该作者
感谢作者的分享
回复

使用道具 举报

16#
ID:549887 发表于 2019-5-29 09:11 | 只看该作者
感谢作者
回复

使用道具 举报

17#
ID:554057 发表于 2019-6-9 21:28 来自手机 | 只看该作者
感谢作者
回复

使用道具 举报

18#
ID:635782 发表于 2019-11-5 09:52 | 只看该作者
感谢作者
回复

使用道具 举报

19#
ID:645126 发表于 2019-11-19 16:10 | 只看该作者
刚需 谢谢楼主分享
回复

使用道具 举报

20#
ID:146041 发表于 2020-6-3 23:02 | 只看该作者
学习学习,不错的代码
回复

使用道具 举报

21#
ID:774414 发表于 2020-6-10 10:48 | 只看该作者
有protues仿真文件吗,搭出一样的图,但功能显示不了
回复

使用道具 举报

22#
ID:785004 发表于 2020-6-26 17:33 | 只看该作者
谢谢分享
回复

使用道具 举报

23#
ID:792529 发表于 2020-6-29 19:09 | 只看该作者
这是液晶吧,还数码管坑人
回复

使用道具 举报

24#
ID:293363 发表于 2020-6-29 20:31 | 只看该作者
感谢楼主,数码管太坑了,准备用液晶,看到你的又准备用数码管了
回复

使用道具 举报

25#
ID:787020 发表于 2020-7-1 16:01 来自手机 | 只看该作者
unsigned_char_ 发表于 2018-12-30 19:32
谢谢楼主,想请问您的位选频率大概是多少?我用您这个图和程序显示不出来温度值,只有初始的----和关闭显示 ...

我跟你一样 不能显示
回复

使用道具 举报

26#
ID:787020 发表于 2020-7-1 16:02 来自手机 | 只看该作者
unsigned_char_ 发表于 2018-12-30 19:32
谢谢楼主,想请问您的位选频率大概是多少?我用您这个图和程序显示不出来温度值,只有初始的----和关闭显示 ...

跟你一样不行 不能显示
回复

使用道具 举报

27#
ID:722258 发表于 2020-7-3 19:04 | 只看该作者
数码管不显示是为什么啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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