资源简介
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个文件信息
- 上一篇:12864DDRAM入门
- 下一篇:粗糙集属性约简及代码
相关资源
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- stm32 ds18b20 温度传感器 测试通过
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- DS18B20分布式多点测温的Proteus仿真
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- ds18b20温度传感是什么传感器
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 51串口通信程序+仿真
- 基于51单片机的交通灯设计
评论
共有 条评论