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