基于单片机的电子琴设计和硬件平台设计

发布者:MagicGarden最新更新时间:2020-05-07 来源: eefocus关键字:单片机  电子琴  硬件平台 手机看文章 扫描二维码
随时随地手机看文章

1课题任务

本课题主要是设计一个基于51单片机的开发系统平台,开发平台需包括的基础硬件有:12864液晶显示器、8位发光二极管指示器、TLC5616模块、ADC0832数模转换、蜂鸣器电路、DS18B20温度传感器电路、4*4矩阵电路和DS1302时钟模块。然后根据51单片机开发平台自行设计一个基于51单片机电子琴设计。


设计单片机开发硬件平台

单片机硬件开发平台的基础硬件有:蜂鸣器、LED、LCD12864、TLC5615、ADC0832、DS18B20、DS1302、44矩阵按键和USB-TTL。USB-TTL用于下载程序和给主控供电;蜂鸣器、8位LED和LCD12864是作为开发板的指示部分,其中,蜂鸣器可提供声音警报,LED灯提供光显示,LCD12864显示器可提供直观的显示;44矩阵键盘作为系统与人交互的设备;检测模块有:DS1302时钟检测模块、DS18B20温度检测模块、ADC0832数模转换模块以及TLC5615模数转换模块


基于51单片机的电子琴设计

课题要求在单片机开发系统基础上进行功能扩展,根据学号尾数选择扩展的功能。。基础要求有:高低音的选择功能、手动演奏功能、自动演奏功能和完美的图形界面设计。


2单片机硬件电路设计

单片机原理图设计

单片机原理图如图2-1所示,对电路进行了简化,将LCD12864模块通信方式由并行改成串行,将独立按键和矩阵按键进行了整合,利用短接帽实现独立按键和矩阵按键的切换。电路遵循模块化原则,设计上尽量精简,方便后期调试。

图2-1 单片机原理图图

2.1.1LCD12864接口电路

12864中文汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵)、128个字符(8X16 点阵)及 64X256 点阵显示RAM。参考LCD12864的使用手册,常用的电路的并行接口,虽然并行传输数据比较快,但是在这个电路上明显不适用,为了简化电路,我修改了显示器的硬件电路后,改成了串行传输模式。电路接口如下图所示。从图上知道,现在本来需要接近20个接口的显示器变成了只需要5个接口的。大大简化了电路。

在这里插入图片描述

**硬件说明:**液晶通信方式有二种选择,并口或串口方式。如果需要串口通信时需把产品PCB后面的S点短接才能正常运行。P点为并口通信,使用并口通信时可短接P点也可不短接,短接时抗干扰效果更加; 液晶自带10K电位器可调电阻( VR1)位置处,不需再加外围电位器,如需要接外围可调的需要把PCB板上的JP1与JP2短接方可进行外围可调电阻。根据LCD12864液晶显示屏的使用手册,作出具体修改如图2-1-2所示。首先,将显示器的背光电源A+和K-直接短接显示器的供电电源,然后短接JP2接口的S,通过硬件修改串行方式。

在这里插入图片描述

2.1.2独立按键和矩阵按键电路

如果把独立按键接口和矩阵按键接口分开的话,明显会增加电路设计上的复杂性,所以我将独立按键和矩阵按键进行了整合,通过一个短接帽即可实现独立按键功能和矩阵按键功能的切换。未接短接帽的时候,按键电路是矩阵按键模式,采用行列式扫描方式;接上短接帽是把P2.4引脚接地从而让K1、K5、K9、K13各端接地变成独立按键。具体如图2-5所示。这样电路就省去了部分按键。

在这里插入图片描述

2.1.3复位电路

复位电路在单片机最小系统起着重要的作用,单片机在可靠复位后,程序才能从0000h地址开始有序地执行应用程序,但是复位电路很容易受到外部噪声干扰,所以在设计复位电路的时候需要保证系统可靠复位和具备一定的抗干扰能力。复位电路有上电复位和手动复位两个模式,这里采用的是上电只复位,不增加手动复位电路。在51单片机中,复位脉冲的高电平宽度必须大于2个机器周期,若系统选用11.0592MHZ晶振,则一个机器周期约为1.085us,那么复位脉冲宽度最小应为2us。如图2-6所示,利用rc充电原理实现上电复位的电路设计。常用的复位电路是电容和电阻组成RC电路加上按键,把按键复位去掉,形成通电即复位,不需要按键进行复位。

在这里插入图片描述

2.1.4AD和DA接口电路

在单片机设计上AD和DA模块是要求单独分开测试的,即选用TLC5615和ADC0832两个模块,在电路设计上,这两个模块都是串行数据传输,即都有三条数据线接口,如果设计上把这两个模块的接口并行起来的话,两个模块6条数据线只需要占用单片机3个接口。即图2-7中H3和H2是并接一起的。


TLC5615模块,即数模转换模块,将数字量转换为模拟量输出。通过查找TLC5615模块的使用手册,了解如下:TLC5615是一个串行1O位DAC芯片,性能比早期电流型输出的DAC要好。只需要通过 3根串行总线就可以完成1O位数据的串行输入,易于和工业标准的微处理器或微控制器 (单片机 )接口。手册上说明该模块的通信时序是:当片选 S为低电平时,串行输人数据才能被移 人 l6位移位寄存器。当S为低电平时,在每一个SCLK时钟的上升沿将DIN的一位数据移人16位移寄存器。


ADC0832模块,即模数转换模块,将模拟量转换成数字量输出。从改模块的使用手册了解:ADC0832是8脚双列直插式双通道A/D转换器,能分别对两路模拟信号实现模—数转换,可以用在单端输入方式和差分方式下工作。ADC0832采用串行通信方式,通过DI数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达256级),可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。工作原理:正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时使用并与单片机的接口是双向的,所以在I/O口资源紧张时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在这里插入图片描述

2.1.5DS1302时钟模块接口

DS1302 模块内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)RES 复位(2)I/O 数据线(3)SCLK串行时钟。设计电路如图所示。

在这里插入图片描述

2.1.6DS18B20温度传感器接口

DS18B20是最常见的数字温度传感器,体积小;精度高(12位时精度可以达到0.625摄氏度,出厂默认12位);接线简单,无需外围短路;封装形式多样,能满足不同应用需求等。常见的电路设计如图2-9所示。选用4.7K电阻上拉。DS18B20单线数据传输,直接将数字量传送到单片机外围接口,单片机可以直接读取温度的数字量。

在这里插入图片描述

3.1.1电子琴的硬件电路

根据选做设计的要求,对硬件电路进行了修改,操作更加方便。选做要求如下:按键演奏、自动演奏、高低音选择。根据要求,在原有的要求上进行了扩展,在按键演奏的基础上加上了电脑演奏,即电脑通过串口与单片机进行无线通信后可以实现演奏。如图3-1所示,是基于电子琴修改的PCB布局的。在原有基础上把按键加到扩展板,所以不需要接上芯片。其他模块,如TLC5615、ADC0832等暂时不需要用到,即将其控制的部分删除,无需增加进此布局中。通过PCB直观知道此电路设计的复杂性几乎为零,已经十分简化了,布线少,模块少,布局清晰。电子琴硬件电路设计上也是遵循简化原则。

在这里插入图片描述

3.1.2电子琴界面部分

电子琴界面设计是遵循直观化原则,即让人直观看到播放的音频和音阶,利用LCD12864显示器显示,如图所示,为电子琴界面设计图。界面一共显示四行,第一行是音阶显示,有高音、低音和中音,界面显示依次是2、1、0;第二行是音频,一共显示16个,依次是0-15;第三行是电子琴的名称“Little Dome”;

在这里插入图片描述

3.1.3电脑演奏原理

电脑演奏是基于两个蓝牙的无线通信,所用的界面是串口通信界面,电脑通过键盘输入数字0-15,电脑通过接在USB-TTL的蓝牙模块将字符依次发送出去,单片机接收到后,串口执行中断程序,中断程序就是将接收到的字符传递到电子琴控制程序,相当于按键功能。两个蓝牙的对接指令设置步骤如下:

(1)AT模式:两个蓝牙模块的PIO11接VCC,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口。

(2)打开串口调试助手:开启2个串口调试窗口,一个打开蓝牙A的COM口,一个打开蓝牙B的COM口。设置波特率,一般设置为38400

(3)恢复A默认设置:串口调试助手A,将蓝牙A恢复默认设置:AT+ORGLrn

(4)设置A配对码:串口调试助手A,配置蓝牙A的配对码:AT+PSWD=1212rn。注:蓝牙A与蓝牙B的配对码相同,这样才能成功配对。

(5)设置A主模式:串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1rn

(6)恢复B默认设置:串口调试助手B,将蓝牙B恢复默认设置:AT+ORGLrn

(7)设置B配对码:串口调试助手B,配置蓝牙B的配对码与蓝牙A一致:AT+PSWD=1212rn

(8)设置B从模式:串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0rn

(9)查询B地址:串口调试助手B,查询蓝牙B的地址:AT+ADDR?rn

(10)蓝牙A绑定蓝牙B:串口调试助手A,蓝牙A绑定蓝牙B地址:AT+BIND=2015,2,120758rn

(11)常规工作模式:2个模块的PIO11引脚都接地,重新上电后进入常规工作模式,自动完成配对。


软件设计与调试

3.2.1电子琴的程序设计

电子琴的程序设计思路如图3-4所示,图3-4为电子琴程序流程图。程序运行时先判断按键是否按下,即通过按键扫描识别按键是否按下,若识别到按键按下就执行模式选择程序,模式选择有四种:音阶设置模式、音频设置模式、自动播放模式和按键播放模式。若检测不到按键按下,即返回扫描程序,一直扫描,等待按键按下。电子琴程序设计上主要是控制PWM调节蜂鸣器的电压脉宽,进而控制蜂鸣器的频率;LCD12864显示器主要是用于显示按键模式,给用户直观的视觉体验;按键扫描采用了行列式扫描法,其中还有状态机法和翻转法。三种按键扫描程序中最好的是状态机法,但是需要用到定时器,电子琴中定时器用于控制中断和PWM设置,与按键中断有冲突,所以采用了行列式扫描法。

在这里插入图片描述

电子程序加入了独立按键部分,用于扩展电子琴的功能,采用轮询的方式实现电子琴的功能模式选择。电子琴部分控制程序如下:

KeyScan1(); //电子琴功能按键

Keyscan(); //行列式扫描 switch(key)

{

case 0: time = 1;break;

case 1: time = 2;break;

case 2: time = 3;break;

case 3: time = 4;break;

case 4: time = 5;break;

case 5: time = 6;break;

case 6: time = 7;break;

case 7: time = 8;break;

case 8: time = 9;break;

case 9: time = 10;break;

case 10: time = 11;break;

case 11: time = 12;break;

case 12: time = 13;break;

case 13: time = 14;break;

case 14: time = 15;break;

default: time = 0; break;//无按键按下

}

if(time==0) TR0=0,Beep=1;

else high=freq[7Music_Freq+time-1][1],

low=freq[7Music_Freq+time-1][0],TR0=1;

Q(Music_Freq,time);//显示


3.2.2电子琴测试

在设计电子琴的时候,遇到的问题主要有三点:(1)蜂鸣器不响;(2)频率不正确;(3)按键播放有杂音。解决方式如下。

(1)蜂鸣器不响:主要排查两点,第一点:硬件电路问题,蜂鸣器用三极管通过放大电流驱动工作,若蜂鸣器不响,可能是三极管的集电极和发射机接反了,解决方式是对换过来;第二点:软件设置问题,驱动蜂鸣器是用定时器中断驱动,通过调节PWM控制蜂鸣器,解决方式是检查程序中断是否正常进入,检查是否出现中断异常。

(2)频率不正确:蜂鸣器工作的频率不对,无法形成明显地高低音,主要是检查程序,首先设置正确51单片机的时钟频率,这里选用11.0592MHZ,通过MDK5目标选择界面设置,接着排除定时器计数的高位和低位寄存器的计数,装载值设置正确。

(3)播放有杂音:这个问题可以通过软件延迟过滤掉,播放出现杂音是工作时切换过快,导致杂音产生,所以可以通过软件延迟排除。


4总 结

4.1电路调试和程序调试

设计好硬件电路后一般会出现的问题有:

(1)无法烧录程序:这个是十分常见的问题,一般原因有芯片电压过低、复位电路无法复位、晶振无法起振。排查方式有:排查一下芯片是否供电正常,通电后检查芯片VCC和GND两端电压,观察是否是5V左右,如果是3V左右,就说明电路设计有问题,导致芯片电压被分走了;检查复位电路,最小系统要工作必须要复位成功一次,复位不成功很大可能性是复位电路虚焊或者电阻电容选择问题;晶振不起振就检测一下电容的参数,选取过大也会导致起振失败。

(2)显示屏无法显示:显示屏无法显示,检查显示器的使能接口和数据传输接口以及PSB引脚,使能失败显示器不会显示,数据传输传输异常也会出现问题,检查串并行数据传输过程是否出现异常;PSB引脚若被占用也会出现无法显示的问题,可以直接修改显示器的J2硬件电路即可解决。

(3)光敏电阻无法显示:光敏电阻是要求结合ADC0832这个模块进行数模转换的。光敏电阻无法检测,可能是光敏电阻没有串联一个上拉电阻,若光敏电阻一端接地一端直接接到ADC0832,这个是错误的接法,需要加上上拉电阻才能正常检测到光敏电阻;软件问题则是ADC0832模块的SPI通信出现异常。

(4)接在TLC5615的LED指示器无法工作:查找TLC5615手册知道,若要让模块正常输出转换的电压需要在模块的第6引脚接入基准电压,若没有接入2V-3V的基准电压,模块输出的数据是无效的。

(5)蜂鸣器不响:蜂鸣器工作出现异常很大可能性是三极管接反了。对换过来即可。

设计好的驱动程序一般出现的问题有:

(1)SPI通信出现异常:在此课程设计中,很大模块都用到了SPI通信,每个模块的时序不一样,所以驱动程序也稍微区别,模块驱动不成功可以看一下模块的时序图,设置正确的时序即可

(2)中断异常:定时器中断出现问题可以检测定时器是否开启总中断或者是否初始化成功,若有多个中断则要设置好优先级,外部中断,定时中断和串口中断的优先级是不一样的。

(3)引脚占用:这个是程序设计过程中的通病,由于51单片机引脚少,驱动模块有比较多,设计程序过程难免复用了引脚,但是复用时没有设计好复用的优先级,导致无法复用而出现异常。

(4)按键扫描程序:按键是人与系统交互的外部接口设备,在排除硬件设计问题后,检测按键扫描程序是否有轮询,扫描失败一般是按键无法轮询成功,即没有一直循环访问。


附录:实物照片

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


关键字:单片机  电子琴  硬件平台 引用地址:基于单片机的电子琴设计和硬件平台设计

上一篇:C51单片机数码管动态显示
下一篇:基于51单片机智能红外温控风扇设计

推荐阅读最新更新时间:2024-10-14 07:34

MSP430 F5529 单片机 时钟 闹钟 倒计时 OLED
为了便于开发,我做了一块扩展板子: https://blog.csdn.net/x1131230123/article/details/108772807 扩展板有一些常用器件,这样开发MSP430 F5529程序的时候,就不用杜邦线连接了。当然也可以选择杜邦线连接器件,效果都一样。 功能要求: 1.在oled屏上面显示出年月日,小时,分钟,秒,可以通过按键来调整时间 2.一个闹钟功能,通过按键设置闹钟的时间,到点了需要蜂鸣器响和LED闪烁 3.一个倒计时,跟闹钟差不多,也是通过按键设置时间,到时间了LED闪烁 硬件上需求: 1 蜂鸣器一个,有源蜂鸣器和无源蜂鸣器都可以。闹钟到了或者倒计时到了都需要响。 连接: 蜂鸣器
[单片机]
MSP430 F5529 <font color='red'>单片机</font> 时钟 闹钟 倒计时 OLED
基于单片机设计的智能测温系统
1 引言 温度在工农业生产中是用的最多的热工量,热电偶作为一种接触式温度传感器由于其结构简单,测温范围宽,精度高等优点,所以在工业温度测量中广泛应用。但在热电偶的使用中,需  解决两方面的问题:一是需对热电偶的冷端进行温度补偿。二是对热电势和温度的非线性处理。本文利用美国MAXIM公司生产的K型温度补偿器MAX6675来实现冷端的温度补偿,用二  次插值的方法对热电势和温度的非线性进行处理,实践证明,该方法精度高、可靠性好。 2 热电偶冷端温度补偿电路 具有冷端补偿的单片K型热电偶放大器与数字转换器MAX6675内部自带冷端温度补偿、线性校正、A/D转换器、热电偶断线检测等功能,它将温度测量值转换为单片机能识别的16  位二进制
[单片机]
基于<font color='red'>单片机</font>设计的智能测温系统
基于8031单片机的自动计量进料系统
1 引言 某糖果厂于1985年从德国SIMON电子公司引进带微电脑的计量进料器116EM型生产线,用于糖果生产。由于引进时间较长、图纸资料不全、外方维护不便等原因,时有因电脑控制部分发生故障而影响生产的情况发生。从提高设备国产化比重、节约外汇、方便维护、保证生产出发,本文应厂方要求,在对进口装置的设备性能和电气信号时序透彻分析的基础上,开发了基于8031的嵌入式的微机自动计量进料系统,该系统从性能要求、信号时序到外观尺寸都与进口装置完全匹配,成功地实现了进口设备控制系统国产化。 2 计量进料器的称量和计量进料原理 启动预先设置的计量进料程序后,计量系统首先称量并存储称量锅皮重,然后依次控制各种配料如牛奶、砂
[工业控制]
基于8031<font color='red'>单片机</font>的自动计量进料系统
新一代工业级RISC/ARM平台硬件技术培训
——深圳场即将来袭 随着消费电子市场的智能手机、平板电脑等RISC/ARM架构产品浪潮一波接着一波,ARM架构也从低端的ARM7、ARM9发展到现在的Cortex-A8,A9,A15,消费类电子的技术始终是走在最前端,但是消费类的技术一定会被用于到工业上面,研华作为全球领先的工业控制厂商,所以把消费类电子的前端技术用到工业上面的重任就落到研华人的肩上。研华ARM产品现在也是走在市场最前端,并且是全球唯一一家将Cortex-A8、A9架构的ARM平台做到工业级稳定可靠。 同样作为ARM平台的厂商,研华完善底层的软硬件及操作系统、驱动,客户只需要致力在自己上层应用开发上面,双方共同发挥自己的优势,来促成产品的强大竞争力及快速上市。
[工业控制]
新一代工业级RISC/ARM<font color='red'>平台</font>软<font color='red'>硬件</font>技术培训
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(一)
  用PWM的方法实现荧火虫灯   上次提到要用Timer的PWM功能来实现荧火虫灯。当然还是找一个现成的例子来作个修改,这回要用到的例子在这里。      复制一份到自己练习用的文件夹中,建立工程。      先阅读readme.txt及源程序,了解一些基本信息。   从程序中可以知道:   (1) 使用TIM3   (2) 定时器的时钟频率是36MHz.   (3) PWM信号的频率是36KHz,这是通过TIM3的ARR来设置的。ARR的值是999,因此PWM的频率是36MHz/(999+1)=36KHz。   (4) 四个通道的占空比分别由TIM3_CCR1~TIM3_CCR4来确定,算式是:
[模拟电子]
工程师STM32<font color='red'>单片机</font>学习基础手记(4):用PWM实现荧火虫灯(一)
BCCU助力 MCU打造智能化LED灯泡
MCU可助力实现智慧化 LED 灯泡。 LED照明 系统商借重内建BCCU功能的MCU,大幅缩短开发出智慧化高功率LED灯泡的时程,并协助终端使用者达成轻松且精准调光的目的,同时不会出现闪烁的问题。   人类若想要永续生存,就必须更有效率地使用有限的能源资源。全球约有20%的电力消耗在照明,因此人们希望照明系统能更节能、更聪明且外型更美观,而发光二极体(LED)因具备能源效率、可调光及能以高品质的方式控制色彩,故愈来愈受欢迎。LED有两个特别引人注意的应用,亦即智慧型街道照明和建筑照明,这两种高功率的户外应用通常都使用高电流和高亮度的LED。    达成灯泡控制调变LED开关切换速度成关键   户外型LED灯泡的控制装置内包
[电源管理]
BCCU助力 <font color='red'>MCU</font>打造智能化LED灯泡
结合单片机学习板学习c语言之流水灯制作--intrins.h头文件
目的:实现流水灯。 源程序: /*本程序结合STC89C51使用,晶振12M,中间用到串口中断子程序是利用STC单片机的自定义ISP下载功能,自定义下载命令是FEH,关于自定义下载请参考《用51单片机就用STC51,手把手教你STC51的ISP》*/ #include at89x51.h //#include reg51.h #include intrins.h #include stdio.h sfr ISP_CONTR =0xE7; delay_05s() { int i; i=647395; for(;i!=0;i--); } void serial() interrupt 4 //编号
[单片机]
51单片机的内部结构及其功能作用
中央处理器(CPU): 刚跟大家讲过,需要提醒的是MCS-51的CPU能处理8位二进制数或代码。CPU是单片机的主要核心部件,在CPU里面包含了运算器、控制器以及若干寄存器等部件给成。 内部数据存储器(RAM): MCS-51单片机芯片共有256个RAM单元,其中后128单元被专用寄存器占用(稍后我们详解),能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00H~FFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。 内部程序存储器(ROM): 在前面也已讲过,MCS-51内部有4KB/
[单片机]
51<font color='red'>单片机</font>的内部结构及其功能作用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved