写在前面

这个学期太忙了,博客停更了好久,今天就将用这个学期的单片机课程设计作业来水一篇文章::(滑稽)::(滑稽),疫情在家通过网课上单片机课程,反正从小到大在家好好学习是不可能的,所以导致我单片机学了个寂寞,汇编也没学好,然后这次课程设计作业也做得挺艰难,不过代码都是自己一行一行敲的,作业也是自己独立完成的,下面是成果视频:

摘要

音乐教育是学校美育的主要途径和最重要内容,它在陶冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。电子琴作为电子时代的新产物以其独特的功能和巨大的兼容性被人们广泛的接受和推崇。现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。电子琴所包含的巨量的音乐信息和强大的音乐表现力可以帮助音乐教学更好地贯彻和落实素质教育,更有效地提高人们的音乐素质和能力。本设计采用80C51单片机模拟仿真电子琴,实现C调一个八度的音符演奏,同时实现简单歌曲的播放。

单片机的应用

单片机从本质上来说就是集成电路芯片,所采用的处理技术是超大规模集成电路技术,把进行数据处理的各单体系统集成到一起,在硅片上做出功能完全的计算机系统,这一技术在工业的控制 领域应用非常广泛。目前在热处理设备、设备自动化改造等工程中单片机都有非常良好的应用。单片机可以看做是微型电脑,它强大的功能以及袖珍的体积都使得其发展具有巨大潜力。随着科技的发展,单片机在很多领域都逐渐发挥着越来越重要的作用。

关于单片机在传感器应用方面,随着我国经济发展态势良好,这也带动我国科技的飞速发展,对于单片机来说这是一个良好的发展机遇。随着单片机的发展,其重量与体积都在不断减小,而运算能力则成倍增长,对于工业生产来说,传感器会影响其产值与效率。面对这样的情况,制定传感器统一的标准就非常重要,生产出标准化电路的传感器。传感器的标准化包括六大部分,传感器的信号、温度补、能够校正、信号存储、信号处理以及兼容性。在传感器步入标准化生产轨道之后,必然会让智能仪表的使用效果大大提升。

随着科技不断发展,单片机也会得到不断完善。单片机在未来一定会有更加广泛的用途,为人类的生产与生活做出贡献。

设计要求与开发环境

设计要求

本设计在设计任务书中的电子琴选题的基础上做出了一些功能扩展,具体体现为:用80C51单片机为核心控制元件,设计一台电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有7个按键和1个复位按键。本系统主要是完成2大功能:音乐自动播放、电子琴弹奏功能。关于声音的处理,使用汇编语言来编程,利用定时器来控制频率,以便控制发出C调一个八度的七个基本音。本设计的电子琴有以下功能:

  1. 自主选择播放功能与弹奏功能;
  2. 使用按钮来控制开始与停止;
  3. 用键盘作出电子琴的按键,共7个,每键代表1个音符,模拟弹奏电子琴;
  4. 使用喇叭驱动电路,在系统播放模式下播放歌曲《好汉歌》;
  5. 单片机使用外部按键复位,按下复位按钮实现单片机的复位。

开发环境

采用Keil μvision5 C51软件来实现汇编语言的开发调试与编译。Keil C51是51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。KeilμVision5是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到μVision5的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。μVision5 IDE可为它们提供单一而灵活的开发环境。
采用Proteus 8.9版本进行实体电路的仿真调试,Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

硬件系统电路设计

电源电路

所有的电子设备都必须在电源电路的支持下才能正常工作。直流稳压电源在电源技术中十分重要。直流电源电路由降压变压器、全波整流、滤波、稳压电路构成,组成结构下如图所示:

直流电源电路组成结构图

根据设计需要做+5V和+12V直流稳压电源电路,其中12V电源电路如下图所示:
220V转12V直流稳压电源电路

交流电压 通过变压器降压得到 ,然后由四个整流二极管组成的电桥进行整流得到直流电压,再经由电解电容和非极性电容构成的滤波网络和三端稳压器LM7812的稳压作用后,输出+12V的直流电压,其中变压器变比为24:1。

5V电源直接在前面转化的12V直流稳压电源的基础上转化,电路如下图所示:
12V转5V直流稳压电源电路

电源电路在整体上经过变压器降压,然后由四个整流二极管组成的电桥进行整流得到直流电压,再经由电解电容和非极性电容构成的滤波网络和三端稳压器LM7812和LM7805的稳压作用后,分别输出我们整体电路中所需的+12V和+5V的直流电压。

复位电路

复位是使单片机处于初始状态。除了进入系统的正常初始化之外,有时由于程序运行出错或操作错误使系统处于死锁状态,需要运用复位让单片机摆脱困境。当MCS-51单片机的RST引脚出现两个机器周期(即24个时钟周期)以上高电平时,就完成了复位操作。

复位有两种方式:一种是商店复位,一种是按键复位。上电复位即接通电源便实现了单片机的复位。按键复位是在电源接通的情况下,在单片机运行期间,操作按键实现单片机的复位。本次设计采用按键复位的方式,按键复位电路图如下所示:
按键复位电路

琴键控制电路

琴键控制电路作为人机联系的输入部分,也是间接控制数码显示和音频功放的重要组成部分。琴键控制采用独立式键盘,一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可判断出被按下的按键,然后通过单片机控制喇叭驱动电路,使喇叭发出不用频率的音。

琴键控制电路

当某一按键按下时,对应的检测线就变成了低电平,与其它按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下,收集8个独立按键的开关状态信号,触发相应程序来处理模拟发音。

音频功放电路

单片机输出音频信号后经过音频放大电路,驱动喇叭发出相应频率的声音。音频功放电路采用NPN型三极管放大电流,其具体电路如下图所示:

音频功放电路

数码管显示电路

LED(Light Emitting Diode)数码管的a至g七个发光二极管不同亮暗的组合能形成不同的字形,这种组合称之为字形码,如表4-1所示为八段LED数码管的字形码表。

八段LED数码管的字形码表

LED数码管是由发光二极管构成的。常见的LED数码管为“8”字型的,共计8段。它由七个条形发光二极管和一个小圆点发光二极管组成,每一段对应一个发光二极管。一般来说分共阳极和共阴极两种接法。共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。反之,共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。本次采用共阴极一位LED数码管。

系统整体电路

系统硬件接口功能如下表所示:
系统硬件接口功能

在Proteus软件中整体仿真电路图如下所示:
系统整体仿真电路图

软件系统程序设计

系统功能的实现一般包括硬件部分和软件部分,在上一章硬件系统的基础上,本章开始设计电子琴系统的软件部分。

程序流程图

主题程序流程图如下所示
主程序流程图

主程序

部分核心程序如下:

START2:    CJNE    R7,#10H,HERE;停止播放音乐,并返回等待中断
        CLR        A
        MOV        R2,#00H        ;清除数码管数字
        MOV       TMOD,#10H    ;设置T1工作方式1
        MOV        A,P1        ;键盘循环扫描判断
DO:        CJNE    A,#0FEH,RE
        MOV        R1,#0FCH
        MOV        R0,#44H
        MOV        R2,#06H        ;数码管显示
        SJMP    PLAY1
RE:        CJNE    A,#0FDH,MI
        MOV        R1,#0FCH
        MOV        R0,#0ACH
        MOV        R2,#5BH
        SJMP    PLAY1
MI:        CJNE    A,#0FBH,FA
        MOV        R1,#0FDH
        MOV        R0,#09H
        MOV        R2,#4FH
        SJMP    PLAY1
FA:        CJNE    A,#0F7H,SO
        MOV        R1,#0FDH
        MOV        R0,#33H
        MOV        R2,#66H
        SJMP    PLAY1
SO:        CJNE    A,#0EFH,LA
        MOV        R1,#0FDH
        MOV        R0,#82H
        MOV        R2,#6DH
        SJMP    PLAY1
LA:        CJNE    A,#0DFH,SI
        MOV        R1,#0FDH
        MOV        R0,#0C7H
        MOV        R2,#7DH
        SJMP    PLAY1
SI:        CJNE    A,#0BFH,NONE
        MOV        R1,#0FEH
        MOV        R0,#05H
        MOV        R2,#07H
        SJMP    PLAY1

PLAY1:    SETB    TR1            ;弹奏音乐
        MOV        P2,R2
        LJMP    START2

NONE:    CLR        TR1
        LJMP    START2

PLAY:    MOV       TH1,R1        ;播放音乐
        MOV       TL1,R0
        CPL       P3.4
        RETI