基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx

基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx

ID:52686567

大小:15.20 KB

页数:5页

时间:2020-03-29

基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx_第1页
基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx_第2页
基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx_第3页
基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx_第4页
基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx_第5页
资源描述:

《基于AT89S52及DS18B20的数码管显示数字温度计C语言程序.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include"reg52.h"#include"intrins.h"//_nop_();延时函数用#defineDisdataP0//段码输出口#definediscanP2//扫描口#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^3;//温度输入口sbitDIN=P0^7;//LED小数点控制uinth;ucharflag;//**************温度小数部分用查表法***********//ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x

2、03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"ucharcodescan_con[4]={0xbf,0x7f,0xef,0xfe};//列扫描控制字uchardatatemp_data[2]={0x00,0x00};//读出温

3、度暂放uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据和一个运算暂用///////***********11微秒延时函数**********///voiddelay(uintt){for(;t>0;t--);}///***********显示扫描函数**********/scan(){chark;for(k=0;k<4;k++)//四位LED扫描控制{Disdata=0xff;Disdata=dis_7[display[k]];if(k==1){DIN=0;}discan=sca

4、n_con[k];delay(90);discan=0xff;}}/////***********18B20复位函数**********/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0;//delay(50);//550usDQ=1;//delay(6);//66uspresence=DQ;//presence=0继续下一步}delay(45);//延时500uspresence=~DQ;}DQ=1;}/////*******

5、***18B20写命令函数*********///向1-WIRE总线上写一个字节voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--)//{DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay(6);//66usval=val/2;//右移一位}DQ=1;delay(1);}///*********18B20读1个字节函数********///从总线上读取一个字节ucharr

6、ead_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

7、=0x80;delay(6);//66us}DQ=1;return(value);}///***********读出温度函数**********///read_temp(){ow_reset();

8、//总线复位write_byte(0xCC);//发SkipROM命令write_byte(0xBE);//发读命令temp_data[0]=read_byte();//温度低8位temp_data[1]=read_byte();//温度高8位ow_reset();write_byte(0xCC);//SkipROMwrite_byte(0x44);//发转换命令}///***********温度数据处理函数**********/voidwork_temp(){ucharn=0;uchardoth,dotl;ucharflag3=1,flag2=1;/

9、/数字显示修正标记if((temp_data[1]&0xf8)!=0x00){temp_dat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。