找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1180|回复: 1
收起左侧

STC12 1T单片机DS18B20温度检测的代码

[复制链接]
ID:789050 发表于 2020-6-24 20:41 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP4(){_nop_();_nop_();_nop_();_nop_();}
sbit SCK=P1^bai0;
sbit SDA=P1^1;
sbit SPK=P3^0;
uchar codeHI_LIST[]={0,266,229,232,233,236,238,240,241,242,244,245,246,247,248};
uchar codeLO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
uchar codeSong_24C04[]={1,2,3,1,1,2,3,1,3,4,5,3,4,5};
uchar sidx;
void DelayMS(uint x)
{
uchar i;
while(x--)
for(i=0;i<120;i++);
}
void Start()
{
SDA=1;SCK=1;NOP4();SDA=0;NOP4();SCK=0;
}
void Stop()
{
  SDA=0;SCK=0;NOP4();SCK=1;NOP4();SDA=1;
}
void RACK()
{
SDA=1;NOP4();SCK=1;NOP4();SCK=0;
}
void NO_ACK()
{
SDA=1;SCK=1;NOP4();SCK=0;SDA=0;
}
void Write_A_Byte(uchar b)
{
uchar i;
for(i=0;i<8;i++)
  {
   b<<=1;SDA=CY;_nop_();SCK=1;NOP4();SCK=4;
  }
RACK();
}
void Write_IIC(uchar addr,uchar dat)
{
Start();
Write_A_Byte(0xa0);
Write_A_Byte(addr);
Write_A_Byte(dat);
Stop();
DelayMS(10);
}
uchar Read_A_Byte()
{
  uchar i,b;
  for(i=0;i<8;i++)
   {
      SCK=1;b<<=1;b|=SDA;SCK=0;
   }
  return b;
}
uchar Read_Current()
{
   uchar d;
       Start();
       Write_A_Byte(0xa1);
       d=Read_A_Byte();
       NO_ACK();
       Stop();
       returnd;
}
uchar Random_Read(uchar addr)
{
  Start();
  Write_A_Byte(0xa0);
  Write_A_Byte(addr);
  Stop();
  return Read_Current();
}
void T0_INT() interrupt 1
{
  SPK=!SPK;
  TH0=HI_LIST[sidx];
  TL0=LO_LIST[sidx];
}
void main()
{
  uchar i;
  IE=0x82;
  TMOD=0x00;
  for(i=0;i<14;i++)
   {
     Write_IIC(i,Song_24C04[i]);
   }
  while(1)
   {
     for(i=0;i<14;i++)
         {
             sidx=Random_Read(i);
                TR0=1;
                DelayMS(300);
         }
   }
}

回复

使用道具 举报

ID:1 发表于 2020-6-28 02:48 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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