首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» NEC单片机的FIP应用
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
NEC单片机的FIP应用
发短消息
加为好友
forsuccess
当前离线
UID
871057
帖子
6281
精华
0
积分
3141
阅读权限
90
在线时间
282 小时
注册时间
2012-2-21
最后登录
2015-6-23
论坛元老
UID
871057
性别
男
1
#
打印
字体大小:
t
T
forsuccess
发表于 2012-11-27 23:48
|
只看该作者
NEC单片机的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显示控制/驱动器的优越性得到了充分体现。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议