当前位置: 首页 > news >正文

【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;// 初始化1602LCD1602_Init( );//1602初始化函数// 计时器初始化TMOD = TMOD&0xf0; // 低4位清零TMOD = TMOD|0x01; // 设置定时器0位工作方式1TH0 = (65535-45872)/256; // 50ms@11.0592MhzTL0 = (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次为1sflag_1s = 1; count_0 = 0;}
}

5. 导出bmp格式图片

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

总结:

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Activity->Activity中动态添加Fragment->Fragment回退栈BackStack
  • C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源
  • 查询SQL02:寻找用户推荐人
  • 影子,介绍一下自己
  • 【嵌入式】波特率9600,发送8个字节需要多少时间,如何计算?
  • Spring运维之boo项目表现层测试匹配响应执行状态响应体JSON和响应头
  • 【DevOps】VyOS:功能强大的开源网络操作系统和实战
  • Vue——初识组件
  • 为什么会有虚像(完美解释焦距和像大小和透镜的关系)
  • EverWeb 强大的零基础Mac网页设计制作软件
  • 最大似然估计、贝叶斯估计、最小二乘估计与贝叶斯学习的本质区别
  • 6、组件通信详解(父子、兄弟、祖孙)
  • Hack The Box(黑客盒子)Dancing篇
  • 【区分vue2和vue3下的element UI ¶Upload 上传组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • Apache Doris 基础 -- 数据表设计(使用AUTO_INCREMENT)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Git 使用集
  • Git学习与使用心得(1)—— 初始化
  • go append函数以及写入
  • Gradle 5.0 正式版发布
  • JavaScript HTML DOM
  • magento2项目上线注意事项
  • node和express搭建代理服务器(源码)
  • SQL 难点解决:记录的引用
  • SQLServer之创建显式事务
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 排序(1):冒泡排序
  • 配置 PM2 实现代码自动发布
  • 让你的分享飞起来——极光推出社会化分享组件
  • 算法系列——算法入门之递归分而治之思想的实现
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 小程序开发中的那些坑
  • 一些关于Rust在2019年的思考
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • (09)Hive——CTE 公共表达式
  • (3)STL算法之搜索
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (七)理解angular中的module和injector,即依赖注入
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)setTimeout 和 setInterval 的区别
  • (转)Unity3DUnity3D在android下调试
  • (转)创业家杂志:UCWEB天使第一步
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET MVC第三章、三种传值方式
  • .net 受管制代码
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • ??eclipse的安装配置问题!??
  • @DataRedisTest测试redis从未如此丝滑