智能温度控制系统毕业设计论文(编辑修改稿)内容摘要:

ds18b20rst(void) //DS18B20 复位初始化 { unsigned char x=0。 DQ = 1。 delay(16)。 DQ = 0。 delay(160)。 DQ = 1。 delay(28)。 x=DQ。 delay(40)。 } 开始 DQ=1 延时 DQ=0 延时(延时大于 480us) DQ=1 延时 结束 图 DS18B20 复位 程序流程图 DS18B20 写数据 程序流程图 DS18B20 写程序流程图如图 所示。 10 DS18B20 写数据程序如下: ds18b20write(unsigned char dat) //写 DS18B20 的 子程序 { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。 0x01。 delay(10)。 DQ = 1。 dat=1。 } } 开始 循环控制变量 i=8 i=0。 Y N DQ=datamp。 0x01 延时 DQ=1 dat=1 结束 图 DS18B20 写数据 程序流程图 DS18B20 读数据 程序流程图 DS18B20 读数据程序流程图如图 所示。 DS18B20 读数据程序如下: ds18b20read(void) //读 DS18B20 的程序 { 11 unsigned char i=0。 unsigned char dat = 0。 for (i=8。 i0。 i) { DQ = 0。 dat=1。 DQ = 1。 if(DQ) dat|=0x80。 delay(8)。 } return(dat)。 } 开始 循环控制变量 i=8 dat=0 i=0? Y N DQ=0。 dat1。 DQ=1 Y DQ=1? N dat|=0x80 延时 返回 dat 值 结束 图 DS18B20 读数据 程序流程图 12 温度读取及转换 程序流程图 温度读取及转换流程图 如图 所示。 温度读取及转换 具体程序如下: GetTemperature(void) //从 DS18B20中读出两个字节的温度数据 { uchar symbol。 unsigned int temperature。 unsigned char a=0。 unsigned char b=0。 unsigned int t=0。 ds18b20rst()。 ds18b20write(0xCC)。 ds18b20write(0x44)。 ds18b20rst()。 ds18b20write(0xCC)。 ds18b20write(0xBE)。 a=ds18b20read()。 b=ds18b20read()。 t=b。 t=8。 //进行精度转换 t=t|a。 if(t0x0fff)symbol=0。 else { t=~t+1。 symbol=1。 } temperature=t*。 if(symbol==1) temperature=temperature。 return(temperature)。 } 13 开始 DS18B20 初始化 启动温度转换 读取当前实际温度值 处理读取的温度值 Y 温度大于 0。 N 符号标志为 0 符号为 1,按正温度处理 返回处理后的温度值 结束 图 温度读取及转换 程序流程图 MAX7219 驱动 程序流程图 MAX7219 写入一个字节数据 程序流程图 写入一个字节数据程序流程图如图 所示。 14 开始 循环控制变量 i=8 code1=champ。 0x80 ch=ch1 code1=1? Y DIN=1,给上升沿 N DIN=0,给上升沿 结束 图 MAX7219 写入一个字节数据 程序流程图 具体程序如下: void write_byte(uchar ch) { uchar i,code1。 _nop_()。 _nop_()。 _nop_()。 for(i=0。 i8。 i++) { code1=champ。 0x80。 ch=ch1。 if(code1) { DIN=1。 CLK=0。 CLK=1。 } else { DIN=0。 CLK=0。 15 CLK=1。 } } } MAX7219 写入一个字数据 程序流程图 写入一个字节数据程序流程图如图 所示。 开始 LOAD=0 延时 写地址 延时 写数据 延时 LOAD=1 结束 图 MAX7219 写 入一个字数据 程序流程图 具体程序如下: void write72。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。