版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏南京大学图书馆仓储人员招聘备考题库带答案详解
- 2026广东深圳市眼科医院招聘14人备考题库及答案详解(新)
- 2025广西北海市老干部活动中心(北海市老年大学)招录公益性岗位人员1人备考题库及参考答案详解
- 2025贵州盘州市刘官街道卫生服务中心招聘3人备考题库及完整答案详解一套
- 2026中国人民财产保险股份有限公司温泉支公司招聘备考题库(新疆)完整答案详解
- 恶性淋巴瘤的免疫化疗方案选择及疗效评估标准诊疗指南及操作规范
- 2025广东中山大涌医院第四期招聘工作人员3人备考题库完整参考答案详解
- 2026四川绵阳虹源科技发展有限责任公司招聘储能工艺工程师等岗位2人备考题库完整答案详解
- 2026上半年黑龙江齐齐哈尔医学院及直属单位长期招聘编制内人员126人备考题库及完整答案详解一套
- 2025江西江新造船有限公司招聘70人备考题库完整参考答案详解
- 2026年教育平台资源输出协议
- 【《四旋翼飞行器坐标系及相互转换关系分析综述》1000字】
- 广东深圳市盐田高级中学2024~2025学年高一上册1月期末考试化学试题 附答案
- 人力资源部2025年度工作总结与2026年度战略规划
- 2025年安徽理工大学马克思主义基本原理概论期末考试参考题库
- 机械工程师职称评定技术报告模板
- 档案移交数字化建设规划
- 孤独症个案护理
- 建筑施工风险辨识与防范措施
- 高职汽车维修专业培训教材
- 2026年中级注册安全工程师之安全生产法及相关法律知识考试题库500道含答案ab卷
评论
0/150
提交评论