19 基于51单片机的倒计时音乐播放系统设计

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

五个按键,分别为启动按键,则LCD1602显示倒计时,音乐播放
设置按键,可以设置倒计时的分秒,然后加减按键,还有最后一个暂停音乐按键。

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。
在这里插入图片描述

三、程序编程

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include "intrins.h"											   #define     u8  			unsigned char#define     u16   		unsigned int#define     uchar  			unsigned char#define     uint   		unsigned int//温度值全局变量int fen=3,miao=0,tt,flag,flag1;					 			//用于读取ADC数据unsigned char timer0h,timer0l,time;//timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间unsigned int num;signed int fre;                   //对应频率数据表的地址static int gqbf=0;void delay(unsigned char t);	   //延时子函数,控制发音的时间长度void delayms(unsigned int t);	   //普通延时子程序,可用于按键消抖void song(void);		           //演奏一个音符void music_play(void);	           //播放歌曲//管脚声明 sbit speaker   	 =P2^0;				 //蜂鸣器sbit key1    	 =P1^0;	
sbit key2    	 =P1^1;	
sbit key3    	 =P1^2;	
sbit key4    	 =P1^3;	
sbit key5      =P1^4;
sbit led       =P3^0;/********************************************************************
* 名称 : delay_1ms()
* 功能 : 延时1ms函数
* 输入 : q
* 输出 : 无
***********************************************************************/void delay_ms(uint q){uint i,j;	for(i=0;i<q;i++)		for(j=0;j<110;j++);
}/***********************************************************************************************************
LCD1602相关函数
***********************************************************************************************************///LCD管脚声明 (RW引脚实物直接接地,因为本设计只用到液晶的写操作,RW引脚一直是低电平)sbit LCDRS = P2^7;
sbit LCDEN = P2^6;
sbit D0		 = P0^0;
sbit D1		 = P0^1;
sbit D2		 = P0^2;
sbit D3		 = P0^3;
sbit D4		 = P0^4;
sbit D5		 = P0^5;
sbit D6		 = P0^6;
sbit D7		 = P0^7;  //《烟花易冷》unsigned char code song1\[\]={     5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2, 5,1,2, 6,1,6, 0,0,0 };unsigned char code FREQH\[\]={    0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    //低音12345670xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            //高音 2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   //超高音 1234567// 频率-半周期数据表 低八位unsigned char code FREQL\[\]={    0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,    //低音12345670x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,             //高音 2345670x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   //超高音 1234567  //LCD延时void LCDdelay(uint z)		  //该延时大约100us(不精确,液晶操作的延时不要求很精确){uint x,y;  for(x=z;x>0;x--)    for(y=10;y>0;y--);
}void LCD_WriteData(u8 dat)	  {	if(dat&0x01)D0=1;else D0=0;	if(dat&0x02)D1=1;else D1=0;	if(dat&0x04)D2=1;else D2=0;	if(dat&0x08)D3=1;else D3=0;	if(dat&0x10)D4=1;else D4=0;	if(dat&0x20)D5=1;else D5=0;	if(dat&0x40)D6=1;else D6=0;	if(dat&0x80)D7=1;else D7=0;
}//写命令void write_com(uchar com){LCDRS=0;				  LCD_WriteData(com);//  DAT=com;LCDdelay(5);LCDEN=1;  LCDdelay(5);LCDEN=0;
}//写数据void write_data(uchar date){LCDRS=1;	LCD_WriteData(date);//  DAT=date;LCDdelay(5);LCDEN=1;  LCDdelay(5);LCDEN=0;
}/*------------------------------------------------选择写入位置
------------------------------------------------*/void SelectPosition(unsigned char x,unsigned char y) {     if (x == 0) {     write_com(0x80 + y);     //表示第一行}	else {      write_com(0xC0 + y);      //表示第二行}        
}/*------------------------------------------------写入字符串函数
------------------------------------------------*/void LCD\_Write\_String(unsigned char x,unsigned char y,unsigned char *s) {     SelectPosition(x,y) ;	while (*s) {     write_data( *s);     s ++;     }
}void LCD\_Write\_Char(u8 x,u8 y,u16 s,u8 l) {     SelectPosition(x,y) ;	if(l>=5)		write_data(0x30+s/10000%10);	//万位if(l>=4)		write_data(0x30+s/1000%10);		//千位if(l>=3)		write_data(0x30+s/100%10);		//百位if(l>=2)		write_data(0x30+s/10%10);			//十位if(l>=1)		write_data(0x30+s%10);		//个位}/*1602指令简介write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁write_com(0x0d);//打开显示 阴影闪烁write_com(0x0d);//打开显示 阴影闪烁
*///1602初始化

四、实现现象

具体动态效果看B站演示视频:

基于51单片机的倒计时音乐播放系统设计_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、演示视频):

通过百度网盘分享的文件:基于51单片机的倒计时音乐播放系统设计.zip
链接:https://pan.baidu.com/s/19RILEqXK6eeWC6n3ItDzYA?pwd=poos
提取码:poos
–来自百度网盘超级会员V4的分享

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

项目集成sharding-jdbc

目录 项目集成sharding-jdbc 1.业务分析 2.数据库构建 3.分库分表策略 项目配置默认数据源 一&#xff1a;导入sharding-jdbc依赖 二&#xff1a;在application文件中编写配置 三&#xff1a;注释掉主配置文件中配置的数据源 注意&#xff1a;这里添加了spring.main.allow…

芝士AI论文写作|开题报告、论文生成、降重、降AI、答辩PPT

芝士AI&#xff0c;免费论文查重软件,为毕业生提供专业的AI论文生成、强力降重、AIGC降低、论文重复率检测、论文降重、学术查重、学术检测、PPT生成、学术论文观点剽窃检测等一站式服务。免费论文查重_芝士AI&#xff08;PaperZZ&#xff09;论文检测__PaperZZ论文查重 是不是…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

QT 信号和槽函数

信号和槽函数介绍 conncet(sender, signal, receiver, slot) /* * 1. 信号发出者&#xff1b; * 2. 信号&#xff1b; * 3. 信号接收者&#xff1b; * 4. 接受到信号执行任务&#xff1b; 槽函数 */自定义信号和槽函数 场景 &#xff1a;老师饿了&#xff0c;学生请客&#xf…

使用 KMeans 聚类算法 对鸢尾花数据集进行无监督学习的简单示例

代码功能 主要功能&#xff1a; 加载数据集&#xff1a; 代码使用 load_iris() 函数加载了鸢尾花数据集&#xff08;Iris dataset&#xff09;。这个数据集包含 150 条样本&#xff0c;每条样本有 4 个特征&#xff0c;对应于 3 种不同的鸢尾花。 KMeans 聚类&#xff1a; 使用…

Kafka-Manager安装及操作

文章目录 一、kafka-manager介绍二、kafka-manager安装三、Kafka-Manager操作 一、kafka-manager介绍 CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager) CMAK (previously known as Kafka Manager) is a tool for managing Apache Kafka cluster…

Java反序列化利用链篇 | CC1链的第二种方式-LazyMap版调用链【本系列文章的分析重点】

文章目录 CC1链的第二种方式-LazyMap版调用链LazyMap构造payloadCC1的调用链 系列篇其他文章&#xff0c;推荐顺序观看~ Java反序列化利用链篇 | JdbcRowSetImpl利用链分析Java反序列化利用链篇 | CC1链_全网最菜的分析思路【本系列文章的分析重点】Java反序列化利用链篇 | CC1…

Maven进阶-二、依赖

Maven进阶 第一章 Maven依赖 文章目录 Maven进阶前言依赖传递依赖优先级可选依赖排除依赖总结 前言 maven管理项目时&#xff0c;各包之间相互依赖&#xff0c;该篇简单记录对maven依赖的学习认知。 在使用maven导入依赖时&#xff0c;可以看到有的依赖包下有二级目录&#x…

传输层 III(TCP协议——可靠传输)【★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 一、可靠传输的工作原理 我们知道&#xff0c; TCP 发送的报文段是交给 IP 层传送的。但 IP 层只能提供尽最大努力服务&#xff0c;也就是说&#xff0c; TCP 下面…

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…

神经网络面试题目

1. 批规范化(Batch Normalization)的好处都有啥&#xff1f;、 A. 让每一层的输入的范围都大致固定 B. 它将权重的归一化平均值和标准差 C. 它是一种非常有效的反向传播(BP)方法 D. 这些均不是 正确答案是&#xff1a;A 解析&#xff1a; ‌‌‌‌  batch normalization 就…

【对比学习串烧】 SimSiam MoCov3 DINO

文章目录 文章列表十一、SimSiam11.1 研究背景11.2 解决问题11.3 实施方案11.4 论文摘要11.5 文章图示图1&#xff1a;SimSiam架构图2&#xff1a;SimSiam与/无stop-gradient的比较图3&#xff1a;不同孪生网络架构的比较 十二、MoCo v312.1 研究背景12.2 解决问题12.3 论文摘要…

24年 九月 刷题记录

1. leetcode997找到小镇的法官 小镇里有 n 个人&#xff0c;按从 1 到 n 的顺序编号。传言称&#xff0c;这些人中有一个暗地里是小镇法官。 如果小镇法官真的存在&#xff0c;那么&#xff1a; 小镇法官不会信任任何人。 每个人&#xff08;除了小镇法官&#xff09;都信任这…

helm安装promethues

1、添加 Helm 仓库&#xff1a; helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update 2、安装 Prometheus&#xff1a;安装promtheus到monitor名称空间中 kubectl create ns monitor helm search repo prometheus #查…

传输层 II(TCP协议——协议的特点、报文段、连接管理)【★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 一、TCP 协议的特点 TCP 是在不可靠的 IP 层之上实现的可靠的数据传输协议&#xff0c;它主要解决传输的可靠、有序、无丢失和不重复问题。TCP 是 TCP/IP 体系中非…

校园美食导航:Spring Boot技术的美食发现之旅

第二章 系统分析 2.1 可行性分析 可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面&#xff0c;分别是技术、经济和社会三方面的可行性。我会从这三个方面对网上校园周边美食探索及分享平台进行详细的分析。 2.1.1技术可行…

12.1K Star,开源问答社区

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 今天推荐一个使用 Go 语言编写的开源问答社区平台&#xff0c;支持积…

作业报告┭┮﹏┭┮(Android反调试)

一&#xff1a;Android反调试 主要是用来防止IDA进行附加的&#xff0c;主要的方法思路就是&#xff0c;判断自身是否有父进程&#xff0c;判断是否端口被监听&#xff0c;然后通过调用so文件中的线程进行监视&#xff0c;这个线程开启一般JNI_OnLoad中进行开启的。但是这个是…

Easy Excel从入门到精通!!!

目录 1.文件导入 1.1基本方式读取excel文件内容 1.2注解模型映射器读取excel 1.3多行表头读取 1.4文件上传读取 2.文件导出 2.1基本方式导出 2.2模型映射导出 2.3设置行高、列宽等内容 2.4合并单元格 2.5导出设置超链接、批注、公式 2.6模板填充对象导出 2.7模板填…

数据集-目标检测系列-火车检测数据集 train >> DataBall

数据集-目标检测系列-火车检测数据集 train >> DataBall 数据集-目标检测系列-火车检测数据集 数据量&#xff1a;1W 想要进一步了解&#xff0c;请联系 DataBall。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;不断增加…