利用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单片机实现电子音乐盒相关推荐

  1. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  2. 51单片机的电子密码锁的设计与仿真

    51单片机的电子密码锁的设计与仿真 看看效果图 简介 (1)CPU使用51单片机. (2)用4x4矩阵键盘作为操作信息输入. (3)用LCM1602液晶显示模块作为信息显示. (4)用蜂鸣器及发光二极 ...

  3. 基于51单片机的电子时钟设计

    基于51单片机的电子时钟设计 0 功能介绍 1.从DS1302中读取时间显示 2.一共4个按键,按键1按下进入修改时间模式,再按下切换修改的时间变量,这个时候第2和3个按键就是修改时间变量的按键,修改 ...

  4. 【制作】基于金沙滩51单片机的电子密码锁程序

    基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...

  5. 如何在51单片机实现电子万年历

    如何在51单片机实现电子万年历 51单片机制作万年历的基本功能部分,软件特性可以在proteus上仿真,使用51单片机定时器T0做万年历计时信号源,电子万年历计时系统在timer模块,本模块主要是将年 ...

  6. 万年历设计单片机c语言,基于51单片机的电子万年历的设计

    基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...

  7. c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc

    -- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...

  8. 基于51单片机的电子万年历的设计

    (24条消息) 基于51单片机的电子万年历的设计说明书(完整word版本说明书+原理图+代码)资源-CSDN文库 摘 要 电子万年历是单片机系统的一个应用,由硬件和软件相配合使用.硬件由主控器.时钟电 ...

  9. 基于51单片机LCD1602电子时钟实物制作

    之前写了51单片机的LCD1602的程序,现在画了电路图,焊接了电路板,做出了基于51单片机LCD1602电子时钟的实物. 注意事项: 焊接过程中,注意提前布局电路. 对应好端口(避免接线错误),我由 ...

  10. 基于51单片机的电子万年历设计

    基于51单片机的电子万年历 1)LCD1602显示时间.日期.星期.温度 2)按键可调整时间日期星期 3)整点报时 4)DS1302时钟芯片 5)DS18B20温度传感器 6)闹钟功能 7)判断闰年 ...

最新文章

  1. Linux IP 配置
  2. linux accept 队列,[译] TCP的SYN队列和Accept队列
  3. 【JVM性能调优】jstack和线程dump分析
  4. excel如何返回双引号
  5. 传锤子科技解散成都分公司 才搬迁一年罗永浩就顶不住了
  6. Shell——流程控制
  7. dedecms切换模板css,DEDECMS的模板的css的详细解释 -电脑资料
  8. 华硕 固件 Linux内核,ubuntu 64位编译华硕AC1200G+固件
  9. Android 窗口全屏
  10. 《FLUENT 14流场分析自学手册》——第1章 流体力学基础 1.1 流体力学基本概念
  11. plsql developer怎么使用 plsql developer使用教程
  12. css 波纹扩散_css水波纹动画
  13. 空间矢量数据处理 | 第一讲:矢量数据的读入与保存
  14. 相亲app开发,解决内存循环引用的问题
  15. 计算机网络杨庚第一章答案,《计算机通信与网络》习题答案
  16. 关于openGL, openGL ES, openVG及android中2D调用关系的报告
  17. [翻译]C#和COM的互操作
  18. 论文投稿时,期刊编排要求将多张图片整合成一块,且格式为jig格式;dpi值为300等诸如此类。此时,用origin怎么做呢?接下来为大家讲解:利用origin将多张图片合并、排列并导出的方法。
  19. python接口自动化测试书籍_蜗牛出版之《接口自动化测试开发实战教程》书籍详解!...
  20. 有小孩上学实用 高中课程同步学 v1.0.5 免登陆高级版

热门文章

  1. macbook终端打开jupyter notebook
  2. 抖音短视频怎么吸粉 手把手教你快速抖音养号吸粉引流
  3. 解析损失函数、代价函数、目标函数
  4. 国际区号+手机号正则校验
  5. cesium api 学习之旋转角 heading(yaw)、pitch、roll
  6. 如何解决控件附件上传时超大附件无法上传的问题
  7. linux下安装nginx
  8. 备课手记:把Ken Olsen换成姚明
  9. t3财务软件服务器停止运行,用友T3标准版已停止工作应该怎么办
  10. 2019版本VS 社区版本 30天试用期 过期的解决方法