首页 > 其他分享 >STM32掌机教程2,掌机的原理

STM32掌机教程2,掌机的原理

时间:2023-01-11 12:36:01浏览次数:36  
标签:教程 蜂鸣器 供电 引脚 STM32 无源 按键 LED 掌机


打地鼠的逻辑

  打地鼠的逻辑很简单:我点亮某个LED,然后开始计时。如果在规定的时间内按下了LED对应的按键,那么加分,点亮下一个LED。按错按键,或者规定时间内没有按下,则减命,点亮下一个LED。

  那么如何点亮某个LED?如何检测按键是否按下呢?

  我选择了一款带LED的按键。大小是12mm乘12mm,用手指按大小正好,手感也不错,就是有一点,真贵。

STM32掌机教程2,掌机的原理_单片机


  淘宝就1块钱了,我找的中发配单就更贵了。并且其实吧,,,,,灯和按键完全是分开的!两个器件,凑到一块了而已。

STM32掌机教程2,掌机的原理_教程_02


  我把按键做成了一个集成库的封装。原理图就是这个样子:

STM32掌机教程2,掌机的原理_STM32_03


  SLED接到单片机的引脚上,只要单片机引脚给低电平,就能点亮LED。不同颜色的灯限流电阻值大小不一样,根据亮度稍微试一下就行。

  SKEY也接到了单片机上,由于STM32可以设置为内部上拉输入,所以不需要外接上拉电阻。按键按下去以后,SKEY接到GND上。也就是没按下按键的时候,SKEY是高电平,按下按键以后,SKEY是低电平。

供电设计

  电脑的USB口就是5V供电,所以生活中很容易得到5V的电源,我用microUSB来供电。就是以前的安卓充电头,不是快充那种。

STM32掌机教程2,掌机的原理_引脚_04


  除此之外,预留了插针P3,也可以改造为电池供电,4.5V,6V都可以工作。供电芯片是LDO,电源的质量比较有保障。

STM32掌机教程2,掌机的原理_STM32_05


  为了方便调试,也可以用Jlink OB供电和下载程序。板子预留了SWD下载方式,相对于JLink V8,OB便宜多了。并且的Jlink OB还送了一根microUSB线。

STM32掌机教程2,掌机的原理_掌机_06


  为了避免马大哈接错电源正负极,烧坏板子,电源部分用F1和D4的配合做了防反接设计。如果VCC_IN和GND接反了,那么D4导通,大电流通过保险丝,保险丝瞬间断开,保护电路。保险丝同志是不是因此牺牲了?并不,我们用的是自恢复保险丝,在通过高电流时并不是烧坏,而是变为“高阻态”,等故障排除以后,重新变为“低阻态”。在接线正常的情况下,D4反向截止,相当于断路。

  D5是个TVS管,用于防静电,它有个特点,在它感受到两侧收到反向瞬态高能量冲击时,可以很块变为低阻抗,吸收高达数千瓦的浪涌功率,使两极间的电压箝位于一个预定值,有效地保护电子线路中的精密元器件,免受各种浪涌脉冲的损坏。 简单来说,就是它两端的电压不能超过这个预设值。而人体带的静电通常超过几百伏特,击穿小小的掌机轻而易举,所以,要加防护。再加上我这霹雳贝贝的体质,曾经玩无人机的时候,第一次触摸无人机就把主控芯片击穿了,累积击穿的器件估计超过1000块了,所以来个大只的TVS管,SMB封装,妥妥的。

STM32掌机教程2,掌机的原理_STM32_07

屏幕显示设计

  考虑到显示分数的需求,选用了一款0.96寸的OLED屏幕。这个屏幕应用很广泛,某宝上有很多,买来模块,通过杜邦线连接就能用。

STM32掌机教程2,掌机的原理_掌机_08


  而我把OLED画到PCB上了,因为对于我来说,可能画个PCB比接线还省事。实际上在企业里,几乎没有人用开发板,也没人用杜邦线跳来跳去接线。

STM32掌机教程2,掌机的原理_单片机_09


  至于具体的电路设计——太多了,我去网上找了几个方案,综合了一下,把IIC与SPI两种接口都保留了,图纸如下。

STM32掌机教程2,掌机的原理_单片机_10


  不过,,,后来发现屏幕可能太小了,0.96寸打个俄罗斯方块都有点费劲。以后要是升级的话,可以考虑1.44寸,还能全彩。话说,屏幕哪有够用的时候,做手机的那帮人想做个全面屏,刘海屏,水滴屏,都快疯了。

蜂鸣器的设计

  用过蜂鸣器的同学可能都会有一个疑问,到底选用有源蜂鸣器,还是无源蜂鸣器?

  这里的源指的不是电源,而是震荡源。有源蜂鸣器内部有震荡源,通电就会叫,控制起来很简单,也贵一些。无源蜂鸣器没有内部震荡源,便宜一些,不能通电就叫。

  那么无源蜂鸣器怎么工作?写程序来控制引脚的电平变化周期,看似用起来复杂一点,其实能玩的花样就多得多了,频率可控,也就是音调可控,音调可控,那就唱歌呗。听说,只要采集人声,分析人声的频率,然后以极快的速度发送给蜂鸣器,蜂鸣器就可以模拟人声了。潜力无限啊。我们当然要选无源的蜂鸣器了。

  以后让代码来播放背景音乐。也可以把掌机作为点唱机,按下某个按键,就播放某个音乐。虽然是简陋的电子音,但是,可以展现工科生的浪漫啊!

  蜂鸣器算是大功率器件了,引脚不能直接驱动,要借助三极管。R22是个下拉电阻,可以让蜂鸣器在默认状态下不要发出声音。BEEP输出高电平时,三极管导通,蜂鸣器发出声音。但是由于是无源蜂鸣器,只能响一声;需要BEEP输出低电平,然后再输出高电平,才可以继续发出声响。

  其实无源蜂鸣器没有正负极,引脚的状态不用太在意。

STM32掌机教程2,掌机的原理_STM32_11


  说到有源和无源了,晶振也分有源和无源。一般情况下,没有特殊要求的晶振,用的都是无源的。

  整体电路设计大概就是这样,基本上就是最小系统板+OLED+带灯按键。


标签:教程,蜂鸣器,供电,引脚,STM32,无源,按键,LED,掌机
From: https://blog.51cto.com/u_12001544/6002120

相关文章

  • STM32掌机教程3,工程模板与带灯按键测试
    我们需要“脚手架”  关于代码,我想体现出这么一个过程:我是如何一步一步修改代码的。我认为,从学习的角度来考虑,直接看最终的代码没有什么意义。写代码就像工人盖房子,盖房......
  • STM32自带GB2312字库显示汉字
      本文介绍如何把字库文件写入单片机的flash中,然后无需再提取字模,即可实现单片机显示中文字符的功能。下载字库到单片机flash中的指定位置  在​​上一篇博客​​中,最后......
  • STM32HAL库定时器中断关闭的方法
    本文可以用于解决这个问题:定时器中断上电后莫名其妙开启,或者首先触发一次。STM32HAL库在定时器初始化并开启以后,也是会默认开启中断。如不需要默认就开启中断可以用一下代......
  • HAL库教程2:使用STM32CubeMX新建一个工程
    安装STM32CubeMX  安装STM32CubeMX之前,电脑中要有java运行时环境(JRE),否则会报错:  双击JavaSetup8u201.exe即可安装JRE。在安装过程中,需要在线下载一些资源,所以应当保持......
  • HAL库教程5:串口数据发送
    使用CubeMX配置串口1配置引脚  我的板子上使用插针引出了串口1,串口1连接PA8与PA9。配置串口通信参数  使能串口1,并配置为异步模式,波特率为115200,模式8N1。使能串口中断......
  • HAL库教程3:引脚输入检测
    使用CubeMX配置输入引脚  本章我们要把按键作为输入源,使用单片机来检测引脚的电平状态。首先要查看原理图,按键与那些引脚相连。  我使用的板子,按键K2-K5分别对应PA4-P......
  • HAL库教程1:STM32Cube的介绍
      使用STM32HAL库已经有了一段时间,觉得相比于标准库,好用了不少。加上STM32CubeMX图形化配置工具的加持,个人认为可以极大提升开发效率。其实关于HAL库的教程已经很多了,关于......
  • HAL库教程7:STM32的时钟系统
      STM32的时钟系统比较复杂,不像51单片机,可能只有一个时钟。原因:1、外设多,不同的外设有不同的时钟要求;2、功耗原因,速度越快,功耗越大,抗电磁干扰能力越弱。此处以STM32F405......
  • HAL库教程4:外部中断
    外部中断机制  本章我们仍然是通过按键来控制LED,只不过实现方式由轮询变为了外部中断。为什么需要外部中断?为了给CPU减轻负担。  举个例子  比如你今天有个快递,快递......
  • HAL库教程8:通用定时器的使用
    定时器溢出时间的计算  关于定时器溢出的时间计算,有个公式:  定时器本质上是一个不断自加的计数器,只不过在自加的时候,能够自动比较计数值跟某个设定值而已。定时器+1用......