基于单片机的电控收款机人机交互界面的设计_第1页
基于单片机的电控收款机人机交互界面的设计_第2页
基于单片机的电控收款机人机交互界面的设计_第3页
基于单片机的电控收款机人机交互界面的设计_第4页
基于单片机的电控收款机人机交互界面的设计_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的电控收款机人机交互界面的设计

1视频编程的优势近年来,hdd广泛应用于各种智能设备和设备。点阵液晶显示器不仅可以显示字符、汉字、图形、曲线,还可以通过编程实现各种动画效果,在大屏幕的液晶显示器上还能够实现多级菜单以及复杂表格的绘制,极大提高了智能仪表设备的人机交互能力。同时,随着单片机C语言编译器水平的提高,利用C语言开发的控制程序编译成单片机汇编代码的效率大大提高,程度设计者可以直接移植在DOS平台下开发界面程序的一些成熟的设计方法和代码,开发智能设备和仪表的人机交互程序。2系统设计2.1tp-2接口设计系统的开发选用内置T6963C控制器的图形点阵式液晶MGLS-240128T,显示分辨率240×128。具体参数和硬件接口原理见文献。系统中液晶的字体选择为8×8,每行能够显示30个字符,选用16×16汉字字库时,每行最多能够显示15个汉字。2.2程序控制器的扩展界面程序的代码量往往是很大的。控制系统除了完成采集、控制功能外,还需要使用大量的语句实现复杂丰富的人机交互界面,如果还要实现制表和动画,编译后的程序往往会超过64kB,这样就必须进行程序存储器的扩展。德国Keil51编译器有9级的优化功能,最多能够减少程序代码25%,从而提高程序的运行速度。此外,该编译器采用BANK(程序分组定位)技术使可寻址的程序空间达到2MB.2.3界面框架的实现税控收款机具备以下功能:设置功能;查询功能;统计报表功能;收款结账功能;开户、销户,删除商品、初始化、实时时钟显示等功能。从用户的使用方便性和操作的快捷性角度考虑,将操作界面设计为具有4个主菜单,每个主菜单下有7个菜单项的结构,屏幕主区域显示8个主要功能的快捷图标,实现类似于Windows资源管理器的界面效果。操作的时候,根据处理流程使用对话框、信息框的方式和用户进行信息交互。制定界面框架的时候,要根据LCD显示屏的尺寸设定好各个区域的大小,包括图标的尺寸、位置,菜单字体大小,阴影部分位置,线条粗细以及主菜单在下拉与回收状态下的界面图。定好界面框架之后,利用图形处理工具制作好有关的BMP位图,然后利用字模提取软件将图片转换成数据点阵,再编译成二进制文件(.Bin),烧录到存放菜单、图形的存储器中供程序调用。另外,为了实现拼音输入法和区位输入法中相关汉字的显示,需在硬件设计时专门使用一块EEPROM存储器28C64存放16×16点阵的汉字库。2.4将关联到图形首地址系统的液晶基本显示函数有:液晶的读写指令、液晶显示方式设置函数(正常显示、反相显示、抽点显示、压缩显示)、从存储器读取一段图形数据并显示在液晶屏的指定位置上的函数、液晶屏幕的拷贝和恢复函数、根据区位码取汉字字模的函数、在液晶屏指定位置显示一串汉字的函数、各种信息框(提示框、警告框、确认框)的显示函数等。下面给出一段在液晶屏幕上指定位置显示一串汉字的函数,该函数实现了汉字的提取和字符显示方式的控制。voidLcdɻHaiZi(uintLcdɻadd,ucharLcdɻjnm,Lcdɻhaziɻzf)//Lcdɻadd:汉字显示的液晶地址;Lcdɻjnm:需要显示的汉字数组,为汉字内码;Lcdɻhaziɻzf:汉字的显示方式。{uchari,j;ucharLcdɻhzɻ1,Lcdɻhzɻ2;ulongLcdɻaddɻzi;//汉字在ROM中的地址uintLcdɻaddɻnext;//主调函数传送的地址Lcdɻwrit(2,0x24,Lcdɻadd+=2048,0);//加上液晶要显示的首地址,其中加入了图形首地址Lcdɻaddɻnext=Lcdɻadd;//将地址保存在变量中for(i=0;i<=30;i+=2)//最多处理15个汉字{if(Lcdɻjnm[i]=0)return;//如果当前数据是结束符就返回主调函数Lcdɻaddɻzi=94*(Lcdɻjnm[i]-0xA0-1);//根据公式算出汉字在ROM中的首地址Lcdɻaddɻzi+=(Lcdɻjnm[i+1]-0xA0-1);Lcdɻaddɻzi*=32;for(j=0,j<=31;j++){if(Lcdɻhaziɻzf==1)//反向显示汉字,表示选中的状态{Lcdɻwrit(3,0xC0,0,~memory(j+Lcdɻaddɻzi,0,0,0));j++;//读出汉字第1个字节的数据并写入液晶。memory函数从程序存储区读取1个字节的数据Lcdɻwrit(3,0xC0,0,~memory(j+Lcdɻaddɻzi,0,0,0));}//读出汉字第2个字节的数据并显示elseif(Lcdɻhaziɻzf==2)//抽点显示汉字,用于表示禁止用户选择的状态{Lcdɻwrit(3,0xC0,0,0xAA&memory(j+Lcdɻaddɻzi,0,0,0));j++;//读出汉字第1个字节的数据并写入液晶Lcdɻwrit(3,0xC0,0,0xAA&memory(j+Lcdɻaddɻzi,0,0,0));}//读出汉字第2个字节的数据并显示elseif(Lcdɻhaziɻzf==3)//纵向压缩汉字,压8个点{Lcdɻhzɻ1=memory(j+Lcdɻaddɻzi,0,0,0);j++;//取第1个点阵数据Lcdɻhzɻ2=memory(j+Lcdɻaddɻzi,0,0,0);j++;//取第2个点阵数据Lcdɻwrit(3,0xC0,0,Lcdɻhzɻ1|memory(j+Lcdɻaddɻzi,0,0,0));j++;//读出汉字第3个字节的数据压缩后显示Lcdɻwrit(3,0xC0,0,Lcdɻhzɻ2|memory(j+Lcdɻaddɻzi,0,0,0));}//读出汉字第4个字节的数据压缩后显示else{//正常显示方式Lcdɻwrit(3,0xC0,0,memory(j+Lcdɻaddɻzi,0,0,0));j++;//读出汉字第1个字节的数据并写入液晶Lcdɻwrit(3,0xC0,0,memory(j+Lcdɻaddɻzi,0,0,0));}//读出汉字第2个字节的数据并显示Lcdɻwrit(2,0x24,Lcdɻadd+=30,0);}//将液晶的地址指针加30并更新变量Lcdɻwrit(2,0x24,Lcdɻaddɻnext+=2,0);//设置下一个汉字的地址指针Lcdɻadd=Lcdɻaddɻnext;}}//函数结束具体调用方法:Lcdɻhaizi(2531,“按确认键退出”,0),就是在液晶的第84(2531整除30)行第11(2531对30取余)列的地方显示字符串“按确认键退出”。2.5实现显示效果各种显示效果的实现都是在基本显示函数的基础上进行整合设计的,实现显示效果的流程是:拷贝屏幕原始显示信息到内存中,取数据并显示,根据用户的按键处理响应动作,恢复屏幕原始内容。下面给出几个常用显示效果的具体编程方法。2.5.1绘制程序流程图以用户设置系统日期的显示界面为例进行说明。程序流程图如图1所示,要显示其他的信息提示框(比如出错框)只要在制作图片的时候改变标题栏中的图形和文字就行了。2.5.2正常显示方式参考前面所提供的LcdɻHaiZi函数,只要设置字符的显示方式,将选中的区域用反相显示方式,未选中的区域用正常显示方式就能够直观地表示用户的选中与未选中状态,这种效果在提示用户是否安装好打印纸的交互中十分有用。2.5.3“感叹号”、图形和标题墙内的感叹号打印”图形的读取在打印营业明细报表、读取IC卡等需要较长操作时间的处理中,需要在信息提示框中显示一个进程条,直观地告诉用户当前操作的进度。具体的实现原理是:首先在信息提示框中画出进程条方框,然后显示标题栏内的感叹号“!”、图形和标题栏内的“报表打印”图形,并在标题栏的指定位置显示“正在打印报表,请稍等!”字符串,根据传入的步进变量值修改打印进程指示的十位和个位,最后根据录前已经显示的步进值和传入的步进变量值计算出需要将多少列的显示区的数据涂黑(行数是确定的),调用两重循环顺次对行、列写入数据0xFF(表示将液晶点涂黑)。另外,为了实现按钮的点击效果,只需要在用户按下确定按键之后,将原来的图标切换成新的带有阴影效果的图标即可。菜单的下拉和回收、菜单中光标的上下移动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论