找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机代码完成的保温箱代码 精度0.05 带报警显示功能 按键控制

[复制链接]
跳转到指定楼层
楼主
ID:316070 发表于 2018-4-25 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Ex6.c
#include<reg52.h>        // 包括单片机寄存器定义的头文件
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit BEEP=P3^7;
sbit DQ=P3^6;
sbit point=P0^7;
sbit motor=P1^1;
sbit lamp=P1^0;
uchar disbuf[3];
uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                                         //延时子函数//
void delay(uint num)
{
        while(num--);
}
//*************初始化*************//
void Init_DS18B20(void)
{
        unsigned char x=0;
        DQ=1;                                         //DQ先置高电平
        delay(8);                                 //稍延时
        DQ=0;                                         //·发送复位脉冲
        delay(80);                                 //延时(¨>480us)
        DQ=1;                                         //拉高数据线
        delay(5);                                 //等待(15~60us)
        x=DQ;                                         //x的值来判断初始化有没有成功,18B20存在的话x=0,否则x=1
        delay(20);
}
//************读一个字节*************//
ReadOneChar(void)                         
// 主机数据线先从高拉至低电平1us以上再使数据升为高电平,产生信号//
{
        unsigned char i=0;                
//每个读周期最短的持续时间为60us,各个读周期之间必须有10us以上的高电平恢复期
        unsigned char dat=0;
        for (i=8;i>0;i--)                 //一个字节有八位  
        {
                DQ=1;
                delay(1);
                DQ=0;
                dat>>=1;
                DQ=1;
                if(DQ)
                dat|=0x80;
                delay(4);
        }
            return(dat);
}
//****************写一个字节****************//
void WriteOneChar(unsigned char dat)
{
        unsigned char i=0;                
//数据线从高电平拉至低电平,产生起始信号,15us之内将所需写的位送到数据线上//
        for(i=8;i>0;i--)                
//15-60us之间对数据进行采样,如果是高电平就写1,否则写0//
        {
                DQ=0;                                 //在另一个写周期前必须有1us以上的高电平恢复期
                DQ=dat&0x01;
                delay(5);
                DQ=1;
                dat>>=1;
        }
        delay(4);
}
//*****************读取温度******************//
uchar ReadTemperature(void)
{
        uchar fg=0;
        uchar tempL=0;
        uchar tempH=0;
        uint sdate;
        uchar pointnum;
        Init_DS18B20();
        WriteOneChar(0xcc);
    WriteOneChar(0x44);
        delay(125);
    Init_DS18B20();
    WriteOneChar(0xcc);
    WriteOneChar(0xbe);
        tempL=ReadOneChar();
        tempH=ReadOneChar();
        if(tempH>0x7f)
        {
                tempL=~tempL;
                tempH=~tempH+1;
                fg=1;
        }
        sdate=tempL/16+tempH*16;
        pointnum=(tempL&0x0f)*10/16;
        if(fg==1)
        {
                sdate-=15;
                pointnum=0;

build.rar

31.07 KB, 下载次数: 6, 下载积分: 黑币 -5

代码

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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