历史上的今天
返回首页

历史上的今天

今天是:2025年05月31日(星期六)

2019年05月31日 | STM32掌机教程2,掌机的原理

2019-05-31 来源:eefocus

打地鼠的逻辑

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

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

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

在这里插入图片描述

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


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

在这里插入图片描述

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

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


供电设计

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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



屏幕显示设计

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

在这里插入图片描述

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


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

在这里插入图片描述

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


蜂鸣器的设计

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

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

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

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

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

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

在这里插入图片描述

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

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



推荐阅读

史海拾趣

CIF公司的发展小趣事

E公司是一家注重绿色环保的电子产品CIF公司。在生产过程中,E公司积极采用环保材料和节能技术,努力降低产品对环境的影响。同时,E公司还积极参与国际环保组织的活动,推动电子行业的绿色发展。这种负责任的态度赢得了客户和市场的广泛认可。

这些故事仅用于说明电子行业CIF公司可能的发展路径和策略,并不代表现实中任何具体公司的真实经历。实际上,每个公司的发展都受到多种因素的影响,包括市场环境、竞争态势、技术创新等。因此,在现实中,电子行业CIF公司的发展故事会更加丰富多彩和复杂多变。

千志电子(CCO)公司的发展小趣事

千志电子于1986年由董事长陈初志先生在台湾创立,起初专注于生产各类型插件式电阻。随着业务的不断发展,公司意识到拓展更广阔市场的重要性。1996年,千志电子进军中国市场,在深圳设立了千志电子(深圳)有限公司,这一举措标志着公司开始走向国际化。深圳作为中国改革开放的前沿阵地,为千志电子提供了丰富的资源和广阔的市场空间,为其后续的发展奠定了坚实基础。

Enable Semiconductor Corp公司的发展小趣事

Enable Semiconductor Corp公司自创立之初,便专注于半导体技术的研发与创新。在早期阶段,公司研发团队经过无数次实验,成功研发出一种新型的半导体材料,这种材料具有更高的导电性能和更低的能耗。这一技术突破不仅提升了公司产品的性能,也为公司赢得了市场的初步认可。随着技术的不断迭代和优化,Enable Semiconductor Corp的产品逐渐在电子行业崭露头角,其市场份额也稳步上升。

Cosel公司的发展小趣事

在市场竞争日益激烈的情况下,品牌形象的塑造对于企业的发展至关重要。1992年,公司名称变更为COSEL株式会社,这一变革不仅提升了公司的品牌形象,也展示了公司向更高目标迈进的决心。同时,公司还导入了V.I(视觉整合),通过统一的视觉形象传达公司的品牌理念和价值观。这些举措使得Cosel公司在客户心中留下了深刻的印象。

Fenwal Controls公司的发展小趣事

Fenwal Controls公司自成立以来,一直致力于技术创新。在电子点火控制器领域,公司凭借其独特的技术和卓越的性能,逐渐在市场上崭露头角。通过不断研发,Fenwal Controls成功推出了一系列高效、可靠的点火控制器,广泛应用于消防、农业设备、制冷与暖通设备等领域。这些创新产品的推出,不仅提升了公司的市场地位,也为公司赢得了众多客户的信赖和好评。

Electronic-Bauteile Goerlitz GmbH公司的发展小趣事

在快速发展的过程中,Electronic-Bauteile Goerlitz GmbH公司非常重视企业文化和团队建设。公司倡导以人为本的管理理念,注重员工的培养和发展。公司定期组织各种培训和学习活动,提高员工的专业素质和工作能力;同时,公司还建立了完善的激励机制和福利待遇体系,确保员工能够全身心地投入到工作中。这些努力使得公司形成了一支高效、团结、富有创新精神的团队,为公司的发展提供了坚实的保障。

请注意,以上故事均为模拟构建,旨在展示一个电子公司可能的发展过程和相关故事。如有需要,您可以根据具体情况进行调整和补充。

问答坊 | AI 解惑

【转】一个工程师有关FPGA项目的感言

1. 要和人配合。以我们做硬件的工程师为例,测试的时候一般都需要软件的配合,一个对硬件来说无比复杂的工作,可能在软件工程师看来就是几行简单的代码。所以要和人配合,多听听别人的意见,这样必然可以产生新的 know-how 从而加快测试和开发的速 ...…

查看全部问答>

怎么学到好的单片机编程思想

我用C语言进行单片机编程,虽然功能都实现了但是感觉自己就是在为了实现功能而堆砌代码,感觉很乱没有章法,打个比方:就像一副人体骨架,有个人形,但没有人样,骨骼之间的关节都是靠胶水或拉线连接起来的,生硬而呆板。这个骨架需要包上皮肉,加 ...…

查看全部问答>

c语言中能重复定义吗?

在mcu中,我想在一个c文件中用同样的宏,却在每个函数中实现不同的功能。。   各位高手,,有没有什么办法实现呀。。 例:#define setSDA  P1|=(1…

查看全部问答>

关于ICC AVR编译器的问题

刚刚入门 所以我在运行程序时出现错误如下: D:\\森汉机器人光盘备份\\程序\\6S-C语言\\basal.c(2): Could not find include file C:\\icc\\bin\\imakew -f test.mak C:\\icc\\bin\\imakew.exe: Couldn\'t open D:/icc/include/macros.h GetLa ...…

查看全部问答>

郭天祥单片机教程

本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 在学校论坛找的一本郭天祥单片机教程的PDF,看着还不错,讲的东西都跟竞赛相关,很实用。不敢独享,发来论坛与大家分享。内容太大,135网盘下载:…

查看全部问答>

语音识别受好者

最近在买材料做一个人体感应风扇+语音识别,最初的想法就是,人只要坐在风扇前,风扇就会转去,人走开后,风扇就停,这样的创意不够新不够好玩,后来想到加个语音识别好玩点,人只要说一句录好的声音,风扇就会转,说录好命令停止的声音,风扇就会 ...…

查看全部问答>

急招兼职: 诚找人编写DSP、FPGA开发类图书

榕盛文化公司(rssdbook.)致力于图书的选题策划、编辑加工和出版,由具有大型出版社工作背景、从事图书出版10余年的资深编辑组建。公司以“弘扬优秀文化、传播卓越品质”为出版理念,成立以来已有数十本图书在全国出版,其中畅销书多达30本,有10 ...…

查看全部问答>

uCOS求助

菜鸟最近开始学UCOS系统,想问下UCOS最小系统要加载那些文件,我把别人的大系统删减到自认为最小出现了下面这种 ..\\BSP\\STM32_Flash.scat(15): error: L6236E: No section matches selector - no section to be FIRST/LAST...\\BSP\\STM32_Flash ...…

查看全部问答>

二维数组首地址可以是负值吗?

代码如下:  当i=0时,会调用DSPUP(&zuozhe[i-1][32],1).  难道此时为:DSPUP(&zuozhe[-1][32],1)?   /***************************左屏显示信息*********************************/void fun40(){     & ...…

查看全部问答>

LauncPad 1602液晶驱动,4位模式

LauncPad到手也有段时间了,芯片的基本功能都试了一遍,发个用MSP430G2211驱动一个刚到手的1602液晶,使用4位模式。 …

查看全部问答>