NEC单片机的FIP应用

出处:http://www.ic37.com 发布于:2007-09-25 10:54:59

  摘要:介绍了日本NEC公司8位单片机产品μPD780208中的FIP显示控制器及显示与键盘扫描的应用方案,给出了该设计方案的原理电路和程序流程。解决了显示和键盘输入独立控制时所造成的CPU资源占用较多的问题。 
    
  关键词:单片机 μPD780208 微控制器 FIP 显示控制器

1 概述

    
  日本NEC公司生产的μPD780208系列8位单片机属于78K/0家庭中功能较强的一种系列。根据内部集成的ROM和RAM容量的不同,μPD780208系列分为5个型号,μPD780208芯片是型号。该芯片内部集成了8位78K0CPU内核、60kB的ROM和2192B的RAM之外,还有1个FIP显示驱动/控制器、8位A/D转换器、2个串行I/O口、5个定时/计数器、3个定时器输出、1个可编程时钟输出、1个可编程蜂鸣器输出、4个外部中断源、12个内部中断源和1个测试输入。ΜPD780208支持双时钟,其电源电压范围为2.7~5.5V,可设定2种待机模式。其中的FIP(Fluorescent
    
  Indicator Panel)显示控制/驱动器是μPD780208系列所特有的,它的主要功能有自动读取显示数据,以实现硬件自动显示刷新功能;控制显示9~40段和2~16位FIP;通过编程自由设定位信号输出时序;并可编程调节8级显示亮度。另外,μPD780208的显示时序中还包含有键盘扫描时序,可输出键盘扫描信号;并具有较高的驱动能力,可直接驱动FIP显示器。
    
  本文主要通过笔者在项目中的实际应用,给出将μPD780208中的FIP显示控制/驱动器用于显示和键盘扫描结合的应用方案。
    
2 设计方案
    
  在笔者设计的项目中,要求μPD780208硬件平台有12位的9段VFD显示器和8×4的键盘输入,如果按照常规设计方案,由于显示控制与键盘扫描控制是相互独立的,键盘扫描需占有一个定时器。而本方案则使用显示控制/驱动器提供的键盘扫描时序来扫描键盘,因而不占用定时资源。这使是该设计方案的优点所在。(系统所用的晶振频率为4.9152MHz)。
    
2.1 硬件连接 
    
  图1所示是μPD780208的FIP显示电路的结构原理图。应用时将显示端口FIP0~FIP11接VFD显示器的位控制器T0~T11,FIP12和P80~P87接VFD显示器的段控制端S0~S8。μPD780208的显示驱动器的驱动能力很强,因而可以直接连接VFD而无需驱动电路。端口P110~P117接键盘的8根扫描线,端口P120~P123接键盘的4根回读线。
    
2.2 初始化设置与资源分配
    
  合理地设置显示模式寄存器DSPM0和DSPM1可将显示方式设置为12位9段模式,这时FIP显示RAM地址为FA60H~FA6BH和FA70H~FA7BH。FIP控制器的时序图如图2所示。图中n=11,TDSP为1位显示周期(2048/4.9152MHz=416.7μs),TKS为键盘扫描周期(TKS=TDSP),TCYT为完整显示周期(TCYT=TDSP×(12+1)),TDIG为位信号脉冲宽度(可编程改变)。
    
  在FIP显示周期中,当处在键盘时序时,键盘扫描标志KSF被置1,其它时间被清零。当KSF置1时,将产生键盘扫描中断INTKS。在中断处理程序中进行键盘扫描和回读可用软件来设计。键盘扫描必须在KSF为1时进行,否则会造成显示混乱。1次INTKS的时间是416.7μs,这段时间可能来不及扫描完所有键。因此,该方案采用1次中断扫描一半键盘,2次中断完成一遍扫描的方式。
     键盘的消抖动问题在扫描中解决,方法是当同一位置连续3次检测到信号,即在4个TCYT间隔(4×TCYT=21.667ms)中信号一直有效时,才判断该键被按下,否则判为抖动干扰。
    
3 软件设计
     3.1 相关的数据结构和变量
    
  使用的数据结构和变量的定义说明如下:
      char PreKeyStatus[8]; /*前8列键的状态存入数组的低4位*/
      char CurKeyStatus[8]; /*当有8列键的状态存入数组的低4位*/
      char ScanData; /*当前用于扫描的数据*/
      char RetData; /*临时存储回读的数据*/
      char KeyBuff[10]; /*键盘缓冲区*/
      char Khead; /*键盘缓冲区头指针*/
      char Krear; /*键盘缓冲区尾指针*/
      char ChatterCount; /*消抖动计数器*/
      char ScanEnd; /*一遍扫描结束标志*/
      char KeyChanged; /*按键改变标志*/
      const char DisplayCode[0][2]; /*0~9的显示编码,每个编码占2字节*/
    
3.2 程序初始化 
     
  进行显示方式设置、I/O端口设置、中断系统设置始化的具体程序段如下:
      DI(); /*关中断*/
      DSPM0=0x00; /*9段显示,段显示方式,系统时钟4.9152MHz*/
      DSPM1=0xB3; /*23位显示,亮度为2/16,显示周期为416.7μs*/
      PM12=0x0F; /*P12端口的低四位用于键盘回读,设为输出模式*/
      KSIF=0; /*清除中断请求标志*/
      KSMK=0; /*清除中断屏蔽标志,允许INTKS中断*/
      Khead=9; /*初始化键盘缓冲区*/
      Krear=0; /*消抖动计数器置初值*/
      Scandata=0x01; /*键盘扫描数据置初值*/
      ScanFinish=0; /*一遍扫描结束标志置初值*/
      KeyChanged=0; /*按键改变标志置初值*/
      EI(); /*开中断*/
    
3.3 显示程序 
     
  下面的程序可实现在指定位置显示一个数字的功能。其中能数digit为要显示的数字,范围是0~9;position为显示位置,从右向左与0~11相对应。
      void DisplayDigit(char digit,char position)
      {if((digit<10)&&(digit>=0)&&(position>=0)&&(position<12)
      /*在显示范围之内*/
      {pokeb(0xFA60+position,DisplayCode[digit][1]);
      /*编码的低字节*/
      {pokeb(0xFA70+position,DisplayCode[digit][0])};
      /*编码的高字节*/
      }
      中断处理程序流程如图3所示。
    
    

     
4 小结
 
     
  在其他单片机系统中,通常由软件定时中断来逐位刷新显示和扫描键盘,这样将增加软件的复杂性,并且会占用较多的CPU资源。而μPD780208所具有的FIP显示控制/驱动器可实现硬件的自动显示刷新功能,在初始位置完成后,软件的工作只是将显示数据按要求的格式放入FIP显示RAM区而无需额外编程,由于定时刷新显示的作由硬件完成,因此在很大程序上降低了CPU的资源占用率。同时,由于FIP显示时序中提供有键盘扫描时序,从而进一步简化了软件编程,并且减少了定时中断占用。这样,在单片机的资源并不丰富的资源条件下,FIP显示控制/驱动器的优越性得到了充分体现。


  
关键词:单片机

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!