2019-11-08 09:17:12 qq_36958104 阅读数 638
  • 单片机到底是个什么东西-1.2.第1季第2部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的技术概念,如CPU、ROM、RAM、外设、电路板、软件硬件工作的差别等。目的是希望大家在轻松愉悦的氛围中对单片机加深认识。

    3035 人正在学习 去看看 朱有鹏

最近做了一个项目  ,发现程序时不时的会重启 (加了看门狗),不加偶尔也会死机导致程序出现问题,

查找资料    有以下的几种原因

1.堆栈溢出;
2.电源干扰;
3.强电和弱电共地干扰;

由于自己使用了串口

 

整个程序一直的再接收数据

 

可能数据一直在中断里面有没出来,或者数组越界了,不过前面那种可能性大一点,

1.意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象

2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volaTIle,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4. 无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5. 看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6. 堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。

 

最后也有可能是硬件的问题,给大家一个解决问题的思路

 

2019-07-09 20:58:12 weixin_42832780 阅读数 57
  • 单片机到底是个什么东西-1.2.第1季第2部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的技术概念,如CPU、ROM、RAM、外设、电路板、软件硬件工作的差别等。目的是希望大家在轻松愉悦的氛围中对单片机加深认识。

    3035 人正在学习 去看看 朱有鹏

一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。

系统的扩展和配置应遵循以下原则:
1、尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。
2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。
3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。
4、系统中的相关器件要尽可能做到性能匹配。 如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。
5、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。
6、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。
7、尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路等等。更多交流学习企鹅号2898829468,相互探讨学习

2016-05-20 14:44:56 heart18335101121 阅读数 1890
  • 单片机到底是个什么东西-1.2.第1季第2部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的技术概念,如CPU、ROM、RAM、外设、电路板、软件硬件工作的差别等。目的是希望大家在轻松愉悦的氛围中对单片机加深认识。

    3035 人正在学习 去看看 朱有鹏

详谈单片机应用系统硬件电路设计


转自电子发烧友

一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。

  

系统的扩展和配置应遵循以下原则:

  

  • 尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。

  

  • 系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。

  

  • 硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑原则是:软件能实现的功能尽可能由软件实殃,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。

  

  • 系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。

  

  • 可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

  

  • 单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。

  

  • 尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路等等。

  

单片机系统硬件抗干扰常用方法实践

  

影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。

  

形成干扰的基本要素有三个:

  

  • 干扰源。指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。

  

  • 传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。

  

  • 敏感器件。指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大器等。



  

干扰的分类

  

1、干扰的分类

 

干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等等进行不同的分类。按产生的原因分:

  

可分为放电噪声音、高频振荡噪声、浪涌噪声。

  

按传导方式分:可分为共模噪声和串模噪声。

  

按波形分:可分为持续正弦波、脉冲电压、脉冲序列等等。

  

2、干扰的耦合方式

  

干扰源产生的干扰信号是通过一定的耦合通道才对测控系统产生作用的。因此,我有必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间、公共线等等,细分下来,主要有以下几种:

  

直接耦合:

  

这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入系统。对于这种形式,最有效的方法就是加入去耦电路。从而很好的抑制。

  

公共阻抗耦合:

  

这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通路的情况。为了防止这种耦合,通常在电路设计上就要考虑。使干扰源和被干扰对象间没有公共阻抗。

  

电容耦合:

  

又称电场耦合或静电耦合 。是由于分布电容的存在而产生的耦合。

  

电磁感应耦合:

  

又称磁场耦合。是由于分布电磁感应而产生的耦合。

  

漏电耦合:

  

这种耦合是纯电阻性的,在绝缘不好时就会发生。

  

常用硬件抗干扰技术

  

针对形成干扰的三要素,采取的抗干扰主要有以下手段。

  

1、抑制干扰源

  

抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

  

抑制干扰源的常用措施如下:

  

  • 继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。

  

  • 在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。

  

  • 给电机加滤波电路,注意电容、电感引线要尽量短。

  

  • 电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电阻,会影响滤波效果。

  

  • 布线时避免90度折线,减少高频噪声发射。

  

  • 可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可控硅击穿的)。

  

2、切断干扰传播路径

  

按干扰的传播路径可分为传导干扰和辐射干扰两类。

  

所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。

  

所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距,用地线把它们隔离和在敏感器件上加蔽罩。

  

切断干扰传播路径的常用措施如下:

  

  • 充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就 解决了一大半。

  

许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。

  

  • 如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波电路)。

  

  • 注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。

  

  • 电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继电器)与敏感元件(如单片机)远离。

  

  • 用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则。

  

  • 单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路板边缘。

  

  • 在单片机I/O口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器、屏蔽罩,可显着提高电路的抗干扰性能。

  

3、提高敏感器件的抗干扰性能

  

提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。

  

提高敏感器件抗干扰性能的常用措施如下:

  

  • 布线时尽量减少回路环的面积,以降低感应噪声。

  

  • 布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。

  

  • 对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。

  

  • 对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X5043,X5045等,可大幅度提高整个电路的抗干扰性能。

  

  • 在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。 


  • IC器件尽量直接焊在电路板上,少用IC座。

  

4、其它常用抗干扰措施

  

交流端用电感电容滤波:去掉高频低频干扰脉冲。

  

变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电容中心接点接大地,次级外屏蔽层接印制板地,这是硬件抗干扰的关键手段。次级加低通滤波器:吸收变压器产生的浪涌电压。

  

采用集成式直流稳压电源:因为有过流、过压、过热等保护。

  

I/O口采用光电、磁电、继电器隔离,同时去掉公共地。

  

通讯线用双绞线:排除平行互感。

  

防雷电用光纤隔离最为有效。

  

A/D转换用隔离放大器或采用现场转换:减少误差。

  

外壳接大地:解决人身安全及防外界电磁场干扰。

  

加复位电压检测电路。防止复位不充份,CPU就工作,尤其有EEPROM的器件,复位不充份会改变EEPROM的内容。

  

印制板工艺抗干扰:

  

  • 电源线加粗,合理走线、接地,三总线分开以减少互感振荡。

  

  • CPU、RAM、ROM等主芯片,VCC和GND之间接电解电容及瓷片电容,去掉高、低频干扰信号。

  

  • 独立系统结构,减少接插件与连线,提高可靠性,减少故障率。

  

  • 集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不良故障。

  

  • 有条件采用四层以上印制板,中间两层为电源及地

2019-12-12 21:04:38 weixin_42729992 阅读数 104
  • 单片机到底是个什么东西-1.2.第1季第2部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的技术概念,如CPU、ROM、RAM、外设、电路板、软件硬件工作的差别等。目的是希望大家在轻松愉悦的氛围中对单片机加深认识。

    3035 人正在学习 去看看 朱有鹏

**

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

作者:林宏伟 时间:2019/12/12
**

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基于51单片机的电子琴设计

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+ORGL\r\n
(4)设置A配对码:串口调试助手A,配置蓝牙A的配对码:AT+PSWD=1212\r\n。注:蓝牙A与蓝牙B的配对码相同,这样才能成功配对。
(5)设置A主模式:串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1\r\n
(6)恢复B默认设置:串口调试助手B,将蓝牙B恢复默认设置:AT+ORGL\r\n
(7)设置B配对码:串口调试助手B,配置蓝牙B的配对码与蓝牙A一致:AT+PSWD=1212\r\n
(8)设置B从模式:串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0\r\n
(9)查询B地址:串口调试助手B,查询蓝牙B的地址:AT+ADDR?\r\n
(10)蓝牙A绑定蓝牙B:串口调试助手A,蓝牙A绑定蓝牙B地址:AT+BIND=2015,2,120758\r\n
(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[7
Music_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)按键扫描程序:按键是人与系统交互的外部接口设备,在排除硬件设计问题后,检测按键扫描程序是否有轮询,扫描失败一般是按键无法轮询成功,即没有一直循环访问。

附录:实物照片

在这里插入图片描述

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

2019-08-26 23:12:06 huigeyu 阅读数 185
  • 单片机到底是个什么东西-1.2.第1季第2部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第2个课程,用通俗易懂的语言讲了很多和单片机有关的技术概念,如CPU、ROM、RAM、外设、电路板、软件硬件工作的差别等。目的是希望大家在轻松愉悦的氛围中对单片机加深认识。

    3035 人正在学习 去看看 朱有鹏

stm32使用stlink进行硬件仿真,具有很大的优点,能够实时监测到io电平,对于时序分析和debug具有很大帮助,而对于stc系列单片机,
如果单纯地使用软件仿真,实际中仿真会很不方便,这就为寻求51单片机的硬件仿真奠定了基础。寻找到解决方法如下:

一般51单片机是不能在线硬件仿真的(当然不排除使用昂贵的硬件仿真器),而iap15w4k58s4单片机是支持硬件仿真的。具体如下:
Step1:点击下图左上角的添加头文件和仿真器驱动文件到指定文件夹中;
在这里插入图片描述

Step2:选择右边硬件仿真,勾选STC Monitorr51 Driver;
在这里插入图片描述

Step3:点击setting进入找到Usb-Ttl的COM端口
在这里插入图片描述

Step4:编译文件生成hex文件下载到板子中;

Step5:点击如下按钮完成最后设置;
在这里插入图片描述

Step6:keil界面进入debug窗口进行硬件仿真,注意逻辑分析仪功能不能再使用;

单片机的硬件结构

阅读数 2183

没有更多推荐了,返回首页