2.1 电路结构
对多键并击的处理,在每个键上串一个二极管,这样可使多键并击时不会出现串键问题,但在软件上还需要作相应的处理。关于键盘按键的排列,如图2所示;关于主机与键盘的通信;主机与键盘的通信采用RS-232串口。由于单片机的串口是TTL电平,与RS-232串口标准不一样,因此主机与键盘之间通信需要用Icl 232(TTL与RS-232转换电路)完成转换。串口转换电路的选择;目前一般有两种转换电路,一种是要使用双电源的电路,由于其使用电源多,电路也较复杂,所以没有采用。另一种是只使用+5V单电源的ICL 232,由于此电路结构简单,所以采用了此电路。关于电源指示和通信指示,分别用一个发光二极管完成电源和通信的指示,当电源指示灯Dl亮时,表示+5V电源正常。当通信指示灯D2亮时表示键盘与主机正在进行串行通信。为了使系统结构简单,控制芯片选用了内嵌式单片机,在其内部有20k的闪存。电路原理图如图l所示;全部电路由两块集成电路和一些配套元件组成,其中单片机中闪存部分用来存储程序和字库,片中的RAM存放一些中间处理的数据,片中的CPU对键盘各部分进行控制。ICL 232用于TTL电平与RS232电平之间的转换。
2.2 电路工作原理
主机通电后键盘自动启动,单片机运行其控制程序,对键盘进行扫描,当有键按下时消除键抖动,将键盘代码输入到单片机中,通过内嵌的软件转换成拼音码或ASCII码。然后把这些代码从单片机的串口TXD端输入到ICL 232的TIin,待转换成RS一232电平标准后,通过ICL232的TIout端输出送主机的RS-232串口。最后计算机用专用软件对输入的信息进行处理,将汉字或其它字符显示在屏幕上。
3 软件部分的设计
根据用户的要求,软件部分事实上要解决两个问题,第一,每按下一组按键会产生一组按键码,如何将按键码编码转换成一个汉语拼音的编码,并把该编码输入到PC机中,这一部分由内嵌至单片机中的程序完成。第二,如何将汉语拼音转换成文字输入到字处理软件中,比如说常用的MicrosoftWord。第二个问题我们可有多种选择,借助现有的软件和拼音输入法或自行编写一个字处理软件均可。这里我主要介绍第一个问题的解决方案。
这里,我们可从程序的流程上分步解决问题。
1)由于是多键并击,会同时有多个按键码输入到单片机中,这些按键码进入CPU的时间不同,可能组成多种汉字,这就需要我们首先要把每个汉字的按键码正确的区分开,去除误操作,分别组成正确的键盘码。当然,我们可对键盘左右两部分的按键编码进行分类,左边按键码为0X,右边的为lX(X=l、2、3……),然后,依次转换按键码。
2)将按键码转换成所对应的输出码,这可有多种方式。经过试验,我们选择建立一个字库,存放全部的键代码和给主机传送的拼音码、大小写英文、阿拉伯数字和一些常用的符号等的ASCII码。这样的优点是程序简单,几乎不产生误码,缺点是占用空间大,但相对于20k的存储空间来说微不足道。由于单侧输入一个汉字最多需要8键同击,故在本字库中,共分成8个库,一字库、二字库、…、八字库。如四字库就是4键同击时,到此字库中查找。这样可以加快查找速度。
3)查找所得到得输出码(包含汉字的拼音码和其它字符的扩展ASCII码),可通过串口与主机通信,当数据传输结束后,再重新扫描键盘。
整个程序流程图如图3所示。