基于51单片机的校园打铃及灯控制系统

目录

具体实现功能

设计介绍

资料内容

全部内容

资料获取


具体实现功能

具体功能:
(1)实时显示当前时间(年月日时分秒星期),LED模式指示灯亮。
(2)按下“打铃+”和“打铃-”按键可查看24个打铃时间,模式指示灯灭,此时可通过4个按键调整打铃时间的时和分。
(3)打铃时间到,可实现蜂鸣器响、播放音乐(1分钟)、打开/关闭宿舍灯、路灯、教学楼灯等功能(详见打铃时间表)。

仿真演示视频:

基于51单片机的校园打铃及灯控制系统-仿真视频

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

///
/***************主函数*****************/
void main()
{uchar k=0,m=0;uchar week=0;beep=1;init_read();//初始化Ds1302ReadTime();TIME[0]&=0X7F;Ds1302Init();	lcd_init();      //调用液晶屏初始化子函数InitialSound();led1=0;           //打开LCD的背光电源led4=0;led3=0;led2=0;limit[0]=7;limit[1]=40;limit[2]=8;limit[3]=10;limit[4]=8;limit[5]=25;limit[6]=9;limit[7]=10;	limit[8]=9;limit[9]=20;	limit[10]=10;limit[11]=5;limit[12]=10;limit[13]=25;	limit[14]=11;limit[15]=10;limit[16]=11;limit[17]=20;	limit[18]=12;limit[19]=5;limit[20]=14;limit[21]=20;				limit[22]=14;limit[23]=30;limit[24]=15;limit[25]=15;limit[26]=15;limit[27]=25;limit[28]=16;limit[29]=10;limit[30]=16;limit[31]=30;	limit[32]=17;limit[33]=15;limit[34]=17;limit[35]=25;limit[36]=18;limit[37]=10;limit[38]=19;limit[39]=20;limit[40]=19;limit[41]=30;limit[42]=21;limit[43]=10;limit[44]=21;limit[45]=40;limit[46]=23;limit[47]=00;while(1){led1=1;	led=!flag;//点亮指示灯if(!key6 &&(k!=6))//组号+1{k=6;flag=0;if(num<25)num++;if(num==25){num=0;flag=1;//显示当前时间}}if(!key1 &&(k!=1))//组号-1{k=1;if(num>1)num--;else{flag=1;//显示当前时间}}if(!key2 &&(k!=2))//时+1{k=2;if(led)shi_jia();else{m=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(m<23)m++;elsem=0;TIME[2]=(m/10<<4)+m%10;Ds1302Init();}}if(!key3 &&(k!=3))//时-1{k=3;if(led)shi_jian();else{m=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(m>0)m--;elsem=23;TIME[2]=(m/10<<4)+m%10;Ds1302Init();}}if(!key4 &&(k!=4))//分+1{if(led)fen_jia();else{m=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(m<59)m++;elsem=0;TIME[1]=(m/10<<4)+m%10;Ds1302Init();}k=4;}if(!key5 &&(k!=5))//分-1{if(led)fen_jian();else{m=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(m>0)m--;elsem=59;TIME[1]=(m/10<<4)+m%10;Ds1302Init();}k=5;}if(P3==0xff)k=0;Ds1302ReadTime();//读取时间if(flag==0){if(num==1){write_sfm(0,num);//闹钟编号write_sfm(3,limit[0]);//时write_sfm(6,limit[1]);//分}else if(num==2){write_sfm(0,num);//闹钟编号write_sfm(3,limit[2]);//时write_sfm(6,limit[3]);//分			}else if(num==3){write_sfm(0,num);//闹钟编号write_sfm(3,limit[4]);//时write_sfm(6,limit[5]);//分			}else if(num==4){write_sfm(0,num);//闹钟编号write_sfm(3,limit[6]);//时write_sfm(6,limit[7]);//分				}else if(num==5){write_sfm(0,num);//闹钟编号write_sfm(3,limit[8]);//时write_sfm(6,limit[9]);//分				}else if(num==6){write_sfm(0,num);//闹钟编号write_sfm(3,limit[10]);//时write_sfm(6,limit[11]);//分	}else if(num==7){write_sfm(0,num);//闹钟编号write_sfm(3,limit[12]);//时write_sfm(6,limit[13]);//分			}else if(num==8){write_sfm(0,num);//闹钟编号write_sfm(3,limit[14]);//时write_sfm(6,limit[15]);//分				}else if(num==9){write_sfm(0,num);//闹钟编号write_sfm(3,limit[16]);//时write_sfm(6,limit[17]);//分			}else if(num==10){write_sfm(0,num);//闹钟编号write_sfm(3,limit[18]);//时write_sfm(6,limit[19]);//分	}else if(num==11){write_sfm(0,num);//闹钟编号write_sfm(3,limit[20]);//时write_sfm(6,limit[21]);//分			}else if(num==12){write_sfm(0,num);//闹钟编号write_sfm(3,limit[22]);//时write_sfm(6,limit[23]);//分			}else if(num==13){write_sfm(0,num);//闹钟编号write_sfm(3,limit[24]);//时write_sfm(6,limit[25]);//分	}else if(num==14){write_sfm(0,num);//闹钟编号write_sfm(3,limit[26]);//时write_sfm(6,limit[27]);//分	}else if(num==15){write_sfm(0,num);//闹钟编号write_sfm(3,limit[28]);//时write_sfm(6,limit[29]);//分				}else if(num==16){write_sfm(0,num);//闹钟编号write_sfm(3,limit[30]);//时write_sfm(6,limit[31]);//分				}else if(num==17){write_sfm(0,num);//闹钟编号write_sfm(3,limit[32]);//时write_sfm(6,limit[33]);//分				}else if(num==18){write_sfm(0,num);//闹钟编号write_sfm(3,limit[34]);//时write_sfm(6,limit[35]);//分	}else if(num==19){write_sfm(0,num);//闹钟编号write_sfm(3,limit[36]);//时write_sfm(6,limit[37]);//分				}else if(num==20){write_sfm(0,num);//闹钟编号write_sfm(3,limit[38]);//时write_sfm(6,limit[39]);//分	}else if(num==21){write_sfm(0,num);//闹钟编号write_sfm(3,limit[40]);//时write_sfm(6,limit[41]);//分				}else if(num==22){write_sfm(0,num);//闹钟编号write_sfm(3,limit[42]);//时write_sfm(6,limit[43]);//分				}else if(num==23){write_sfm(0,num);//闹钟编号write_sfm(3,limit[44]);//时write_sfm(6,limit[45]);//分			}else if(num==24){write_sfm(0,num);//闹钟编号write_sfm(3,limit[46]);//时write_sfm(6,limit[47]);//分	}else{;}}else{write_sfm(6,(TIME[0]>>4)*10+(TIME[0]& 0x0f));//秒,从第二行第8个字后开始显示(调用时分秒显示子函数)write_sfm(3,(TIME[1]>>4)*10+(TIME[1]& 0x0f));//分,从第二行第5个字符后开始显示write_sfm(0,(TIME[2]>>4)*10+(TIME[2]& 0x0f));//小时,从第二行第2个字符后开始显示//显示日、月、年数据:write_nyr(9,(TIME[3]>>4)*10+(TIME[3]& 0x0f));//日期,从第二行第9个字符后开始显示write_nyr(6,(TIME[4]>>4)*10+(TIME[4]& 0x0f));//月份,从第二行第6个字符后开始显示write_nyr(3,(TIME[6]>>4)*10+(TIME[6]& 0x0f));//年,从第二行第3个字符后开始显示week = (TIME[5]>>4)*10+(TIME[5]& 0x0f)-1;if(week>=7){week=1;}if(week<1){week=7;}write_nyr(12,week);//日期,从第二行第9个字符后开始显示}bell_if();//响铃}
}

程序运行结果如图:

全部内容

全部资料包括程序(keil5)、protues仿真(protues8.7)、设计说明、答辩PPT、开发资料、资料使用介绍、仿真视频、最小系统介绍视频等。

资料获取

https://docs.qq.com/doc/DT2NwdVByRkRTWXNP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/87105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP+mysql雪里开轻量级报修系统 V1.0Beta

# PHP雪里开轻量级报修系统 V1.0Beta ## 简介 这是一个基于PHP7和MySQL5.6的简易报修系统&#xff0c;适用于学校、企业等机构的设备报修管理。 系统支持学生提交报修、后勤处理报修以及系统管理员管理用户和报修记录。 初代版本V1.0&#xff0c;尚未实际业务验证&#xff0c;…

XCTF-misc-base64÷4

拿到一串字符串 666C61677B45333342374644384133423834314341393639394544444241323442363041417D转换为字符串得到flag

Mini DeepSeek-v3训练脚本学习

Mini DeepSeek-v3 训练脚本详细技术说明(脚本在文章最后) &#x1f4cb; 概述 这是一个实现了Mini DeepSeek-v3大语言模型的训练脚本&#xff0c;集成了多项先进的深度学习技术。该脚本支持自动GPU选择和分布式训练&#xff0c;适合在多GPU环境下训练Transformer模型。 &…

FPGA 的硬件结构

FPGA 的基本结构分为5 部分&#xff1a;可编程逻辑块&#xff08;CLB&#xff09;、输入/输出块&#xff08;IOB&#xff09;、逻辑块之间的布线资源、内嵌RAM 和内嵌的功能单元。 &#xff08;1&#xff09;可编程逻辑块&#xff08;CLB&#xff09; 一个基本的可编程逻辑块由…

算法专题八: 链表

1.两数相加 题目链接&#xff1a;2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode…

5G+边缘计算推动下的商品详情API低延迟高效率新方案

在电商行业&#xff0c;商品详情API的性能直接关系到用户体验与平台竞争力。传统云计算模式在处理高并发请求时&#xff0c;常面临网络延迟高、带宽成本大等问题。而5G与边缘计算的结合&#xff0c;为商品详情API的低延迟高效率提供了新方案。本文将深入探讨这一新方案&#xf…

【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略

一、引言 为了在CentOS系统上高效地开发和运行Python项目&#xff0c;我们常常需要借助Miniconda3来管理Python环境。本文将详细介绍如何在CentOS系统上安装Miniconda3&#xff0c;并将Python项目部署到后台运行。 二、Miniconda3和CentOS系统介绍 Miniconda3介绍 Minicond…

【读点论文】A Survey on Open-Set Image Recognition

A Survey on Open-Set Image Recognition Abstract 开集图像识别(Open-set image recognition&#xff0c;OSR)旨在对测试集中已知类别的样本进行分类&#xff0c;并识别未知类别的样本&#xff0c;在许多实际应用中支持鲁棒的分类器&#xff0c;如自动驾驶、医疗诊断、安全监…

使用DuckDB查询DeepSeek历史对话

DeepSeek网页版在左下角个人信息/系统设置的账号管理页签中有个“导出所有历史对话”功能&#xff0c;点击“导出”&#xff0c;片刻就能生成一个deepseek_data-2025-06-14.zip的文件&#xff0c;里面有2个json文件&#xff0c;直接用文本编辑器查看不太方便。 而用DuckDB查询却…

多线程下 到底是事务内部开启锁 还是先加锁再开启事务?

前言 不知大家是否有观察到一个最常见的错误&#xff1a; 先开启事务&#xff0c;然后针对资源加锁&#xff0c;操作资源&#xff0c;然后释放锁&#xff0c;最后提交事务 你是否发现了在这样的场景下会出现并发安全的问题&#xff1f; &#xff08;提示&#xff1a;一个线程A…

Javascript解耦,以及Javascript学习网站推荐

一、学习网站推荐 解构 - JavaScript | MDN 界面如下&#xff0c;既有知识点&#xff0c;也有在线编译器执行代码。初学者可以看看 二、Javascript什么是解构 解构语法是一种 Javascript 语法。可以将数组中的值或对象的属性取出&#xff0c;赋值给其他变量。它可以在接收数…

Java大模型开发入门 (11/15):让AI自主行动 - 初探LangChain4j中的智能体(Agents)

前言 在过去的十篇文章里&#xff0c;我们已经打造出了一个相当强大的AI应用。它有记忆&#xff0c;能进行多轮对话&#xff1b;它有知识&#xff0c;能通过RAG回答关于我们私有文档的问题。它就像一个博学的“学者”&#xff0c;你可以向它请教任何在其知识范围内的问题。 但…

Qt KDReports详解与使用

Qt KDReports详解与使用 一、KD Reports 简介二、安装与配置三、核心功能与使用1、创建基础报表2、添加表格数据3、导出为 PDF4、XML报表定义 四、高级功能1、动态数据绑定2、自定义图表3、模板化设计4、页眉页脚设置 五、常见问题六、总结七、实际应用示例&#xff1a;发票生成…

Spring Cloud 原生中间件

&#x1f4dd; 代码记录 Consul&#xff08;服务注册与发现 分布式配置管理&#xff09; 拥有服务治理功能&#xff0c;实现微服务之间的动态注册与发现 ❌不在使用Eureka&#xff1a;1. 停更进维 2. 注册中心独立且和微服务功能解耦 Consul官网 Spring官方介绍 三个注册中…

CMake实践: 以开源库QSimpleUpdater为例,详细讲解编译、查找依赖等全过程

目录 1.环境和工具 2.CMake编译 3.查找依赖文件 3.1.windeployqt 3.2.dumpbin 4.总结 相关链接 QSimpleUpdater&#xff1a;解锁 Qt 应用自动更新的全新姿势-CSDN博客 1.环境和工具 windows 11, x64 Qt5.12.12或Qt5.15.2 CMake 4.0.2 干净的windows 7&#xff0c;最好是…

WordToCard制作高考志愿填报攻略小卡片【豆包版】

一、什么是WordToCard WordToCard是一个免费的工具&#xff0c;能够将Word文档自动转换为美观的知识卡片或图文海报。以下是它的主要特点&#xff1a; 功能优势 格式支持&#xff1a;支持标题、列表、表格、LaTeX公式等多种格式。模板丰富&#xff1a;提供多种风格的模板&am…

什么是PostCSS

PostCSS是一个用 JavaScript 工具和插件转换 CSS 代码的工具 PostCSS是基于 JavaScript 的 CSS 转换引擎&#xff0c;通过插件系统对 CSS 进行现代化处理&#xff0c;PostCSS 不是预处理器&#xff0c;而是 CSS 的编译器工具链&#xff0c;如同 Babel 之于 JavaScript&#xf…

游戏引擎学习第315天:取消排序键的反向顺序

仓库:https://gitee.com/mrxiao_com/2d_game_8 必须保证代码能跟上不然调试很麻烦 回顾并为今天定调 目前正处于对引擎中 Z 轴处理方式进行修改的阶段。上次我们暂停在一个节点&#xff0c;当时我们希望不再让所有屏幕上的精灵都必须通过同一个排序路径进行排序。我们想要将…

MySQL EXPLAIN 详解

MySQL EXPLAIN 详解:掌握 SQL 性能优化的关键工具 在日常数据库开发和优化过程中,很多开发者会遇到 SQL 查询变慢、索引未命中等问题。MySQL 提供了一个非常实用的工具 —— EXPLAIN 关键字,它可以帮助我们分析 SQL 查询的执行计划,识别潜在的性能瓶颈,从而有针对性地进行…

k8s使用私有harbor镜像源

前言 在node上手动执行命令可以正常从harbor拉取镜像&#xff0c;但是用k8s不行&#xff0c;使用kubectl describe pods xxx 提示未授权 unauthorized to access repository。 处理方法 创建一个secrete资源对象。以下示例中 registry-harbor 为secret资源对象的名称。除了邮…