【C51】DIY电子音乐贺卡:C51单片机项目设计与实现

文章目录

  • 前言:
  • 1. 要求:
  • 2. 实现效果:
  • 3. 准备工作:
  • 4. 编写代码:
  • 5. 导出bmp格式图片
  • 总结:

前言:

在当今数字化时代,电子贺卡以其独特的互动性和个性化特点,成为人们表达情感和庆祝特殊场合的一种流行方式。本文将引导读者如何使用C51单片机设计一款电子音乐贺卡,通过结合LED点阵屏、蜂鸣器和1602液晶显示模块,实现一个具有倒计时显示、文字祝福以及音乐播放功能的创意电子项目。这不仅能够锻炼电子爱好者的编程和电路设计能力,还能为亲朋好友的生日增添一份特别的祝福。

1. 要求:

在最小系统电路的基础上添加电路设计电子贺卡,并编写程序,要求如下:

  1. 单片机连接 1 个 8*8 LED点阵屏,1 个蜂鸣器, 1个1602液晶显示模块。
  2. 开始时,点阵屏倒计时显示 9-0, 每个数字显示 1 秒,到 0 后就不再显示。
  3. 然后 1602 液晶从第一行开始显示“Happy birthday to you!”,首行空两格。
  4. 接着蜂鸣器循环播放生日音乐。
    提醒: 取数字字符字模的时,建议采用字体 terminal, 点阵设置16 * 8;

2. 实现效果:

https://live.csdn.net/v/397476?spm=1001.2014.3001.5501

c51_电子音乐贺卡

3. 准备工作:

  • 画电路图
    在这里插入图片描述

  • 取字模软件
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

4. 编写代码:

#include <config.h>	
#include <matrix8X8.h>
#include <1602.h>
#include <beep.h>


u8 count_0 = 0;
u8 flag_1s = 0;

void main()
{
	u8 i;
	// 初始化1602
	LCD1602_Init( );//1602初始化函数
	// 计时器初始化
	TMOD = TMOD&0xf0; // 低4位清零
	TMOD = TMOD|0x01; // 设置定时器0位工作方式1
	TH0 = (65535-45872)/256; // 50ms@11.0592Mhz
	TL0 = (65535-45872)%256;
	EA = 1; // 中断总开关
	ET0 = 1; // 开定时器0中断
	TR0 = 1;	// 启动定时器0
	
	// 倒计时
	for (i = 9; i > 0; --i) {
		flag_1s = 0;
		while(flag_1s == 0) {
			matrix8X8(font[i]);//显示8*8点阵font[8]、阴码、低位在前、C51 
		}
	}

	
	//1602 显示字符串
	LCD1602_disstr("Happy birthday to you!",0 ,2);//从指定坐标开始显示英文字符串(长度不超过32),自动换行
	
	// 播放音乐
	while(1) {
		playmusic(Music2Meter, Music2TONE,Music2Len); //播放歌曲,*Meter指向歌曲的节拍数组,*TONE指向歌曲的音调数组,n为歌曲中音调的个数
	}
}  


void INT_T0() interrupt 1 //中断号1为 T0 定时器中断
{
	TH0 = (65535-45872)/256; // 重装初始值
	TL0 = (65535-45872)%256;
	count_0++;
	if (count_0 == 20) { // 计数器20次为1s
		flag_1s = 1; 
		count_0 = 0;
	}
}

5. 导出bmp格式图片

在这里插入图片描述
在这里插入图片描述

总结:

通过本文的指导,读者应该能够掌握如何设计并实现一个电子音乐贺卡的基本框架。从电路设计到代码编写,再到最终的功能实现,每一步都紧密相扣,确保了项目的完整性和实用性。倒计时的LED点阵屏显示,配合1602液晶屏上的生日祝福文字,以及蜂鸣器播放的生日音乐,共同构成了这款电子贺卡的核心功能。此外,通过提供的在线视频教程链接,读者可以更直观地了解整个制作过程和实现效果,为电子爱好者提供了一个学习和实践的平台。希望这款电子音乐贺卡能够成为传递心意和祝福的桥梁,为人们的特殊时刻增添一抹科技色彩。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Data Mining2 复习笔记6 - Optimization Hyperparameter Tuning

6. Optimization & Hyperparameter Tuning Why Hyperparameter Tuning? Many learning algorithms for classification, regression, … Many of those have hyperparameters: k and distance function for k nearest neighbors, splitting and pruning options in decis…

软件游戏d3dcompiler_47.dll缺失怎么办,多种有效的解决方法分享

在计算机使用过程中&#xff0c;我们可能会遇到各种软件错误提示&#xff0c;其中之一就是“d3dcompiler47.dll缺失”。这个错误提示可能会影响到我们的正常使用&#xff0c;甚至导致某些软件无法运行。那么&#xff0c;d3dcompiler47.dll缺失究竟会造成哪些问题呢&#xff1f;…

看似不同的事情,却是相同的坑

目录 一、背景二、过程1.遭遇战-微盘股的下杀2.不失为一件好事3.一切向后看吧&#xff0c;最近的学习感受4.该有的心境 三、总结 一、背景 也在一点点改变&#xff0c;期间势必要经历流血的过程&#xff1b;所谓无疯狂不成长&#xff0c;积极的心态去应对&#xff0c;去总结总…

R语言数据探索和分析22-使用随机森林和聚类算法探索和预测健康状况

一、研究背景 在两个实验中&#xff0c;使用了一组综合性的生物统计数据来探索和预测健康状况&#xff08;特别是疾病的发生&#xff09;。实验的核心在于应用高级数据分析技术&#xff0c;具体包括随机森林分类和聚类分析&#xff0c;来洞察和预测个体的健康状况。首先&#…

专业学习|南开大学《随机过程》学习笔记(一)

&#xff08;1&#xff09;有哪些经典的关于基本随机过程的书籍推荐&#xff1f; 对于想要系统学习基本随机过程的学生来说&#xff0c;可以参考Sheldon M.Rose编著的经典著作《随机过程》。该书涉及的内容也比较宽泛。但并不局限于单个细节论证。 此外&#xff0c;萨缪尔科林(…

SpringAOP 常见应用场景

文章目录 SpringAOP1 概念2 常见应用场景3 AOP的几种通知类型分别有什么常见的应用场景4 AOP实现 性能监控4.1 首先&#xff0c;定义一个切面类&#xff0c;用于实现性能监控逻辑&#xff1a;4.2 定义自定义注解4.3 注解修饰监控的方法 5 AOP实现 API调用统计5.1 定义切面类&am…

连续状态方程的离散化例子

连续状态方程的离散化 在控制系统中,连续状态方程的离散化是一个重要的步骤,用于将连续时间系统转换为离散时间系统,以便在数字控制器中实现。这通常涉及将连续时间的微分方程转换为离散时间的差分方程。常用的离散化方法 前向欧拉法(Forward Euler)简单易实现,但精度较…

在Anaconda中安装keras-contrib库

文章目录 1. 有git2. 无git2.1 步骤12.2 步骤22.3 步骤3 1. 有git 如果环境里有git&#xff0c;直接运行以下命令&#xff1a; pip install githttps://www.github.com/farizrahman4u/keras-contrib.git2. 无git 2.1 步骤1 打开网址&#xff1a;https://github.com/keras-tea…

刷代码随想录有感(97):动态规划——斐波那契数列

题干&#xff1a; 代码&#xff1a; class Solution { public:int fib(int n) {if(n < 1)return n;vector<int> dp(n 1);dp[0] 0;dp[1] 1;for(int i 2; i < n; i){dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }; 动态规划五部曲&#xff1a; 1.dp数组的定…

【数据结构】二叉树专题

前言 本篇博客我们来看一些二叉树的经典题型&#xff0c;也是对上篇博客的补充 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 1.单值二叉树 …

鲜为人知的英伟达创始人:早早退出,身价不如黄仁勋零头

内容提要 普里姆因为婚姻纠纷等个人生活的干扰无法专注在工作上&#xff0c;在成立公司的10年后&#xff0c;也就是2003年宣布退休离开英伟达&#xff0c;并在2006年出售剩余的所有英伟达股份&#xff0c;过上不与外界联系、离群索居的生活&#xff0c;在家中鼓捣着如何“拯救…

数据结构【堆排序】

前言 在上一篇文章主要讲解了二叉树的基本概念和堆的概念以及接口的实现&#xff08;点此处跳转&#xff09; 我们简回顾下堆的基本概念&#xff1a; 1.堆分为大堆和小堆 大堆&#xff1a;父亲结点比左右孩子都大&#xff0c;根结点是最大的小堆&#xff1a;父亲结点比左右孩…

Redis系列-4 Redis集群介绍

Redis集群 Redis提供了持久化能力&#xff0c;保证了重启不会丢失数据&#xff1b;但Redis重启至完全恢复期间&#xff0c;缓存不可用。另外&#xff0c;对于高并发场景下&#xff0c;单点Redis服务器的性能不能满足吞吐量要求&#xff0c;需要进行横向扩展。此时&#xff0c;…

Java基础_Stream流

Java基础_Stream流 Stream流的简单使用Stream流的获取Stream流的中间方法Stream流的终结方法综合练习数字过滤字符串过滤并收集自定义对象过滤并收集 来源Gitee地址 Stream流的简单使用 public class StreamDemo01 {public static void main(String[] args) {/*** 创建集合添加…

【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-09 1…

API接口测试工具:jmeter的安装、汉化、Jmeter桌面快捷图标和基本使用

文章目录 测试工具&#xff1a;JmeterJmeter安装和配置Jmeter汉化设置中文语言&#xff1a;永久方式设置中文语言&#xff1a;临时方式 设置Jmeter桌面快捷图标jmeter基本用法Jmeter无法保存测试问题解决 测试工具&#xff1a;Jmeter Jmeter依赖于JDK&#xff0c;所以必须确保…

kafka集成flink api编写教程

1.引入依赖&#xff08;pox.xml&#xff09; <dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.13.6</version></dependency><dependency><gro…

C# WPF入门学习主线篇(十六)—— Grid布局容器

C# WPF入门学习主线篇&#xff08;十六&#xff09;—— Grid布局容器 欢迎来到C# WPF入门学习系列的第十六篇。在前几篇文章中&#xff0c;我们已经探讨了 Canvas、StackPanel、WrapPanel 和 DockPanel 布局容器及其使用方法。本篇博客将介绍另一种功能强大且灵活的布局容器—…

MT76X8 RF定频使用方法

一、从下面网址下载QA软件包&#xff0c;然后在WIN系统下安装QA环境。https://download.csdn.net/download/zhouwu_linux/89408573?spm1001.2014.3001.5503 在WINDOWS 7系统下先安装WinPcap_4_1_3.exe。 二、硬件连接。 模块上电&#xff0c;PC机 的IP配置成为10.10.18.100&a…

GraphQL(6):认证与中间件

下面用简单来讲述GraphQL的认证示例 1 实现代码 在代码中添加过滤器&#xff1a; 完整代码如下&#xff1a; const express require(express); const {buildSchema} require(graphql); const grapqlHTTP require(express-graphql).graphqlHTTP; // 定义schema&#xff0c;…