- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1602+18b20+蜂鸣器+led+时间的程序.doc
主函数
#include reg52.h
#include lcd1602.h
#include DS18B20.h
#include key.h
void main()
{
init();//液晶初始化
while(1)
{
key();//检测按键
deal();//温度报警
}
}
#ifndef __DS18B20_H__
#define __DS18B20_H__
#include reg52.h
#define uint unsigned int
#define uchar unsigned char
sbit ds=P2^1;
extern int temper;
extern int t;
sbit beep=P2^0;
sbit d1=P2^5;
sbit d2=P2^4;
sbit d3=P2^3;
sbit d4=P2^2;
void DSdelay(uint N);
uchar reset();
uchar read_bit();
void write_bit(uchar dat);
uchar read_byte(void);
void write_byte(uchar dat);
int read_temp();
void DSdisplay();
void FM_beep();
void deal();
void delay1(uint z);
#endif
#include DS18B20.h
#include lcd1602.h
int t=0;
int temper = 0;
void DSdelay(uint N)//温度延时函数
{
int i;
for(i=0; iN; i++);
}
void delay1(uint z)//延时函数
{
uint x,y;
for(x=z;x0;x--)
for(y=248;y0;y--);
}
uchar reset() //参照时序图
{
uchar presence;//存在脉冲
ds=0;
DSdelay(29);//480到960us
ds=1;
DSdelay(3); //15到60us
presence=ds;//等待回应,读取/保存ds的值
DSdelay(25);
return (presence);
}
/****读一个位值....要有一个值的返回**读八次得一个字节***/
uchar read_bit()
{
uchar i;
ds=0;
ds=1;
for(i=0;i3;i++); //延时作用
return(ds);//单片机默认是1;如果ds为0说明是18b20让它变为0的
}
/*****写一个位,要写东西进去,肯定要带参数***写八次得一个字节**/
void write_bit(uchar dat)
{
ds=0;
if(dat==1) //如果是1,则把ds拉高,不是1则ds还是0
ds=1;
DSdelay(5);
ds=1;//写完之后拉高,则表示写完一个位了
}
/****读一个字节*****/
uchar read_byte(void) //从低位开始读
{
uchar dat=0;
uchar i,m;
m=1;
for(i=0;i8;i++)
{
if(read_bit()) //到这里会调用read_bit这个子函数 如果是1则要
dat|=0x01i; //把相应的位置1,0就直接跳过这里,保持0
// dat=dat+(mi);
DSdelay(6);
}
return (dat);
}
/****写一个字节*****/
void write_byte(uchar dat) //从低位开始
{
uchar i,j;
for(i=0;i8;i++) //用j存储相应的位,看是1还是0
{
j=(dati)0x01;
write_bit(j);
DSdelay(5);
}
}
/*****读取温度****/
int read_temp()
{
int templ,temph;//高,低八位
int temp;
reset();
write_byte(0xcc);//跳过ROM
文档评论(0)