单片机课程设计---简易电子琴设计 下载本文

3.1.7振荡电路

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部震荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHz、12MHz或者24MHz。本设计中采用的是12MHz。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般5~30pF。内部振荡方式所得的时钟信号比较稳定,电路中使用较多。振荡方式如下图:

图7 振荡电路

3.1.8控制按钮电路

控制按钮,控制是弹奏还是演唱(P3.3)以及复位功能(P3.2)

图8 控制按钮电路

3.1.9扬声器电路

图9 扬声器电路

3.2软件环境

3.2.1 I/O并行口直接驱动LED显示 对应键值的显示:

表2 字形码表及对应的音符 0 1 2 3 4 5 6 7 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 低 5 SO 低 6 LA 低 7 SI 中 1 DO 中 2 RE 中 3 M 中 4 FA 中 5 SO 8 9 A B C D E F 0x7f 0x6f 0x77 0x7c 0x39 0x5e 0x79 0x71 中 6 LA 中 7 SI 高 1 DO 高 2 RE 高 3 M 高 4 FA 高 5 SO 高 6 LA 在本设计中,数码管的显示通过

P1=DSY_CODE[x]

这句语言来查表并输出,实现音符的显示。?

图10 LED显示

3.2.2音乐播放设计

在音乐播放程序中用到了两个定时/计数器。其中T0用来产生音调,播放弹

奏时的按键音调声音,T1用来播放音乐。

弹奏时根据不同的键值,调用不同的音符表中的值,并赋值给定时器以便产生不同的声音。下图为演奏发声的流程图:

图11 演奏发声流程图

四、 开发工具和编程语言

4.1 开发工具 4.1.1 Proteus软件

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。

Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是: 1.原理布图

2.PCB自动或人工布线 3.SPICE电路仿真

革命性的特点: 1.互动的电路仿真

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2.仿真处理器及其外围电路

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。 4.1.2 Keil软件 1)系统概述

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil 的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

2)Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

使用独立的Keil仿真器时,注意事项:

*仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。 3)优点

1.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

2.与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。

五、 详细设计

5.1矩阵式键盘的按键识别方法 矩阵扫描法:

行扫描法 ,是一种最常用的按键识别方法,介绍过程如下。

1、判断键盘中有无键按下。将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。

2、判断闭合键所在的位置。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。