计算器模块结构如下图所示,主要由触摸按键、触摸检测芯片CAP1298、12832 LCD显示屏和DIP接口等四部分组成。
该模块PCB做有20个触摸按键,其中触摸检测芯片选用了Microchip的电容触摸控制器CAP1298,该触摸芯片具有8路触摸按键检测功能,因此采用了3片CAP1298来检测20个触摸按键的状态。CAP1298与FPGA采用I2C总线的通信方式传输按键状态。显示屏选用了晶联讯电子公司的12832的单色点阵液晶模块JLX12832G-520,内置驱动芯片,FPGA可以通过串行接口驱动该模块显示1616汉字或168字符。模块采用了Arduino的标准接口,完全兼容Arduino UNO接口。
触摸按键检测部分采用Microchip公司的电容触摸控制器CAP1298,该芯片内置电容触摸检测和校准功能,每个芯片可以独立检测8路的触摸按键容值变化并将检测结果保存在内部的寄存器中,可以通过SMBUS或标准的I2C总线来读写芯片内的寄存器值。
芯片内部有众多的参数设置和状态寄存器,但是大部分寄存器在出厂时已经设置了默认值,一般情况下无需重新设置就可以使用。我们只需要操作00h Main Control寄存器和03h Sensor Input Status 两个寄存器就可以实现触摸按键的检测工作。
Main Control寄存器控制芯片的电源状态和指示中断状态。Sensor Input Status寄存器返回采样电容触摸传感器输入值,每一位对应一个触摸按键通道的返回值,当一个通道的触摸按键被触摸时,03h寄存器对应位会被置1,同时产生中断,当01h主控制器的INT位被清零时,该状态位会被清零。
FPGA使用I2C总线操作步骤:首先读取03h地址寄存器值,如果03h寄存器的值不是0,则表示有对应位的按键被触摸,然后向00h地址寄存器写00h,则将03h清零,以便下一次检测。
显示模块选用了晶联讯电子公司的12832的单色点阵液晶模块JLX12832G-520,内置矽创公司的驱动芯片ST7567,FPGA可以通过串行接口驱动该模块显示1616汉字或16*8字符。 CS是LCD的片选信号,低电平有效,CS信号为低时LCD可以被驱动。 RST是复位信号,低电平有效,上电时需要将该信号置低以对LCD复位。 SCK和SDA分别是串行时钟和串行数据,符合SPI时序。 RS是数据和命令选择信号,RS为低时,表示写指令到LCD,RS为高时,表示写数据到LCD。