ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:42KB ,
资源ID:10863742      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10863742.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机控制的温度传感器C语言程序.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

单片机控制的温度传感器C语言程序.doc

1、#include #define DO P3_7 #define SEG P0 /数码管自左至右依次为 1234 位#define MS2L 0x18 /1ms 的延时参数#define MS2H 0xfc#define uchar unsigned char#define uint unsigned intuchar code comm4 = 0x01,0x02,0x04,0x08;uchar code seg10 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code seg_add_dicimal10 = 0x40,0

2、x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; uchar code seg_dicimal2 =0xc0, 0x92;uchar k = 0;uchar temp_l = 0;uchar temp_h = 0;uchar tempsign = 0;uchar hundreds = 0;uchar tens = 0;uchar ones = 0;uchar low_four = 0;/*延时以 ms 为单位的 t 时间*/void Delay(uint t)uint i;while(t-)for(i=0; i 1;/*配置 ds18b20,9 位分辨率

3、 */void Configurate()EA = 0;Resetpaulse(); /发出复位脉冲,每次操作都从复位开始Delay(1);Writebyte(0xcc); /skip room 命令Writebyte(0x4e);Writebyte(0x7f);Writebyte(0x80);Writebyte(0x1f);EA = 1;/*启动温度转换*/void StartConvert()Resetpaulse(); / 发出复位脉冲,每次操作都从复位开始Delay(1);EA = 0;Writebyte(0xcc); /skip room 命令Writebyte(0x44); /启动

4、温度转换命令EA = 1;/*读取温度值*/void ReadTempreture()EA = 0;Resetpaulse(); / 发出复位脉冲,每次操作都从复位开始Delay(1);Writebyte(0xcc); /skip room 命令Writebyte(0xbe); /读取暂存器命令temp_l = Readbyte(); /存储温度低字节值 (整数部分低四位和小数部分)temp_h = Readbyte(); /存储温度高字节值 (其中高五位为符号位)EA = 1;/*数据转换*/void DigitalConvert()uchar total = 0;tempsign = (t

5、emp_h 7) /得出符号位if(tempsign = 0) /正数的处理方法 total = (temp_h 4) /取整数位low_four = (temp_l3) /取小数位,9 位分辨率,低字节第 3 位为小数位,只有 0、1 两种取值hundreds = total / 100; /计算百、十、个位 tens = (total%100)/10;ones = (total%100)%10;else /负数处理 求负数补码规则是,按位取反,得到反码,加 1 即得补码(符号位不变)tempsign = 1;total = (temp_l 4) /取整数部分低 4 位total |= (t

6、emp_h 3) /取小数位if(low_four = 0) /这里 total 位 uchar 型变量,所以根据最低位来确定整数取补规则total = total + 1; /最低位为 0 的时候,取反加 1 后有进位,所以这里 total 要取反加1elsetotal = total; /最低位为 1 的时候,取反加 1 没有进位,所以 total 直接取反即可tens = (total%100)/10;ones = (total%100)%10;/*中断处理*/void Display() interrupt 1EA = 0;TL0 = MS2L;TH0 = MS2H; DigitalC

7、onvert(); /数据转换if(tempsign = 0) /正数if(k = 0)if(hundreds = 0) /高位 0 消隐P1 = 0;elseP1 = commk;SEG = seghundreds; else if(k = 1)if(tens = 0 elseP1 = commk;SEG = segtens; else if(k = 2) /显示个位,因为个位有小数点,所以又定义了一个数组分开来显示P1 = commk;SEG = seg_add_dicimalones; /要加上小数点else /显示小数,0 或 5P1 = commk;SEG = seg_dicimal

8、low_four; else if(tempsign = 1) /负数if(k = 0) /显示符号位P1 = commk;SEG = 0xbf;else if(k = 1)if(tens = 0)P1 = 0;elseP1 = commk;SEG = segtens; else if(k = 2) /显示个位,因为各位有小数点,所以分开来显示P1 = commk;SEG = seg_add_dicimalones; /要加上小数点else /显示小数, 0 或 5P1 = commk;SEG = seg_dicimallow_four; k+;if(k = 4) k = 0;EA = 1;/*主函数部分*/void main()TMOD = 0x01;TL0 = MS2L;TH0 = MS2H; TF0 = 0; EA = 1;ET0 = 1;TR0 = 1;Configurate();doDelay(1);StartConvert();Delay(100);ReadTempreture();while(1);

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报