文档详情

《单片机控制技术项目式课程》(第2版)课件 项目10 数字温度采集系统的设计.ppt

发布:2025-04-06约1.35万字共73页下载文档
文本预览下载声明

(2)硬件原理图设计(2)软件程序设计开始初始化DS18B20跳过ROM(0xCC)启动温度转换(0x44)读RAM(0xBE)获取温度并转换结束温度采集系统软件流程图软件源程序如下://***************************************************************************//宏定义#includereg51.h#defineucharunsignedchar#defineuintunsignedint//***************************************************************************//测温口定义sbittemp_ds=P3^0;//定义全局变量uinttemp;//存储整型温度值floatf_temp;//存储浮点型温度值//定义共阴极段码表unsignedcharcodetable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//ms延时子程序voiddelay(uintx){uinty;while(x--) for(y=160;y0;y--);}//DS18B20初始化子程序,成功返回1,否则返回0intDS18B20_init(void){uinti;temp_ds=0;//发复位脉冲i=160;while(i0)i--;temp_ds=1;i=8;while(i0)i--;if(temp_ds==0)return1;//若检测到数据线上为低电平说明复位成功elsereturn0;}//从DS18B20读1位数据bittempreadbit(void){uinti;bitdat;temp_ds=0;//拉低控制线i++;temp_ds=1;//拉高控制线i++;i++;dat=temp_ds;//读1为数据i=10;while(i0)i--;temp_ds=1;//拉高控制线return(dat);}//从DS18B20读一个字节uchartempreadbyte(void){uchari,j,dat;dat=0;for(i=1;i=8;i++)//读到的8位组成1字节{j=tempreadbit();dat=(j7)|(dat1);}return(dat);}//向DS18B20写一位数据voidtempwritebit(bitinstruc_data){inttime;if(instruc_data){temp_ds=0;//拉低控制线time=3;while(time0)time--;temp_ds=1;//拉高控制线time=8;while(time0)time--;}else{temp_ds=0;//拉低控制线time=14;while(time0)time--;time--;}temp_ds=1;//拉高控制线time++;time++;}ADC0809的转换时钟CLK由单片机的ALE提供。4.ADC0809与51单片机的接口51单片机通过地址线P2.0和读、写控制线RD、WR来控制转换器的模拟输入通道地址锁存ALE、启动START和输出允许OE。模拟输入通道地址的译码输入ADDA~ADDC由P0.0~P0.2提供。根据P2.0和P0.0~P0.2的连接方法,8模拟输入通道的地址依IN0~IN7顺序为0xFEF8~0xFEFF。ADC0809工作时的时序关系如图。在进行A/D转换时,通道地址应先送到ADDA~ADDC输入端。然后在ALE输入端加一个正跳变脉冲,将通道地址锁存到ADC0809

显示全部
相似文档