单片机课程设计—电子音调发生器
更新时间:2023-04-04 22:15:01 阅读量: 实用文档 文档下载
单片机课程设计报告
题目:电子音调发生器
指导老师:付文秀
李昆鹏 08223010
完成日期:2010年12月17日
单片机课程设计—电子音调发生器
- 1 -
一、设计要求
1. 利用开关K0~K7及蜂鸣器设计电子音调发生器,通过单片机P1.7输出不同频率的脉冲信号驱动蜂鸣器发出不同频率的音调。拨动开关K0~K7,蜂鸣器依次发出1234567i 音调;
2. 编程实现两首音乐,并可进行选择播放;
3. 编写程序实现当拨打开关时,数码管显示当前音符。
二、设计目的
了解计算机发出不同音调的编程方法。
三、设计原理
1. 音节由不同频率的方波产生,音节与频率的关系如表(1)所示。要产生音频方波,只要计算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用计时器及时此半周期,每当计时到后就将输出方波的I/O 反相,然后重复计时次半周期时间再对I/O 反相,就可在I/O 脚得到此频率的方波。在ZKS-03试验仪上,产生方波的I/O 脚选用P1.7,通过跳线选择器JP1将P87C52X2的P1.7与蜂鸣器的驱动电路相连,这样P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。
2. 音乐的节拍是由延时实现的,如果1拍的时间为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时实现基本延时时间,节拍值只能是它的整数倍。
3. 每个音节相应的定时器初值X 可按下法计算:
16
1112()2f 2X fosc
*=*- 即:16
242
fosc
X f
=
-
*
其中,f 是音调频率。当晶振fosc=11.0592MHz 时,音节“1”相应的定时器初值为x ,则可得到x=63777D=F921H ,其它的可同样求得。
表(1) 音节与频率的关系
音调 频率(Hz) X(HEX) 音调 频率(Hz) X(HEX) 1 262 F921 5 392 FB68 2 294 F9E1 6 440 FBE9 3
330
FA8C
7
494
FC5B
单片机课程设计—电子音调发生器
4 349 FAD8 i 523 FC8F
四、硬件电路设计及描述
按键发音电路如下图所示:
实验电路图
电路描述:在ZKS-03实验仪上,将开关通过缓冲器74LS244与单片机的P0口相连,片选线选择CS1,相应的地址为F100。产生的方波由P1.7口输出,通过跳线与蜂鸣器的驱动电路相连,随着方波频率的变化,便可产生不同频率的音调。
五、设计方案及思路
在设计中,先分别编写出按键发音程序和选择播放音乐程序,利用转移命令进行控制,将两程序合成完整的程序,再适当的精简结构,使程序更加简洁。在完成这两项基本功能后,添加进数码显示程序。
六、软件设计流程及描述
- 2 -
单片机课程设计—电子音调发生器
程序设计流程图
七、实验源程序及注释
----------单片机课程设计----------
----------电子音调发生器----------
ORG 4000H
LJMP START
ORG 400BH ;计时器T0中断程序入口地址 LJMP INT_T0
ORG 4030H;
- 3 -
单片机课程设计—电子音调发生器
START:
SETB P3.1
SETB P3.2
SETB P1.4
SETB P1.5
SETB P1.6
CLR P1.3 ;用P1.3口驱动相应数码管显示音调 MOV TMOD,#01H ;T0方式1
CLR TR0 ;关T0
SETB ET0
SETB EA ;开中断
;按键查询程序
KEYS:
JNB P3.1,YINYUE
JNB P3.2,YINYUE ;音乐1,2控制开关开则转移到音乐程序 MOV R7,#0 ;无音乐时默认节拍为0
MOV DPTR, #0F100H ;开关输入口地址
MOVX A, @DPTR ;读开关状态
MOV B, A ;存开关结果
LCALL DL10 ;延时10MS
MOVX A, @DPTR ; 再读开关
CJNE A, B, KEYS ;是否相同,不同重新读取
MOV R0,#08H ;置计数器初值,用于查找音调
MOV A,#01H ;置比较初值 00000001B
KEY:
ANL A,B ;与开关结果相与
JZ SOUND ;结果为零则跳转到发声
RL A ;不为零则改变比较值
- 4 -
单片机课程设计—电子音调发生器
DJNZ R0,KEY ;重新比较
CLR TR0 ;开关未拨,不发声
SJMP KEYS;
SOUND:
DEC R0;
MOV A,R0;
ADD A,R0;(R0-1)*2 ;产生表格偏移量
MOV R0,A;
;按键发音程序
MOV A,R0
MOV DPTR,#PINLV ;置表格起始值
MOVC A,@A+DPTR; ;查表
MOV 21H,A ;查表结果暂存于21H单元
MOV A,R0
INC A ;A+1
MOVC A,@A+DPTR;
MOV 20H,A ;查表,将结果存入地址20H
SETB TR0 ;T0允许计时
LCALL DELAY ;调用节拍延时子程序;
JNB P3.1,BEAT
JNB P3.2,BEAT ;如果是音乐程序则跳到节拍程序 SJMP KEYS ;不是则跳到按键查询程序
INT_T0:
CLR TR0 ;T0关闭计时
CPL P1.7 ;产生波形
MOV TH0,21H
MOV TL0,20H ;重载定时器
- 5 -
单片机课程设计—电子音调发生器
SETB TR0 ;T0允许计时
RETI ;中断返回
;音乐程序
YINYUE:
MOV 35H,#00H ;产生表格偏移量
MUSIC:
MOV A,35H ;设置偏移初值
JNB P3.2,MUSIC2 ;音乐2开关开则跳到音乐2播放程序 AJMP MUSIC1 ;否则跳到音乐1播放程序
MUSIC2: MOV DPTR,#TABLE2 ;置表格2起始值
AJMP MUSIC3 ;跳过1
MUSIC1: MOV DPTR,#TABLE1 ;置表格1起始值
MUSIC3: MOVC A,@A+DPTR ; 查表
JZ STOP ;为0则跳到停止
MOV R1,A ;存取值
ANL A,#0FH ;取低四位
MOV R7,A ;存到节拍中
MOV A,R1 ;再取取值
SWAP A ;交换高四位和低四位
ANL A,#0FH ;取高四位
MOV R0,A ;存到音调中
JNZ SOUND ;跳到发音程序
CLR TR0
AJMP STOP ;为0则停止
BEAT: INC 35H ;偏移加1
AJMP MUSIC ;继续
STOP: CLR TR0 ;停止计数
MOV R7,#4
LCALL DELAY
- 6 -
单片机课程设计—电子音调发生器 AJMP START ;停止后延时0.5S重查开关
;10ms延时子程序
DL10: MOV R4, #50
DEL1: MOV R3, #100
DEL2: DJNZ R3, DEL2
DJNZ R4, DEL1
RET
;节拍延时子程序,(125*R7)ms
DELAY:
MOV R6, #250
DEL3: MOV R5, #250
DEL4: DJNZ R5, DEL4
DJNZ R6, DEL3
DJNZ R7, DELAY
RET
;音调频率表
PINLV:
DB 0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H ;i,7,6,5 DB 0FAH,0D8H,0FAH,8CH,0F9H,0E1H,0F9H,21H ;4,3,2,1
;显示数字编码表
PLAY:
DB 4FH,00H,0F8H,00H,82H,00H,92H,00H ;i,7,6,5 DB 99H,00H ,0B0H,00H,0A4H,00H,0CFH,00H ;4,3,2,1
;音乐1:祝你平安(4/4拍)
- 7 -
单片机课程设计—电子音调发生器
TABLE1:
DB 62H,82H,82H,61H,81H,84H,04H
DB 62H,42H,42H,21H,41H,44H,04H
DB 62H,82H,82H,92H,84H,04H
DB 52H,82H,51H,61H,54H,04H
DB 62H,42H,42H,21H,61H,64H,12H,12H,22H
DB 62H,42H,42H,21H,61H,64H,04H
DB 62H,51H,51H,52H,41H,21H,61H,51H,52H,54H
DB 12H,81H,81H,52H,62H,44H,04H
DB 74H,84H,94H,0A4H
DB 0B2H,0B2H,62H,82H,84H,62H,62H
DB 00H
;音乐2:祝你生日快乐(3/4拍)
TABLE2:
DB 82H,01H,81H,94H,84H ;节拍表
DB 0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H
DB 0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H
DB 0C4H,0B4H,04H
DB 00H
END
八、实验过程
1. 将P1.0、P1.1、P1.3、P1.4、P1.7的跳线接相应的位。拔掉不用的数据线。插好电源,插好通信线,打开实验仪电源开关,在实验上将开关拨到“LOAD”一档,并进行复位操作。然后启动DPFlash,单击“编程”,在弹出的窗口中选中“编程MON51”,按“确定”,将程序下载到单片机的
- 8 -
单片机课程设计—电子音调发生器
Flash中。
2. 关闭DPFlash,启动Keil,新建一个工程,然后选择芯片;
3. 设置工作环境;
4. 编写汇编语言程序,保存并加载,然后进行编译。
5. 将实验仪上的开关拨到mon位置,设置开关全部置高电平,调试、运行程序,拨动开关,观察实验现象,是否与理论一致。
6. 现象与理论不一致,分析原因,进行调试。
九、实验总结及体会
本次研究型题目,极大地锻炼了我们的实验与程序设计能力,以及单片机应用的基本素质。从方案的选择,再到设计与实现。在这个过程中学习到了很多在课本上不能学习到的知识,对一个产品也有了一个新的认识,以前我都很简单的认为这样的东西很容易就做出来了,现在我知道了每一步需要很复杂的工序。我们总结了一下经验:
1.耐心分析,解决问题。设计与实现的过程中我们会遇到一些困难这是很正常的事,但是不能一遇到问题就慌了,要耐心的分析问题并解决,这次课程设计的时候我就遇到了这样的情况。
2.团队合作,不懂请教。这次课程设计培养了团队合作,有些时候我们也需要别人的帮助,比如说当我们程序的细节出错的时候,自己一个人很难找到错误,就需要别人帮忙,无形中培养了团队合作的精神。有的时候可能遇到一些问题自己不能解决,这时我们应该虚心像同学请教,只能这样才能更好的解决问题。
十、参考文献
1.戴胜华,蒋大明,杨式武,赵俊慧.单片机原理与应用.北京:清华大学出版社,北京交通大学出版社,2005
- 9 -
正在阅读:
单片机课程设计—电子音调发生器04-04
(完整word)三年级下部编版语文词语表04-10
民主生活会自查自纠情况汇报发言材料05-05
全新版大学英语综合教程3课文原文及翻译01-13
县统战部上半年工作总结2020年08-30
2005年中考数学复习同步检测(24)(相似三角形)12-26
医院工程变更原因分析05-04
综合实践教学与信息技术的整合方案06-16
2013届高三新课标数学配套月考试题四04-16
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 音调
- 发生器
- 单片机
- 课程
- 设计
- 电子
- 茶油精深加工项目可行性研究报告项目建议书
- 精选小学生写童话的作文400字集锦7篇
- 六年级科学下册实验计划
- 【精品】2015年上海市闵行区高考数学一模试卷(文科)和答案
- 2011 十二月汽车电子行业月度分析报告
- 小学数学教师说题稿
- 如何在组织内部推行绩效管理--试题
- 关于知足常乐的作文400字5篇
- 人教版七年级上学期历史与社会道德与法制11月月考试卷(道法部分)
- 政府治理与国有企业绩效评价体系完善
- 天涯明月刀经典台词
- 小学四年级升五年级数学试题答案
- 女性红系服装搭配方法
- B2C 文档与方案未定稿
- 三星G900P(Galaxy S5)刷机包 线刷教程_刷机教程图解,救砖教程
- 读《少有人走的路》有感
- 2014东财《WTO法律制度》在线作业总题库解析
- 商品采购作业手册(上)(doc 33)
- 数学必修模块5期中试题
- 2007年四川省公务员考试行测真题及答案:语言理解与表达部分