开发工具:
文件大小: 23kb
下载次数: 0
上传时间: 2011-07-18
详细说明: 温度计的程序,基于c8051.#include #define uchar unsigned char typedef unsigned char unchar; typedef unsigned int unint; Init_DS18B20(void) //DS18B20温控芯片初始化 { unchar x = 0; DQ = 1; //DQ复位信号 CDelay(8); //延时 DQ = 0; //将DQ电平拉低 CDelay(80); //延时大于480us DQ = 1; //将DQ电平拉高 CDelay(14); //延时 x = DQ; //如果x=0则初始化成功,x=1则初始化失败 CDelay(20); //延时 } unint ReadTemperature(void) //读取温度 { unchar L = 0; //定义温度低八位 unchar H = 0; //定义温度高八位 unint temp = 0; Init_DS18B20(); //温度传感器DS18B20初始化 WriteOneChar(0xCC); // 忽略ROM指令 WriteOneChar(0x44); // 温度转换指令 Init_DS18B20(); WriteOneChar(0xCC); //忽略ROM指令 WriteOneChar(0xBE); //读暂存器指令 读取9字节 前两个就是温度 L = ReadOneChar(); //读取温度值低位 H = ReadOneChar(); //读取温度值高位 temp=H; temp<<=8; temp = temp|L; return(temp); } ReadOneChar(void) //读一个字节 { unchar i = 0; unchar dat = 0; for(i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) { dat |= 0x80; } CDelay(4);//延时 } return(dat); //返回dat值 } WriteOneChar(unchar dat) //写一个字节 { unchar i = 0; for(i=8;i>0;i--) { DQ = 0; //低电平脉冲信号 DQ = dat&0x01; CDelay(5);//延时 DQ = 1; //高电平脉冲信号 dat >>= 1;//dat右移一位 } CDelay(4); } JudTemp(unint tem) //判定温度 { unchar temp=tem>>4; if(temp>=31) { Bee=0; P0=0x40; P1=6; CDelay(100); P0=0x76; P1=7; P1_6=1; } else { Bee=1; P0=0x40; P1=6; CDelay(100); P0=0x38; P1=7; } } void DisplayTemperture(unint tem) //温度显示 { unchar t2=(tem>>4)&0xff; unchar t1=tem&0xff; P0 = Code[t2/10]; P1 =2; CDelay(100); P0=Code[(t2%10)]; DT=1; P1=1; CDelay(100); P0=Code[t1%10]; P1=0; CDelay(100); } //温度显示 if(i==2) { unint temp; temp = ReadTemperature(); DisplayTemperture(temp); JudTemp(temp); } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.