资源简介
使用STC89C51单片机制作了一款电子温度计,可以通过LCD1602实时显示温度
代码片段和文件信息
#include “DS18B20.h“
bit DQ_Err_Flag = 0;
unsigned char DS18B20_ID[DS18B20_MAXNUM][8]= {0};
unsigned char xdata DS18B20_zhan[(DS18B20_MAXNUM + 1)]= {0};
/**************************************
由于DS18B20延时均以15us为单位,故编写了延时单位为15us的延时函数,
注意:以下延时函数晶振为12MHz
参数:n 延时的微妙数
返回值:空
**************************************/
void DS18B20_Delay5us() //@11.0592MHz
{
}
void DS18B20_Delay10us() //@11.0592MHz
{
unsigned char i;
i = 2;
while (--i);
}
void DS18B20_Delay30us() //@11.0592MHz
{
unsigned char i;
i = 11;
while (--i);
}
void DS18B20_Delay40us() //@11.0592MHz
{
unsigned char i;
_nop_();
i = 15;
while (--i);
}
void DS18B20_Delay60us()
{
unsigned char i;
i = 25;
while (--i);
}
void DS18B20_Delay240us() //@11.0592MHz
{
unsigned char i;
i = 108;
while (--i);
}
/**************************************
复位DS18B20并检测设备是否存在
参数:空
返回值:空
**************************************/
void DS18B20_Reset()
{
unsigned char i = 0;
CY = 1;
while (CY)
{
DQ_Pin = 0; //送出低电平复位信号
DS18B20_Delay240us();
DS18B20_Delay240us();//延时至少480us
DQ_Pin = 1; //释放数据线
DS18B20_Delay60us(); //等待60us
CY = DQ_Pin; //检测存在脉冲
DS18B20_Delay240us(); //等待设备释放数据线
if (CY == 1 && i ++ > 15)
{
DQ_Err_Flag = 1;
break;
}
}
}
/**************************************
从DS18B20读1字节数据
参数:空
返回值:返回从传感读到的数据
**************************************/
unsigned char DS18B20_ReadByte()
{
unsigned char i;
unsigned char dat = 0;
for (i=0; i<8; i++) //8位计数器
{
dat >>= 1;
DQ_Pin = 0; //开始时间片
_nop_(); //延时等待
DQ_Pin = 1; //准备接收
_nop_(); //接收延时
if (DQ_Pin) dat |= 0x80; //读取数据
DS18B20_Delay60us(); //等待时间片结束
}
return dat;
}
/**************************************
*函数 : unsigned char DS18B20_ReadBit(void)
*功能 : 读取DS18B20 1bit数据
*参数 : 无
*返回 : 数据最低位有效
*说明 :无
**************************************/
unsigned char DS18B20_ReadBit(void)
{
unsigned char dat = 0;
DQ_Pin = 0; //拉低总线10-15us
DS18B20_Delay10us();
DQ_Pin = 1; //释放总线
DS18B20_Delay10us();
dat = DQ_Pin;
DS18B20_Delay40us();
return dat;
}
/**************************************
*函数 : unsigned char DS18B20_Read2Bit(void)
*功能 : 读取DS18B20 2bit数据
*参数 : 无
*返回 : 数据
*说明 :无
**************************************/
unsigned char DS18B20_Read2Bit(void)
{
unsigned char idat = 0;
for(i = 0; i < 2; i ++)
{
dat <<= 1;
if(DS18B20_ReadBit())
dat |=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-06 19:31 电子温度计\
目录 0 2017-09-06 19:31 电子温度计\PCB\
文件 692736 2017-03-06 13:59 电子温度计\PCB\PCB1.PcbDoc
文件 39357 2017-03-05 12:54 电子温度计\PCB\PCB_Project1.PrjPCB
文件 80896 2017-03-02 21:06 电子温度计\PCB\Sheet1.SchDoc
目录 0 2017-09-06 19:30 电子温度计\程序\
文件 8536 2017-03-05 14:30 电子温度计\程序\DS18B20.c
文件 773 2017-03-04 16:12 电子温度计\程序\DS18B20.h
文件 3627 2014-08-26 10:17 电子温度计\程序\lcd.c
文件 1068 2017-03-02 14:48 电子温度计\程序\lcd.h
文件 6605 2017-03-02 14:48 电子温度计\程序\lcd.LST
文件 4083 2017-03-02 14:48 电子温度计\程序\lcd.OBJ
文件 61 2017-03-02 14:48 电子温度计\程序\lcd.__i
文件 5062 2017-03-06 17:23 电子温度计\程序\LCD1602.c
文件 959 2017-03-06 18:17 电子温度计\程序\LCD1602.h
文件 9214 2017-03-06 21:29 电子温度计\程序\LCD1602.LST
文件 6783 2017-03-06 21:29 电子温度计\程序\LCD1602.OBJ
文件 2174 2017-03-06 21:29 电子温度计\程序\main.c
文件 4423 2017-03-06 21:29 电子温度计\程序\main.LST
文件 6221 2017-03-06 21:29 电子温度计\程序\main.OBJ
文件 17512 2017-03-06 21:29 电子温度计\程序\pro
文件 989 2017-03-06 21:29 电子温度计\程序\pro.build_log.htm
文件 5243 2017-03-06 21:29 电子温度计\程序\pro.hex
文件 69 2017-03-06 21:29 电子温度计\程序\pro.lnp
文件 22222 2017-03-06 21:29 电子温度计\程序\pro.M51
文件 72219 2017-04-11 16:42 电子温度计\程序\pro.uvgui.eryi1
文件 6463 2017-03-06 18:24 电子温度计\程序\pro.uvopt
文件 14269 2017-03-06 18:24 电子温度计\程序\pro.uvproj
文件 6376 2014-08-26 10:17 电子温度计\程序\STARTUP.A51
文件 14052 2017-03-06 21:29 电子温度计\程序\STARTUP.LST
文件 749 2017-03-06 21:29 电子温度计\程序\STARTUP.OBJ
............此处省略4个文件信息
- 上一篇:jdk8直接可以用的
- 下一篇:Windows下最好用的批量端口转发工具
相关资源
- 基于51单片机的时钟汇编程序
- 基于51单片机的数字频率计课程设计
- 51单片机汇编语言将片外ram30-50H中数据
- 51单片机控制sim808
- 基于51单片机的三路电磁传感器自动循
- 51单片机读写flash
- 89c51单片机电子琴设计
- 基于51单片机信号发生器
- 51单片机驱动WiFi模块ESP8266模块的代码
- c51单片机的经典密码锁keil c
- 51单片机超声测距汇编
- 基于51单片机12864画点画线画圆的程序
- 倒车雷达超声波测距系统
- 波形发生器 Proteus
- 51单片机热敏电阻测温查表程序
- 基于AT89C51单片机的电子计时牌设计
- 用51单片机设计的GPS定位系统论文
- 基于51单片机的CC1100CC1101发送和接收的
- 基于C51单片机的简单控制灯光的程序
- 51单片机 经典4位数码管显示,带闪烁
- 51单片机控制BMP180气压传感器 并通过
- DS18B20温度采集+串口发送+模块化编程
- 用汇编语言写的51单片机电子闹钟
- 基于51单片机带时间及声光提示单片机
- 51单片机课程设计数字温度计报告
- 51单片机4×4键盘proteus仿真51单片机4×
- 51单片机控制LED点阵显示Proteus仿真
- 基于51单片机的计算器Proteus仿真.rar
- 51+bmp180+lcd1602+proteus.zip
- 基于AT89C51单片机的温度控制系统
评论
共有 条评论