好文档 - 专业文书写作范文服务资料分享网站

基于51单片机课程设计报告 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

. .. . ..

#include\ #include\#include\

/******************************************************/ /*

/

主函数

/*****************************************************/ void main() {

beer=1; led=1;

//关闭蜂鸣器 //关闭LED灯

timer1_init(0); //初始化定时器1(未启动定时器1)

get_temperature(1); //首次启动DS18B20获取温度(DS18B20上

电后自动将EEPROM中的上下限温度复制到TH和TL寄存器)

while(1) { }

keyscan();

get_temperature(0); display(temp,temp_d*0.625); alarm();

学习参考

. .. . ..

}

/******************************************************************** * 程序名; DS18B20头文件 * 编程者:彭明闯 * 编程时间:2014/5/30

* 说 明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d

* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表 * 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表 * 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表 * 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。

*********************************************************************/ #ifndef __ds18b20_h__ #define __ds18b20_h__

#define uint unsigned int #define uchar unsigned char

sbit DQ= P2^3;

//DS18B20接口

//定义头文件

学习参考

. .. . ..

sbit beer=P1^0; sbit led=P1^1; uchar temp=0;

//用beer表示P1.0

//用led表示P1.1

//测量温度的整数部分 //测量温度的小数部分

//测量温度的标志位,0’表示“正温度”

uchar temp_d=0; bit f=0;

‘1’表示“负温度”) bit f_max=0; 表示“负温度”) bit f_min=0; ‘1’表示“负温度”) bit w=0; 警

/******************************************************/ /*

/

延时子函数

//报警标志位‘1’启动报警‘0’关闭报

//下限温度的标志位‘0’表示“正温度”、

//上限温度的标志位‘0’表示“正温度” ‘1’

/*****************************************************/ void ds18b20_delayus(uint t) //延时几μs {

while(t--); }

学习参考

. .. . ..

void ds18b20_delayms(uint t) {

uint i,j; for(i=t;i>0;i--)

for(j=120;j>0;j--);

//延时1ms左右

}

/******************************************************/ /*

/

DS18B20初始化函数

/*****************************************************/

void ds18b20_init() {

uchar c=0; DQ=1; DQ=0;

//控制器向DS18B20发低电平

脉冲

ds18b20_delayus(80); DQ=1;

//延时15-80μs

//控制器拉高总线,

while(DQ); //等待DS18B20拉低总线,在60-240μ

学习参考

. .. . ..

s之间

ds18b20_delayus(150); DQ=1;

//延时,等待上拉电阻拉高总线

//拉高数据线,准备数据传

输; }

/******************************************************/ /*

/

DS18B20字节读函数

/*****************************************************/

uchar ds18b20_read() {

uchar i; uchar d=0; DQ = 1;

//准备读;

for(i=8;i>0;i--) {

//低位先发;

d >>= 1;

DQ = 0; _nop_();

学习参考

基于51单片机课程设计报告 - 图文

......#include\#include\#include\/******************************************************//*<
推荐度:
点击下载文档文档为doc格式
8ieid99ln923x6i11fyp2nsft0iv0l00r4c
领取福利

微信扫码领取福利

微信扫码分享