学 院
计算机信息工程学院
专 业
计算机科学技术
课程名称
微机控制系统应方
题 目
基单片机电子音乐门铃
完成期限
2013年7月3日 2013年8月29日 8周
容
务
项目目
基单片机电子音乐门铃设计强化动手力毕业设计做准备
二项目务容求
1 IO口产生定频率方波驱动蜂鸣器发出音调演奏乐曲(少三首乐曲首少30秒)
2 客通门铃键器播放音乐显示等时间
3 果家暂停取消音乐播放
三项目设计(研究)思路
通仿真软件PROTUES实现求硬件电路图晶振电路系统数码键蜂鸣器等软件实现键事件音乐播放数码显示等首先实现硬件电路图软件处理时候通中断定时器实现键请求处理计时显示处理两定时器T0T1时熟悉刚开始二者总时实现通针性测试查找资料终实现
四具体成果形式求
通PROTUES仿真电路图展示项目功
进度
安排
起止日期
工作容
7475
召开组会议讨设计容进行明确分工
76823
查找参考资料解决相关问题
823826
完成仿真电路图实现代码
826828
书写设计文档
参考
资料
1 彭伟单片机C语言程序设计实训100例[M]电子工业出版社20096
2 谭浩强C语言程序设计(第二版)[M]北京清华学出版社1991
3 李建忠单片机原理应[M]西安电子科技学出版社20082
指导教师
意见
(签字): 年 月 日
系(教研室)意见
(签字): 年 月 日
微机控制系统应方学年设计说明书
学院名称: 计算机信息工程学院
班级名称: 计科
学生姓名:
学 号:
题 目: 基单片机电子音乐门铃设计
指导教师
姓 名:
起止日期: 2013070320130829
目 录
第部分:正文部分 1
1 绪 1
11 研究背景 1
12 工作 1
13 研究容 1
2 系统总体方案 1
21 系统组成框图 1
22 音乐门铃功结构图 2
3 硬件设计 2
31 部分硬件设计原理 2
311 AT89C51简介 2
312 时钟振荡电路 3
32 硬件电路图功 3
4 软件设计 4
41 音调确定 4
42 节拍确定 5
43 编码 6
5 调试 7
51 检查硬件连接 7
52 检查软件系统 7
53 测试结果 7
总 结 8
致 谢 8
第二部分:参考文献 9
附录A 源代码注释 10
第三部分:指导教师评语 15
第四部分:成绩评定 15
第部分:正文部分
1 绪
11 研究背景
着类社会发展视觉听觉方面享受提出越越高求传统门铃发音单调已满足需实现批量生产文设计音乐门铃单片机核心元件电子式音乐门铃体积功强演奏旋音乐方便具定商业价值类接触信息断增加日益复杂面浩烟海信息已够利计算机等工具高效准确进行处理想处理完信息时清晰传递必须通寻求更加卓越显示技术实现单片机技术数码显示技术结合信息传输交流着智视化方迅速发展
12 工作
设计基AT89C51单片机控音乐门铃程序设计该音乐门铃单片机技术原理通PROTEUS仿真软件硬件电路进行仿真制作利KEIL软件音乐门铃源程序进行C语言编译设计制作出功音乐门铃
13 研究容
1) IO口产生定频率方波驱动蜂鸣器发出音调演奏乐曲(少三首乐曲首少30秒)
2) 客通门铃键器播放音乐显示等显示时间
3) 果家暂停取消音乐
2 系统总体方案
21 系统组成框图
音乐门铃系统结构AT89C51单片机位控制核心加2键时钟复位电路蜂鸣器数码模块组成单片机负责接收键输入根输入控制音乐播放曲目显示等时间蜂鸣器发音系统组成框图图21示
图21 系统组成框图
22 音乐门铃功结构图
音乐门铃功结构图22示门铃键实现播放音乐功播放曲目4首分千年恋寂寞沙洲冷葫芦娃桌复位键实现音乐停止时间清零功完成操作
图22 音乐门铃功结构图
3 硬件设计
31 部分硬件设计原理
311 AT89C51简介
AT89C51种带4K字节闪存编程擦读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)低电压高性CMOS 8位微处理器俗称单片机AT89C2051种带2K字节闪存编程擦读存储器单片机单片机擦读存储器反复擦100次功8位CPU闪烁存储器组合单芯片中ATMELAT89C51种高效微控制器AT89C51单片机嵌入式控制系统提供种灵活性高价廉方案外形引脚排列图31示
图31 AT89C51系列单片机
312 时钟振荡电路
AT89C51中构成部振荡器高增益反相放器引脚XTAL1XTAL2分该放器输入端输出端放器作反馈元件片外石英晶体者陶瓷谐振器起构成然振荡器外接石英晶体电容C1C2接放器反馈回路中构成联振荡电路外接电容C1C2然没什严格求电容容量会轻微影响振荡频率高低振荡器工作稳定性起振难易程序温度稳定性果石英晶体推荐电容30PF10PF果陶瓷振荡器建议选择40PF10PF户采外部时钟采外部时钟电路图示种情况外部时钟脉接XTAL1端部时钟发生器输入端XTAL2悬空外部时钟信号通2分频触发器作部时钟信号外部时钟信号占空没特殊求高电持续时间低电持续时间应符合产品技术条件求振荡器电路图32示:
图32 单片机部外部振荡电路
32 硬件电路图功
总体硬件电路实现功图33示
1) 电路中P32P33控制键
2) P00P07P2027控制数码时间显示
3) P37控制蜂鸣器
图33 硬件电路图
4 软件设计
般说单片机演奏音乐基单音频率包含相应幅度谐波频率说电子琴样奏出种音色声音单片机奏乐需弄清楚两概念音调节拍表示音符唱长时间
41 音调确定
音高乐音CDEFGAB表示7字母音乐音名般次唱成DOREMIFASOLASI唱成简谱1234567相汉字米发梭拉西读音唱曲时乐音发音音调ToneCDEFGAB组音距离分成12等份等份半音两音间距离两半音全音钢琴等键盘乐器C–DD–EF–GG–AA–B两音间隔着黑键间距离全音E–FB–C两音间没黑键相隔间距离半音通常唱成1234567音然音左角加﹟号者b号变化音﹟升记号表示音原基础升高半音b降记音表示原基础降低半音
1)产生音频脉算出某音频周期(1频率)然周期2半周期时间利定时器计时半周期时间计时输出脉IO反相然重复计时半周期时间IO反相IO脚频率脉
2)利AT89C51部定时器工作计数器模式MODE1改变计数值TH0TL0产生频率方法
外结束符休止符分代码00HFFH表示查表结果00H表示曲子终查表结果FFH产生相应停顿效果
计数脉值频率关系公式:
NFi2Fr
N:计算值 Fi:部计时次1us频率1MHz
3) 计数值求法:
T65536N65536Fi2Fr
例:设K65536F1000000Fi1MHz球低音DO(261Hz)中音DO(523Hz)高音DO(1046Hz)计算值
T65536N65536Fi2Fr6553610000002Fr65536500000Fr
低音DOT6553650000026263627
低音DOT6553650000052364580
低音DOT65536500000104765059
4) C调音符频率计数值T表表41示
表41 C调音符频率计数值T表
低音
频率
T
参数
中音
频率
T
参数
高音
频率
T
参数
Do
262
1908
229
Do
523
956
115
Do
1046
57
57
Do﹟
277
1805
217
Do﹟
554
903
108
Do﹟
1109
54
54
Re
294
1701
204
Re
587
852
102
Re
1175
51
51
Re﹟
311
1608
193
Re﹟
622
804
97
Re﹟
1245
48
48
Mi
330
1515
182
Mi
659
759
91
Mi
1318
45
45
Fa
349
1433
172
Fa
698
716
86
Fa
1397
43
43
Fa﹟
370
1351
162
Fa﹟
740
676
81
Fa﹟
1480
41
41
So
392
1276
153
So
784
638
77
So
1568
38
38
So﹟
415
1205
145
So﹟
831
602
72
So﹟
1661
36
36
La
440
1136
136
La
880
568
68
La
1760
34
34
La﹟
464
1078
129
La﹟
932
536
64
La﹟
1865
32
32
Si
494
1012
121
Si
988
506
61
Si
1976
30
30
42 节拍确定
构成音乐光音调够需节拍音乐具旋律(固定律动)调节音快满度休止符表示暂停发音
首音乐许音符组成音符应着频率样利频率组合加拍数应延时构成音乐单片机说产生频率脉非常方便利单片机定时计数器产生样方波频率信号
表42节拍节拍码
节拍码
节拍数
节拍码
节拍数
1
14拍
1
18拍
2
24拍
2
14拍
3
34拍
3
38拍
4
1拍
4
21拍
5
114拍
5
58拍
6
112拍
6
34拍
8
2拍
8
1拍
A
212拍
A
114拍
C
3拍
C
112拍
F
334拍
音符1字节字节高4位代表音符高低低4位代表音符节拍表42节拍码果1拍04秒14拍实01秒设定延迟时间求节拍时间假设14拍1DELAY1拍应4DELAY类推求14拍DELAY时间余节拍倍数表431418节拍时间设定
表43 1418节拍时间设定
曲调值
DELAY
曲调值
DELAY
调44
125毫秒
调44
62毫秒
调34
187毫秒
调34
94毫秒
调24
250毫秒
调24
125毫秒
43 编码
do re mi fa so la si分编码1~7重音do编8重音re编9停顿编0播放长度十六分音符单位(程序中165ms)拍四分音符等4十六分音符编4播放时间类推音调作编码高4位播放时间作低4位音调节拍构成编码0xff作曲谱结束标志参考简谱码表44示
歌曲播放设计:先歌曲简谱进行编码储存数类型unsigned char 数组中程序数组中取出数然分离出高4位音调接着找出相应值赋定时器0定时操作蜂鸣器出相应音调接着分离出该数低4位延时时间接着调软件延时
表44 简谱应简谱码T值节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
5
低音SO
1
64260
1
14拍
6
低音LA
2
64400
2
24拍
7
低音TI
3
64524
3
34拍
1
中音DO
4
64580
4
1拍
2
中音RE
5
64684
5
114拍
3
中音MI
6
64777
6
112拍
4
中音FA
7
64820
8
2拍
5
中音SO
8
64898
A
212拍
6
中音LA
9
64968
C
3拍
7
中音TI
A
65030
F
334拍
1
高音DO
B
65058
2
高音RE
C
65110
3
高音MI
D
65157
4
高音FA
E
65178
5
高音SO
F
65217
5 调试
51 检查硬件连接
PROTUES检查硬件脚否连接正确线路逻辑否正确例:晶振电路连接复位电路否设计正确
52 检查软件系统
1 根系统原理结构检查流程图否正确根流程图检查程序否正确
2 程序组织起软件环境运行检查程序否正确通硬件软件系统认真检查反复测试果没出现问题源程序编译成HEX文件装载单片机中硬件进行仿真
53 测试结果
客时门铃键音乐会动响起时数码会记录等时间显示出果家暂停取消键结束音乐等时间图51示
图51系统运行图
总 结
单片机设计止已进入令鼓舞阶段进行长达星期时间摸索实验仅仅单片机入门软件硬件常设计功项设计研究制作程需详细步骤具体实现方法力度掌握
然次宝贵学年设计活动中验收获增强身未知问题知识深化认识力受益匪浅词语概括次难忘活动觉合适光完成作品满足开始时候怀着作品制作更加性化更加令满意更加功完美方便应领域终目着单片机门学科认识加深达拓展程度想目远时期实现
总次设计软件编写调试软硬件联机调试倾注量时间心血真程序编写冥思查找法找出错误郁闷苦恼某功实现犹豫彷徨终成功
仅品味结果喜悦更明白程弥足珍贵
致 谢
感谢董秀老师指导严谨细致丝苟作风直工作学中榜样循循善诱教导拘格思路予启迪
实验程中团队精神进行考察合作起更加默契成功起体会喜悦心情果然团结力量互相间默契融洽配合换终完美结果次设计明白思路出路什懂明白方时请教网查询认真钻研动脑思考动手实践没弄懂知识收获颇丰
什事家齐心协力定会成功首先感谢组长明确分工充分利家长整程简单化感谢指导老师帮助设计变更加实完善
第二部分:参考文献
[1] 李建忠单片机原理应[M]西安电子科技学出版社20082
[2] 黄智伟全国学生电子设计竞赛系统设计[M]北京北京航空航天学出版社20066
[3] 李广弟朱月秀王秀山单片机基础[M]北京北京航空航天学出版社20017
[4] 谭浩强C语言程序设计(第二版)[M]北京清华学出版社1991
[5] 雷思孝凌阳单片机原理实技术[M]西安电子科技学2004
[6] 彭伟单片机C语言程序设计实训100例[M]电子工业出版社20096
学生签名: 填表日期: 年 月 日
附录A 源代码注释
#include
#includeintrinsh
#define uchar unsigned char
#define uint unsigned int
sbit key1P3^2key1暂停取消键
sbit key2P3^3key2切换歌曲门铃键
sbit fmP3^7蜂鸣器连续IO口
uchar count歌曲标志
uchar timehtimelixnum
uchar code DSY_CODE[]{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x00}
简谱
编程规字节高位简谱低位持续时间
代表少十六分音符
17代表中央C调8E代表高八度0代表停顿
0结束标志
歌曲1:千年恋
uchar code qnzl[]{ 千年恋
0x120x220x340x840x740x540x380x420x320x220x420x340x840x720x820x940xA80x08
0x320x310x210x320x520x320x310x210x320x62
0x320x310x210x320x820x710x810x710x510x320x22
0x320x310x210x320x520x320x310x210x320x62
0x320x310x210x320x830x820x710x720x02
0x630xA10xA20x620x920x820x52
0x310x510x630x510x630x510x630x510x620x820x7C0x02
0x610x710x820x710x620xA20x710x76
0x610x710x820x710x620x520x310x36
0x610x710x820x710x620xA30x730x620x53
0x420x630x830x830x910x91
0x610x710x820x710x620x0A20x710x76
0x610x710x820x710x620x520x310x36
0x610x710x820x710x620xA30x730x620x53
0x420x820x880x020x740x930x890xff结束标志
}
歌曲2:寂寞沙洲冷
uchar code jmszl[]{ 寂寞沙洲冷
0x120x120x220x320x310x220x210x22
0x210x310x510x520x310x520x610x150x14
0x510x520x310x520x620x130x110x130x320x280x080x28
0x310x320x310x320x110x210x510x520x510x52
0x510x510x310x320x310x320x810x720x63
0x620x710x810x720x610x610x520x310x210x320x510x54
0x220x120x110x120x110x120x120x140x260x320x26
0x320x610x510x510x310x310x210x310x510x610x510x310x51
0x020x320x810x810x810x810x620x520x34
0x310x810x810x810x610x910x82
0x510x510x510x510x310x610x53
0x210x110x210x110x220x110x210x26
0x320x610x510x510x310x310x210x310x510x610x510x310x510x52
0x310x310x810x810x810x610x910x810x610x310x56
0x320x320x810x810x810x810x910x810x610x810x610x510x310x510x34
0x210x310x510x310x210x110x610x210x16
0xff}
歌曲3:葫芦娃
uchar code hlw[]{ 葫芦娃
0x830x630x510x610x030x810x610x510x810x630x010x810x610x630x510x630x01}
歌曲4:桌
uchar code tzdn[]{ 桌[11]
0x560x560x320x420x520x760x660x560x520x220x320x460x160x260x04}
简谱音调应定时器初值
适合110592M晶振
uchar code cuzhi[]{
0xff0xff占位
0xFC0x8E中央C调17
0xFC0xED
0xFD0x43
0xFD0x6A
0xFD0xB3
0xFD0xF3
0xFE0x2D
0xFE0x47 高八度17
0xFE0x76
0xFE0xA1
0xFE0xC7
0xFE0xD9
0xFE0xF9
0xFF0x16
}
void Delay1(uint z) 延时1MS
void Delay(uint z) 延时165MS十六分音符
void song() 播放音乐子程序
void beep() 蜂鸣器响起
void main()
{
P00X3F
P20X3F
EA1开总中断
EX01开外部中断0
IT01外部中断0降触发方式
EX11开外部中断1
IT11外部中断1降触发方式
TMOD0x11定时器0工作方式1
ET01ET11
TR00TR10
TH1(6553650000)256
TL1(6553650000)256
while(1)
{
if(key20){
song()
Delay1(1000)
}
}
}
void int0() interrupt 0 功:暂停取消音乐
{
EA0关总中断
Delay1(1)抖
if(key10)
{
count0蜂鸣器唱歌
TR00
num0
TR10
P00X3F
P20X3F
}
EA1开总中断
}
void int1() interrupt 2 门铃键:次会动切换音乐计时会新开始
{
EA0关总中断
Delay1(1)抖
if(key20)
{
TR01
TR11
i0头开始唱
count++
if(count5)
count1
}
EA1开总中断
}
void timer0() interrupt 1 产生种音调
{
TH0timeh
TL0timel
fm~fm
}
void timer1() interrupt 3
{
TH1(6553650000)256
TL1(6553650000)256
if(++x20)
{
x0
++num
P0DSY_CODE[num10]
P2DSY_CODE[num10]
if(num59)
num0
}
}
void song()
{
uint temp
uchar jpjp简谱
i0
while(1)
{ if(count0){
break
if(count1) 选曲
tempqnzl[i]
if(count2)
tempjmszl[i]
if(count3)
temphlw[i]
if(count4)
temptzdn[i]
if(temp0xff)
break
jptemp16 取数高4位
if(jp0) {
timehcuzhi[jp*2]
timelcuzhi[jp*2+1]
}
else{
TR00
fm1关蜂鸣器
}
Delay(temp16) 取数低4位
TR00 唱完音停10MS
fm1
Delay1(10)
TR01
i++
}
TR00
fm1
}
void Delay(uint z) 延时165MS十六分音符
{ uint xy
for(xzx>0x)
for(y19000y>0y)
}
void Delay1(uint z) 延时1MS
{ uint xy
for(xzx>0x)
for(y112y>0y)
}
void beep() 蜂鸣器响起
{ uchar i
for(i0i<50i++){
fm~fm
Delay1(1)
}
fm1
}
第三部分:指导教师评语
第四部分:成绩评定
指导教师签名: 填表日期: 年 月 日
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档