传感器开发平台
直播中

张霞

7年用户 1030经验值
私信 关注

用少量的程序代码能实现人机交互设计吗?

本系统设计按键时遇到以下情况:(1)产品外设较多,单片机I/O口比较少,设计时需要考虑节省I/O口。(2)现场情况所限,键盘与主机板要有一段距离。

回帖(2)

王慕涛

2020-3-6 11:16:12
1 系统设计方案
本系统设计按键时遇到以下情况:(1)产品外设较多,单片机I/O口比较少,设计时需要考虑节省I/O口。(2)现场情况所限,键盘与主机板要有一段距离。(3)键盘需要15个按键,同时扩展一个复位按键,共16个按键。根据以上的情况采用A/D键盘最为合适。
考虑到系统显示既要求有图显示又有字符显示功能,因此采用单片机控制LCD,使LCD的画图、字符显示等功能最大程度地利用。
本系统设计的效果如图1所示。



2 系统结构和原理
人机交互系统负责数据显示及输入,通过RS485接口与主控模块进行信息交换,通过工业液晶显示主控模块传送的电量参数信息,并通过键盘输入设定系统工作模式、参数门限、通信协议。校正模拟量通道的各项电参数以及用图形直观表示一次图及电压参数的工作状态,并在出现过流过压等告警信息时发出报警声。系统能够在有限成本的条件下很好地完成此多项功能。
显示系统由硬件和软件两部分构成,如图2和图3所示。



硬件部分以STC12C5A60S2单片机为核心,晶振和复位电路作为系统工作的必要设备,从3×5矩阵键盘接收输入命令,同时通过RS485与主控模块进行实时通讯。其中键盘通过单片机的A/D功能直接采集电压判断来实现。
软件部分可分为底层驱动程序和上层控制两部分。底层驱动包括设置系统时钟和系统模式,配置I/O口、初始化串口打开ADC转换功能,初始化LCD控制器、中断控制器等。上层控制程序不断查询是否有按键按下。若有按键按下,则执行相应的任务,LCD显示相应的内容;同时如果需要,通过RS485向主控模块发出控制或请求数据等信息。
举报

王茁珐

2020-3-6 11:16:14
3 系统硬件电路设计
3.1 键盘电路
人机交互系统中输入控制命令,设置数值,查询电参数、历史数据、告警信息等都肯定要使用键盘。系统中设计采用的是3×5的键盘,外加一个复位按键组合成4×4格式安装,其中除了0~9这10个数字外,还有确定键“Enter”、菜单键“Menu”、上键“Up”、下键“Down”、“静音”键及复位键。在端口KEY0、KEY1、KEY2输出线上接上拉电阻,使端口能准确的置高、置低。上拉电阻的另一端则连接在一起接5 V电源。电路图如图4所示。


图为3x5键盘设计电路,KEY0、KEY1、KEY2连接至单片机具有A/D功能的I/O口,此时就可以通过A/D扫描读取,可以根据A/D值判断有无按键按下或是那个按键按下。根据上图电阻值可以算出:无按键按下,A/D值为5 V;SW1按下,通过计算知A/D值为VCC×R1/(R1+R20)=0.16 V;SW4按下,A/D值为VCC×R1/(R1+R20+R24)=0.733 V;同理,SW7=1.559 V;SW10=2.287 V;S5=2.875 V;根据A/D采集值比较,最接近哪个键值的范围,则就是该按键。
使用此方法需注意按键选用接触性较好的按键。按键差的使用时间一长,容易产生接触电阻,按键多容易误检测。
3.2 LCD显示电路
系统采用北京青云公司生产的LCD3202401液晶控制器,LCD3202401使用功能强大的RA8835作为控制器。此LCD有4位显示数据线,且传输数据迅速;具有强大的作图功能;支持文本显示、图形显示以及图形和文本混合显示;具备简捷的MPU接口和功能齐全的控制指令集。单片机与LCD的接口电路 如图5所示。


图中LCD与单片机管脚连接处加1 kΩ的限流电阻,可以有效防止单片机管脚电流过大造成LCD液晶屏损坏。由于单片机的频率为22 MHz,所以传输时肉眼看不到数据是一位一位传输的,从人类视觉的角度上看,就仿佛是全部字符或图片同时显示一样。
4 软件设计
本谢十中,主菜单和子菜单多达30多项,且要实时同步显示,从而增大了应用层设计的难度。因此程序采用模块化结构,主要包括主菜单页面切换模块、按键扫描模块、选项管理控制模块和数据输入模块。
4.1 主菜单页面切换模块
为按用户要求切换操作界面,定义了一个page_index映像寄存器,其值在1~P之间变化,P为操作界面的个数。本系统中P的值为9。主菜单界面,如图6所示。


如果page_index=1,则LCD显示器上显示第1页面;一次图页面如图7所示。为最大限度地使用系统的Flash,其中的线条及方框均直接使用其绘图功能实现。


如果page_index=2,则LCD显示器上显示第2页面。用户可按数字键控制page_index的值选择对应页面,实现人机交互。电参数页面如图8所示。

4.2 按键扫描模块
对15个操作按键进行扫描,将结果保存在key映像寄存器中。该寄存器有个状态标志位keyState,如果其值为True,则意味着对应的按键按下;反之,则松开,程序运行时将按键读取后清除标志位。如图9为键盘模块程序流程图。


4.3 选项管理控制模块
若当前的操作界面属于“选项界面”,由于设置的参数较多,将选项页面分为几个页面设置,按下“Up”和“Down”键或直接按数字键,可选择对应的页面。如图10为选项管理控制模块流程图。


为了便于分析,以设置页面为例来说明。设置页面共分为5页来设置,包括系统参数设置页面、门限参数设置页面、Modbus设置页面、以太网设置页面及CAN设置页面,当从主菜单选择设置进入设置页面后,可按数字键或上下键选择页面。比如按2键进人设置页面中的门限设置,如图11所示。


此时按回车可对数值进入输入设置,图中的2/5为当前的页面提示,2为第2页,5为总页数。
4.4 数据输入模块
若当前的操作页面属于“置数界面”,使用数字键输入满足用户要求的任何数值,例如图11中的门限设置中的数值输入。数据输入模块的程序流程图如图12所示。


利用上述模块,只需少量的程序代码就可以灵活地实现选项、修改数据及切换操作界面等功能。

5 结束语
本设计采用C语言编程,所选单片机为STC12CSA60S2,尽管其程序存储器只有60kB,但却实现了30多页操作界面的显示和切换,以及数据设定和查询等人机交互功能,同时还实现了监控,控制和通信功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分