c语言乐谱,单片机c语言一闪一闪亮晶晶的乐谱程序
用使用定时器 T0 的中断控制播放音乐 《一闪一闪亮晶晶》 1. C 音调与频率的对应关系表 音调 低 1(“dao” ) 低 2 低 3 低 4 低 5 低 6 低 7 频率 262 294 330 349 392 440 494 音调 1(中音“dao” ) 2 3 4 5 6 7 频率 523 587 659 698 784 880 988 音调 高 1 高 2 高 3 高 4 高 5 高 6 高 7 频率 1064 1175 1318 1397 1586 1760 1967 2.定时常数 C 计算公式 C= fusf460835.12 6 T0 工作方式 0.最大计数为 8192,在已知定是常数为 C 的条件下,13 位计算器 的高 8 位和低 5 的初值可由以下公式设定 TH0=(8192-C)/32; TL0=(8192-C)%32; 3.简单乐谱 |1 1 5 5| 6 6 5 -| 4 4 3 3| 2 2 1 -| 5 5 4 4 | 3 3 2 -| 5 5 4 4 |3 3 2 -| 1 1 5 5 | 6 6 5 -| 4 4 3 3|2 2 1 -| 4节拍控制 本例简谱的节拍为每分钟 72 拍,则每个节拍需时间 (1000*60ms)/72=833ms ★ “1 “为 1 拍,需延时 833ms ★ “2”为 1/2 拍,需延时 833/2ms ★ “3“为 1/4,需延时 833/4ms 5.程序 /*---------------------------------------------- 使用定时器 T0 的中断控制播放音乐《一闪一闪亮晶晶 》 ,T0 工作方式 0, 图表列出了 C 音调与频率的对应关系。* ---------------------------------------------------- */ #include sbit sound=P3^7; //定义声音为引脚 P3.7 unsigned int C; //存储定时器的定时常熟 //以下是 C 调中音的音频定义 #define dao 523 //讲“dao”宏定义为中音“ 1”的频率 523HZ #define re 587 #define mi 659 #define fa 698 #define sao 784 #define la 880 #define xi 987 /*------------------------------------------- 延时子程序 200ms -------------------------------------------*/ void delay() {unsigned char i,j; for(i=0;i200;i++) for(j=0;j110;j++); } /*--------------------------------- 主函数 ----------------------------------*/ void main() { unsigned char i,j; unsigned int code f[]={dao,dao,sao,sao, la,la,sao, fa,fa,mi,mi, re,re,dao, sao,sao,fa,fa, mi,mi,re, sao,sao,fa,fa, mi,mi,re, dao,dao,sao,sao, la,la,sao, fa,fa,mi,mi, re,re,dao, 0xff}; //以 0xff 作为音调的结束标志 //一下是简谱中的每个音调的节拍,4 对应 4 个延时单位,8 对应 8 个延时单位 unsigned char code JP[]={4,4,4,4, //每行对应一小节音频的节拍 4,4,8, 4,4,4,4, 4,4,8, 4,4,4,4, 4,4,8, 4,4,4,4, 4,4,8, 4,4,4,4, 4,4,8 , 4,4,4,4, 4,4,8, }; EA=1; //开总中断 ET0=1; //定时器 T0 中断允许 TMOD=0x00; //使用定时器 T0 的方式 0(13 位计数器) while(1) { i=0;//从第一个音调 f[0]开始播放 while(f[i]!=0xff) //只要没有读到结束标志就继续播放 { C=460830/f[i]; TH0=(8192-C)/32; TL0=(8192-C)%32; TR0=1; for(j=0;jJP[i];j++) delay(); TR0=0; i++; } } } /*---------------------------------------- 定时器 T0 的中断服务子程序,使 P3.7 引脚输出音频的方波 ------------------------------------------------*/ void Time0(void) interrupt 1 using 1 { sound=!sound; TH0=(8192-C)/32; TL0=(8192-C)%32; }
展开阅读全文
c语言乐谱,单片机c语言一闪一闪亮晶晶的乐谱程序相关推荐
- 微控制器编程技术c语言,1.单片机C语言编程技术分析.pptx
单片机C语言编程;掌握利用C语言进行单片机程序设计的方法掌握单片机的C程序开发工具Keil 的使用方法掌握单片机仿真软件proteus的使用方法了解单片机常用外部接口元件和接口电路了解单片机系统的集成 ...
- 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
单片机C语言编程(系统扩展IC)8 第8章 单片机系统扩展 第8章 单片机系统扩展 目 录 8.1 扩展并行三总线 8.2 扩展简单并行输入/输出口 8.3 扩展并行数据存储器 8.4 串行扩展总线接 ...
- pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法
PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...
- 单片机c语言 u16,单片机C语言的误用
单片机C语言的误用 导语:在学习单片机的时候才真正知道C语言是什么它是来干什么的,但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,也经常出现误用,让我们了解一下吧! 我们是不是在写程序的 ...
- 南师大632c语言程序设计,单片机c语言学习心得632.docx
可编辑文档 PAGE 页码页码/NUMPAGES 总页数总页数 单片机c语言学习心得 (一) 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧..不过有些朋友可能只听说他叫单片机,他的全称是什 ...
- 通用编程c语言,STC单片机C语言通用万能编程.docx
<8051单片机C语言编程模板> TOC \o "1-5" \h \z \o "Current Document" 毫秒级CPU延时函数 4 \o ...
- 4x4按键c语言,52单片机C语言4X4键盘.docx
52单片机C语言4X4键盘 4*4#include#include#define ulong unsigned long宏定义#define uint unsigned int#define ucha ...
- 单片机c51语言变量,单片机c语言教程:C51变量
上课所提到变量就是一种在程序执行过程中其值能不断变化的量.要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间.定义一个变量的格式如下: ...
- 单片机c语言除法,单片机C语言知识点全攻略
单片机C语言知识点全攻略 为了让有需要的朋友进一步了解单片机C语言知识,下面的文章将为大家讲解单片机C语言的知识内容,欢迎学习! C51运算符和表达式 运算符,双目运算符和三目运算符.单目就是指需要有 ...
最新文章
- 用于显示本地通知的跨平台插件flutter_local_notifications
- mysql 开发包 安装_mysql的zip包的安装方法
- 分布式定时器的实现原理
- sql max同一行_超经典SQL题 | 做完这4道面试题你就过关了
- pip安装第三方库报错Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None))
- Ubuntu 10.10安装Vmware Tools
- 服务器4通道性能相当于多少人民币,有钱人的世界我们不懂,组装电脑花费百来万,跑分世界第四...
- 赌博小游戏java开发_Java打飞机小游戏(附完整源码)
- wp文件转shp_【转载】将E00文件转换成shp文件
- baguetteBox.js - 简单易用的 lightbox 插件
- matlab 图像分割并填充颜色
- [Spark机器学习]基于Spark 2.0 机器学习之推荐系统实现
- 3W字,Docker 从入门到精通
- 最新炫酷恶趣图制作神器小程序源码+支持流量主/功能强大
- H3C系列交换机系统版本升级及导入配置
- java实现日期加一天
- linux点亮硬盘locat,请教一个linux的基础问题 关于PATH
- java实验2总结心得,打字小游戏JAVA实验总结及心得体会
- 开发到底要不要转行软件测试?一篇足以 最全方位分析
- windows系统 电脑系统重装详细教程(看这一篇就够了)