历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2018年03月24日 | 基于P89C51RD2可定制、廉价的人机交互界面设计

2018-03-24 来源:互联网

随着社会需要和科学技术的发展,产品的竞争愈来愈激烈,更新的周期愈来愈短,因而要求设计者能很快地设计出新产品;而在产品的整体设计中,人机交互界面的设计往往占据着很大一部分工作,这样,不但极大地增加了产品的开发成本而且延长了产品的上市周期。本文论述的基于P89C51RD2的人机交互界面是一种界面可定制、结构紧凑、价格低廉、简单易用、性能优良的通用型人机交互界面,能很好地解决上述问题。


1 系统工作原理


1.1 工作原理


按照实际应用中控制系统的需要及控制系统与人机交互界面的约定,通过PC机上的可视化人机界面定制软件,定制好整个界面信息,再把定制好的界面信息下载到人机交互界面系统中,就可以轻松地实现人机界面的定制。在应用中,人机交互界面通过串行接口与控制系统进行交互,发送按键等信息给控制系统,并接收所需的可变信息,以完成人机交互。

现以空压机控制器的部分人机界面为例来说明相关概念,相关概念说明如下:


①屏幕,即LCD显示区,由一个或多个屏幕项组成;


②屏幕项,即屏幕里面的按其显示内容的性质差异来划分的一个个整体单元,如文本屏幕项等;


③屏幕项的分类,按其显示内容的性质差异分为文本、整型、浮点型、枚举型、图形等。

整个人机界面系统由一个个存在链接关系的屏幕构成,而每个屏幕又由一个或多个屏幕项组成。各屏幕项有其自身的属性,也存在着某些相互的链接关系(例如,由某个屏幕项链接到另外一个屏)。这样,通过对各屏幕项的合理组织而构成一个链表网络,再通过对此链表网络的操作来实现人机界面的操作,即屏幕的显示操作。


1.2 系统的工作过程


系统的软件部分由用户引导程序和应用程序组成。系统运行后,由用户引导程序决定是执行界面信息的更新还是正常运行。若执行界面信息的更新,则系统通过串行接口从上位机接收界面定制信息,并通过在应用编程(IAP)功能保存所接收的信息,然后通过本地读取新的界面定制信息建立链表网络;若正常运行,则直接从本地读取旧的界面定制信息建立链表网络。应用程序实现的功能包括按键的输入、界面的显示及与控制系统的通信。


2 系统硬件设计及电路原理图


本系统采用Philips公司功能强大、资源丰富的P89C51RD2单片机作为微控制器,通过扩展液晶模块及按键模块来构成人机交互界面。


2.1 P89C51RD2单片机简介


P89C51RD2是Philips公司内核基于8位80C51单片机的派生产品,在完全保留80C51指令系统和硬件结构的大框架下,进行了多方面的加强、扩展和创新。P89C51RD2具有64 KB并行可编程的非易失性Flash程序存储器,并可实现对器件串行在系统编程和在应用中编程。


2.2 液晶显示模块


本系统采用的是OCM12864图形点阵液晶显示模块。OCM12864液晶显示模块是128&TImes;64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接相连;具有8位标准数据总线、6条控制线及电源线。


2.3 按键输入模块


根据系统的需要,系统至少需要设定如下6个屏幕操作按键:左、右、上、下、换屏、确定按键。其中,左、右键用于切换屏幕项;上、下键用于修改可变屏幕项;确定键用于产生所选屏幕项对应的功能动作;换屏键用于进入所选中项的链接屏幕,若当前屏幕没有选中项,则进入首项链接的屏幕。当然,可以根据需要扩充数字按键及功能按键。


本系统采用普通的矩阵式按键结构,也称“行列式键盘结构”。系统中设计4行4列共16个键,只占用8根I/O口线,键数多而占用I/O口线少。除上述6个屏幕操作按键外,余下的10个键可由用户根据需要定制功能,如数字键或功能键。


3 系统软件设计


由于系统的功能实现不是特别复杂,故采用基于前后台的传统的控制程序设计方法。


3.1 用户引导程序设计


由系统的程序流程可知,用户引导程序在系统上电后执行。首先它检查是否需要下载定制界面信息,当检查到需要下载时,便接收主机经串口传来的定制界面数据,启动IAP功能,对Flash进行操作,把接收到的数据存入预定的位置。接着进入界面系统构建阶段。若没有下载请求,就直接进入界面系统构建阶段。


在界面系统构建阶段,通过读取预定位置处的信息,建立一个链表风格。基于这个链表网络的操作也就是苦于界面系统的操作。


3.1.1 相关设定


屏幕项组成:显示信息(如显示位置、类型、内容等)和链接信息(此项所链接的屏等)。综合各方面的需要,设定主要相关数据结构如下:


其中,back、ahead用于构建屏幕项的双向循环链表;next用于构建链接屏的单向循环链表;init用于原始的屏与屏的链接。


3.1.2 链表网络构成


同一屏幕的项构成双向循环链表、链接屏幕构成单向循环链表。实现方法:先以屏为单位建立每屏的横向双向循环链表;再遍历各屏的双向链表,为各屏的项建立链接关系,进而构成一个链表网络。如界面系统示意图(图1)所示,功能选择、维护信息、故障记录、用户设定、厂家设定5个屏幕项构成1个屏的横向双向链表,而以维护信息、滤清器使用时间、分离器使用时间3项所在的屏构成链接屏的单向循环链表。


下面介绍具体实现步骤。


(1)屏幕项的横向双向循环链表构建


因从PC机下载到人机界面的定制界面信息是按如下格式保存在预定Flash中的(其中,各屏之间以SCREEN_END字符常量为分界),故在构建项的横向双向链表时,先从预定的位置逐一读取项的信息并填充到项的结构中,最后插入到双向链表中。


格式说明:STA代表起始符、END代表结束符、L代表本帧数据的字节长度、x/y/LinkNo/SreenNo/Item_ID/Select/type见data_t结构中的说明。


①文本项格式:STA+L+x,y,LinkNo,ScreenNo,Item_ID,Select,type(1),string(文本内容)+END。


②整型、浮点项:STA+L+x,y,LinkNo,ScreenNo,Item_ID,Select,type(2/3)+END。


③枚举项:STA+L+x,y,LinkNo,ScreenNo,Item_ID,Select,type(4),count(枚举项数),string1(字符串1),string2(字符串2),…,+END。


相关函数:int add_item_node(link_t pNode,data_te);把项节点插入到横向双向链表中。


(2)链接屏的单向循环链表构建


遍历已生成的各屏的双向链表,为各屏的项建立链接关系,进而构成一个链表网络。


相关函数:int create_net(link_t head);遍历各屏的双向链表,建立链表网络。


3.2 应用程序设计


应用程序负责完成按键的扫描及处理、界面的显示、与控制系统的通信。


由系统的流程框图可知,构建好链表网络后就进入应用程序阶段,即系统进入正常运行状态。通过系统中设定当前屏指针、当前项指针及已构建的链表网络等来实现人机交互界面的操作。


3.2.1 人机界面与控制系统的通信格式


格式说明:STA代表起始符,END代表结束符,type代表类型。


(1)人机界面→控制系统


①索取变量信息:STA+type(1)+Item_ID(项的ID)+END


②按键:STA+type(2)+按键个数+键值1(,键值2,…)十Item_ID(项的ID)+END


说明:通信格式②中的Item_ID可以为0。


当为0时,表示当前无选中项或功能按键。


(2)控制系统→人机界面


①返回变量信息:STA+type(1)+Item_ID(项的ID)+content(内容)+END


②按键确认:STA+type(2)+END


③按键确认并返回修改后的变量信息:STA+type(3)+content(内容)+END


3.2.2 界面的显示


通过遍历当前屏幕的横向双向循环链表来逐一显示屏幕项。其中对各类项的处理如下:


①当屏幕项是文本时,直接读取并显示。


②当屏幕项为整型、浮点时,通过向控制系统索取其值并显示。


③当屏幕项为枚举时,通过向控制系统索取其值,再按值读取对应的字符串并显示。


3.2.3 按键的处理


所有的按键都先发送到控制系统,并等待其确认。存在如下按键类型及相应的处理:


①当为功能键时,直接发送给控制系统,人机界面不做进一步处理。


②当为上、下键时,如果当前屏幕有选中项且是可变项时(如整型、浮点等),则接收处理后的信息并显示。


③当为左、右键时,如有可选项,则进行当前屏的屏幕项选择或切换(通过操作横向双向循环链表来实现)。


④当为确定键时,如果当前屏幕有选中项,则启用该项的功能(通过发送该键值及项的ID给控制系统)。


⑤当为换屏键时,如果当前屏幕有选中项并且此项有链接,则进入该项的链接屏幕;如果没有选中项且屏幕的首项有链接,则进入此链接屏幕(通过操作链接屏的单向循环链表来实现)。


结 语


从数据结构的角度出发,综合利用PC机、P89C51RD2的IAP等功能,并结合控制系统,巧妙地设计出一种通用型可定制的人机交互界面。使用这种人机交互界面,无论是新产品的开发还是产品的更新升级,都可以减少开发的工作量,缩短开发的时间,为产品赢得宝贵的上市时间,从而可以增强企业的竞争力,因此该系统具有十分广阔的市场前景。


本设计创新点:


①使用P89C51RD2的IAP功能把定制好的界面信息存储于Flash中,实现界面信息的更新。


②基于数据结构,提出了一种通过创建链表网络来实现对定制好的界面进行动态组织,进而实现界面的可定制功能。该功能使人机交互界面的设计更加快捷,进而减少开发的工作量,缩短开发的时间。

推荐阅读

史海拾趣

Carlisle Interconnect Technologies公司的发展小趣事

进入21世纪,Carlisle Interconnect Technologies开始了全球化的布局。公司不仅在北美和欧洲设立了多个生产基地和研发中心,还积极开拓亚洲和拉丁美洲等新兴市场。通过全球化的战略布局,公司不仅能够更好地利用全球资源,还能够更深入地了解各地市场需求,进一步推动业务发展。同时,公司还加强了与国际知名企业的合作,共同推动电子行业的发展和进步。

这五个故事只是Carlisle Interconnect Technologies发展历程中的一部分,但它们足以展示公司在电子行业中的创新、进取和不断追求卓越的精神。这些故事也为我们揭示了一个成功企业的发展轨迹:从创业初期的创新与突破,到不断的技术升级和产品多样化,再到全球化的布局与业务拓展,每一步都充满了挑战与机遇。

DS-IMP公司的发展小趣事

DS-IMP公司在发展过程中,非常重视市场拓展和品牌建设。公司制定了详细的市场战略和营销计划,通过参加国内外展会、举办技术研讨会、开展产品推广活动等方式,不断提升品牌知名度和影响力。同时,公司还积极开拓国际市场,与多家国际知名企业建立了长期合作关系。这些努力使得公司的市场份额不断扩大,品牌影响力逐渐增强。

Coleman Cable Inc公司的发展小趣事

在发展过程中,Coleman Cable积极寻求与行业内外的合作伙伴建立稳固的合作关系。通过与知名电子制造商建立供应链合作关系,Coleman Cable的电缆产品得以广泛应用于各种电子设备中。同时,公司还与科研机构、高校等建立产学研合作关系,共同研发新技术、新产品,推动公司技术的不断创新和升级。

Computer Conversions Corp公司的发展小趣事

随着公司技术的成熟和知名度的提升,Computer Conversions Corp开始将目光投向国际市场。公司派出专业的市场拓展团队,深入欧洲、亚洲等多个地区进行市场调研。经过一系列精准的市场分析和产品定位,公司成功地将产品推向了全球市场。这一过程中,他们不仅赢得了众多国际客户的信赖,还通过与当地企业的合作,进一步提升了品牌的影响力和市场份额。

C-MAX Time Solutions公司的发展小趣事

随着业务的不断发展,C-MAX Time Solutions公司开始寻求与行业内其他企业的战略合作。通过与一家知名通信设备制造商的合作,C-MAX成功将其时间同步技术融入对方的设备中,从而实现了产品的互补和市场的共同开拓。这一合作不仅拓宽了C-MAX的业务范围,也提高了其品牌在行业内的知名度和影响力。

Datapro International Inc公司的发展小趣事

随着全球化的加速和市场竞争的加剧,Datapro International Inc公司开始加快国际化发展的步伐。他们积极拓展海外市场,并在全球范围内建立了完善的销售和服务网络。

在国际化发展的过程中,Datapro International Inc公司遇到了许多挑战和困难。然而,他们凭借坚定的信念和不懈的努力,成功克服了这些困难。他们深入了解当地市场和文化背景,并根据市场需求和客户需求不断调整产品和服务策略。这些努力使得Datapro International Inc公司在海外市场取得了显著的成果。

问答坊 | AI 解惑

操作系统的移植

编出来的程序,一定要移植吗? 有什么好处? 不移植的话会怎么样? [ 本帖最后由 xujingxinna 于 2009-6-8 08:24 编辑 ]…

查看全部问答>

打印驱动中 接口调用问题?

入口: DrvEnableDriver [code] DrvEnableDriver(     ULONG          iEngineVersion,     ULONG          cj,     DRVENABLEDATA *pdrvenabled ...…

查看全部问答>

怎样在WINCE下一个应用程序中做一个函数来获知另一个程序是否在运行

怎样在WINCE下一个应用程序中做一个函数来获知另一个程序是否在运行?急的…

查看全部问答>

ARM的串口输出问题

问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添 ...…

查看全部问答>

stm32想要加密防破解该怎么做

stm32想要加密防破解该怎么做 需要考虑到加密问题了…

查看全部问答>

rt_hw_interrupt_install在ads1.2下出错

void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler, rt_isr_handler_t *old_handler) {         if(vector < MAX_HANDLERS)         {           &nb ...…

查看全部问答>

放假了,都出来晒晒吧~~

果断回家了~~呵呵,好久没有来51单片机这个版本了,来了很扎眼的还是那些所谓的毕业设计,哎~~~~~虽然说提供这些东西大部分是出于好意吧,但每次来都是这些东西排在最前面(排在前面的总是各种课件),想当年我的问题就没人回答~~~不过现在好了,自 ...…

查看全部问答>

Engineer It -了解运算放大器的精密性挑战

了解不同的微调方法会对运算放大器产生的影响,以及怎样为你的系统挑选合适的运放。…

查看全部问答>

晒WEBENCH设计的过程+POWER设计

POWER设计软件, 一打开, 就能看到, 可以添加输入和输出, 对于多输入和多输出, 有很好的设计安排, 添加电源后, 可以看见两个输入的选择, 在这里, 我设计成12V和5V的输入, 而输出是2.7V的0.5A, 主要想应用在汽车电子转换上, 在选择提交项目要求后, ...…

查看全部问答>