基于51單片機(jī)和FPGA的人機(jī)交互系統(tǒng)的設(shè)計(jì)
為使單片機(jī)的資源可以得到最大的開發(fā),將單片機(jī)的高端口,即P4~P7接入FPGA,并通過FPGA對(duì)外部設(shè)備進(jìn)行訪問。在FPGA中通過Vel-ilog HDL語言編程實(shí)現(xiàn)了3-8譯碼器,從而實(shí)現(xiàn)了對(duì)單片機(jī)地址總線的擴(kuò)展。該3-8譯碼器對(duì)LCD以及鍵盤的鍵值讀取提供使能信號(hào),如圖2所示。
2.2 T6963C及其接口設(shè)計(jì)
T6963C液晶顯示控制器多用于小規(guī)模的液晶顯示器件,常被裝配在圖形液晶顯示模塊上,以內(nèi)藏控制器型圖形液晶顯示模塊的形式出現(xiàn)。
單片機(jī)對(duì)T6963C有2種訪問方式:直接訪問與間接訪問。直接訪問利用三總線以I/O設(shè)備訪問形式進(jìn)行控制;間接訪問則由單片機(jī)提供并行接口,以程序控制時(shí)序的方式進(jìn)行控制。為簡化程序,這里采用直接訪問方式。
該LCM的FS1引腳用于控制顯示字符的字體。FS1為高時(shí),LCD顯示6x8字符;FS1為低時(shí),LCD顯示8x8字符。經(jīng)實(shí)踐,在顯示英文與數(shù)字 時(shí),6x8字符更為美觀;在顯示中文字符時(shí),8x8字符更為方便。一般系統(tǒng)采用將FS1接地或接高的方式來固定字體,而本系統(tǒng)采用P2.1對(duì)FS進(jìn)行控 制,通過改變地址實(shí)現(xiàn)改變字體的功能,使得界面的顯示更靈活。
2. 3 鍵盤電路設(shè)計(jì)
鍵盤是常用的單片機(jī)輸入設(shè)備,分為編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識(shí)別由專用硬件譯碼器實(shí)現(xiàn),并產(chǎn)生鍵編號(hào)或鍵值的稱為編碼鍵盤;靠軟件識(shí)別的稱為 非編碼鍵盤。在單片機(jī)組成的測(cè)控系統(tǒng)及智能化儀器中使用最多的是非編碼鍵盤,本系統(tǒng)設(shè)計(jì)在FPGA中編程實(shí)現(xiàn)3x6鍵盤的行掃描。
由于按鍵的機(jī)械特性,在閉合和斷開的瞬間會(huì)伴隨著一連串的抖動(dòng),鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次,所以必須進(jìn)行去抖處理,常用的方法為延時(shí)去抖動(dòng)。 FPGA產(chǎn)生鍵值之后向單片機(jī)發(fā)送中斷,并等待單片機(jī)讀取鍵值。由于人腦反應(yīng)時(shí)間相對(duì)較長,鍵盤中斷可以處于相對(duì)較低的優(yōu)先級(jí),因此本文將鍵盤中斷接于外 部中斷7。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)遵循結(jié)構(gòu)化和層次化的設(shè)計(jì)原則。底層函數(shù)直接與硬件溝通,而上層函數(shù)直接通過調(diào)用底層函數(shù)來實(shí)現(xiàn)相應(yīng)功能,從而使上層函數(shù)與硬件環(huán)境徹底分開。當(dāng)硬件環(huán)境發(fā)生變化時(shí),僅修改底層函數(shù)便能實(shí)現(xiàn)程序的移植。
3.1 液晶驅(qū)動(dòng)模塊的編程設(shè)計(jì)
本模塊的底層函數(shù)需要實(shí)現(xiàn)寫控制字、寫參數(shù)、查忙等功能。由于采用直接訪問,寫控制字與寫參數(shù)的函數(shù)只需向控制口或數(shù)據(jù)口的地址送數(shù)即可。由于LCD是慢 速器件,因此在每次寫控制字及寫參數(shù)之前都需要進(jìn)行查忙。T6963C的狀態(tài)字共有7位有效的狀態(tài)位,如表1所示。其中STA1~STA3最為常用,一般 情況下可以不需要對(duì)STA5~STA7進(jìn)行杏忙的程序。
評(píng)論