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

51单片机演奏兰亭序

使用开发板为普中51-实验板 普中-2
时钟频率:11.001081MHZ
演示视频:
【51单片机演奏兰亭序】 https://www.bilibili.com/video/BV12G411D7uK/?share_source=copy_web&vd_source=0f48f7cc0fef720b95e067122ac83437

源码如下:

数组较大,请在数组前加上code关键字

delay.h
#ifndef __DELAY_H__
#define __DELAY_H__void Delayxms(unsigned int xms); //@11.0592MHz#endif
delay.c
#include <INTRINS.H>void Delayxms(unsigned int xms) //@11.0592MHz
{while (xms--){unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}
Timer0.h
#ifndef __TIMER0_H__
#define __TIMER0_H__void Timer0_Init();#endif
Timer0.c
#include <REGX52.H>/*** @brief 计时器0初始化*/
void Timer0_Init() // 1毫秒@11.0592MHz
{TMOD &= 0xF0; // 设置定时器模式TMOD |= 0x01; // 设置定时器模式TL0 = 0x66;	  // 设置定时初值TH0 = 0xFC;	  // 设置定时初值TF0 = 0;	  // 清除TF0标志TR0 = 1;	  // 定时器0开始计时// 配置中断ET0 = 1;EA = 1;PT0 = 0;
}
main.c
#include <REGX52.H>
#include "delay.h"
#include "Timer0.h"// 蜂鸣器端口
sbit Buzzer = P2 ^ 5;#define SPEED 500 // 速度// 音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音#
#define P 0
#define L1 1
#define L1_ 2
#define L2 3
#define L2_ 4
#define L3 5
#define L4 6
#define L4_ 7
#define L5 8
#define L5_ 9
#define L6 10
#define L6_ 11
#define L7 12
#define M1 13
#define M1_ 14
#define M2 15
#define M2_ 16
#define M3 17
#define M4 18
#define M4_ 19
#define M5 20
#define M5_ 21
#define M6 22
#define M6_ 23
#define M7 24
#define H1 25
#define H1_ 26
#define H2 27
#define H2_ 28
#define H3 29
#define H4 30
#define H4_ 31
#define H5 32
#define H5_ 33
#define H6 34
#define H6_ 35
#define H7 36unsigned int FreqTable[] = {0,63628, 63731, 63835, 63928, 64021, 64103, 64185, 64260, 64331,64400, 64463, 64524, 64580, 64633, 64684, 64732, 64777, 64820,64860, 64898, 64934, 64968, 65000, 65030, 65058, 65085, 65110,65134, 65157, 65178, 65191, 65217, 65235, 65252, 65268, 65283};
// 音,结束标志:0xFF
code unsigned char Music[] = {0, 0, 0, M5, M6, H1, H2, H1, H2, H3, H2, H1, H2, H3, H5, H3, H2, H1, M6, M5, H3, H5, H6, H3, H2, H2, H1, H3, H2, H2, H1, H1, H2, H3, H2, H1, M6, M5, H2, H3, H1, 0, M5, M3, M5, M6, M3, M5, M6, M5, M3, M2, M3, 0, M3, M2, M3, H1, M6, H1, M6, M5, M3, M1, M3, M2, M2, 0, M5, M5, M5, M6, M6, H1, H2, H1, M6, M5, M6, M5, M3, M2, M5, M3, M3, M2, M1, M2, M3, M2, M1, M3, M1, M1, M1, M1, 0xFF};
// 音长,标准音为4
code unsigned char MusicTime[] = {4, 4, 2, 2, 2, 2, 8, 2, 4, 2, 2, 12, 2, 2, 8, 2, 2, 2, 2, 2, 12, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 8, 2, 2, 8, 2, 2, 2, 2, 2, 8, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4};
unsigned char FreqSelect, MusicSelect;
void main()
{Timer0_Init();while (1){if (Music[MusicSelect] != 0xFF){FreqSelect = Music[MusicSelect];Delayxms(500 / 4 * MusicTime[MusicSelect]);MusicSelect++;TR0 = 0;     // 计时器停Delayxms(5); // 每个音间隔5msTR0 = 1;}else{TR0 = 0;MusicSelect = 0;}}
}void Timer0_Routine() interrupt 1
{if (FreqTable[FreqSelect]){TL0 = FreqTable[FreqSelect] % 256; // 设置定时初值TH0 = FreqTable[FreqSelect] / 256; // 设置定时初值Buzzer = !Buzzer;                  // 翻转蜂鸣器IO口}
}

相关文章:

51单片机演奏兰亭序

使用开发板为普中51-实验板 普中-2 时钟频率&#xff1a;11.001081MHZ 演示视频&#xff1a; 【51单片机演奏兰亭序】 https://www.bilibili.com/video/BV12G411D7uK/?share_sourcecopy_web&vd_source0f48f7cc0fef720b95e067122ac83437 源码如下&#xff1a; 数组较大&a…...

计算机编程零基础编程学什么语言,中文编程工具构件简介软件下载

计算机编程零基础编程学什么语言&#xff0c;中文编程工具构件简介软件下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;象如…...

zookeeper单机版的搭建

一 zookeeper的搭建 1.1 上传zkjar包 1.2 搭建配置 1.解压压缩包 [rootlocalhost export]# tar -zxvf zookeeper-3.7.0-bin.tar.gz 2.创建data文件夹 [rootlocalhost export]# cd apache-zookeeper-3.7.0-bin/ [rootlocalhost apache-zookeeper-3.7.0-bin]# ls bin conf…...

roseha for windows 11+oracle 11g部署过程

文章目录 一、环境准备关闭防火墙配置hosts共享存储准备 二、部署步骤1.主机A、B安装数据库软件2.主机A进行数据库实例创建3.主机B创建数据库4.安装配置roseha软件 一、环境准备 windows server 2019 oracle 11.2.0.3 EE roseha for windows 11 5个IP地址&#xff1a;2心跳、3…...

机器学习与因果推断的高级实践 | 数学建模

文章目录 因果推断因果推断的前世今生&#xff08;1&#xff09;潜在结果框架&#xff08;Potential Outcome Framework&#xff09;&#xff08;2&#xff09;结构因果模型&#xff08;Structual Causal Model&#xff0c;SCM&#xff09; 身处人工智能爆发式增长时代的机器学…...

go语言实现高性能自定义ip管理模块(ip黑名单)

ip黑名单设计 对于IPV4而言&#xff0c;理论上有256^4个&#xff0c;也就是约42亿个。我想了好久&#xff0c;也查了挺多资料&#xff0c;但是&#xff0c;确实没有通用现成的解决方案。 PS&#xff1a;以下方案的讨论&#xff0c;适用于对于IP管理不那么严苛的情况。当然也可…...

检索增强生成架构详解【RAG】

生成式AI技术很强大&#xff0c;但它们受到知识的限制。 虽然像 ChatGPT 这样的LLM可以执行许多任务&#xff0c;但每个LLM的基线知识都存在基于其训练数据的差距。 如果你要求LLM写一些关于最近趋势或事件的文章&#xff0c;LLM不会知道你在说什么&#xff0c;而且回答最好是混…...

高清动态壁纸软件Live Wallpaper Themes 4K mac中文版功能

Live Wallpaper & Themes 4K mac是一款提供各种高清动态壁纸和主题的应用程序。该应用程序提供了大量的动态壁纸和主题&#xff0c;包括自然、动物、城市、抽象等各种类别&#xff0c;可以满足用户不同的需求。除了壁纸和主题之外&#xff0c;该应用程序还提供了许多其他功…...

Kafka配置SASL认证密码登录

​​​​​​1、修改config/server.properties&#xff0c;添加如下内容 listenersSASL_PLAINTEXT://内网ip:9092 advertised.listenersSASL_PLAINTEXT://外网ip:9092 security.inter.broker.protocolSASL_PLAINTEXT sasl.mechanism.inter.broker.protocolPLAIN sasl.enabled.…...

两年功能五年自动化测试面试经验分享

最近有机会做一些面试工作&#xff0c;主要负责面试软件测试人员招聘的技术面试。 之前一直是应聘者的角色&#xff0c;经历了不少次的面试之后&#xff0c;多少也积累一点面试的经验&#xff0c;现在发生了角色转变。初次的面试就碰到个工作年限比我长的&#xff0c;也没有时…...

大数据基础设施搭建 - Kafka(with ZooKeeper)

文章目录 一、简介二、单机部署2.1 上传压缩包2.2 解压压缩包2.3 修改配置文件&#xff08;1&#xff09;配置zookeeper地址&#xff08;2&#xff09;修改kafka运行日志(数据)存储路径 2.4 配置环境变量2.5 启动/关闭2.6 测试&#xff08;1&#xff09;查看当前服务器中的所有…...

[JVM] 京东一面~说一下Java 类加载过程

系统加载 Class 类型的文件主要三步&#xff1a;加载->连接->初始化。连接过程又可分为三步&#xff1a;验证->准备->解析。 通过全限定名来加载生成 class 对象到内存中&#xff0c;然后进行验证这个 class 文件&#xff0c;包括文件格式校验、元数据验证&#xf…...

2023 年 认证杯 小美赛 ABC题 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 cs数模团队在认证杯 小美赛前为大家提供了许多资料的内容呀&am…...

N-134基于java实现捕鱼达人游戏

开发工具eclipse,jdk1.8 文档截图&#xff1a; package com.qd.fish;import java.awt.Graphics; import java.io.File; import java.util.ArrayList; import java.util.List;import javax.imageio.ImageIO;public class Fishes {//定义一个集合来管理鱼List<Fish> fish…...

MTK联发科MT6762/MT6763/MT6765安卓核心板参数规格比较

MT6762安卓核心板 MTK6762安卓核心板是一款工业级高性能、可运行 android9.0 操作系统的 4G智能模块。 CPU&#xff1a;4xCortex-A53 up to 2.0Ghz/4xCortex-A53 up to 1.5GhzGraphics&#xff1a;IMG GE8320 Up to 650MhzProcess&#xff1a;12nmMemory&#xff1a;1xLP3 9…...

仿ChatGPT对话前端页面(内含源码)

仿ChatGPT对话前端页面&#xff08;内含源码&#xff09; 前言布局样式和Js部分关键点全部源码 前言 本文主要讲解如何做出类似ChatGPT的前端页面。具体我们的效果图是长这样&#xff0c;其中除了时间是动态的之外&#xff0c;其他都是假数据。接下来让我们从布局和样式的角度…...

js粒子效果(一)

效果: 代码: <!doctype html> <html> <head><meta charset"utf-8"><title>HTML5鼠标经过粒子散开动画特效</title><style>html, body {position: absolute;overflow: hidden;margin: 0;padding: 0;width: 100%;height: 1…...

程序员必备工具篇 / 程序员必备基础:Git

前言 掌握 Git 命令是每位程序员必备的基础,之前一直是用 smartGit 工具,直到看到大佬们都是在用 Git 命令操作的,回想一下,发现有些 Git 命令我都忘记了,于是写了这篇博文,复习一下~ https://github.com/whx123/JavaHome 公众号:顺哥轻创 文章目录 Git 是什么?Git …...

MacBook使用指南

一、安装及卸载Windows系统 1、卸载Windows系统 步骤① 点击下侧任务栏中的“启动台”&#xff0c;进入程序坞&#xff0c;点击"其他",选择“启动转换助理” 步骤② 点击“继续”&#xff0c;接着点击“恢复”&#xff0c;即可卸载Windows系统 2、安装Windows系统 …...

数据库的事务的基本特性,事务的隔离级别,事务隔离级别如何在java代码中使用,使用MySQL数据库演示不同隔离级别下的并发问题

文章目录 数据库的事务的基本特性事务的四大特性(ACID)4.1、原子性&#xff08;Atomicity&#xff09;4.2、一致性&#xff08;Consistency&#xff09;4.3、隔离性&#xff08;Isolation&#xff09;4.4、持久性&#xff08;Durability&#xff09; 事务的隔离级别5.1、事务不…...

python+Vue实现摄像头视频流服务(支持启停控制)

python+Vue实现摄像头视频流服务(支持启停控制) 在开发视频监控、人脸识别或远程预览应用时,常常需要搭建一个可随时启动/停止的摄像头视频流服务,并同时支持Web浏览器实时预览。本文提供一套完整的解决方案: 后端使用 Flask + OpenCV + Waitress,提供 MJPEG 视频流。 支…...

PCEP-30-02考试避坑指南:那些官方教程里没明说,但一考就错的Python基础题

PCEP-30-02考试避坑指南&#xff1a;那些官方教程没明说但一考就错的Python细节 当你准备参加PCEP-30-02认证考试时&#xff0c;可能会觉得已经掌握了所有Python基础知识——直到在考场上遇到那些设计精巧的"陷阱题"。这些题目往往针对语言特性中的微妙细节&#xff…...

《JAVA面经实录》- 设计模式面试题(一)

《JAVA面经实录》- 设计模式面试题(一)这份是设计模式面试题・标准答案背诵版语言精炼、口语化、不啰嗦&#xff0c;面试官最爱听&#xff0c;直接背就能过。一、基础必问题&#xff08;标准答案&#xff09;1.设计模式三大类&#xff1f;创建型&#xff1a;控制对象创建&#…...

告别手动画刀版!用JavaScript给Adobe Illustrator写个插件,5分钟搞定包装盒展开图

5分钟打造包装盒刀版神器&#xff1a;零代码实现AI脚本自动化 每次面对包装盒刀版设计时&#xff0c;你是否也经历过这样的崩溃时刻&#xff1f;反复测量尺寸、手动绘制线条、调整粘口位置&#xff0c;一个简单的纸盒展开图可能就要耗费大半天时间。更可怕的是&#xff0c;当客…...

Redis客户端连接监控终极指南:Redisson CLIENT LIST命令深度解析

Redis客户端连接监控终极指南&#xff1a;Redisson CLIENT LIST命令深度解析 【免费下载链接】redisson Redisson - Valkey & Redis Java client. Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Valkey and Redis based Java objects and services: S…...

Redis通用命令 easy learning

大家好&#xff0c;这篇文章带来的是有关Redis的相关内容讲解&#xff0c;希望各位能够有所收获~ 1.set 给指定的键&#xff08;Key&#xff09;设置一个值&#xff08;Value&#xff09;&#xff0c;覆盖已存在的旧值。 set key value 类似哈希表一样设置key和value的映射 …...

2026年4月4款万方降AI率工具盘点:率零和嘎嘎降AI最稳

2026年4月4款万方降AI率工具盘点&#xff1a;率零和嘎嘎降AI最稳 万方降AI这件事&#xff0c;在2026年4月的毕业季里被很多同学反复问到。万方检测平台在今年更新了AIGC识别模型&#xff0c;很多原本能过的段落突然飙到30%以上&#xff0c;学校要求又卡在20%甚至15%&#xff0c…...

终极Windows音频路由指南:用Audio Router实现多设备音频分发

终极Windows音频路由指南&#xff1a;用Audio Router实现多设备音频分发 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾为Windows系统的音频管理而烦恼&am…...

【正点原子STM32】HAL库实战入门:从CMSIS标准到项目构建

1. 从零认识CMSIS标准与HAL库 刚拿到正点原子STM32开发板时&#xff0c;很多新手会被各种专业术语搞得晕头转向。我第一次接触STM32Cube生态时&#xff0c;面对CMSIS、HAL库这些名词也是一头雾水。后来才发现&#xff0c;理解这些基础概念就像盖房子打地基&#xff0c;看似枯燥…...

Visual C++运行库终极解决方案:告别繁琐安装的一站式指南

Visual C运行库终极解决方案&#xff1a;告别繁琐安装的一站式指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 您是否曾经因为"缺少VC运行库"的错…...