报警点调节电路
可以通过微动开关,任意调节报警点的上下限,电路如图8所示
图8 报警点调节电路
显示电路
显示电路采用集成的四位一体的数码管,为共阴极结构,通过设置不同的段码可以显示温度。
图9显示电路
3 软件设计 系统分析 系统程序主要包括DS1820初始化程序,向DS1820读字节程序,向DS1820写字节程序,读取温度及转换程序,温度显示程序,报警程序。
初始化 向ds1820读一字节 向ds1820写一字节 读取温度及转换 显示温度
图10主程序流程图
各子程序及其流程图设计 初始化子程序
令为高电平,延迟一段时间后令为低电平触发DS1820的初始化,低电平持续一段时间,然后读取的状态,直到的状态回到高电平时说明初始化完成。
#include <> #define DQ P2_7 #define dm P0 sbit w0=P2^3; sbit w1=P2^4; sbit w2=P2^5; sbit w3=P2^6; sbit jia=P2^0; sbit jian=P2^1; sbit xuan=P2^2; //sbit p2_7=P2^7; sbit speaker=P1^0; #define uint unsigned int #define uchar unsigned char uint mark; uint xiaoshu; int temp1=0; uint H_t=10,L_t=-5;
uchar table_dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar table_dm1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; uchar table_fuhao[]={0x00,0x40}; void delay(unsigned int i) {
while(i--); } //初始化函数
=1 延时 =0 延时 N
=1? Y 完成
图11 初始化流程图
DS1820的读写字节子程序
单片机向DS1820读写字节都是从最低位开始的。
Init_DS18B20(void) {
unsigned char x=0; DQ = 1; delay(8); DQ = 0; delay(80); DQ = 1; delay(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20);
} //读一个字节
=1 =1 延时 延时 读数据 写数据 待写入字节右移一位 待写入字节右移一位
图12 读操作 温度读取及转换子程序
在读取温度值命令前,应使用温度转换命令才能保证读入的是当前温度值转换过程中DS1820会拉低总线直至转换完成,因此可以读取温度总线的状态来判断温度转换是否完成。
ReadOneChar(void) {
unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay(4); }
return(dat);
图13写操作
相关推荐: