STM32单片机可以用来做人机交互界面吗?
可以,人机交互的话,建议去学学stemwin(emwin的stm32版本,免费实用,前身是大名鼎鼎的ucgui)。是专门针对stm32开发板的一款免费的lcd交互方案。可以实现gui设计以及触摸效果。
按照提问的内容,首先要知道什么是人机交互,
人机交互,就是人与机器设备进行信息数据交流,机器通过数码管,显示屏等输出参数等信息,人通过按键,触摸等方式输入设置给机器。
接着说stm32 是一款功能强大的cortex体系的mcu,这个品牌的单片机内核从M0到M7都有,有丰富的外设。
我们以Stm32f1系列的单片机为例,讲解如何实现人机交互
第一个方案 stm32带多个Uasrt串口,所以可以选用市面上 串口屏模组,常见的4.3寸,5.6寸,7寸等都有,考虑到人对机器的信息输入,可以屏模组自带触摸,触摸分电阻式触摸和电容式触摸,电阻触摸屏 特点价格便宜。用户体验检查,电容触摸贵,但响应迅速,用户体验好。
目前做的比较好的串口显示屏模组,一般都配有上位机编辑软件,可以很方便的在电脑上编辑界面,快速实现人机界面功能的设计。
如果不用触摸方式进行信息输入,可以在stm32设计几路独立按键,满足用户选择与参数需求
整体来讲,这个设计思路,特点是成本较高,但开发难度较小,只需要stm32通过串口与已经设置好界面的显示屏模组进行通信就能实现人机交互。
第二种方案
利用stm32单片机自带的Fsmc接口驱动TFT彩屏,Fsmc原是stm32的一种存储并线接口,那用在彩屏驱动时,在硬件设计上就需要考虑布线等长,还要做防静电等干扰设计
在软件上。需要使用Fsmc驱动时序,点亮彩屏,然后需要在stm32内部实现字库与图片的时编解码,所以代码编写起来,较为复杂,如果简单的图片和字体可以考虑此种方案,同时bom成本会比较便宜。
人机交互,如果显示方式选用数码管,则更为简单,做几路独立按键,对机器进行控制与操作,数码管显示当前状态与参数。也是更为简单,也行之有效的人机交互方式
按照提问,stm32肯定可以实现人机交互,而且不止一种,还有很多其他的方式,如串口输出打印在电脑显示屏等等。具体怎么选择,就要根据实际项目对成本,任务交期等要求要衡量。
以上是我对本提问的回答
欢迎大家留言,转发,关注,私信
谢谢
不请自来!
首先,明确人机交互界面的定义
人机交互界面,顾名思义就是人和机器交互的接口,包括人向机器输入指令,机器向人展示指令执行的结果或者机器运行的状态等。
第二、人机交互界面包含的内容有哪些
人机交互界面包含输入和输出两个部分的内容,输入最简单的是按键、还可以是触摸屏。输出显示部分可以是LED指示灯、8段数码管、LCD等等
第三、stm32如何实现人机界面之人机界面输入
A、按键实现 如果按键很少IO充足的情况下,一个IO对应一个按键是比较简单的实现方法。
B、如果按键比较多可以采用矩阵键盘的实现方式,或者通过AD转换通过AD采样来实现多按键扫描。
IO 扫描矩阵按键
ADC采样按键,实际是利用电阻分压和ADC采样来识别出哪一个按键被按下,这种电路好处是只需要一个IO即可,对于管脚资源有限的项目非常合适。
触摸屏,stm32可以支持电阻或者电容式触摸屏,电阻触摸屏实际就是通过ADC来实现的。原则上来说,只要支持ADC就能实现电阻触摸屏输入。电容式触摸屏有的stm32单片机可以支持支持。但是在实际项目中,通常采用模块化的设计,电容触摸屏和控制器通常集成在一起形成模组,这样做的好处是电容触摸屏模组程序和项目代码分开,有利于模块之间的解耦,另外不同项目之间复用也很有好处。通常模组还用I2C或者SPI接口和stm32单片机进行通信
stm32如何实现人机界面之人机界面输出
A、LED指示灯输出,实际就是通过GPIO输出高电平或者低电平来控制的,这种是最简单实现方式,但是可以表达的信息也比较有限
B、8段数码管实现方式,8段数码管显示本质上还是驱动LED,只不过每个数码管由8个LED组成,可以表达的信息也更丰富,比较可以显示数字、小数点、简单的字符(虽然比较丑陋,但终归是有了)
C、LCD stm32单片机对LCD支持也是很强大的
可以支持12864的点阵式LCD或者OLED显示屏,也可以支持更大分辨率的LCD,比如640480,甚至1024768等分辨率,取决于具体的stm32芯片型号。有些LCD模组内部有显存,不需要占用stm32内部的ram,但是有些高分辨率的LCD,则需要stm32的ram来支持lcd刷新,内存不够的话可能还需要外部扩展。
总结,stm32做人机见面还是可以的,当然需要根据具体的项目需求,选择相应的芯片型号,需要学习的知识:GPIO输入输出、ADC数模转换、I2C总线编程、SPI总线编程、LCD驱动相关知识,当然做UI界面的话可能还需要涉及UI显示库相关的编程,比如ucUI、emWin等等。
如果你对stm32人机交互界面有什么看法或者疑问,欢迎留言讨论!