NEC單片機(jī)的FIP應(yīng)用
1 概述
本文引用地址:http://m.butianyuan.cn/article/170681.htm日本NEC公司生產(chǎn)的μPD780208系列8位單片機(jī)屬于78K/0家庭中功能較強(qiáng)的一種系列。根據(jù)內(nèi)部集成的ROM和RAM容量的不同,μPD780208系列分為5個(gè)型號(hào),μPD780208芯片是最高型號(hào)。該芯片內(nèi)部集成了8位78K0CPU內(nèi)核、60kB的ROM和2192B的RAM之外,還有1個(gè)FIP顯示驅(qū)動(dòng)/控制器、8位A/D轉(zhuǎn)換器、2個(gè)串行I/O口、5個(gè)定時(shí)/計(jì)數(shù)器、3個(gè)定時(shí)器輸出、1個(gè)可編程時(shí)鐘輸出、1個(gè)可編程蜂鳴器輸出、4個(gè)外部中斷源、12個(gè)內(nèi)部中斷源和1個(gè)測(cè)試輸入。ΜPD780208支持雙時(shí)鐘,其電源電壓范圍為2.7~5.5V,可設(shè)定2種待機(jī)模式。其中的FIP(Fluorescent
Indicator Panel)顯示控制/驅(qū)動(dòng)器是μPD780208系列所特有的,它的主要功能有自動(dòng)讀取顯示數(shù)據(jù),以實(shí)現(xiàn)硬件自動(dòng)顯示刷新功能;控制顯示9~40段和2~16位FIP;通過編程自由設(shè)定位信號(hào)輸出時(shí)序;并可編程調(diào)節(jié)8級(jí)顯示亮度。另外,μPD780208的顯示時(shí)序中還包含有鍵盤掃描時(shí)序,可輸出鍵盤掃描信號(hào);并具有較高的驅(qū)動(dòng)能力,可直接驅(qū)動(dòng)FIP顯示器。
本文主要通過筆者在項(xiàng)目中的實(shí)際應(yīng)用,給出將μPD780208中的FIP顯示控制/驅(qū)動(dòng)器用于顯示和鍵盤掃描結(jié)合的應(yīng)用方案。
2 設(shè)計(jì)方案
在筆者設(shè)計(jì)的項(xiàng)目中,要求μPD780208硬件平臺(tái)有12位的9段VFD顯示器和8×4的鍵盤輸入,如果按照常規(guī)設(shè)計(jì)方案,由于顯示控制與鍵盤掃描控制是相互獨(dú)立的,鍵盤掃描需占有一個(gè)定時(shí)器。而本方案則使用顯示控制/驅(qū)動(dòng)器提供的鍵盤掃描時(shí)序來掃描鍵盤,因而不占用定時(shí)資源。這使是該設(shè)計(jì)方案的優(yōu)點(diǎn)所在。(系統(tǒng)所用的晶振頻率為4.9152MHz)。
2.1 硬件連接
圖1所示是μPD780208的FIP顯示電路的結(jié)構(gòu)原理圖。應(yīng)用時(shí)將顯示端口FIP0~FIP11接VFD顯示器的位控制器T0~T11,F(xiàn)IP12和P80~P87接VFD顯示器的段控制端S0~S8。μPD780208的顯示驅(qū)動(dòng)器的驅(qū)動(dòng)能力很強(qiáng),因而可以直接連接VFD而無需驅(qū)動(dòng)電路。端口P110~P117接鍵盤的8根掃描線,端口P120~P123接鍵盤的4根回讀線。
2.2 初始化設(shè)置與資源分配
合理地設(shè)置顯示模式寄存器DSPM0和DSPM1可將顯示方式設(shè)置為12位9段模式,這時(shí)FIP顯示RAM地址為FA60H~FA6BH和FA70H~FA7BH。FIP控制器的時(shí)序圖如圖2所示。圖中n=11,TDSP為1位顯示周期(2048/4.9152MHz=416.7μs),TKS為鍵盤掃描周期(TKS=TDSP),TCYT為完整顯示周期(TCYT=TDSP×(12+1)),TDIG為位信號(hào)脈沖寬度(可編程改變)。
在FIP顯示周期中,當(dāng)處在鍵盤時(shí)序時(shí),鍵盤掃描標(biāo)志KSF被置1,其它時(shí)間被清零。當(dāng)KSF置1時(shí),將產(chǎn)生鍵盤掃描中斷INTKS。在中斷處理程序中進(jìn)行鍵盤掃描和回讀可用軟件來設(shè)計(jì)。鍵盤掃描必須在KSF為1時(shí)進(jìn)行,否則會(huì)造成顯示混亂。1次INTKS的時(shí)間是416.7μs,這段時(shí)間可能來不及掃描完所有鍵。因此,該方案采用1次中斷掃描一半鍵盤,2次中斷完成一遍掃描的方式。
鍵盤的消抖動(dòng)問題在掃描中解決,方法是當(dāng)同一位置連續(xù)3次檢測(cè)到信號(hào),即在4個(gè)TCYT間隔(4×TCYT=21.667ms)中信號(hào)一直有效時(shí),才判斷該鍵被按下,否則判為抖動(dòng)干擾。
3 軟件設(shè)計(jì)
3.1 相關(guān)的數(shù)據(jù)結(jié)構(gòu)和變量
使用的數(shù)據(jù)結(jié)構(gòu)和變量的定義說明如下:
char PreKeyStatus[8]; /*前一次8列鍵的狀態(tài)存入數(shù)組的低4位*/
char CurKeyStatus[8]; /*當(dāng)有8列鍵的狀態(tài)存入數(shù)組的低4位*/
char ScanData; /*當(dāng)前用于掃描的數(shù)據(jù)*/
char RetData; /*臨時(shí)存儲(chǔ)回讀的數(shù)據(jù)*/
char KeyBuff[10]; /*鍵盤緩沖區(qū)*/
char Khead; /*鍵盤緩沖區(qū)頭指針*/
char Krear; /*鍵盤緩沖區(qū)尾指針*/
char ChatterCount; /*消抖動(dòng)計(jì)數(shù)器*/
char ScanEnd; /*一遍掃描結(jié)束標(biāo)志*/
char KeyChanged; /*按鍵改變標(biāo)志*/
const char DisplayCode[0][2]; /*0~9的顯示編碼,每個(gè)編碼占2字節(jié)*/
蜂鳴器相關(guān)文章:蜂鳴器原理
評(píng)論