课程设计报告
课程名称单片机原理应课程设计
设计题目: 电子琴设计
系 : 通信控制工程系
专 业: 电子信息工程
班 级:
学生姓名
学 号
起止日期
指导教师
教研室:
指导教师评语:
指导教师签名: 年 月 日
成绩评定
项 目
权重
成绩
1设计程中出勤学态度等方面
02
2课程设计质量答辩
05
3设计报告书写图纸规范程度
03
总 成 绩
教研室审核意见:
教研室签字: 年 月 日
教学系审核意见:
签字: 年 月 日
摘
单片微型计算机规模集成电路技术发展产物属第四代电子计算机具高性高速度体积价格低廉稳定应广泛特点应必定导致传统控制技术根发生变革单片机开发应已成高科技工程领域项重课题
电子琴现代电子科技音乐结合产物种新型键盘乐器现代音乐扮演着重角色单片机具强控制功灵活编程实现特性已溶入现代生活中成代部分文容AT89C52单片机核心控制元件设计电子琴单片机作控核心键盘蜂鸣器等模块组成核心控制模块控模块设16键蜂鸣器
文单片机设计简易电子琴进行分析介绍基单片机电子琴统硬件组成利单片机产生频率获求音阶终意弹奏想表达音乐文分原理图芯片模块原理模块程序调试详细阐述
首音乐许音阶组成音阶应着频率样利频率组合构成想音乐然单片机产生频率非常方便利单片机定时计数器T0产生样方波频率信号首歌曲音阶应频率关系弄正确
关键词 AT89C52芯片8255A芯片蜂鸣器矩阵键盘音节 目录
摘 1
1概述 2
1 1 电子琴技术状况 2
1 2 务求 3
13 芯片简介 3
131 AT89C52芯片介绍 3
132 8255A芯片介绍 4
2 系统总体方案硬件设计 5
2 1系统总体方案 5
2 2总体硬件组成框图 6
2 2 1 子系统模块 7
2 2 2 子系统模块二 7
2 2 3 子系统模块三 8
2 2 4 AT89C51复位模块 9
2 2 5 AT89C52晶振模块 9
3 软件设计 10
3 1软件设计总流程图流程 10
3 2 软件程序 11
4 课程设计体会 11
5致谢 13
参考文献 14
附1 源程序代码 15
附2 仪器清单 21
附3 系统原理图 22
1概述
1 1 电子琴技术状况
次设计提出AT89C52单片机核心控制元件设计简易电子琴 方案AT89C52单片机作控核心键盘蜂鸣器等模块组成核心控制模块控模块设4*4键蜂鸣器根者操作意弹奏想表达音乐首音乐许音阶组成音阶应着频率样利频率组合构成想音乐然单片机产生频率非常方便利单片机定时计数器T0产生样方波频率信号
1 2 务求
实现电子琴发声控制系统求电路实现功:
4*4键盘组成16钮意弹奏想表达音乐设置开始键结束键重复键通重复键完成前音乐重放
说明:单片机工作时钟频率12MHz
13 芯片简介
131 AT89C52芯片介绍
AT89C52(图11)8位低功耗单片机采工业标准C51核部功脚排布通8xc52 相会聚调整时功控制功包括会聚IC 部寄存器数RAM外部接口等功部件初始化会聚调整控制会聚测试图控制红外遥控信号IR接收解码板CPU通信等脚:XTAL1(19 脚)XTAL2(18 脚)振荡器输入输出端口外接12MHz 晶振RST(9 脚)复位输入端口外接电阻电容组成复位电路VCC(40 脚)GND(20 脚)供电端口分接+5V电源正负端P0~P3 编程通IO 脚功途软件定义设计中P0 端口(32~39 脚)定义双8位三态IO接口作通IO接口作外部扩展时数总线低8位址总线分时复口P1端口(1~8脚)定义准双IO接口部具拉电阻P2端口(21~28脚)定义8位准双IO接口部具拉电阻直接连接外部IO设备时址高8位复P3端口(10~17)定义8位准双IO接口部具拉电阻双功复口引脚驱动4TTL负载
图11 AT89C52 图12 8255A芯片
132 8255A芯片介绍
8255A(图12)片单+5V电源40脚双列直插式规模集成电路通性强灵活通CPU直接外设相连接
8255A前写入方式控制字选择ABC三端口工作方式三种:
方式0 :基输入输出方式须联络直接进行 IO方式中ABC口高四位低四位分设置成输入输出
方式1 :选通IO时接口外围设备需联络信号进行协调A口B口工作方式1时C口某线规定A口B口外围设备联络信号余线基IO功工作方式0
方式2: 双IO方式A口工作种方式该IO线输入输出时C口5条线规定A口外围设备双联络线C口剩三条线作B口方式1联络线B口起方式0IO线
8255A行输入输出器件具24编程设置IO口包括3组8位IOPA口PB口PC口分2组12位IO口:A组包括A口C口高4位B组包括B口C组低4位
2 系统总体方案硬件设计
系统采单片机AT89C52电子琴控制核心系统包括键弹奏模块音乐播放模块面模块设计逐进行证较总电路图见附页二
2 1系统总体方案
211定时计数器设计状态字定义:
产生音频脉算出某音频周期(1频率)周期2半周期时间利定时器计时半周期时间计时终止P33反相然重复计时反相P33引脚频率脉利AT89C52部定时器工作计数器模式(MODE1)改变计数值TH0TL0产生频率方法产生音阶例频率523Hz周期T=1523=1912μs令计数器计时956μs1μs=956计数956次时IO反相中音DO(523Hz)计数脉值频率关系式:N=fi÷2÷fr式中N计数值fi机器频率(晶体振荡器12MHz时频率1MHz)fr想产生频率计数初值T求法:T=65536-N=65536-fi÷2÷fr
例:设K=65536fi=1MHz求中音DO(261Hz)T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000fr中音DOT=65536-500000523=64580
单片机12MHZ晶振中音符计数T0相关计数值表示:
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
中1 DO
262
63628
中 5 SO
740
64860
中2
RE
277
63731
中 6 LA
784
64898
中3
MI
294
63835
中7 XI
831
64934
中4
FA
311
63928
高 1 DO
880
64968
单片机播放音乐者弹奏电子琴实际特定频率输出连串方波输出合适方波首先应该知道音符频率关系
2 2总体硬件组成框图
键控制模块
键盘弹奏
键发声
蜂鸣器
中心控制模块
AT89C52
停止键
开始键
播放键
音乐播放
蜂鸣器
图21 总体硬件组成框图
实验中琴键单片机够检测键盘键根键位置通程序控制喇叭发出频率(音调)声音声音延迟段时间等键放开声音停止然继续扫描否键循环实现基琴键功
2 2 1 子系统模块
琴键模块图22示利AT89C52单片机P0端口P2端口8255连接
图22 键盘电路图
2 2 2 子系统模块二
播放模块蜂鸣器构成蜂鸣器种体化结构电子讯响器采直流
图23 发声模块电路图
电压供电广泛应计算机印机复印机报警器电子玩具汽车电子
设备电话机定时器等电子产品中作发声器件蜂鸣器分压电式蜂鸣器电磁式蜂鸣器两种类型蜂鸣器电路中字母HHA(旧标准FMLBJD等)表示需驱动功率较价格低廉广泛应
2 2 3 子系统模块三
电子琴设8键分代表8音符包括中音段全部音符通软硬件设计键触发外部中断中断程序跳转实现模式转换启动电子琴然通查询电子琴键读取电子琴输入状态跳转应程序口实现种琴键声音
矩阵键盘模块图:
图24 矩阵键盘模块
224 AT89C51复位模块
复位电路电键复位键电源电容C充电RST端快速达高电松开键电容芯片阻放电恢复低电单片机复位电复位键复位
图25 复位电路
2 2 5 AT89C52晶振模块
XTAL1脚片振荡电路输入端XTAL2脚片振荡电路输入端8952时钟两种方式:种片时钟振荡方式需1819脚外接石英晶体(频率12~12MHZ)振荡电容振荡电容值般取10~30pf典型值30pf种外部时钟方式XTAL1接外部时钟信号XTAL2脚输入面方式电路图
图26 晶振模块
3 软件设计
软件该电子琴控制系统重组成部分系统部分功编写成子模块形式样增强系统软件读性移植性KEIL C51 µVision2集成开发环境KEIL SoftwareIncKEIL electronik GmbH开发基80C51核微处理器软件开发台嵌种符合前工业标准开发工具完成工程建立理编译链接目标代码生成软件仿真硬件仿真等完整开发流程尤C编译工具产生代码准确性效率方面达较高水附加灵活控制选项开发型项目时非常理想
3 1软件设计总流程图流程
程序开始
程序初始化
开始键
谱曲效
开始谱曲
结束键
重复键
音乐播放
N
N
Y
Y
N
图31 软件设计总流程图
3 2 软件程序
系统位机软件编辑电子琴播放状态容设计中采C语言编写电子琴控制系统控制播放容程序见附录
4 课程设计体会
微型计算机出现量类社会带入新时代单片微型计算机(简称单片机)中扮演着十分重角色然没常见PC样体积重量会办公桌控制台占显位置螺丝钉样镶嵌工作生活中需计算控制测量等智活动角落20世纪70年代问世单片机体积性高控制功强方便性价格高容易产品化等特点智仪表机电体化实时控制分布式机系统家电器等领域广泛应行业技术改造产品更新换代起着重推动作生活质量提高产生深刻影响作21世纪工科学生学单片机方面加深计算机原理结构认识方面身专业深入发展构筑台重性强调
程序烧入芯片调试成功意弹奏想旋律研究通制作电子琴模块融合起单片机设计简易电子琴进行分析介绍基单片机电子琴统硬件组成利单片机产生频率获求音阶终意弹奏想表达音乐说明首音乐许音阶组成音阶应着频率样利频率组合构成想音乐利单片机定时计数器T0产生样方波频率信号首歌曲音阶应频率关系弄正确然利功放电路音乐声音放时通显示模块确知弹音符
思考:弹奏音符数较少定范围满足户需通改进键盘识模块发生模块增加复杂度音色调种波形频率输出外围电路设计滤波电路接输出口通软件实现端口输出接入滤波电路输出波形获样音色弦形式演奏单键输出单音阶
次课程设计文够利完成指导老师帮助学帮助鼓励结果里表示深深谢意
首先特感谢指导老师——谭周文老师谭老师设计出现问题时予耐心帮助排忧解难课程设计完成提供定帮助指导老师严谨治学态度精益求精工作作风诲倦高尚师德朴实华易格魅力影响深远仅树立远学术目标掌握基研究方法明白许接物处世道理
次感谢通控系课老师老师教会仅仅专业知识更学生活态度
老师学家次致衷心感谢教导老师格魅力永记心间身边学朋友学算完整寝室友天赋犹天恩赐生活更加精彩
5致谢
次单片机课程设计历时两星期两星期中深深体会课程设计苦乐程序调试出现问题时步步调试步步查修改程确实枯燥辛苦程序调试成功够载单片机中运行时说出高兴感觉付出值
总说次课程设计领悟理实践结合重性懂拥理知识远远够学理知识实践相结合起中收获提高实际动手力独立思考力做全面发展样真正社会服务
第次做单片机课程设计遇种样问题面难题没妥协求学心态解决中发现足处正难题足前学知识理解够深刻基础掌握够牢固学表面知识没深入解知识涵庆幸次课程设计教会底学什知识学指明方促更加努力学补充足次课程设计终利完成中离开老师耐心指导学热心帮助表示衷心感谢外特感谢指导老师谭老师耐心指导讲解豁然开朗感觉利完成次课程设计
参考文献
[1] 余发山王福忠 单片机原理应技术 中国矿业学出版社2008年6月第1 版
[2] 杨凌霄 微型计算机原理应中国矿业学出版社2008年8月第版
[3] 康华光 电子技术基础(数字部分)高等教育出版社第五版
[4] 邓红 单片机实验应设计教程 出版日期:2004年05月第1版
[5] 网资源
附1 源程序代码
#include
#include
#define uint unsigned int 宏定义
#define uchar unsigned char
#define PA XBYTE[0xD0FF] 8255引脚址定义
#define PB XBYTE[0xD2FF]
#define PC XBYTE[0xD4FF]
#define CON XBYTE[0xD6FF]
uint wzkeyqidongnum1num0count0changge
sbit beepP3^3 蜂鸣器位
uint temp[42]{0} 保存key值数组
uint a[]{6458064684647776482064898649686503065058} 八音节
void delay(uint) 延时函数
void jianpan() 键盘扫描函数
void kaishi() 开始键
void chongfu()
main()
{ CON0X80 8255方式设定
TMOD0X01 定时器0设置
EA1
ET01
PA0XFF 关数码
EX01 外部中断0设置
IT01
PT01 定时器0优先
while(1)
{
kaishi()
jianpan()
}
}
void jianpan()
{
if(qidong1)
{
PC0XF7第排
wPC 读PC口
ww&0xf0 获取高位
if(w0xf0)
{
delay(10)
wPC
ww&0xf0
if(w0xf0)
{
wPC
switch(w)
{
case 0xe7
key0
break
case 0xd7
key1
break
case 0xb7
key2
break
case 0x77
key3
break
}
beep~beep
TH0a[key]256
TL0a[key]256
TR01
while(w0xf0) 松手判断
{
wPC
ww&0xf0
}
TR00
temp[count++]a[key]
}
}
PC0XFB 第二排
wPC
ww&0xf0
if(w0xf0)
{
delay(10)
wPC
ww&0xf0
if(w0xf0)
{
wPC
switch(w)
{
case 0xeb
key4
break
case 0xdb
key5
break
case 0xbb
key6
break
case 0x7b
key7
break
}
beep~beep
TH0a[key]256
TL0a[key]256
TR01
while(w0xf0)
{
wPC
ww&0xf0
}
TR00
temp[count++]a[key]
}
}
} 括号qidong应
}
void delay(uint z)
{
uint xy
for(xzx>0x)
for(y110y>0y)
}
void timer0() interrupt 1
{
TH0a[key]256
TL0a[key]256
beep~beep
}
void kaishi()
{
PC0XFE
if(PC0xee)
{
qidong1
}
}
void wai0() interrupt 0
{ uint i
while(1)
{ chongfu()
if(changge1)
{
for(i0i
a[key]temp[i]转接调定时器00
beep1
TH0a[key]256
TL0a[key]256
TR01
if(i6||i13||i20||i27||i34||i41) delay(500)
else
delay(200)
TR00
delay(200)
}
count0
}
}
}
void chongfu()
{
PC0XFE
if(PC0xde)
{
changge1
}
}
附2 仪器清单
仪器名称
数
4*4矩阵键盘
1
电阻
干
STC89C52
1
蜂鸣器
1
8255
1
晶振12MHZ
1
附3 系统原理图
系统总原理图
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档