资源简介
多路DS1820测温+DS18B20序列号读取
代码片段和文件信息
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit RS= P2^0 ; //液晶显示引脚定义
sbit RW= P2^1 ;
sbit EN= P2^2 ;
uint t=0dian=0;
uchar LCD_LINE[16]={“tp1: “}; //定义显示屏幕
int Tm;
int fushu=0 ;
sbit DQ= P3^3;
code unsigned char get_serial[]={ //获取的八个DS18B20内部RAM64位序列号
2270061804310740
117006180136340
14900617918922340
810061809413240
178006180215640
89006180020140
14600617917521240
135006180402940
};
void delay(uint ms ) //用于液晶显示的延时函数
{
int i ;
while(ms--)
{
for(i=0 ;i<5 ;i++ )
;
}
}
uchar Read_LCD_State() //读取液晶显示的状态
{
uchar state;
RS=0;RW=1;EN=1;delay(1);
state=P0;
EN = 0;delay(1);
return state;
}
void LCD_Busy_Wait() //如果忙则等待函数
{
while((Read_LCD_State()&0x80)==0x80);
delay(5);
}
void Write_LCD_Zhilin(uchar zl) //液晶显示写指令函数
{
LCD_Busy_Wait();
RS=0;RW=0;
EN=0;
P0=zl;
EN=1;
delay(1);
EN=0;
}
void Write_LCD_shuju(uchar date) //液晶显示写数据函数
{
LCD_Busy_Wait();
RS=1;RW=0;
EN=0;
P0=date;
EN=1;
delay(1);
EN=0;
}
void LCD_INIT() //液晶显示初始化
{
Write_LCD_Zhilin(0x38); // 显示模式设置
delay(1);
Write_LCD_Zhilin(0x01); // 显示清屏
delay(1);
Write_LCD_Zhilin(0x06); // 光标移动设置
delay(1);
Write_LCD_Zhilin(0x0c); // 开及光标设置
delay(1);
}
void Display_LCD_String(uchar puchar *s) //液晶显示写入函数
{
uchar i;
Write_LCD_Zhilin(p) ;
//Write_LCD_Zhilin(0x40|0x80) ;
for(i=0;i<6;i++)
{
Write_LCD_shuju(s[i]);
delay(1);
}
}
void Display_LCD_String_init(uchar puchar *s) //液晶显示写入函数
{
uchar i;
Write_LCD_Zhilin(p) ;
//Write_LCD_Zhilin(0x40|0x80) ;
for(i=0;i<2;i++)
{
Write_LCD_shuju(s[i]);
delay(1);
}
}
/***************************************************************************************/
void delays(int us) //用于DS18B20的延时函数
{ int s;
for ( s=0; s }
void rst(void) //DS18B20初始化
{
DQ = 1;
delays(2);
DQ = 0;
delays(30); //精确延时 480~960us
DQ = 1;
delays(8);
}
void write(unsigned char ku) //DS18B20写函数
{
int i=0;
for (i=0;i<8;i++)
{
DQ=0;
DQ =ku&0x01;
delays(3);
DQ=1;
ku>>=1;
}
}
void match_rom(unsigned char *rom) //DS18B20匹配ROM函数
{
unsigned char i;
rst(); //初始化
write(0x55); //匹配ROM
for(i=8;i>0;i--)
{
write(*(rom+i-1));
}
}
unsigned int read(void) //DS18B20读函数,每次读16位
{
int i=0;
unsigned int u=0;
for (i=0;i<16;i++)
{
DQ=0;
u>>=1;
DQ=1;
if(DQ) u|=0x8000;
delays(4);
}
return (u);
}
int read0(unsigned char *seria) //读取对应温度值并转换函数
{
int temperature ;
unsigned int tp;
unsigned int lsb;
rst(); //初始化
write(0xCC); //跳过RAM
write(0x44); //温度转换
rst(); //再次初始
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-06-22 09:54 多路DS18B20测量\
文件 13566 2015-06-09 13:10 多路DS18B20测量\ds18du.hex
文件 29 2015-06-09 13:10 多路DS18B20测量\ds18du.lnp
文件 23297 2015-06-09 13:10 多路DS18B20测量\ds18du.M51
文件 1180 2015-06-12 14:01 多路DS18B20测量\ds18du.Opt
文件 1760 2015-06-12 14:01 多路DS18B20测量\ds18du.plg
文件 2112 2015-06-12 14:01 多路DS18B20测量\ds18du.Uv2
文件 95577 2015-06-09 20:44 多路DS18B20测量\ds18duolu.DSN
文件 3938 2015-06-12 14:02 多路DS18B20测量\ds18duolu.PWI
文件 1188 2015-06-12 13:48 多路DS18B20测量\ds18du_Opt.Bak
文件 2112 2015-05-19 19:16 多路DS18B20测量\ds18du_Uv2.Bak
文件 7216 2015-06-12 14:01 多路DS18B20测量\dsduid.c
文件 17529 2015-06-12 14:01 多路DS18B20测量\dsduid.LST
文件 95577 2015-06-04 09:47 多路DS18B20测量\Last Loaded ds18duolu.DBK
文件 6376 2011-11-06 12:20 多路DS18B20测量\STARTUP.A51
文件 10725 2011-11-06 12:20 多路DS18B20测量\STARTUP.LST
文件 759 2011-11-06 12:20 多路DS18B20测量\STARTUP.OBJ
文件 0 2015-06-03 18:27 多路DS18B20测量\Text1.c
目录 0 2015-06-04 21:53 读取序列号\
文件 8872 2015-06-04 21:14 读取序列号\aaaaaa
文件 1550 2015-06-04 21:14 读取序列号\aaaaaa.hex
文件 28 2015-06-04 21:14 读取序列号\aaaaaa.lnp
文件 12827 2015-06-04 21:14 读取序列号\aaaaaa.M51
文件 968 2015-06-04 19:08 读取序列号\aaaaaa.Opt
文件 165 2015-06-04 21:53 读取序列号\aaaaaa.plg
文件 2110 2015-06-04 21:53 读取序列号\aaaaaa.Uv2
文件 834 2015-06-03 19:00 读取序列号\aaaaaa_Opt.Bak
文件 2106 2015-06-04 19:08 读取序列号\aaaaaa_Uv2.Bak
文件 134176 2015-06-03 18:32 读取序列号\Last Loaded kongqilengqueqi1.DBK
文件 6376 2005-03-22 15:22 读取序列号\STARTUP.A51
文件 7273 2015-06-04 11:01 读取序列号\Text1.c
............此处省略4个文件信息
评论
共有 条评论