• 大小: 136KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: DS18B20  PROTEUS  

资源简介

PROTEUS仿真DS18B20(程序+仿真)1602显示

资源截图

代码片段和文件信息

#include 
#include  
#include 

extern void delay(unsigned int x);

void delay1()
{
char i=20;
do 
{
_nop_();
}while(--i!=0);
 
}
void i2c_init()
{
SDA=1;
delay1();
SCL=1;
delay1();

}
void  i2c_start()
{
SDA=1;
delay1();
SCL=1;
delay1();
SDA=0;
delay1();
SCL=0;
delay1();
    
}
 
void i2c_write(unsigned char temp)
{
unsigned char t;
    for(t=0;t<8;t++)
{
SDA=(bit)(temp&0x80);
temp<<=1;
SCL=1;
delay1();
SCL=0;
delay1();
 }
}
unsigned char i2c_read()
{
unsigned char datt;
SDA=1;        //as in port
for(t=0;t<8;t++)
{
SCL=1;
delay1();
dat<<=1;
if(SDA)    
dat++;
SCL=0;
delay1();
 }
 return(dat);

}
bit  i2c_getack()
{ bit ack;
unsigned char i=0;
SDA=1;
delay1();
SCL=1;
delay1();
while((i<100)&&(SDA==1))
{
i++;
}
ack = SDA;
SCL =0;
delay1();
return(ack);
}
void i2c_putack(bit ack)
{
SDA = ack;
delay1();
SCL = 1;
delay1();
SCL = 0;
delay1();
}
void i2c_stop()
{
SDA=0;
delay1();
SCL=1;
delay1();
SDA=1;
delay1();
delay(300);
}
bit i2c_puts
( unsigned char SlaveAddr
unsigned char SubAddr
unsigned char *dat
unsigned char Size

{
i2c_start();

i2c_write(SlaveAddr);

if(i2c_getack())
{
  i2c_stop();

  return 1;
}

i2c_write(SubAddr);
if(i2c_getack())

  i2c_stop();
  return 1;
}

do
{
  i2c_write(*dat++);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}

}while(--Size!=0);
   i2c_stop();
   
   return 0;
  
}

/*
bit I2C_Gets

unsigned char SlaveAddr
unsigned char SubAddr
unsigned char *dat
unsigned char Size

{
//定义临时变量
unsigned char a;
// char a[3];
//检查长度
if ( Size == 0 ) return 0;

i2c_start();
a=SlaveAddr&0xfe;
i2c_write(a);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
i2c_write(SubAddr);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
i2c_start();
i2c_write(a+1);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
//接收数据
for (;;)
{
*dat++ = i2c_read();
if ( --Size == 0 )
{
i2c_putack(1);
break;
}
i2c_putack(0);
}
//接收完毕,停止I2C总线,并返回结果
i2c_stop();
return 0;
}  */

bit i2c_gets
( unsigned char SlaveAddr
unsigned char SubAddr
unsigned char *datt
unsigned char Size

{
unsigned char a;
i2c_start();
a=SlaveAddr&0xfe;
i2c_write(a);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
i2c_write(SubAddr);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
i2c_start();
i2c_write(a+1);
if(i2c_getack())
{
  i2c_stop();
  return 1;
}
do
{
 *datt++=i2c_read();
i2c_putack(0);

}while(--Size!=0);
   i2c_putack(1);
   i2c_stop();
   return 0;
}   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2009-07-21 23:09  1602lcd\程序\
     文件         652  2009-07-20 16:13  1602lcd\程序\main
     文件         942  2009-07-20 16:13  1602lcd\程序\main.asm
     文件         304  2009-07-20 16:13  1602lcd\程序\main.hex
     文件          25  2009-07-20 16:13  1602lcd\程序\main.lnp
     文件        5244  2009-07-20 16:13  1602lcd\程序\main.LST
     文件        3189  2009-07-20 16:13  1602lcd\程序\main.M51
     文件         662  2009-07-20 16:13  1602lcd\程序\main.OBJ
     文件        1331  2009-07-21 23:09  1602lcd\程序\main.Opt
     文件         164  2009-07-21 23:09  1602lcd\程序\main.plg
     文件        2119  2009-07-20 15:16  1602lcd\程序\main.Uv2
     文件        1325  2009-07-20 16:15  1602lcd\程序\main_Opt.Bak
     目录           0  2009-07-21 12:23  1602lcd\仿真\
     文件         151  2009-07-21 09:17  1602lcd\仿真\1602lcd.DO
     文件       69986  2009-07-21 12:23  1602lcd\仿真\1602lcd.DSN
     文件        4668  2009-07-21 09:17  1602lcd\仿真\1602lcd.EDF
     文件        1054  2009-07-21 12:23  1602lcd\仿真\1602lcd.PWI
     文件        1054  2009-07-20 16:15  1602lcd\仿真\DS18B20.PWI
     文件       68104  2009-07-21 09:17  1602lcd\仿真\Last Loaded 1602lcd.DBK
     文件       75515  2009-07-20 14:04  1602lcd\仿真\Last Loaded DS18B20.DBK
     目录           0  2009-07-20 13:00  proteus_2402\51仿真\
     文件      130594  2009-07-20 13:00  proteus_2402\51仿真\51.DSN
     文件        2291  2009-07-20 13:00  proteus_2402\51仿真\51.PWI
     文件      130886  2009-07-20 13:00  proteus_2402\51仿真\Last Loaded 51.DBK
     目录           0  2009-07-20 12:09  proteus_2402\i2c\
     文件       17125  2009-07-20 11:53  proteus_2402\i2c\2402
     文件        3490  2009-07-20 11:53  proteus_2402\i2c\2402.hex
     文件          66  2009-07-20 11:53  proteus_2402\i2c\2402.lnp
     文件       22869  2009-07-20 11:53  proteus_2402\i2c\2402.M51
     文件        2535  2009-07-20 12:09  proteus_2402\i2c\2402.Opt
     文件        1445  2009-07-20 12:09  proteus_2402\i2c\2402.plg
............此处省略17个文件信息

评论

共有 条评论