资源描述
(完整word版)数字温湿度计的设计(12864)
目 录
摘 要
前 言
第一章 总体结构及设计方案
1.1 设计任务要求和温湿度计的用途
1.2 设计数字温湿度计的依据和意义
第二章 电路设计
2.1 主控制模块电路
2.1.1 STC89C52主要功能及引脚介绍
2.1.2 STC89C52最小系统的基本电路
2.1.3 STC89C52与各部分功能模块电路的连接
2.2 显示电路模块
2.2.1 12864的功能和引脚介绍
2.2.2 12864与单片机的连接电路
2.3 DS18B20温度传感器
2.3.1 DS18B20的功能和引脚介绍
2.3.2 DS18B20的测温原理
2.3.3 DS18B20与单片机的接口电路
2.4 HS1100湿度传感器
2.4.1湿度传感器的主要特性
2.4.2湿度测试电路
2.5 按键以及报警
2.6 总硬件设计图
总结
参考文献
数字温湿度计的设计
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:单片机;DS18B20;温度传感器;数字温度计;STC89C52
ABSTRACT
With the progress of The Times and development, microcontroller technology has spread to our life, work, scientific research, each domain, has become a more mature technology, this paper mainly introduces a STC89C52 based on single chip microcomputer temperature measurement system, a detailed description of the use of digital temperature sensor DS18B20 temperature measurement system development process, focusing on sensors in the single chip microcomputer hardware connection, software programming and the module system flow for a detailed analysis, especially digital temperature sensor DS18B20 data acquisition process. On the part of the circuit are introduced one by one, the system can realize realize temperature acquisition and display, and can according to need any set upper limit alarm temperature, it USES up quite convenient, has high precision, wide range, high sensitivity, small volume, low power consumption, suitable for our daily life and work, the agricultural production of temperature measurement, also can be used as temperature processing module embedded other system, as the other main system auxiliary extension. DS18B20 and STC89C52 combined to realize the most Jane temperature detection system, the system structure is simple, strong anti-jamming ability, suitable for bad environment field temperature measurement, a broad prospect of application.
Keywords: SCM;DS18B20;temperature sensor;digital thermometer;STC89C52
前 言
温度与湿度与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。传统湿度计采用干湿球显示法,不仅复杂而且测量精度不高。而采用单片机对温湿度进行测量控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
用12864数码管来显示温湿度的数值,看起来更加直观。测量温湿度的关键是温湿度传感器。采用18B20温度传感器以及HS1100湿度传感器与单片机AT89C52相连外围电路比较简单。所以,本次设计以18B20温度传感器以及HS1100湿度传感器为例,介绍基于单片机的数字温湿度计的设计。
第一章 设计任务要求和温湿度计的用途
1.1 设计任务及要求
设计一个以单片机为核心的温湿度测量系统,可实现的功能为:
(1)测量温度值精度为±1℃,测量湿度值精确1%;
(2)系统允许的误差范围为1℃和1%以内;
(3)系统可由用户预设温度值和湿度值,测温范围-40℃~+125℃,
测湿范围0~100%;
(4)超出预设值时系统会自动报警,即发光二极管亮;
(5)系统采用数码管显示,能显示设定温湿度值和测得的实际温湿度值。
1.2 设计数字温湿度计的依据和意义
温度与湿度与人们的生活息息相关。在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。传统的湿度计采用干湿球显示法,不仅复杂而且测量精度不高。而采用单片机对温湿度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制的技术指标。用12864来显示温湿度的数字看起来更加直观。
总之,无论在日常生活中还是在工业、农业方面都离不开对周围环境进行温湿度的测量。因此,研究温湿度的控制和测量具有非常重要的意义。
第二章 电路设计
2.1主控制器模块电路
2.1.1 STC89C52主要功能及引脚介绍
单片机STC89C52具有低电压供电高性能COMS8位单片机,片内含有8K bytes 的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器,在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程 Flash。
图2.1 STC89C52引脚图
2.1.2 STC89C52最小系统的基本电路
最小系统是指能进行正常工作的最简单电路。STC89C52最小应用系统它包含五个电路部分:电源电路、时钟电路、复位电路、片内外程序存储器选择电路、输入输出接口电路。其中电源电路、时钟电路、复位电路是保证单片机系统能够正常工作的最基本的三部分电路,缺一不可。
(1)电源电路
芯片引脚VCC一般接上直流稳压电源+5V,引脚GND接电源+5V的负极,电源电压范围在3.3~5V之间,可保证单片机系统能正常工作。
图2.2 电源电路
(2)晶振电路
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
在本设计中时钟采用内部方式产生,晶振振荡频率使用12MHZ。晶振电路如下图所示:
图2.3 晶振电路
(3)复位及复位电路
a.复位操作
复位是单片机的初始化操作除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
b.复位信号及其产生
RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
复位操作有上电自动复位相按键手动复位两种方式。在本设计中的复位电路如下:
图2.4 复位电路
图中的按键复位是上电和按键均可的复位方式,使用比较方便,程序跑飞时,可以手动复位,这样就不用在重启单片机电源,就可以实现复位。
2.1.3 STC89C52与各部分功能块电路的连接
STC89C52与各部分功能块电路的连接电路如下图所示:
图2.5 STC89C52与各部分功能块电路的连接电路
其中P3.0及P3.1口接串口输入输出端,RST端接复位电路,XTAL2,XTAL1口接晶振电路,P1口接12864的数据线端,以及P3.3—P3.6分别接12864的使能端EN,RW,RS以及PSB端。P0口接上拉电阻外还接了按键,报警电路,以及温度检测电路。
2.2 显示电路模块
2.2.1 12864的功能和引脚介绍
显示电路采用12864液晶显示,P0由上拉电阻提高驱动能力,P1作为段码输出并作为12864的驱动显示。采用并行方式,P3口的高四位作为液晶位选端。采用动态扫描的方式显示。
表2.1 12864引脚功能
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.3-5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
H/L
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR
6
EN(SCLK)
H/L
使能信号
7
DB0
H/L
三态数据线
8
DB1
H/L
三态数据线
9
DB2
H/L
三态数据线
10
DB3
H/L
三态数据线
11
DB4
H/L
三态数据线
12
DB5
H/L
三态数据线
13
DB6
H/L
三态数据线
14
DB7
H/L
三态数据线
15
PSB
H/L
H:8位或4位并口方式,L:串口方式
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)
20
K
VSS
背光源负端
2.2.2 12864与单片机的连接电路
显示电路用到12864液晶显示,三态数据线接到P1口,当PSB=1时,12864是执行并口方式。EN端为使能端,当EN=1时,配合R进行读数据或指令.12864在运行中有三个切换界面。最后写入数据显示当时温度。12864的与单片机的连接电路如下图所示:
图2.6 显示电路
2.3 DS18B20温度传感器
2.3.1 DS18B20的功能和引脚介绍
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●温度以9或12位数字读数;
●零待机功耗;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
表2.2 18B20引脚功能
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。
2.3.2 DS18B20的测温原理
DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1,温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
2.3.3 DS18B20温度传感器与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。
温度传感器与单片机的接口电路如下:
图2.7 温度传感器与单片机的连接电路
2.4 HS1100湿度传感器
2.4.1湿度传感器的主要特性
HS1100/HS1101电容传感器具有完全互换性,高可靠性和长期稳定性,响应时间快速的特点,适用于线性电压输出和频率输出两种电路,适宜于制造流水线上的自动插件和自动装配过程等。其测量的范围相对湿度在1%~100%RH内,电容量由16pF变到200pF,其误差不大于±2%RH,响应时间小于5S;温度系数为0.04pF/℃。可见精度是较高的。
2.4.2湿度测量电路
HS1100/HS1101电容传感器在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。将电容的变化量准确地转变为计算机易于接受的信号,常有两种方法:一是将该湿敏电容置于桥式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再A/D转换为数字信号;另一种是将该湿敏电容置于555振荡电路中,将电容值的变化转为与之成反比的电压频率信号,可直接被计算机所采集。
频率输出的555测量振荡电路如图所示。集成定时器555芯片外接电阻、与湿敏电容C,构成了对湿敏电容C的充电回路。7端通过芯片内部的晶体管对地短路又构成了对湿敏电容C的放电回路,并将引脚2、6端相连引入到片内比较器,便成为一个典型的多谐振荡器,即方波发生器。另外,是防止输出短路的保护电阻,用于平衡温度系数。
图2.8 湿度测量电路
2.5报警
本系统设计四个按键,一个蜂鸣器。一个用于温度光标的闪烁,一个为确定键,两个分别用于设置报警温度的加和减。蜂鸣器是在当前温度不在上下限温度值的范围内自动报警。
蜂鸣器的工作过程:当1端接到来自单片机的低电平时,VCC电流下来,3端高电平,蜂鸣器接通。其按键和报警电路如下所示:
图2.9 按键电路
图2.10 报警电路
2.6 总的硬件设计图
系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警电路,按键设置电路、单片机主板电路等。其总电路设计图如下所示:
图2.11 硬件总设计图
2.7 PCB原理图
第三章 软件设计
3.1程序流程图
图3.1程序流程图
3.2 源程序
#include <reg52.h>
#include <intrins.h>
#include <math.h>
unsigned char code dispcode[]={0x14,0xd7,0x4c,0x45,
0x87,0x25,0x24,0x57,0x04,0x05,0xef,0xff};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,0,0,0,0,0,0};
typedef union
{
unsigned int i;
float f;
}value;
enum {TEMP,HUMI};
sbit DATA=P0^5; //数据端口
sbit SCK=P0^6;//时钟端口
sbit P0_0=P0^0;//key1用来切换显示
sbit P0_1=P0^1;//key2用来调温湿度的十位
sbit P0_2=P0^2;//kye3用来调温湿度的个位
sbit P0_4=P0^4;//kye4用来复位
#define noACK 0
#define ACK 1
#define MEASURE_TEMP 0X03//读温度指令
#define MEASURE_HUMI 0X05//读湿度指令
unsigned char mstcnt;
unsigned char dispbitcnt;
unsigned char humih,humil,temph,templ;
unsigned char i,j,cnt;
char tempset,humiset;
void display(float humi,float temp)//显示函数
{
int humi1,temp1;
humi1=(humi*10);
temp1=(temp*10);
if(temp1<0)//当温度为零下时
{
dispbuf[0]=10;//显示“-”号
temp1=abs(temp1); //取绝对值
}
else
{
dispbuf[0]=11;//什么也不显示
}
if(cnt==0)//显示实际测量的温湿度值
{
dispbuf[1]=temp1/100;//温度的十位
dispbuf[2]=temp1/10%10; //温度的个位
dispbuf[3]=temp1%10; //温度的小数位
dispbuf[4]=11; //什么也不显示
dispbuf[5]=humi1/100; //湿度的十位
dispbuf[6]=humi1/10%10;//湿度的个位
dispbuf[7]=humi1%10;//湿度的小数位
if((humi>humiset)||(temp>tempset))//比较报警
{
P0_4=0;//二极管亮
}
else
{
P0_4='Z';//二极管不亮
}
}
else
{
if(cnt==1)//显示设置的温度
{
if(temph>9)
{
dispbuf[0]=10;//显示“-”
}
else
{
dispbuf[0]=11;//什么也不显示
}
dispbuf[1]=temph%10;//设置温度的十位
dispbuf[2]=templ%10;//设置温度的个位
dispbuf[3]=11;
dispbuf[4]=11;
dispbuf[5]=11;
dispbuf[6]=11;
dispbuf[7]=11;
}
else //显示湿度
{
dispbuf[0]=11;
dispbuf[1]=11;
dispbuf[2]=11;
dispbuf[3]=11;
dispbuf[4]=11;
dispbuf[5]=humih%10;//设置湿度十位
dispbuf[6]=humil%10;//设置湿度的个位
dispbuf[7]=11;
}
}
}
void t0(void) interrupt 1 //中断函数
{
if(P0_0==0)//切换显示键
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
cnt++;
if(cnt>2)
{
cnt=0;
}
while(P0_0==0);
}
}
if(cnt==1)//显示设置的温度值,这时可以设置温度值
{
if(P0_1==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)//调温度的十位
{
temph++;
if(temph==15)//10-14分别表示-0——-4
{
temph=0;
}
}
while(P0_1==0);
}
if(P0_2==0)//调温度的个位
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
templ++;
if(templ==10)
{
templ=0;
}
}
while(P0_2==0);
}
}
else
if(cnt==2)//显示设置的湿度值,这时可以设置湿度值
{
if(P0_1==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)//调节湿度的十位
{
humih++;
if(humih==10)
{
humih=0;
}
}
while(P0_1==0);
}
if(P0_2==0)//调节湿度个位
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
humil++;
if(humil==10)
{
humil=0;
}
}
while(P0_2==0);
}
}
if(temph<10)
{
tempset=temph*10+templ;//温度是正数
}
else
{
tempset=(10-temph)-templ;//温度是负数
}
humiset=humih*10+humil;
mstcnt++;
if(mstcnt==8)//扫描数码管,每2S秒扫描一次
{
mstcnt=0;
if((dispbitcnt==2)||(dispbitcnt==6))//显示小数点
{
P1=dispcode[dispbuf[dispbitcnt]]&0xfb;
}
else
{
P1=dispcode[dispbuf[dispbitcnt]];
}
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
}
char s_write_byte(unsigned char value)//写一个字节的数据
{
unsigned char i,error=0;
for(i=0x80;i>0;i/=2)
{
if(i&value)
DATA=1;
else
DATA=0;
SCK=1;
_nop_();
_nop_();
_nop_();
SCK=0;
}
DATA=1;
SCK=1;
error=DATA;
SCK=0;
return error;
}
char s_read_byte(unsigned char ack)//读一个字节的数据
{
unsigned char i,val=0;
DATA=1;
for(i=0x80;i>0;i/=2)
{
SCK=1;
if(DATA)
{
val=(val|i);
}
SCK=0;
}
DATA=!ack;//ack为低电平时表示数据发送完毕
SCK=1;
_nop_();
_nop_();
_nop_();
SCK=0;
DATA=1;
return val;
}
void s_transstart(void)//传输启动时序
{
DATA=1;SCK=0;
_nop_();
SCK=1;
_nop_();
DATA=0;
_nop_();
SCK=0;
_nop_();
_nop_();
_nop_();
SCK=1;
_nop_();
DATA=1;
_nop_();
SCK=0;
}
void s_connectionreset(void)//通讯复位时序
{
unsigned char i;
DATA=1;SCK=0;
for(i=0;i<9;i++)
{
SCK=1;
SCK=0;
}
s_transstart();
}
char s_measure(unsigned char *p_value,unsigned char *p_checksum,
unsigned char mode)//测量函数
{
unsigned error=0;
unsigned int i;
s_transstart();
switch(mode)
{
case TEMP:error+=s_write_byte(MEASURE_TEMP);break;//写湿度指令
case HUMI:error+=s_write_byte(MEASURE_HUMI);break;//写温度指令
default :break;
}
for(i=0;i<65535;i++)
if(DATA==0) break;通讯完毕,数据线被拉底
if(DATA)
{
error+=1;
}
*(p_value) =s_read_byte(ACK);//读出数据的高八位
*(p_value+1)=s_read_byte(ACK);//读出数据的低八位
return error;
}
void calc_sth11(float *p_humidity,float *p_temperature)//转换物理量,从而得到想要的数据值
{
const float C1=-4.0;
const float C2=0.0405;
const float C3=-0.0000028;
const float T1=0.01;
const float T2=0.00008;
float rh=*p_humidity;
float t=*p_temperature;
float rh_lin;
float rh_true;
float t_c;
t_c=t*0.01-40;
rh_lin=C3*rh*rh+C2*rh+C1;
rh_true=(t_c-25)*(T1+T2*rh)+rh_lin;
if(rh_true<0.1) rh_true=0.1;
*p_temperature=t_c;
*p_humidity=rh_true;
}
void main()//主函数
{
value humi_val,temp_val;
unsigned char error,checksum;
unsigned int i;
s_connectionreset();//通讯复位
TMOD=0x02;//中断初始化
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
error=0;
error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI);
error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP);
if(error!=0)//如果error=1,从新复位
{
s_connectionreset();
}
else
{
humi_val.f=(float)humi_val.i;
temp_val.f=(float)temp_val.i;
calc_sth11(&humi_val.f,&temp_val.f);
display(humi_val.f,temp_val.f);
s_connectionreset();
}
for(i=0;i<40000;i++);
s_connectionreset();
}
}
总结与体会
通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
参考文献
1、李光飞,楼然苗,胡佳文等。单片机课程设计实例指导。北京航空航天
2、刘文涛.单片机语言C51典型应用设计。人民邮电出版社,2001
3、靳桅,潘育山,邬芝权.单片机原理及应用。西南交通大学出版社,2002
4、凌玉华.单片机原理及应用系统设计。中南大学出版社,2006
5、刘华东.单片机原理与应用。电子工业出版社,2003
6、高鹏,安涛,寇怀成等.电路设计与制版--Protel99入门与提高。人民邮电出版社,2001
7、王守刚.电路原理图与电路板设计教程。北京希望电子出版社,2000,
8、肖金球.单片机原理与接口技术。清华大学出版社,2004
9、余永权.FLASH单片机原理及应用。电子工业出版社,1997
10、何立民.单片机应用技术选编。北京航空航天大学出版社
11、胡汉才.单片机原理及系统。清华大学出版社,2002
12、张志良.单片机原理与控制技术。机械工业出版社,2002
专业实训
数字温湿度计的设计
班 级: 电子09-2班
学 号: 0906040206
姓 名: 高春旭
指导教师: 刘 超
展开阅读全文