孫洪志
【摘 要】使用430單片機(jī)設(shè)計(jì)一種矩陣鍵盤。該鍵盤配有特殊功能按鍵指示燈,能夠與上位機(jī)進(jìn)行422通信。通過422將按鍵對應(yīng)鍵值上傳給上位機(jī),接收上位機(jī)點(diǎn)燈命令點(diǎn)亮或熄滅一個(gè)或若干個(gè)指示燈。
【關(guān)鍵詞】430單片機(jī);矩陣鍵盤;422通信;動(dòng)態(tài)掃描
【Abstract】Use 430 MCU to design a matrix keyboard. The keyboard is equipped with special function key indicator lights and is able to communicate with upper computer by 422. Transmit key codes to the upper computer and receive orders from the upper computer to light on or turn off one or several indicator lights by 422.
【Key words】430 MCU; Matrix keyboard; 422 communication; Dynamic scanning
1 矩陣鍵盤
矩陣鍵盤是目前使用較為廣泛的一種鍵盤。當(dāng)鍵盤中按鍵數(shù)量較多時(shí),為減少I/O口的使用,而通常將按鍵排列成矩陣形式,這種形式的鍵盤稱為矩陣鍵盤。本文設(shè)計(jì)鍵盤按鍵為47個(gè),數(shù)量較大,因此將按鍵設(shè)計(jì)為矩陣形式。
2 電路設(shè)計(jì)
電路設(shè)計(jì)主要介紹控制芯片的選型和指示燈控制電路的設(shè)計(jì)。
2.1 控制芯片選型
根據(jù)鍵盤需要實(shí)現(xiàn)的功能,可知其需要較快的數(shù)據(jù)處理速度,需要較多的外設(shè)和I/O口。此外鍵盤的功耗要求盡量小。為滿足以上要求,兼顧功能實(shí)現(xiàn)和低功耗,本文選擇430單片機(jī)MSP430FG4616作為控制芯片。該型MCU具有電壓低,功耗小,片內(nèi)外設(shè)和IO資源豐富等優(yōu)點(diǎn),完全滿足設(shè)計(jì)要求。
2.2 按鍵指示燈控制電路
鍵盤上特殊功能按鍵設(shè)置指示燈,其中包括16對紅綠雙色狀態(tài)指示燈,6個(gè)綠色特殊按鍵指示燈,共38個(gè)指示燈。由于指示燈個(gè)數(shù)較多,為節(jié)省I/O本文利用同時(shí)點(diǎn)亮多個(gè)數(shù)碼管的方法即動(dòng)態(tài)掃描法點(diǎn)亮指示燈。38個(gè)指示燈共分為5組對應(yīng)5個(gè)數(shù)碼管,每組指示燈共用一個(gè)正電源輸入端(字選端),5組中相同位段接到單片機(jī)同一個(gè)作為指示燈負(fù)極的I/O(位選端),本文使用P9作為按鍵指示燈的負(fù)極。指示燈電路如圖3所示,圖中a~h端分別接至單片機(jī)P9.0~P9.7,并且設(shè)置P9.0~9.7為輸出高電平,使所有指示燈初狀態(tài)處于熄滅狀態(tài)。使用單片機(jī)I/O控制MOS管的通斷實(shí)現(xiàn)“字選”,由單片機(jī)控制相應(yīng)I/O輸出高低電平實(shí)現(xiàn)“位選”。指示燈控制電路如圖1所示。
圖1 按鍵指示燈及控制電路
3 軟件設(shè)計(jì)
鍵盤軟件實(shí)現(xiàn)的主要功能有按鍵采集、LED燈驅(qū)動(dòng)、422通訊等。軟件設(shè)計(jì)主要介紹按鍵指示燈的控制。按鍵的檢測和識(shí)別通過掃描法實(shí)現(xiàn),具體實(shí)現(xiàn)過程不做詳細(xì)介紹。
3.1 程序流程圖
主函數(shù)主要完成按鍵和數(shù)據(jù)的處理,定時(shí)器1主要完成按鍵的防抖LED燈的點(diǎn)亮??刂瞥绦蛄鞒倘鐖D2所示。
3.2 指示燈控制
鍵盤按鍵指示燈的點(diǎn)亮和熄滅由單片機(jī)I/O控制。上位機(jī)發(fā)送相應(yīng)的控制指令至單片機(jī),單片機(jī)根據(jù)命令點(diǎn)亮或熄滅一個(gè)或若干個(gè)相應(yīng)指示燈。
由于鍵盤按鍵指示燈的數(shù)量較多,使用靜態(tài)控制方式控制指示燈雖然軟件編程較為簡單,但占用I/O口過多。為減少I/O的使用數(shù)量,可利用人眼“視覺暫留”特性將需要工作的5組指示燈輪流點(diǎn)亮,由于依次點(diǎn)亮的速度很快,人眼無法察覺,每組指示燈點(diǎn)亮?xí)r間大于1ms,看起來每一組中被點(diǎn)亮的燈一直處于亮的狀態(tài)。程序每次進(jìn)入定時(shí)器中斷1,就按順序依次點(diǎn)亮5組燈中的一組。
(a)主函數(shù)(b)定時(shí)器1中斷
圖2 控制程序流程圖
定時(shí)器1的定時(shí)周期設(shè)為2ms。定時(shí)器1中斷函數(shù)實(shí)現(xiàn)按鍵防抖,掃描點(diǎn)燈,掃描周期10ms,每一組燈點(diǎn)亮?xí)r間2ms。
定時(shí)器中斷1函數(shù)點(diǎn)燈部分
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
//點(diǎn)燈掃描
if(Flag_LED_disp==1)
{
P10OUT = 0xff;
shuma_sel(shuma_count);//選通一組指示燈
P10OUT=LED_P10_dat[shuma_count]; //按順序點(diǎn)亮
if(shuma_count<4)
shuma_count++;
else
shuma_count = 0;
}
LED_P10_dat數(shù)組根據(jù)上位機(jī)點(diǎn)燈控制命令控制五組指示燈相應(yīng)的負(fù)極(位選端)導(dǎo)通或斷開。函數(shù)shuma_sel控制五組指示燈的字選端,用于指示燈的組選通。兩函數(shù)配合控制五組指示燈的亮滅。
4 結(jié)論
本文介紹了一種具有特定功能的矩陣式鍵盤的設(shè)計(jì)和實(shí)現(xiàn),并主要給出了按鍵指示燈的控制方法。鍵盤所有主要功能均已實(shí)現(xiàn),可應(yīng)用于工程實(shí)際。
【參考文獻(xiàn)】
[1]沈建華,楊艷琴.MSP430系列16位超低功耗單片機(jī)原理與實(shí)踐[M].北京航空航天大學(xué)出版社,2008.
[2]姚德法.單片機(jī)應(yīng)用中的鍵盤模塊設(shè)計(jì)[J].信息技術(shù)與信息化,2005.
[3]楊杜鼎.單片機(jī)矩陣鍵盤接口設(shè)計(jì)[J].科技創(chuàng)新,2012.
[責(zé)任編輯:王楠]