摘要:在儀器儀表電路中,人機(jī)交互界面是必不可少的環(huán)節(jié),。為了解決單純采用單片機(jī)制作的系統(tǒng)功耗高,、速度慢、電路結(jié)構(gòu)繁瑣的問(wèn)題,,同時(shí)為了 發(fā)揮出單片機(jī)的靈活性和FPGA的高速性,,系統(tǒng)采用C805lF020單片機(jī)和CycloneⅡFPGA作為系統(tǒng)核心,設(shè)計(jì)實(shí)現(xiàn)了鍵盤(pán),、LCD等人機(jī)交互 功能,同時(shí)預(yù)留了部分I/O接口作為擴(kuò)展接口使用,。采用FPGA掃描鍵盤(pán)可以極大程度地節(jié)省單片機(jī)的資源,,利用單片機(jī)和FPGA共同控制LCD可以更好地 體現(xiàn)出人機(jī)交互的特色。
關(guān)鍵詞:人機(jī)交互,;C805lF,;T6963C;FPGA,;鍵盤(pán)掃描
在現(xiàn)代各類(lèi)儀器的開(kāi)發(fā)中,,人機(jī)交互功能正起著無(wú)可替代的作用。人機(jī)交互界面友好的儀器將更容易操作和使用,,從而提高工作效率,。液晶顯示器(LCD)具有功 耗低、價(jià)格低,、壽命長(zhǎng),、接口控制方便等特點(diǎn),在科研與設(shè)計(jì)領(lǐng)域正發(fā)揮著越來(lái)越大的作用,。FPGA作為單片機(jī)外設(shè)的接口芯片,,可以大大簡(jiǎn)化接口電路,通過(guò)對(duì) FPGA進(jìn)行編程,,可以實(shí)現(xiàn)常用的譯碼,、地址選通等功能。
本文以C8051F020單片機(jī)與FPGA互連系統(tǒng)為控制核心,,以液晶顯示控制器T6963C為例,,結(jié)合行掃描鍵盤(pán),簡(jiǎn)述了一種人機(jī)交互功能的設(shè)計(jì),。
1 系統(tǒng)設(shè)計(jì)方案
FPGA可在很大程度上擴(kuò)展單片機(jī)的資源,,然而人機(jī)交互功能仍應(yīng)盡量減少對(duì)單片機(jī)及FPGA的資源消耗,以便將更多的片內(nèi)資源用于其他功能的擴(kuò)展,。采用 FPGA掃描鍵盤(pán)可以節(jié)省單片機(jī)的資源,,同時(shí)也能靈活地實(shí)現(xiàn)鍵盤(pán)的擴(kuò)展。而考慮到液晶控制較復(fù)雜,依然采用單片機(jī)控制
LCD,,使LCD的各種功能得到最大程度的利用,,其系統(tǒng)框圖如圖1所示。
2 硬件電路及FPGA接口設(shè)計(jì)
2.1 總線接口設(shè)計(jì)
這里采用單片機(jī)C8051F020與CycloneⅡFPGA互連的系統(tǒng),。C8051F020器件是完全集成的混合信號(hào)系統(tǒng)級(jí)MCU芯片,,具有64個(gè)數(shù)字 I/O引腳,與8051完全兼容,,而且速度得到了極大提高,,70%的指令執(zhí)行時(shí)間為l或2個(gè)系統(tǒng)時(shí)鐘周期,只有4條指令的執(zhí)行時(shí)間大于4個(gè)系統(tǒng)時(shí)鐘周期,。 此外,,C8051F020系列MCU對(duì)CIP-51內(nèi)核和外設(shè)有幾項(xiàng)關(guān)鍵性的改進(jìn),提高了整體性能,,更易于在最終應(yīng)用中使用,。如提供22個(gè)中斷源、7個(gè)復(fù) 位源,、可編程交叉開(kāi)關(guān),、8位A/D轉(zhuǎn)換器、12位D/A轉(zhuǎn)換器等,。
CycloneⅡ系列FPGA將低功耗FPGA的密度規(guī)模擴(kuò)展至68 416個(gè)邏輯單元,,并提供高達(dá)622個(gè)可用的I/O接口以及高達(dá)1.1 Mb的片內(nèi)存儲(chǔ)單元。CycloneⅡ系列成功實(shí)現(xiàn)了高效與低功耗的結(jié)合,,可用于自動(dòng)化,、通信、視頻播放等領(lǐng)域,。為兼顧成本問(wèn)題,,本系統(tǒng)采用性價(jià)比較高的EP2C8型FPGA作為接口器件。
為使單片機(jī)的資源可以得到最大的開(kāi)發(fā),,將單片機(jī)的高端口,,即P4~P7接入FPGA,并通過(guò)FPGA對(duì)外部設(shè)備進(jìn)行訪問(wèn),。在FPGA中通過(guò)Vel-ilog HDL語(yǔ)言編程實(shí)現(xiàn)了3-8譯碼器,,從而實(shí)現(xiàn)了對(duì)單片機(jī)地址總線的擴(kuò)展。該3-8譯碼器對(duì)LCD以及鍵盤(pán)的鍵值讀取提供使能信號(hào),,如圖2所示,。
2.2 T6963C及其接口設(shè)計(jì)
T6963C液晶顯示控制器多用于小規(guī)模的液晶顯示器件,常被裝配在圖形液晶顯示模塊上,,以內(nèi)藏控制器型圖形液晶顯示模塊的形式出現(xiàn),。
單片機(jī)對(duì)T6963C有2種訪問(wèn)方式:直接訪問(wèn)與間接訪問(wèn),。直接訪問(wèn)利用三總線以I/O設(shè)備訪問(wèn)形式進(jìn)行控制;間接訪問(wèn)則由單片機(jī)提供并行接口,,以程序控制時(shí)序的方式進(jìn)行控制,。為簡(jiǎn)化程序,這里采用直接訪問(wèn)方式,。
該LCM的FS1引腳用于控制顯示字符的字體,。FS1為高時(shí),LCD顯示6x8字符,;FS1為低時(shí),,LCD顯示8x8字符。經(jīng)實(shí)踐,,在顯示英文與數(shù)字 時(shí),,6x8字符更為美觀;在顯示中文字符時(shí),,8x8字符更為方便。一般系統(tǒng)采用將FS1接地或接高的方式來(lái)固定字體,,而本系統(tǒng)采用P2.1對(duì)FS進(jìn)行控 制,,通過(guò)改變地址實(shí)現(xiàn)改變字體的功能,使得界面的顯示更靈活,。
2. 3 鍵盤(pán)電路設(shè)計(jì)
鍵盤(pán)是常用的單片機(jī)輸入設(shè)備,,分為編碼鍵盤(pán)和非編碼鍵盤(pán)。鍵盤(pán)上閉合鍵的識(shí)別由專(zhuān)用硬件譯碼器實(shí)現(xiàn),,并產(chǎn)生鍵編號(hào)或鍵值的稱(chēng)為編碼鍵盤(pán),;靠軟件識(shí)別的稱(chēng)為 非編碼鍵盤(pán)。在單片機(jī)組成的測(cè)控系統(tǒng)及智能化儀器中使用最多的是非編碼鍵盤(pán),,本系統(tǒng)設(shè)計(jì)在FPGA中編程實(shí)現(xiàn)3x6鍵盤(pán)的行掃描,。
由于按鍵的機(jī)械特性,在閉合和斷開(kāi)的瞬間會(huì)伴隨著一連串的抖動(dòng),,鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次,,所以必須進(jìn)行去抖處理,常用的方法為延時(shí)去抖動(dòng),。 FPGA產(chǎn)生鍵值之后向單片機(jī)發(fā)送中斷,,并等待單片機(jī)讀取鍵值。由于人腦反應(yīng)時(shí)間相對(duì)較長(zhǎng),,鍵盤(pán)中斷可以處于相對(duì)較低的優(yōu)先級(jí),,因此本文將鍵盤(pán)中斷接于外 部中斷7。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)遵循結(jié)構(gòu)化和層次化的設(shè)計(jì)原則,。底層函數(shù)直接與硬件溝通,,而上層函數(shù)直接通過(guò)調(diào)用底層函數(shù)來(lái)實(shí)現(xiàn)相應(yīng)功能,從而使上層函數(shù)與硬件環(huán)境徹底分開(kāi)。當(dāng)硬件環(huán)境發(fā)生變化時(shí),,僅修改底層函數(shù)便能實(shí)現(xiàn)程序的移植,。
3.1 液晶驅(qū)動(dòng)模塊的編程設(shè)計(jì)
本模塊的底層函數(shù)需要實(shí)現(xiàn)寫(xiě)控制字、寫(xiě)參數(shù),、查忙等功能,。由于采用直接訪問(wèn),寫(xiě)控制字與寫(xiě)參數(shù)的函數(shù)只需向控制口或數(shù)據(jù)口的地址送數(shù)即可,。由于LCD是慢 速器件,,因此在每次寫(xiě)控制字及寫(xiě)參數(shù)之前都需要進(jìn)行查忙。T6963C的狀態(tài)字共有7位有效的狀態(tài)位,,如表1所示,。其中STA1~STA3最為常用,一般 情況下可以不需要對(duì)STA5~STA7進(jìn)行杏忙的程序,。
3.1.1 液晶驅(qū)動(dòng)模塊的初始化
T6963C的最大特點(diǎn)是具有獨(dú)特的硬件初始值設(shè)置功能,,顯示驅(qū)動(dòng)所需的參數(shù)如占空比系數(shù)。驅(qū)動(dòng)傳輸?shù)淖止?jié)數(shù)/行及字符的字體選擇等均由引腳電平設(shè)置,,這 樣T6963C的初始化在上電時(shí)就已經(jīng)基本設(shè)置完成,,軟件操作的重心就可以全部用于顯示畫(huà)面的設(shè)計(jì)上。因此,,初始化時(shí)僅需根據(jù)實(shí)際情況設(shè)置文本區(qū)域和圖形 區(qū)域的首地址和寬度,,以及CGRAM偏置地址、合成方式,、光標(biāo)形狀等即可正常使用,。
液晶驅(qū)動(dòng)模塊的初始化函數(shù)如下:
3.1.2 英文及漢字的文本顯示
由于英文及數(shù)字等常用字符的字模已經(jīng)固化在CGROM中,因此進(jìn)行英文的顯示時(shí),,只需指定顯示的地址,,再輸入該字符對(duì)應(yīng)的標(biāo)號(hào)即可。漢字 的顯示與英文的顯示類(lèi)似,。然而出于其復(fù)雜性,,一個(gè)漢字需要使用4組點(diǎn)陣才能完整顯示。在初始化后將漢字的4部分字模順序輸入CGRAM中,,在使用時(shí)僅需計(jì) 算好每一部分的顯示地址即可對(duì)漢字進(jìn)行完美顯示,。
對(duì)于一串英文字符的輸入,可以利用字符串的特性進(jìn)行操作,。通過(guò)檢測(cè)‘\0’字符來(lái)判斷英文字符串的結(jié)尾,,從而避免了在調(diào)用此顯示函數(shù)時(shí)人工計(jì)算句子長(zhǎng)度的 工作。英文字符的ASCII碼值與其在CGROM中對(duì)應(yīng)的標(biāo)號(hào)恰相差0x20,,因此僅需簡(jiǎn)單的減法即可實(shí)現(xiàn)標(biāo)號(hào)的轉(zhuǎn)換,。此外,,在進(jìn)行英文的連續(xù)顯示時(shí),使 用了T6963C的數(shù)據(jù)自動(dòng)寫(xiě)指令,,從而提高了顯示效率,。
對(duì)于一串中文的顯示,則僅需通過(guò)循環(huán)調(diào)用單個(gè)中文的顯示程序進(jìn)行實(shí)現(xiàn),。注意由于C51語(yǔ)言中字符串無(wú)法支持中文,,因此必須人工計(jì)算中文字串的長(zhǎng)度并將其作為函數(shù)傳遞給此顯示函數(shù)。
字符發(fā)生器CGRAM中總共可存儲(chǔ)32個(gè)漢字,,對(duì)于需顯示較多漢字的應(yīng)用,,可從需顯示的漢字中選出16個(gè)最常用的漢字,固定存放于CGRAM中,,其余漢字僅在需要使用時(shí)動(dòng)態(tài)寫(xiě)入CGRAM,。這樣,既提高了顯示效率,,又解決了CGRAM過(guò)小的問(wèn)題,。
3.1.3 圖形顯示
除使用文本顯示漢字外,還可采用圖形顯示的方式,。具體方式是將字模以數(shù)組的方式保存于單片機(jī)的代碼段,,在需要顯示時(shí)將數(shù)據(jù)送入圖形區(qū)即可。此外,,利用圖形顯示,還可以編寫(xiě)描點(diǎn)程序顯示相應(yīng)波形或者編寫(xiě)繪圖程序繪制簡(jiǎn)易表格,,使系統(tǒng)顯示結(jié)果更加直觀,,便于分析。
3.1.4 文本特效
T6963C可以設(shè)置文本屬性區(qū),,并對(duì)文本實(shí)現(xiàn)反白,、正向閃爍、反向閃爍等特效,。使用時(shí)僅需將圖形顯示設(shè)置為文本屬性區(qū)即可,。此時(shí)圖形區(qū)的內(nèi)容將無(wú)法顯 示,若圖形區(qū)與文本屬性區(qū)劃分在CGRAM的不同區(qū)域,,則圖形區(qū)的內(nèi)容可以得到保存,。利用文本特效,可通過(guò)反白或閃爍等效果指示可選選項(xiàng)以及當(dāng)前選項(xiàng),,從 而使界面更易于操作,。
3.2 人機(jī)交互界面設(shè)計(jì)
除基本的10個(gè)數(shù)字鍵以外,還設(shè)定了上,、下,、左,、右、確定,、取消等按鍵,。此外,按鍵位置的設(shè)計(jì),,更符合人們的按鍵習(xí)慣,。在界面中采用分級(jí)的菜單,在一級(jí)菜 單中選定功能之后將進(jìn)入下一級(jí)菜單對(duì)功能進(jìn)行更詳細(xì)的設(shè)定,。在人機(jī)交互界面中可以使用方向鍵進(jìn)行功能的選擇,,數(shù)字鍵僅用于數(shù)據(jù)的輸入。
界面充分利用了文本特效,,對(duì)選項(xiàng)采用反向顯示表示該選項(xiàng)已選定:對(duì)選項(xiàng)采用反向閃爍表示用戶可通過(guò)方向鍵改變選項(xiàng),。在需要進(jìn)行數(shù)字輸入的界面中打開(kāi)光標(biāo),即可向用戶標(biāo)示數(shù)字輸入的地方,。此外,,必要的警告和出錯(cuò)界面的設(shè)計(jì)將為用戶提供更多信息,使人機(jī)交互界面更為友好,。
4 結(jié)束語(yǔ)
本系統(tǒng)采用鍵盤(pán)+LCD的輸入輸出設(shè)備,,并且可以通過(guò)FPGA實(shí)現(xiàn)各種其他外設(shè)的接口電路的設(shè)計(jì),減少了對(duì)單片機(jī)資源的占用,,使得設(shè)計(jì)靈 活,、方便。同時(shí)FPGA還可以為單片機(jī)提供存儲(chǔ)器和I/0口等資源,。本文設(shè)計(jì)的電路可擴(kuò)展性強(qiáng),,在此基礎(chǔ)上可將其擴(kuò)展成各種擁有友好界面的系統(tǒng),如可控增 益放大器,、音頻信號(hào)分析儀,、集成運(yùn)放分析儀等。經(jīng)實(shí)踐,,該系統(tǒng)穩(wěn)定易用,,實(shí)用性強(qiáng)。