基于单片机的教室电子打铃器

本文详细描述了一种基于单片机AT89C51设计的教室电子打铃器,包括设计方案选择、硬件设计(如LCD1602显示、DS1302时钟和按键控制)、以及部分关键代码,如主函数和蜂鸣器定时功能。最终实现了按照学校作息表自动打铃的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于单片机的教室电子打铃器

1、设计方案

1.1设计任务要求

要求按学校上下课铃响铃次序设计电子打铃器。其中,上下课作息表如下:

表1作息表
表1.1教室作息表
内容时间
第1节课8:00-8:45
第2节课8:55-9:40
第3节课10:00-10:45
第4节课10:55-11:40
第5节课2:30-3:15
第6节课3:25-4:10
第7节课4:30-5:15
第8节课5:25-6:10

1.2设计方案选择

该电子自动打铃器的单片机外设框图如下,它主要包含了单片机最小系统、LCD1602、按键驱动、蜂鸣器驱动以及DS1302实时时钟等。
在这里插入图片描述

图1.整体架构

3. 硬件设计

3.1仿真部分

3.1.1 AT89C51单片机最在这里插入图片描述
图2.单片机最小系统电路
3.2 DS1302时钟电路

在这里插入图片描述

图3.DS1302时钟计时电路
3.3 LCD1602显示电路

在这里插入图片描述

图4.LCD1602时间显示电路

3.2 PCB设计

在这里插入图片描述

图5.pcb正面

在这里插入图片描述

图6.pcb背面

4. 部分代码

main.c

#include "lcd1602.h"
#include "DS1302.h"
#include "key.h"
#define uint unsigned int
#define uchar unsigned char

 sbit LED0=P2^0;
 int run_end_flag=0;
extern struct ds1302_ ds1302_data;
// 8:00 8:55 10:00 10:55 3:00 3:55 5:00 5:55
unsigned char code alarmTime[8][3] = {
										{0x08,0x00,0x00},
										{0x08,0x55,0x00},
										{0x10,0x00,0x00},
										{0x10,0x55,0x00},
										{0x15,0x00,0x00},
										{0x15,0x55,0x00},
										{0x17,0x00,0x00},
										{0x17,0x55,0x00}
										};  //存储每节课打铃时间


unsigned char currentLesson = 0;            // 当节课索引

int key_FLAG=0;
char page_FLAG=0;

void main()
{
	BUZZ=1;
	IE=0x81;
	led=0;
	init();
	DS1302_Init();
	delay(3);
	DS1302_Write_Reg(0x8e,0X00);
		delay(3);
	DS1302_Write_Reg(0x80,0x55);
		delay(3);
	DS1302_Write_Reg(0x82,0x59);
		delay(3);
	DS1302_Write_Reg(0x84,0x07);
		delay(3);

	clear_lcd();           
	while(1)
	{

	// BUZZ=!BUZZ;
		if(key_page_change==0)
		{
			delay(2);
			if(key_page_change==0)
			{
				clear_lcd();
	 			page_FLAG=!page_FLAG;
				while(key_page_change==0);	
			}	
		}
		if(page_FLAG==0)
		{
			DisplayTime();
			ring_flag=judge_ring(ds1302_data.hour,ds1302_data.minute,ds1302_data.second);
			if(ring_flag&&run_end_flag==0)
			{
				 TMOD=0x01;
				 TH0=(65536-50000)/256;
				 TL0=(65536-50000)%256;
				 EA=1;
				 ET0=1;
				 TR0=1;

			}	  				
		}
		else
		{
			SET_PARA_page();
		}
	//	LED0=!LED0;		  	
		delay(1);
	}
}
char judge_ring(u8 hour,u8 min,u8 sec)
{
	int i=0;
	for(;i<8;i++)
	{
		if(hour==alarmTime[i][0]&&min==alarmTime[i][1]&&sec<0x10)
		{
			run_end_flag=0;
			return 1;
		}
	}
	return 0;
}
int cnt=0;
int ring_cnt=0;
void ring_isr(void )  interrupt 1
{
   cnt++;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   if(cnt==3)
   {
      BUZZ=~BUZZ;
	 ring_cnt++;
	 cnt=0;
	 if(ring_cnt>4)
	 {
		run_end_flag=1;
		BUZZ=0;
		ring_cnt=0;
		TR0=0;
	 }			   
   }
}

4.实物测试效果

在这里插入图片描述

图7.实物正面

上电测得,实时日期时间显示如下:

在这里插入图片描述

图8.实时更新时间效果

当实时时间到达下课时间,蜂鸣器部分便会发出声响,至此课设完成。

课程设计-基于C51单片机的自动打铃系统 : 摘 要 本次设计中的LED数码管电子时钟电路采用24小时制记时方式,本次设计采用AT89C51单片机的扩展芯片和6个PNP三极管做驱动,由三块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。设计采用AT98C51单片机,使用5V电源供电,并且在按键的作用下可以进行调时,调分,复位功能。计时数据的更新在计算机C语言的驱动下每秒自动进行一次,但不需程序干预其输出状态。 关键词:AT89C51; 数码管 ; LED 第一章 设计简介及方案论述 1.1作息时间控制钟系统概述: 本设计是一个具有报时功能的作息时间控制钟。它利用89C51单片机的2Hz时基计时,进行年历计算,并用的蜂鸣器驱动模块将它报出来;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由七段显示驱动模块、蜂鸣器驱动模块和按钮控制模块三部分组成,四个按键用于报时及校正时间。现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。 1.2本设计任务和主要内容: (1)设计任务 用可编程器件为主体,设计并制作一台自动打铃系统。要求完成的作品必须固化软件,测试检查时上电即可工作,不允再用计算机下载。实现能够显示当前的时间,同时能够在规定的时间点控制打铃装置打出预期的铃声。另外增设四个按钮,通过分配以实现对时间的调整,包括对时钟、分钟的增加和减少,秒钟的清零;以及强制打铃和关闭打铃。 (2)主要内容 1、基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。 2、能设置当前时间(含上、下午,时,分) 3、能实现基本打铃功能,规定: 上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。 下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。 铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。 第二章 系统主要硬件电路设计 2.1单片机总体设计思路 (1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏; (2)进行软件设计,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒; (3)在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能; (4)设计打铃执行机构,完成自动打铃功能。 2.2各功能模块程序实现原理分析
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪头少年@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值