技术文章

触摸屏技术在16位单片机中的应用

来源:仪表网

2012/7/26 16:03:56 1274
  摘要:分析了8096系列中的80196单片机在电力系统配电变压器智能检测终端设备中的人机交互界面接口应用问题,通过实例详细介绍了该类单片机与触摸屏芯片的软、硬件接口的应用技巧,分析了其工作特性,指出在应用中需注意的问题,并给出了触摸芯片的部分程序。
  
  随着科学技术的日新月异,人类对文明生活需求的进步,带来对电能的需求越来越高,也带来了对电力系统的设备有更高的要求,由此电力系统配电变压器的功能及检测设备受到各方面的密切关注。在市场上各种各样的电力检测设备不断翻新,其功能也向实用性、高科技性方向发展,但配电变压器具有触摸方式的人机友好界面功能及检测的设备很少有报道,为此,在经过多方面的调研,我们提出研制使用触摸方式、具有GPRS无线通信功能的配电变压器智能检测设备的任务。该设备在满足配电功能要求的前提下,采用触摸显示方式提高检测设备的可操作性,使用GPRS无线通信提高设备的*性、满足现代信息社会的管理需求,使其具有一定*优势,能够占领一定的市场领域。
  
  1、系统设计
  
  系统的核心是采用*的IN96系列16位单片机80196,配以液晶显示触摸屏、大规模门阵列逻辑集成电路xilinx95144,通过串口驱动电路MAX232外接GPRS模块等,组成结构简单、功能完整、扩充性强、布局合理,使用芯片少,体积小,具有高可靠性和保密特性的设备系统,原理图如图1所示。
  
  图1系统原理图
  
  1.1各功能模块主要作用
  
  (1)CPU80196在系统中主要承担着控制中心及16位数据的算术、逻辑运算的任务,该单片机具有丰富的软硬件资源及运行速度快的指令系统,非常适合于电力系统的仪表设计。
  
  (2)大规模逻辑电路芯片Xilinx95144主要完成:地址锁存、数据总线驱动、控制信号总线驱动及逻辑电平转换、片选信号发生等,它有144个宏单元3200个逻辑门,100个管脚,81数据输入输出脚,4个在线编程脚,可以完成10000次的在线编程。
  
  (3)MAX232串口驱动:完成串口电平TTL至RS232转换功能。
  
  (4)GPRS模块:是一种新型的移动数据通信业务,在移动用户和数据网络之间提供一种连接,给移动用户提供高速无线IP服务。它采用*透明数据传输,永远在线,按流量计费,克服了通讯距离短,性能不稳定的缺点,真正实现全国无缝覆盖,特别适用于无人看守的区域。
  
  (5)27512EPROM程序存储器,提供64KByte的程序存储空间,主要是存放系统程序。
  
  (6)62256静态RAM数据存储器,提供64KByte的数据存储空间,主要是存放采集的数据,自带电池,可以保证数据在掉电的情况下不丢失。
  
  (7)DS1302日历芯片可以根据设置自动完成年\月\日\时\份\秒的计算,并可以实现闹钟,它主要使系统能够定时采集数据。
  
  (8)CAN属于总线式串行通讯网络,具有很强的纠错能力,支持差分收发,因而适合高噪声环境,而且传输距离比较远。在系统中我们采用了SJA1000芯片,通过正确连接和设置的,达到CAN总线物理层和数据链路层的所有功能的自动完成。
  
  (9)开关驱动电路:主要是提供给各种开关电源、交直流电机调速系统的电压与电流。在系统中我们采用数字电路与模拟电路的结合完成。
  
  (10)液晶显示与触摸屏:提供人机交互友好界面,我们选择了中国台湾AMPIRE公司产DG-32240-27-SNCW-HCDTC液晶显示触摸屏,具有320??240显示象素点,160×110mm触摸大小,其显示部分控制芯片是SED1335,触摸部分控制芯片是ADS7843。
  
  1.2系统调试
  
  在系统的调试中,一切功能与电气指标都能达到预先设计的要求,但几次出现触摸屏与单片机之间指令不执行,甚至烧坏了触摸屏中的芯片ADS7843的问题。
  
  2、硬件设计分析
  
  根据硬件连接,使用的单片机P3、P4口通过Xilinx95144与液晶显示相连,触摸屏与单片机P1口直接连接,三者工作电压均为厂商推荐典型值5V。
  
  2.180196KB单片机结构
  
  80196KB是IN公司继8位单片机以后推出的16位单片机MCS_96系列的产品之一,它与8位单片机相比提高了控制系统的实时性,与现在的32位相比是真正意义上的单片机,特别适用于各类自动控制系统。它的内部结构采用普林斯顿(Princeton)体系结构,又称冯。诺曼(VonNeumann)结构。具有程序存储器与数据存储器合二为一的特点。它的P0口只能用于输入,P1口是一个准双向口,P2口是一个多功能口,P3、P4口是双向口可作为系统总线。
  
  在本系统的电路中,采用P1口与触摸屏接口打交道,P1口内部管脚结构如图2所示。P1口是一个准双向I/O口,它由输出缓冲器、内部口锁存器、内部口寄存器和输出缓冲器构成,与MCS51的准双向口相同,内部具有上拉电阻结构。如图2所示,上拉作用由三个FET管产生,其中p1是强上拉,p3由于高阻存在为弱上拉,p2为更弱上拉,n是低阻下拉FET.
  
  图2准双向口P1内部结构
  
  当复位时,P1口呈现微弱上拉。当用作输入输出功能,其原理是:“输入”:P1口输入数据时实际上是输入到P1口寄存器中,由寄存器去驱动管脚,图二上/Q即为寄存器的输出,CPU读数据时是直接读管脚。因此在读数据时要保证P1口为输入状态,应先对P1口寄存器SFR置位,此时n截止。切记当端口用作输入口时,决不能向该口写数据“0”。“输出”:在此状态下,当指令对P1.x口的I/O口寄存器输入数据是“0”时,内部寄存器的/Q输出会打开下拉FET即n,而关闭全部上拉FET即p1、p2、p3,这时对应输出脚电平PORTPIN为“0”;当指令对P1口的某一个I/O口寄存器输入数据是“1”时,内部寄存器的/Q输出会关闭n,打开p1、p2、p3,这时对应输出脚电平PORTPIN为“1”,即输出是一个编程直接“写”的过程。
  
  2.2Xilinx95144
  
  是一款高品质的ComplexProgrammableLogicDevice复杂的可编程逻辑器件(CPLD),典型工作电压为3.3-5V,支持ISP即在线编程功能,编程次数可达上万次,管脚到管脚信号延迟7.5ns,工作频率可达111MHz,内部有144个宏单元均是ROM结构,掉电后内部的逻辑数据不会丢失。每个I/O管脚在输出状态下:高电平时典型值-4mA,低电平典型值24mA;每个I/O管脚在输入状态下:高、低电平时均为u*。因此输出电气特性:在通常的TTL电平芯片电路中、外接驱动不多的情况下,可以不使用上拉电阻;输入电气特性:
  
  一般的集成芯片都可以直接与其相连,不会出现驱动力不够现象,更不会出现损坏。
  
  2.3触摸显示屏
  
  显示部分的控制芯片是SED1335,是日本EPSON公司生产的一款液晶显示屏控制器,与同类产品相比功能zui强。其特点主要是:有较强功能的I/O缓冲器;指令功能丰富;4位数据并行发送;图形和文本方式混合显示。触摸部分的控制芯片是模拟数据转换器ADS7843,是美国Ti公司生产的具有同步串行接口的8位、12位数据输出,四线电阻触摸屏模数转换接口芯片。它通过标准SPI协议和CPU通信;精度高,当使用12位时精度达到0.04mm,可以达到X,Y方向上的1/256,1/4096精度;zui大可接受电流?50mA,典型值为数uA;工作电压为-0.3-+6V;工作时钟典型值2MHz即数量级是uS;当触摸屏被按下时(即有触摸事件发生),ADS7843会发出中断请求。
  
  在出现数次问题后,我们都发现显示部分正常,而触摸部分不正常,也就是ADS7843的使用有问题,其内部结构原理图如图3所示。从图上我们可以看见主要有四通道信号转换器、逐次逼近寄存器(SAR)、电容型数据/转换器(CDAC)、比较器、串行接口与控制器功能模块组成。其中与编程有关的信号是DCLK、/CS、DIN、DOUT、BUSY、/PENIRQ,数据流向见图4所示。
  
  图3AD7843内部原理结构
  
  图4ADS7843接口图
  
  对于ADS7843来说,除了电源与地线,输入模拟信号X+、X-、Y+、Y-、IN3、IN4,输入数字信号DCLK、/CS、DIN;输出数字信号BUSY、DOUT、/PENIRQ.与编程有关的均是数字信号,数据输入、输出、时钟输入均为串行方式,zui高转换速率为1/125KHz,线路设计结构上比较方便只需要6根端口线单片机就可以建立*的数据交互。
  
  2.4现象分析
  
  采用80196的P1口的6个端口专门与其打交道,从硬件上讲是*可以的。然而由于在编程中P1口有些端口是作输入、有些端口需要作为输出,80196又没有对位直接进行操作的指令,对P1某一个端口作输出操作,通常196会先读P1口的8个管脚,然后再进行写!的操作,根据P1口结构,必然会带来若作为输入端口的管脚在其外部输入信号为低时,执行写!指令后出现了将其输入状态改为了输出状态。此时在80196与ADS7843的DOUT与/PENIRQ这两根线上都将出现了同一根线上出现两个输出信号、争抢信号的问题,这是数字电路中不允许的,它的出现就有可能损坏芯片。
  
  根据资料介绍,在编程操作中,当P1口中有些管脚作为输入,有些管脚作为输出时要特别注意对P1口写指令操作,它是一个读、写过程,借助于一些单元。
  
  3、软件设计分析
  
  对于按键的处理,系统采用中断方式,流程如图5所示。
  
  图5按键流程图
  
  主要相关程序如下:
  
  /*触摸屏写控制指令、读数据子程序*/
  
  LDBR6,#08H;写8位控制指令代码
  
  CLRC;LDBAL,COM;指令代码准备发送
  
  ADS7843_W:SHLBAL,#1;数据串行发送
  
  JCS_DI_1;JMPS_DI_0
  
  S_DI_1:LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ORBBL,#03H;将数据出DOUT置高,数据入DIN为信号输入状态
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  JMPSKCLK
  
  S_DI_0:LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ANDBBL,#0FEH;将数据出DOUT置低
  
  ORBBL,#02H;数据入DIN为信号输入状态
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  SKCLK:LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ANDBBL,#0F7H;时钟信号DCLK为低
  
  ORBBL,#01H;将数据出DOUT置高
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ORBBL,#09H;时钟信号DCLK为高,将数据出DOUT置高
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  DJNZR6,ADS7843_W;8位指令送完
  
  LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ANDBBL,#0F7H;时钟信号DCLK为低
  
  ORBBL,#01H;将数据出DOUT置高
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  /*准备接受触摸屏按键读14位数据数据,先接受低8位数据*/
  
  LDBR6,#08H;键值设定方向读低8位数据程序
  
  DATA_OUT:LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ORBBL,#09H;时钟信号DCLK为高,将数据出DOUT置高
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  LDBBL,IOPORT1;将P1口状态保存在BL寄存器中
  
  ANDBBL,#0F7H;时钟信号DCLK为低
  
  ORBBL,#01H;将数据出DOUT置高
  
  LDBIOPORT1,BL;将修改后的状态送至P1口
  
  SHLBAL,#1;数据左移一位
  
  JBSIOPORT1,0,DI_O_1;判数据入DIN高?
  
  ANDBAL,#0FEH;数据入DIN低,输入0
  
  JMPDATA_OUT1
  
  DI_O_1:ORBAL,#01H;数据入DIN高,输入1
  
  DATA_OUT1:DJNZR6,DATA_OUT;8位数据读完
  
  STBAL,FIRST;低8位数据保存至FIRST单元同样处理接受数据高4位数据
  
  …………;4位数据读完,数据保存。读14位数据程序完成后返回
  
  程序上机调试后再没有出现触摸屏与单片机之间指令不执行,烧坏触摸芯片的问题。也许你会发现,在程序编程中,我们使用了BL寄存器作P1口的过渡保护单元,对输出信号采用了对位的或、与方式达到输出“1”、“0”电平。保证P1的输入端口不会因其他P1端口的操作而改变其状态,在信号线上出现两个输出、争抢信号的现象。这就是触摸屏出问题的主要原因。
  
  4、结语
  
  在项目鉴定时,专家们给出了系统设计新颖、结构合理、功能比较完善,扩展性强,有一定的市场空间。特别提到了每个触摸键设计合理、反映正确的结论。
  
  在本项目结束时还有一个关于按键的问题:由于是使用单端模式工作,且CPU接到请求后,为了消除抖动、防止误触发,延时后再响应其请求,造成了按键反映迟缓,这是一个硬件、软件都需改进的问题,硬件需换模拟数据转换芯片,软件上延时可以短一些。

猜你喜欢

提示

请选择您要拨打的电话: