电子温度闹钟
———吴伟
a.功能简介:
该电子温度计是由51单片机控制实现温度测量的,其测温范围:-55~125 ,使用的温度传感器位DS18b20。并提供低温高温报警,报警温度可设定,其设定
由4个按键控制,高温低温的报警设置可由自己任意设定,只要不超过其测量范围。当所测温度达到其设置的警界温度时蜂鸣器会一直响。
本温度计采用五位数码管显示其测量温度,第一位显示正负温度,如果是正温度,则显示一个“笑脸”,负温显示的是负号“—”,中间三位显示的是温度值,有一位小数,最后一位数码管是显示的温度负号“℃”。其有关按钮说明如下:
按钮一(与P3^4相连),按一次进入报警设定,第二次推出设定 按钮二(与P3^5相连),设定是菜单切换
按钮三(与P3^6相连),减设定
按钮四(与P3^7相连),加设定
在使用该温度计时,想要设定高温或低温,必须先启动这两个开关,当开关打开时,第二位数码管显示F,当开关关闭时显示P.当设置高温时第一位数码管显示显示H(high),设置低温时第一位数码管显示L(low).
b.硬件接法:
该作品的全部控制单元是由51单片机完成的,一共用了五位数码管,全部用来显示温度,其控制位从左到右为P0^3,P0^4,P0^5,P0^6,P0^7.另采用四个按键辅助软件进行调节,其控制位分别为P3^4,P3^5,P3^6,P3^7.(具体功能见程序
。
c.作品有待改进之处:
可以经适当改装,将温度计单独用线引出来,便于各种需要控制温度的场合,比如空调的温度控制,锅炉的控制等.
d.程序清单:
#include "reg52.h"
#include "absacc.h"
unsigned char code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xf8,0x80,0x90,};/*0~9的数码管段码*/ //共阳数码管
sbit P0_0=P0^0;
sbit DQ=P1^0; //c51与DS18B20通信口
sbit P27=P2^7; //小数点
sbit RED=0x97; //高温报警灯
sbit GREEN=0x96; //低温报警灯
sbit SET=P3^4; //以下按钮设置
sbit NEXT=P3^5;
sbit REDUCE=P3^6;
sbit ADD=P3^7;
unsigned char tempL=0; //温度低八位
unsigned char tempH=0; //温度高八位
float temperature; //显示温度值
float temperatureH=35,temperatureL=0; //报警温度
int tH=1,tL=1;//报警状态,1为关闭
int m,k=1,l,keyon,keytype,out=0;//设置报警温度时使用的中间变量,其中k就为实际测得的温度
void delay(unsigned int time)
{
unsigned int n;
n=0;
while(n