基于ARM嵌入式智能控制器的设计与实现
3.1 IIC键盘和开关量处理
本系统采用一片CPLD来扩展I/O端口,并利用S3C44B0X处理器的PF1和PF5等IO端口来模拟IIC协议完成数据通信。首先使用vhdl硬件描述语言设计IIC协议的硬件电路,并下载到CPLD芯片中,主要完成对外部端口的输入采集和输出控制以及与主处理器的通信。按照此协议标准,编写数据传输的启动停止、数据接收发送以及确认位接收等子程序。调试时应注意SDA和SCL信号的时序关系。由于此种方式下处理器只能通过查询方式才能判断是否有键按下,因此本设计采用定时器定时几毫秒来读IIC接口片内数据,主程序判断按键标记。此外,系统的32路开关量实时控制也是通过此接口来实现。
3.2 GUI显示
良好的人机交互设计给系统的操作带来方便。嵌入式系统中的GUI设计应综合考虑代码占用的资源、GUI响应的速度和易于使用三个因素。若移植成熟的GUI 源码,占用资源太大,响应速度相对较慢,本设计采用面向对象的设计方法,合理的定义了一些数据结构,使得图形化显示既满足要求,又具有良好的扩展性。
依据人机界面设计的具体要求,分析显示数据的特点,为方便参数的显示和处理我们定义了一系列的数据结构,从而使得系统的显示和修改异常方便。首先确定系统需要多少个窗口,每个窗口有多少个菜单,画出窗口之间的变迁图,可以知道所有的窗口应当组成一个树形结构。主要的数据结构如图2-5所示。
软件设计时,首先按照定义的数据结构定义每屏的显示数据和窗口处理函数,当有键按下时,系统依据当前键值、当前窗口号和当前光标确定系统按键后的新窗口号和当前光标,然后根据窗口号和光标从该窗口的数据区中取出将要显示的数据给窗口缓冲区,液晶显示的界面就是从窗口缓冲区中将数据直接取出并显示。