基于51单片机的非接触式红外测温仪设计
本设计是基于51单片机为控制芯片,TN901为测温模块实现的温度测量,并将温度数值显示在lcd1602上,本设计较于传统的水银体温计有诸多优点,不用再藏在胳肢窝测量那么麻烦,只需要将测温模块对准被测物体便可采集温度将温度显示在液晶屏上。同时该设计也可用于有毒气体的室内测量某个时间温度,也可测量病房内病疫人群的环境温度。
该设计用到了模块有单片机最小系统模块,按键模块,lcd1602液晶显示模块,蜂鸣器报警模块,TN901红外测温模块,led指示灯模块。
单片机使用STC89c52具有8kB的存储空间,该类51单片机是目前使用面最广的。单片机最小系统有晶振,复位电源组成。晶振是产生时钟的源泉。
//宏定义
#define uchar unsigned char
#define uint unsigned int
//头函数
#include <reg52.h>
/***********全局变量定义**************/
float iTemp;
float HJTemp,MBTemp;
#include <TN9.h>
//天祥板子的外部中断1
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//数码管显示
void display(uint M,uint C)
{
dula=0;
P0=table[M/100];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay_ms(1);
P0=table[M/10%10];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay_ms(1);
P0=table[M%10];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay_ms(1);
dula=0;
P0=table[C/100];
dula=1;
dula=0;
wela=0;
P0=0xf7;
wela=1;
wela=0;
delay_ms(1);
P0=table[C/10%10];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay_ms(1);
P0=table[C%10];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay_ms(1);
}
//主函数
void main()
{
uint temp1,temp2,i;
TN_IRACK_EN();
while(1)
{
while(TN_IR_GetData()); //测量环境温度
temp1=MBTemp;
temp2=HJTemp;
for(i=0;i<10;i++)
display(temp1,temp2);
}
}
按键模块有4个按键组成,分为功能键,设置键,阅读建,复位键。选择功能键可以查看当前的报警温度上下限,蜂鸣器报警状态,led灯指示状态。选择设置键时,按阅读建,复位键可以加减当前的报警温度,还有蜂鸣器报警的开关,led的开关。
Lcd1602模块是可以显示字符和数字的显示器,是输出设备。
蜂鸣器模块有蜂鸣器组成,可发出胡声响。表2 1602的内部显示地址
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
序号 |
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
0A |
0B |
0C |
0D |
0E |
0F |
第一行 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
4A |
4B |
4C |
4D |
4E |
4F |
第二行 |
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。 在软件中设置温度的代码是:30.0℃(00110011B,00110000B,00101110B, 00110000B,01000011B);37.0℃(00110011B,00110111B,00101110B,00110000B, 01000011B);60℃(00110110B,00110000B,01000011B)。
在液显电路连接上,LCD1602显示模块可以直接和单片机AT89C51直接接口,液晶显示的D0~D7八个双向端口接AT89C51单片机的P0口的P0.0~P0.7,单片机的P0口可以作为通用的输入,输出端口使用,此时,若要驱动NMOS或其他拉电流负载时,需外接上拉电阻,才能使该位高电平有效,所以中间接10K的排阻,来决定显示器高低点位,是否要显示。
由于VEE端接电源时接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,对比度过低会使屏幕模糊不清,所以使用时可以通过一个10K的电位器来调整它的对比度。LCD1602的RS寄存器选择端口接单片机的P2.1口,通过软件程序中对此端口的设置来决定选择的寄存器。液显的RW端口直接接单片机的P2.2口,高电平时进行对输入的数字信号进行读数。使能E端接单片机的P2.3口,使能端由高电平到低电平时开始执行命令,把读数显示出来。
TN901是中国台湾生产的红外测温仪,温度范围广~33--220度。电源电压3.3-4.5v串口输出,也可以直接和单片机连接。
硬件电路图
TN9驱动
实物图
文档 源码 电路图下载
[lv]链接:https://pan.baidu.com/s/1eDqn9FB3Jk0rFxZPk7JyaA
提取码:qsjw
复制这段内容后打开百度网盘手机App,操作更方便哦
[/lv]
最新评论