


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、18b20测温数码管显示实验-精确到小数点后4位/滑国虎于09.9.20完成/DS18B20的读写程序,数据脚P1.5/温度传感器18B20程序,采用器件默认的12位转化/最大转化时间750微秒,显示温度-55到+125度,显示精度/为0.1度,显示采用4位LED共阳显示测温值/P0口为段码输入,P27P21为位选/*/#include"reg51.h"#include"intrins.h"/_nop_();延时函数用#defineDisdataP0/段码输出口#definediscanP2/扫描口#defineucharunsignedchar#def
2、ineuintunsignedintsbitDQ=P1A5;/温度输入口sbitDIN=P0A7;/LED小数点控制uinth;uinttemp;/ucharcodedis_712=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮&q
3、uot;"-"ucharcodescan_con7=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd;/歹U扫描控制字读出温度暂放uchardatauchardatatemp_data2=(0x00,0x00;/显示单元数据,display7=0x00,0x00,0x00,0x00,0x00,0x00,0x00;/数据和一个运算暂用/*11us延时函数*/voiddelay(uintt)/11usfor(;t>0;t-);/*DS18B20复位函数*/ow_reset(void)charpresence=1;while(presence)while
4、(presence)DQ=1;_nop_();_nop_();/从高拉倒低DQ=0;delay(50);/550usDQ=1;delay(6);/66uspresence=DQ;/presence=0复位成功,继续下一步delay(45);/延时500uspresence=DQ;DQ=1;/拉高电平向1-/*DS18B20写命令函数*/WIRE总线上写1个字节voidwrite_byte(ucharval)uchari;for(i=8;i>0;i-)DQ=1;_nop_();_nop_();/从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();/5usDQ
5、=val&0x01;/最低位移出delay(6);/66usval=val/2;/右移1位DQ=1;delay(1);从总/*DS18B20读1字节函数*/线上取1个字节ucharread_byte(void)(uchari;ucharvalue=0;for(i=8;i>0;i-)(DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();/4usDQ=1;_nop_();_nop_();_nop_();_nop_();/4usif(DQ)value|=0x80;delay(6);/66us
6、DQ=1;return(value);/*显示扫描函数*scan()(chark;for(k=0;k<7;k+)/4位LED扫描控制(Disdata=dis_7displayk;/数据显示P0if(k=2)DIN=0;/小数点显示P0.7discan=scan_conk;/位选P2delay(150);discan=0xff;读出温度函数*/*/read_temp()(ow_reset();/总线复位delay(200);write_byte(0xcc);/发命令write_byte(0x44);/发转换命令ow_reset();delay(1);write_byte(0xcc);/发命
7、令write_byte(0xbe);temp_data0=read_byte();/读温度值的低字节temp_data1=read_byte();/读温度值的高字节temp=temp_data1;temp=temp&0x0f;/去掉符号位temp=temp<<8;/temp为16位temp=temp|temp_data0;/两字节合成一个整型变量。returntemp;/返回温度值,具体的温度数值/*温度数据处理函数*/二进制高字节的低半字节和低字节的高半字节组成一字节,这个/字节的二进制转换为十进制后,就是温度值的白、十、个位值,而剩/下的低字节的低半字节转化成十进制后,
8、就是温度值的小数部分/*/work_temp(uinttem)/显示(uinttemp_h,temp_l;ucharn=0;/n=0符号为正/*if(tem>6348)/温度值正负判断(tem=65536-tem;n=1;/负温度求补码,标志位置n=1*/if(tem&0x0800)/为负时(tem=temp+1;n=1;temp_h=tem>>4;/去掉小数temp_l=tem&0x000f;/取出小数temp_l=temp_l*625;/把小数转化为整数display0=temp_h/100;temp_h=temp_h%100;display1=temp_
9、h/10;display2=temp_h%10;display3=temp_l/1000;temp_l=temp_l%1000;display4=temp_l/100;temp_l=temp_l%100;display5=temp_l/10;/*display6=temp_l%10;符号位显示判断*/if(!display0)/display0=0display0=0xff;/最高位为0时不显示if(!display1)display1=0xff;/次高位为0时不显示if(n)/负温度n=1display0=0x0b;/负温度时最高位显示"-",10111111/*主函数*/main()Disdata=0xff;/初始化端口P0discan=0xff;/P2for(h=0;h<4;h+)/开机显示"0000"(displayh=0;ow_reset();/开机先转换一次write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省昆明市黄冈实验学校2025年高三(最后冲刺)化学试卷含解析
- 福建省长汀、连城一中等六校联考2025届高三压轴卷化学试卷含解析
- 中职课程中国旅游文化
- 光伏逆变器2025年度采购订单供应商协同开发协议
- 2025年鱼、虾、贝、藻类基因工程体项目发展计划
- 2025届湖南省益阳市高三一诊考试化学试卷含解析
- 2025届湖南省高三下学期高考普通高中名校联考第一次模拟考试生物试题(含解析)
- 山东省桓台一中2025年高考仿真卷化学试卷含解析
- 2025年贵金属压延加工材项目合作计划书
- 小二臀红的护理
- 注射用重组人TNK组织型纤溶酶原激活剂-药品临床应用解读
- T-CECC 029.1-2024 数据分类分级指南 第1部分:医疗健康
- 2025年浙江杭州市地铁集团有限责任公司招聘笔试参考题库含答案解析
- 华东师大版七年级数学下册全册同步课时练习(一课一练)
- 全国公开课一等奖四年级上册数学人教版《角的度量》课件
- 2025年广东中考试题数学及答案
- 2025年内蒙护理面试试题及答案
- 2025年第六届中小学全国国家版图知识竞赛测试题库及答案
- 教学课件:C++程序设计教程(第2版)罗建军
- ACLS-PC-SA课前自我测试试题及答案
- 最全的遗传概率计算方法(高中生物)
评论
0/150
提交评论