单片机电子琴课程设计.docx
- 文档编号:9247854
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:39
- 大小:1.04MB
单片机电子琴课程设计.docx
《单片机电子琴课程设计.docx》由会员分享,可在线阅读,更多相关《单片机电子琴课程设计.docx(39页珍藏版)》请在冰点文库上搜索。
单片机电子琴课程设计
桂林电子科技大学
微机综合设计
设
计
报
告
指导教师:
wuzhaohua
学生:
lushengbao
学号:
08
桂林电子科技大学机电工程学院
《微机综合设计》报告目录
一、设计题目4
二、设计内容与要求4
内容与要求4
课程设计的设计步骤4
任务分析4
方案比较及选择4
三、设计目的及意义5
四、系统硬件电路图5
软件简介及仿真电路图5
Protel199SE简介和所画图形6
五、程序流程框图与源程序10
流程框图10
源程序清单11
六、系统设计说明14
8051单片机介绍15
6stc89c54单片机15
振荡特性20
6.芯片擦除21
单片机最小系统21
6.复位电路22
6.晶振电路23
STC-ICP-V480软件介绍24
6.软件功能24
6.软件应用流程24
软件介绍26
音乐与频率相关知识27
6.初值的确信27
6.改变音调的方式29
蜂鸣器及其驱动电路设计29
调试进程30
调试进程收成31
改良意见及方法31
七、综合设计总结31
八、参考文献33
一、设计题目
简易电子琴设计
二、设计内容与要求
2.1内容与要求
用8031单片机操纵电子琴发出一、二、3、4、五、六、7七个音节的声音,音调可控。
2.2课程设计的设计步骤
1、明白得任务设计要求(通过阅读有关资料及调查研究);
2、对整体方案进行分析,论证,验证其可行性;
3、系统硬件电路的设计:
利用protel软件制作硬件电路原理图并生成PCB,依照PCB图制作系统硬件电路板而且焊上相关元器件,检测电路是不是导通;
4、系统操纵软件的设计:
1)以功能明确、彼此界面能清楚分割的软件程序为基础,确信主程序的流程框图;
2)以主程序流程图为基础,确信各个模块程序算法及实现的功能,进一步确信各个模块程序流程框图;
3)依照软件流程框图,用汇编语言或C语言编写主程序和延时子程序;
4)系统软件仿真、硬件电路制造、硬件的测试;
5)编写课程设计说明书,答辩验收。
2.3任务分析
1)用单片机操纵蜂鸣器使之发出一、二、3、4、五、六、7七个音节的声音(各类不同的声音能够用按时器产生不同的频率取得)。
2)通过按键操纵单片机按时器以取得不同的输出频率,当按键按下时发出声音,当按键释放时停止发音。
3)通过按键操纵声音的低、中、高三种音调。
2.4方案比较及选择
1)单片机:
由于本实验受到程序烧录软件的限制,选择用STC89c54单片机。
2)键盘输入接口:
可供选择的键盘形式有独立式按键、矩阵式键盘按键。
独立式按键的每一个按键各占用一名I/O口线,其状态彼此独立,彼此之间没有阻碍,只要单独检测I/O口线状态即可判定按键状态,具有电路简单,按键识别软件也相对简单的优势,适用于系统需要按键数量较少的场合。
但按键数量较多的情形下,采纳独立式按键就会需要大量的I/O口资源,这时往往采纳矩阵式键盘,以节约对I/O口资源的占用。
由于本实验需要按键不多,本着电路简单,软件识别简单的原那么,选择利用独立式按键。
3)音调操纵:
收到硬件资源的限制,利用单个按键操纵声音的低、中、高。
声音按低→中→高→低的规律进行切换。
三、设计目的及意义
一、在系统把握单片机相应基础知识的前提下,熟悉单片机最小应用系统系统的设计方式及系统设计的大体步骤。
二、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计、
3、完成系统所需的硬件设计制造,在提高实际手动能力的基础之上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序测试和调试工作。
四、系统硬件电路图
Proteus软件简介及仿真电路图
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
尽管目前国内推行刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上闻名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处置器模型支持805一、HC1一、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2020年增加Cortex和DSP系列处置器,并持续增加其他系列处置器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例如multisim)的功能。
这些功能是:
一、原理布线
二、PCB自动或人工布线
3、SPICE电路仿真
下面图1-1是利用proteus软件成立的模型,经仿真,程序实现了预定的功能
图1-1
Protel199SE简介和所画图形
Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采纳设计库治理模式,能够进行联网设计,具有很强的数据互换能力和开放性及3D模拟功能,是一个32位的设计软件,能够完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,能够设计32个信号层,16个电源--地层和16个机加工层。
Protel99SE的系统组成
依照系统功能来划分,Protel99se要紧包括以下两大部份和6个功能模块。
一、电路工程设计部份
(1)电路原理设计部份(AdvancedSchematic99):
电路原理图设计部份包括电路图编辑器(简称SCH编辑器)、电路图零件库编辑器(简称Schlib编辑器)和各类文本编辑器。
本系统的要紧功能是:
绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各类报表。
(2)印刷电路板设计系统(AdvancedPCB99):
印刷电路板设计系统包括印刷电路板编辑器(简称PCB编辑器)、零件封装编辑器(简称PCBLib编辑器)和电路板组件治理器。
本系统的要紧功能是:
绘制、修改和编辑电路板;更新和修改零件封装;治理电路板组件。
(3)自动布线系统(AdvancedRoute99):
本系统包括一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路板的自动布线,以实现PCB设计的自动化。
二、电路仿真与PLD部份
(1)电路模拟仿真系统(AdvancedSIM99):
电路模拟仿真系统包括一个数字/模拟信号仿真器,可提供持续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。
(2)可编程逻辑设计系统(AdvancedPLD99):
可编程逻辑设计系统包括一个有语法功能的文本编辑器和一个波形编辑器(Waveform)。
本系统的要紧功能是;对逻辑电路进行分析、综合;观看信号的波形。
利用PLD系统能够最大限度的精简逻辑部件,使数字电路设计达到最简化。
(3)高级信号完整性分析系统(AdvancedIntegrity99):
信号完整性分析系统提供了一个精准的信号完整性模拟器,可用来分析PCB设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。
Protel99SE的功能特性:
(1)开放式集成化的设计治理体系
(2)超强功能的、修改与编辑功能
(3)壮大的设计自动化功能
Protel99SE有壮大的功能,在本最小系统设计中利用Protel99SE制图,所制电路原理如图1-2所示。
图1-2
所用到的单片机芯片如图1-3所示。
图1-3
晶振电路模块如图1-4所示。
图1-4
单片机复位电路如图1-5所示。
图1-5
蜂鸣器及驱动模块如图1-6所示。
图1-6
原理图生产的PCB及其布线图如图1-7所示。
图1-7
五、程序流程框图与源程序
流程框图
主程序流程图如图1-8所示。
开始
初始化T0并开放T0中断允许
音调变换按键是否按下?
Y
变换音调
N
按键识别
独立式按键是按下?
根据按键功能,装入音符T值到T0中
启动T0
按键是否释放?
结束,停止T0
图1-8
中断子程序流程图如图1-9所示。
T0中断入口
中断返回
取反
重装TH0,TL0初值
图1-9
源程序清单
STH0EQU31H;用于存储高八位初值
STL0EQU32H;用于存储第八位初值
TEMPEQU33H;存储中间变量
COUNTEQU34H;存储计算次数
ORG00H
LJMPMAIN
ORG0BH;按时器T0入口地址
LJMPINT_T0
MAIN:
;主函数入口
MOVTMOD,#01h;按时器T0初始化,采纳方式0
SETBEA;总中断许诺
SETBET0;按时器T0溢出中断许诺
SETB;无输出
MOVDPTR,#TABLE1;初始化默许指针地址
KEY_CH:
;按键检测
JNB,KEY0
JNB,KEY1
JNB,KEY2
JNB,KEY3
JNB,KEY4
JNB,KEY5
JNB,KEY6
JNB,KEY7
SJMPKEY_CH
KEY0:
;按键处置
MOVR1,#00H
LJMPDK
KEY1:
MOVR1,#01H
LJMPDK
KEY2:
MOVR1,#02H
LJMPDK
KEY3:
MOVR1,#03H
LJMPDK
KEY4:
MOVR1,#04H
LJMPDK
KEY5:
MOVR1,#05H
LJMPDK
KEY6:
MOVR1,#06H
LJMPDK
KEY7:
INCCOUNT;音调变换处置
CJNEA,#0FFH,NFULL
MOVA,#0H
MOVCOUNT,A
NFULL:
MOVA,COUNT
MOVB,#03H
DIVAB
MOVA,B
LCALLDELAY100MS
LCALLDELAY100MS
CJNEA,#0H,T2
MOVDPTR,#TABLE1
LJMPKEY_CH
T2:
CJNEA,#01H,T3
MOVDPTR,#TABLE2
LJMPKEY_CH
T3:
MOVDPTR,#TABLE3
LJMPKEY_CH
DK:
;按键值处置入口
MOVA,R1
MOVB,#2
MULAB
MOVTEMP,A
MOVCA,@A+DPTR;获取表格地址及读表
MOVSTH0,A;存储高八位
MOVTHO,A;预赋定时器高八位
INCTEMP;TEMP加一为了读取第八位
MOVA,TEMP
MOVCA,@A+DPTR
MOVSTL0,A
MOVTL0,A
SETBTR0;开启按时器T0许诺
DKA:
;检测音阶按键是不是释放程序入口
MOVA,P1
ANLA,#0FH
CJNEA,#0FH,DKA;确信按键是不是释放,假设没有,继续检测
LCALLDELAY100MS;音阶声音延时
LCALLDELAY100MS
LCALLDELAY100MS
LCALLDELAY100MS
CLRTR0;关闭T0溢出中断许诺
SETB;关闭输出
LJMPKEY_CH;继续检测
DELAY10MS:
;延时10MS子程序
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
DELAY100MS:
;延时100MS子程序
MOVR5,#0DDH
DL0:
MOVR4,#0CFH
DJNZR4,$
DJNZR5,DL0
RET
INT_T0:
MOVTH0,STH0
MOVTL0,STL0
CPL
RETI
TABLE1:
DW63628,63835,64021,64103;低音初值表
DW64260,64400,64524,64580
TABLE2:
DW64580,64684,64777,64820;中音初值表
DW64898,64968,65030,65058
TABLE3:
DW65058,65110,65157,65178;高音初值表
DW65217,65252,65283,65312
END
延时子程序:
一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。
它的一个机械周期是12*(1/12)也确实是1微秒。
MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机械周期就好了,有一些完成得比较慢,得要2个机械周期,还有两条指令要4个机械周期才行。
DJNZ指令是双周期指令,因此延时10MS的指令如下:
DELAY10MS:
;延时10ms程序
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
六、系统设计说明
8051单片机介绍
8051是一种4K字节闪烁可编程可擦除(FPEROMFalshProgrammableand
ErasableReadOnlyMemory)的低电压,高性能CMOS8位微处置器,是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除次10万次以上。
8051系列单片机选型如图1-10所示。
图1-10
stc89c54单片机
选用的stc89c54RD+是一种带16K字节片内flash闪存的高性能单片机。
其要紧特性如下:
·高速:
1个时钟/机械周期,RISC型CPU内核,速度比一般8051快12倍
·宽电压:
到,到(STC12LE2052AD系列)
·低功耗设计:
空闲模式,掉电模式(可由外部中断唤醒)
·工作频率:
0~35MHz,相当于一般8051:
0~420MHz
·时钟:
外部晶体或内部RC振荡器可选
·16K片内flash程序存储器,擦写次数达到10万次以上
·芯片内EEPROM功能
·ISP/IAP,在系统可编程
·2个模拟比较器
·8通道高精度8位ADC
·2通道捕捉/比较单元,提供PWM功能
·2个16位按时器
·看门狗功能
·告知SPI通信端口
·增强型UART
·先进的RISC精简指令集结构,兼容一般8051指令集
其包括中央处置器(CPU)、存储器(程序存储器ROM和数据存储器RAM)、按时/计数器、并行I/O接口(P一、P二、P3、P0共4个8位口)、一个双工串行接口和5个中断源等几大单元及数据总线、地址总线和操纵总线三大总线等结构组成。
以下图(1-11)是MCS-51系列单片机的内部结构示用意。
图1-11
MCS-51系列单片机中的803一、8051及8751均采纳40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
此刻咱们对这些引脚的功能加以说明:
图1-12为stc89c54封装引脚图。
图1-12
图1-13为8051单片机封装图
图1-13
图1-14为P0口:
图1-14
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被概念为高阻输入。
P0能够用于外部程序数据存储器,它能够被概念为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,现在P0外部必需被拉高。
图1-15为P1口:
图1-15
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外手下拉为低电平常,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
图1-16为P2口:
图1-16
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄放器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和操纵信号。
图1-17为P3口:
图1-18
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外手下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口同时为闪烁编程和编程校验接收一些操纵信号。
RST:
复位输入。
当振荡器复位器件时,要维持RST脚两个机械周期的高电平常刻。
ALE/PROG:
当访问外部存储器时,地址锁存许诺的输出电平用于锁存地址的地位字节。
在FLASH程期间,此引脚用于输入编程脉冲。
在平常,ALE端以不变的频率周期输出正脉冲信号,此频率振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于按时目的。
但是要注意的是:
每当用外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
现在,A只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
若是微处置器在外部执状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每一个机械周期两次/PS有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不显现。
/EA/VPP:
当/EA维持低电平常,那么在此期间外部程序存储器(0000H-FFFFH),不管是不是有内程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端维持高电平常,其间内部程存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性
XTAL1和XTAL2别离为反向放大器的输入和输出。
该反向放大器能够配置为片内振荡器。
石晶振荡和陶瓷振荡都可采纳。
如采纳外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必需保证脉冲的高低电平要求的宽度。
芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的操纵信号组合,并维持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必需被执行。
另外,AT89C51设有稳态逻辑,能够在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,按时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保留RAM的内容而且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
编程与校验
如图1-19
图1-19
单片机最小系统
图1-20
单片机最小系统
复位电路
在复位进程中,操纵CPU的复位状态:
这段时刻内让CPU维持复位状态,而不是一上电或刚复位完毕就工作,避免CPU发犯错误的指令、执行错误操作,也能够提高电磁兼容性能。
不管用户利用哪一种类型的单片机,总要涉及到单片机复位电路的设计。
而单片机复位电路设计的好坏,直接阻碍到整个系统工作的靠得住性。
许多用户在设计完单片机系统,并在实验室调试成功后,在现场却显现了
“死机”、“程序走飞”等现象,这主若是单片机的复位电路设计不靠得住引发的。
大体的复位方式
单片机在启动时都需要复位,以使CPU及系统各部件处于确信的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳固后,若是RST引脚上有一个高电平并维持2个机械周期(24个振荡周期)以上,那么CPU就能够够响应并将系统复位。
单片机系统最多见的复位方式是手动按钮复位,如以下图。
图1-21
晶振电路
晶振在应用具体起到的作用,微操纵器的时钟源能够分为两类:
基于机械谐振器件的时钟源,如晶振、陶瓷谐振槽路;RC(电阻、电容)振荡器。
另一种为简单的分立RC振荡器。
基于晶振与陶瓷谐振槽路的振荡器通常能提供超级高的初始精度和较低的温度系数。
RC振荡器能够快速启动,本钱也比较低,但通常在整个温度和工作电源电压范围内精度较差,会在标称输出频率的5%至50%范围内转变。
但其性能受环境条件和电路元件选择的阻碍。
需认真对待振荡器电路的元件选择和线路板布局。
在利历时,陶瓷谐振槽路和相应的负载电容必需依照特定的逻辑系列进行优化。
具有高Q值的晶振对放大器的选择并非灵敏,但在过驱动时很容易产生频率飘逸(乃至可能损坏)。
阻碍振荡器工作的环境因素有:
电磁干扰(EMI)、机械震动与冲击、湿度和温度。
这些因素会增大输出频率的转变,增加不稳固性,而且在有些情形下,还会造成振荡器停振。
上述大部份问题都能够通过利用振荡器模块幸免。
这些模块自带振荡器、提供低阻方波输出,而且能够在必然条件下保证运行。
最经常使用的两种类型是晶振模块和集成RC振荡器(硅振荡器)。
晶振模块提供与分立晶振相同的精度。
硅振荡器的精度要比分立RC振荡器高,多数情形下能够提供与陶瓷谐振槽路相当的精度。
选择振荡器时还需要考虑功耗。
分立振荡器的功耗要紧由反馈放大器的电源电流和电路内部的电容值所决定。
CMOS放大器功耗与工作频率成正比,能够表示为功率耗散电容值。
比如,HC04反相器门电路的功率耗散电容值是90pF。
在4MHz、5V电源下工作时,相当于的电源电流。
再加上20pF的晶振负载电容,整个电源电流为。
陶瓷谐振槽路一样具有较大的负载电容,相应地也需要更多的电流。
相较之下,晶振模块一样需要电源电流为10mA~60mA。
硅振荡器的电源电流取决于其类型与功能,范围能够从低频(固定)器件的几个伟岸到可编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 课程设计