温度传感器DS18B20采集环境模拟信号,其输出送入AT89C51,单片机在程序的控制下,将处理过的数据送到移位寄存器74LS164,经74LS164输出后驱动三位数码管显示。当被测温度高于18℃时,单片机发出控制信号使降温电扇以自然风的形式旋转,温度越高转速越快,温度36℃以上时风扇全速工作,点亮此功能指示灯。
基本要求
(1)设计测量温度范围-55℃+125℃的智能测温系统,要求数码管实时显示测量温度,单片机根据温度高低确定风扇转速
(2)画出程序框图
(3)整机电路图(proteus绘制)
系统组成
智能温度测量系统主要由数字温度计、单片机控制电路、数字式温度显示电路、风扇降温电路、键盘电路、串口通信电路等六部分组成。系统原理框图如下:
设计思路
智能温度测量系统的设计思路:用数字温度传感器DS18B20采集环境模拟信号,并在其内部进行A/D转换,将转换后的数字信号送AT89C51单片机,AT89C51单片机在程序的控制下,将处理过的数据送到八位串入/并出移位寄存器74LS164,经74LS164输出后驱动三位数码管显示出环境温度。当被测温度高于18℃时,单片机P2.3脚发出信号使降温电扇以自然风的形式旋转,温度越高转速越快,温度36℃以上时风扇全速工作,点亮此功能指示灯。
电路组成及工作原理
温度传感器功能模块
美国DALLAS公司生产的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。DS1820可把温度信号直接转换成串行数字信号供单片机处理,测量结果以9~12位数字量方式串行传送。从DS1820读出的信息或写入DS1820的信息,仅需要一根传输线(单总线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS1820供电,而无需额外电源。DS1820提供九位温度读数,构成多点温度检测系统而无需任何外围硬件。
DS18B20控制方法:在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
AT89C51单片机
AT89C51是一种4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
2.管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口: P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
74LS164移位寄存器
在单片机系统中, 如果并行口的IO资源不够,而串行口又没有其他的作用, 那么我们可以用74LS164来扩展并行IO口,节约单片机资源。74LS164是一个串行输入并行输出的移位寄存器。并带有清除端。
其中; Q0—Q7 并行输出端 。 A,B串行输入端。 MR 清除端, 为0时,输出清零。 CP 时钟输入端。
74LS164 引脚定义
74LS164逻辑表
晶振电路
AT89C51单片机芯片内部设有一个反向放大器所构成的振荡器,X1和X2分别为振荡电路的输入端和输出端,时钟信号由外部或内部产生,在X1和X2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体和电容组成的并联谐振回路。晶体振荡频率为12MHz,C1、C2的值为33pF电容的大小可起频率微调的作用。
复位电路
单片机具有多种复位电路,本系统采用电平式开关复位与上电复位方式,具体电路如图8所示。当上电时,C3相当于短路,给RST端输入大于24个振荡周期以上的高电平脉冲,使单片机复位,在正常工作时,按下开关使单片机复位。
显示电路
部分代码:
/***********************数码显示函数*****************************/
void display(void)
{
static uchar i;
unsigned char j=0;
i++;
if(i >= smg_i)
i = 0;
P0 = 0x00; //消隐
j=P2&0x0f;
P2 = smg_we[i]|j; //位选
P0 = Display_Data[i]; //段选
}
风扇控制电路
部分代码:
/****************风扇控制函数***************/
void fengshan_kz(void)
{
if((Temperature <= t_low)||(tflag==1)) //关闭风扇
{
TR1 = 0;
pwm = 1;
}
else if((Temperature > t_low)&&(Temperature < (t_low+20)))
{
f_pwm_l = 80;
TR1 = 1;
}
else if((Temperature >= (t_low+20))&&(Temperature < (t_low+40)))
{
f_pwm_l = 70;
TR1 = 1;
}
else if((Temperature >= (t_low+40))&&(Temperature < (t_low+60)))
{
f_pwm_l = 60;
TR1 = 1;
}
else if((Temperature >= (t_low+60))&&(Temperature < (t_low+80)))
{
f_pwm_l = 50;
TR1 = 1;
}
else if((Temperature >= (t_low+80))&&(Temperature < (t_low+120)))
{
f_pwm_l = 40;
TR1 = 1;
}
else if((Temperature >= (t_low+120))&&(Temperature < (t_low+140)))
{
f_pwm_l = 30;
TR1 = 1;
}
else if((Temperature >= (t_low+140))&&(Temperature < (t_low+160)))
{
f_pwm_l = 20;
TR1 = 1;
}
else if((Temperature >= (t_low+16))&&(Temperature <t_high))
{
f_pwm_l = 10;
TR1 = 1;
}
else if(Temperature >= t_high) //风扇全开
{
TR1 = 0;
pwm = 0;
}
}
void Dis_one(unsigned char display_data)
{
unsigned char i, j;
j=display_data;
for(i=0;i<8;i++)
{
if((j&0x80)!=0) DAT164=1;
else DAT164=0;
CLK164=0;
j=j<<1;
CLK164=1;
}
CLK164=0;
}
主函数程序:
void main(void)
{
time_init(); //初始化定时器
Temperature = read_temp(); //先读出温度的值
delay_ms(1000);
Temperature = read_temp(); //先读出温度的值
Display_Temp();
f_pwm_l = 50;
while(1)
{
delay_ms(500);
Temperature = read_temp(); //先读出温度的值
if(Temperature!=oldt)
{
oldt=Temperature;
if(Temperature>=t_high) LED=0;
else LED=1;
Display_Temp();
}
fengshan_kz(); //风扇控制函数
}
}
我把protues仿真和源程序代码放在下面链接里,
感兴趣的同学,可以尝试在电脑上运行
百度网盘链接:https://pan.baidu.com/s/1cVeLZB7MB0wUksct_1WAYQ?pwd=f3c2
提取码:f3c2
复制这段内容打开「百度网盘APP 即可获取」