12.51单片机实现电子音乐盒
利用51单片机中断、定时器计数器的基础知识,实现简单的电子音乐盒。
文章目录
- 题目重述
- 问题分析以及求解思路
- 程序代码
- 问题1代码
- 问题2代码
- 问题3代码
- 问题4代码
题目重述
实验前准备:本实验的51单片机的实验连线图如下所示
1.用定时器T0方式0产生频率为500Hz的方波,由P1.5输出驱动喇叭产生蜂鸣器的效果。
2.设实验连线如图所示,用定时器产生两种频率(500Hz及1000Hz)不断交替发声,由P1.5输出驱动喇叭产生警报声的效果。
3.设实验连线如图所示,用定时器T1方式1来产生歌谱中各音符对应频率的方波,由P1.5输出驱动喇叭;节拍控制可通过调用延时子程序次数来实现。
实验说明:
① 通过控制定时器的定时时间来产生不同频率的方法,驱动喇叭发出不同音阶的声音,再利用延时来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。由查表程序得到定时常数和延时常数,分别用以控制定时器产生方波的频率和发该频率方波的持续时间。当延时时间到,再查下一个音符的定时常数和延时常数。依次下去,就可自动演奏出悦耳的乐曲。
② 蜂鸣器通过ULN2003驱动。
③ 乐曲“新年好”数据表格如下,三个字节为一组,其中前两个字节表示定时常数(16位计数器),高位在前,若定时常数为00H,00H,表示休止符,若定时常数为0FFH,0FFH,表示结束,后一个字节表示延时常数(每个延时为200ms)。
0FCH,4AH,04H,0FCH,4AH,04H
0FCH,4AH,08H,0FBH,00H,08H
0FDH,08H,04H,0FDH,08H,04H
0FDH,08H,08H,0FCH,4AH,08H
0FCH,4AH,04H,0FDH,08H,04H
0FDH,80H,08H,0FDH,80H,08H
0FDH,30H,04H,0FDH,08H,04H
0FCH,0AEH,08H,00H,00H,08H
0FFH,0FFH
4.设实验连线如图及图所示,编程实现有外部中断时演奏乐曲“新年好”,有外部中断时演奏乐曲“小星星”。
问题分析以及求解思路
待完善(请耐心等待)
程序代码
问题1代码
ORG 0000HLJMP MAINORG 001BHLJMP BR1
MAIN:MOV TMOD,#10HMOV TH1,#0FFHMOV TL1,#38HSETB EASETB ET1SETB TR1SJMP $
BR1: MOV TH1,#0FFHMOV TL1,#38HCPL P1.5RETIEND
问题2代码
ORG 0000HLJMP MAINORG 001BHLJMP BR1
MAIN:MOV R1,#10HMOV R2,#0F8HMOV R3,#30HMOV TMOD,R1MOV TH1,R2MOV TL1,R3SETB EASETB ET1SETB TR1LCALL DELAYMOV R1,#10HMOV R2,#0FCHMOV R3,#18HLCALL DELAYLJMP MAINBR1: MOV TH1,R2MOV TL1,R3CPL P1.5RETIDELAY: MOV R5,#2
DELAY1:MOV R6,#0FFH
DELAY2:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAY2DJNZ R5,DELAY1RET END
问题3代码
ORG 0000HLJMP MAINORG 001BHLJMP BR1
MAIN:MOV R1,#10HMOV R2,#0F8HMOV R3,#30HMOV DPTR,#TAB1MOV R4,#00H
LLL: MOV A,R4MOV B,#1MOV TMOD,R1MOVC A,@A+DPTRMOV R2,AMOV TH1,R2INC R4MOV A,R4MOVC A,@A+DPTRMOV R3,AMOV TL1,R3INC R4MOV A,R4 MOVC A,@A+DPTRMUL ABMOV 30H,AINC R4SETB EASETB ET1SETB TR1CJNE R3,#00H,CLOSELCALL DELAY
XH: CJNE R3,#0FFH,LLLLJMP MAINCLOSE:CLR TR1LCALL DELAYSETB TR1LJMP XHBR1: MOV TH1,R2MOV TL1,R3CPL P1.5RETIDELAY: MOV R5,30H
DELAY1:MOV R6,#080H
DELAY2:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAY2DJNZ R5,DELAY1RET TAB1:DB 0FCH,4AH,04H,0FCH,4AH,04HDB 0FCH,4AH,08H,0FBH,00H,08HDB 0FDH,08H,04H,0FDH,08H,04HDB 0FDH,08H,08H,0FCH,4AH,08HDB 0FCH,4AH,04H,0FDH,08H,04HDB 0FDH,80H,08H,0FDH,80H,08HDB 0FDH,30H,04H,0FDH,08H,04HDB 0FCH,0AEH,08H,00H,00H,08HDB 0FFH,0FFHEND
问题4代码
ORG 0000HLJMP MAINORG 001BHLJMP BR1
MAIN:MOV R1,#10HMOV R2,#0F8HMOV R3,#30HMOV DPTR,#TAB2MOV R4,#00H
LLL: MOV A,R4MOV B,#1MOV TMOD,R1MOVC A,@A+DPTRMOV R2,AMOV TH1,R2INC R4MOV A,R4MOVC A,@A+DPTRMOV R3,AMOV TL1,R3INC R4MOV A,R4 MOVC A,@A+DPTRMUL ABMOV 30H,AINC R4SETB EASETB ET1SETB TR1LCALL DELAY LJMP LLLBR1: MOV TH1,R2MOV TL1,R3CPL P1.5RETIDELAY: MOV R5,30H
DELAY1:MOV R6,#080H
DELAY2:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAY2DJNZ R5,DELAY1RET TAB1:DB 0FCH,4AH,04H,0FCH,4AH,04HDB 0FCH,4AH,08H,0FBH,00H,08HDB 0FDH,08H,04H,0FDH,08H,04HDB 0FDH,08H,08H,0FCH,4AH,08HDB 0FCH,4AH,04H,0FDH,08H,04HDB 0FDH,80H,08H,0FDH,80H,08HDB 0FDH,30H,04H,0FDH,08H,04HDB 0FCH,0AEH,08H,00H,00H,08HDB 0FFH,0FFHTAB2:DB 0FCH,55H,08H,0FCH,55H,08HDB 0FDH,82H,08H,0FDH,82H,08HDB 0FDH,0C8H,08H,0FDH,0C8H,08HDB 0FDH,82H,08H,00H,00H,08HDB 0FDH,34H,08H,0FDH,34H,08HDB 0FDH,0AH,08H,0FDH,0AH,08HDB 0FCH,0ADH,08H,0FCH,0ADH,08HDB 0FCH,55H,08H,0FFH,0FFH,08HEND
12.51单片机实现电子音乐盒相关推荐
- 基于51单片机的电子万年历的设计-源代码
电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...
- 51单片机的电子密码锁的设计与仿真
51单片机的电子密码锁的设计与仿真 看看效果图 简介 (1)CPU使用51单片机. (2)用4x4矩阵键盘作为操作信息输入. (3)用LCM1602液晶显示模块作为信息显示. (4)用蜂鸣器及发光二极 ...
- 基于51单片机的电子时钟设计
基于51单片机的电子时钟设计 0 功能介绍 1.从DS1302中读取时间显示 2.一共4个按键,按键1按下进入修改时间模式,再按下切换修改的时间变量,这个时候第2和3个按键就是修改时间变量的按键,修改 ...
- 【制作】基于金沙滩51单片机的电子密码锁程序
基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...
- 如何在51单片机实现电子万年历
如何在51单片机实现电子万年历 51单片机制作万年历的基本功能部分,软件特性可以在proteus上仿真,使用51单片机定时器T0做万年历计时信号源,电子万年历计时系统在timer模块,本模块主要是将年 ...
- 万年历设计单片机c语言,基于51单片机的电子万年历的设计
基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...
- c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc
-- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...
- 基于51单片机的电子万年历的设计
(24条消息) 基于51单片机的电子万年历的设计说明书(完整word版本说明书+原理图+代码)资源-CSDN文库 摘 要 电子万年历是单片机系统的一个应用,由硬件和软件相配合使用.硬件由主控器.时钟电 ...
- 基于51单片机LCD1602电子时钟实物制作
之前写了51单片机的LCD1602的程序,现在画了电路图,焊接了电路板,做出了基于51单片机LCD1602电子时钟的实物. 注意事项: 焊接过程中,注意提前布局电路. 对应好端口(避免接线错误),我由 ...
- 基于51单片机的电子万年历设计
基于51单片机的电子万年历 1)LCD1602显示时间.日期.星期.温度 2)按键可调整时间日期星期 3)整点报时 4)DS1302时钟芯片 5)DS18B20温度传感器 6)闹钟功能 7)判断闰年 ...
最新文章
- Linux IP 配置
- linux accept 队列,[译] TCP的SYN队列和Accept队列
- 【JVM性能调优】jstack和线程dump分析
- excel如何返回双引号
- 传锤子科技解散成都分公司 才搬迁一年罗永浩就顶不住了
- Shell——流程控制
- dedecms切换模板css,DEDECMS的模板的css的详细解释 -电脑资料
- 华硕 固件 Linux内核,ubuntu 64位编译华硕AC1200G+固件
- Android 窗口全屏
- 《FLUENT 14流场分析自学手册》——第1章 流体力学基础 1.1 流体力学基本概念
- plsql developer怎么使用 plsql developer使用教程
- css 波纹扩散_css水波纹动画
- 空间矢量数据处理 | 第一讲:矢量数据的读入与保存
- 相亲app开发,解决内存循环引用的问题
- 计算机网络杨庚第一章答案,《计算机通信与网络》习题答案
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
- [翻译]C#和COM的互操作
- 论文投稿时,期刊编排要求将多张图片整合成一块,且格式为jig格式;dpi值为300等诸如此类。此时,用origin怎么做呢?接下来为大家讲解:利用origin将多张图片合并、排列并导出的方法。
- python接口自动化测试书籍_蜗牛出版之《接口自动化测试开发实战教程》书籍详解!...
- 有小孩上学实用 高中课程同步学 v1.0.5 免登陆高级版