1602+18b20+蜂鸣器+led+时间的程序.doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档