基于单片机的数字温度计课程设计报告 联系客服

发布时间 : 星期五 文章基于单片机的数字温度计课程设计报告更新完毕开始阅读6f8e2738bc23482fb4daa58da0116c175f0e1ee8

报警点调节电路

可以通过微动开关,任意调节报警点的上下限,电路如图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写操作