基于51单片机的智能电子钟

        利用单片机完成多功能电子钟的设计,多功能电子钟由51单片机控制,采用矩阵按键对电子表进行控制,可进行闹钟设定、时间矫正。闹钟时间一到,以蜂鸣器发声、LED发光的形式提示。用DHT11测量温度和湿度,通过51单片机收集并处理数据,通过LCD1602液晶屏显示时间和温湿度。

设计基本要求:

(1)能准确计时,以数字形式显示时、分、秒。

(2)小时以24小时计时形式,分秒计时为60进位。

(3)采用矩阵按键对电子表进行控制,可进行闹钟设定、控制及时间设定。

(4)闹钟功能:可任意设定闹钟时间,一旦走时到该时间,能以蜂鸣器发声、LED发光的形式提示。

(5)用测量并显示温度和湿度。

(6)显示方式采用LCD1602液晶屏。

硬件选择

单片机选择

单片机采用AT89C51,对于多功能电子钟来说AT89C51的硬件资源足够应付。而且AT89C51单片机出现早,网上资料多,同时具有:资源丰富,指令简单,电路简单,构造简洁,硬件设计方便。所以采用这款单片机。

温湿度传感器选择

温湿度传感器采用DHT11,DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。能满足日常需求。

显示屏选择

显示屏采用LCD1602液晶屏,LCD1602是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它同时具有耗电少,体积小,辐射低,能显示32个字符等优点,显示时钟足够满足要求。

输入按键的选择

用多个按钮组成矩阵键盘。

 软件设计

时间设置、闹钟设置和温度显示是智能电子钟的几个核心功能,用户们可以按实际需求来调整和使用。

时间设置是闹钟程序中的核心,它可以用户设置所需的时间,例如小时和分钟。并且存储在单片机内部,用户可以按实际需求任意更改和查看。

闹钟设置是另一个重要的功能,它允许用户设置闹钟。如果设置闹钟,程序将在设定时间响铃提醒用户。

温湿度显示是一个额外的功能,它可以帮助用户监测周围环境的温度。在这个模块中,程序从传感器获取环境温度,并将其显示在lcd显示器上。这个功能可以帮助用户了解周围环境的温度湿度。

总之,时间设置、闹钟设置和温度显示是闹钟应用程序中的三个核心功能,用户可以根据需要和喜好选择在单片机中调用在屏幕中显示它们。

系统电路设计

软件代码

#include <REGX51.H>
#include <LCD1602.H>
#include <Alarm.h>
#include <key.h>
#include <dht11.h>
#define uchar unsigned char				//宏定义,用uchar代替unsigned char
#define uint unsigned int				//宏定义,用uint代替unsigned int
uchar s=0,min=0,hour=0;					//时间全局变量
uchar alarmstatus=0,set_h=0,set_m=0,set_s=0;  //闹钟状态标志位 0等待时间 1到设定时间     闹钟时间全局变量
uchar setup_s=0,setup_m=0,setup_h=0;					//设置时间全局变量
uchar settimestatus=0;												//闹钟状态标志 0正常 1设置时间 2设置闹钟
char Humi,Temp;															  //温湿度变量
void delayms(uint ms);												//延时
void main(void)
{
	char a=-1;
	init_alarm();																//初始化闹钟
	P1=0x00;
	while(1)
	{
		if(settimestatus>0)	 settimedisplay();		//显示设置时间
		KeyDown();																//键盘扫描
		if(settimestatus==0)											//在设置时间、闹钟不读取dht11
		{
			if((s-a)>0)
			{
				a=s;
				DHT11_receive();											//dht11读取数据
				HumiTempDisplay(Humi,Temp);						//显示读取到的数据	
				if(a==59)	a=-1;
			}
		}
	}
}

void delayms(uint ms)					//1ms延时函数
{
	uchar i;
	while(ms--)
		for(i=0;i<100;i++);
}
#include <Alarm.h>
#include <REGX51.H>
#include <LCD1602.h>

sbit RLED=P2^7;
sbit beep=P3^2;
static int temp=0;

void init_alarm(void)						//时钟初始
{
	lcd_init();						//lcd1603初始化
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	TMOD=0x01;						//定时器初始化
	EA = 1;								//中断总开关
	ET0 = 1;							//t0中断开关
	TR0 = 1;							//开始计数
	RLED=0;
	beep=0;
}

void alarmrun(void)							//闹钟运行
{
	if(hour==set_h&&min==set_m&&s==set_s)		//时间判断
			alarmstatus=200;								//闹钟状态		闪烁时间alarmstatus=Tx50ms
	if(alarmstatus>0)										//判断闹钟是否在响
	{
		RLED=~RLED;													//LED闪烁
		beep=~beep;														//蜂鸣器叫
		alarmstatus--;
	}
	else
	{
		RLED=0;
		beep=0;
	}
}


void timerun(void)							//时间运行
{
	temp++;
	if(temp>20)
	{
	s++;
	temp=0;
	}
	if(s>59)							//判断是否满足进位
	{
		min++;
		s=0;
	}
	if(min>59)						//判断是否满足进位
	{
		hour++;
		min=0;
	}
	if(hour>23)						//判断是否满足进位
	{
		hour=0;
	}
	if(settimestatus==0)
	timedisplay();				//时间显示函数
}

void t0Intr() interrupt 1				//计时中断
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	timerun();
	alarmrun();	
}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智能电子时钟是一种集计时、闹钟、天气预报、温度显示等功能为一体的电子产品。本文将介绍基于51单片机智能电子时钟设计。 1.硬件设计 (1)主控芯片:使用STC89C52RC作为主控芯片,其具有8KB的Flash存储器和256B的RAM存储器,可满足本设计的需求。 (2)时钟模块:使用DS1302时钟模块,它具有精度高、稳定性好、功耗低等优点。 (3)显示模块:使用共阳数码管进行显示,可显示时间、日期、温度等信息。 (4)温度传感器:使用DS18B20数字温度传感器,可实现对室内温度的实时监测。 (5)按键模块:使用4个按键,分别为设置、加、减、确认,用于设置时间、日期、闹钟等参数。 2.软件设计 (1)时钟控制:使用DS1302时钟模块,读取当前的时间和日期,并进行显示。 (2)温度检测:使用DS18B20数字温度传感器,实现对室内温度的实时监测,并进行显示。 (3)闹钟功能:设置闹钟时间,并在到达设定时间时触发闹钟。 (4)按键控制:通过对按键的检测,实现对时间、日期、闹钟等参数的设置和调整。 3.总结 本文介绍了基于51单片机智能电子时钟设计,通过硬件模块和软件程序的结合,实现了时间显示、温度检测、闹钟功能等多种功能。该设计具有结构简单、易于制作、使用方便等优点,可满足日常生活中对电子时钟的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值