變量穴施水穴播機(jī)人機(jī)交互界面設(shè)計(jì)
1.引言
變量穴施水穴播機(jī)為一種可根據(jù)田間土壤濕度,實(shí)現(xiàn)自動(dòng)變量穴施水的節(jié)水抗旱型播種機(jī)具,在使用前需對(duì)整機(jī)進(jìn)行初始化設(shè)置并對(duì)相關(guān)傳感器及附件進(jìn)行有效性檢測(cè),在使用中需根據(jù)田間土壤水分的分布狀況對(duì)工作模式進(jìn)行切換。為便于用戶對(duì)該機(jī)具的操作,利于其推廣應(yīng)用,設(shè)計(jì)一簡(jiǎn)單、實(shí)用的人機(jī)交互界面是必不可少的。
2.硬件簡(jiǎn)介
變量穴施水穴播機(jī)控制系統(tǒng)組成如圖1所示。圖中的單片機(jī)是系統(tǒng)的控制中心,選用臺(tái)灣Winbond公司的W78E58,它屬8位總線快速51系列單片機(jī),其片內(nèi)程序存儲(chǔ)空間為32kB,片內(nèi)數(shù)據(jù)存儲(chǔ)器空間為512字節(jié)。系統(tǒng)采用4×4型矩陣鍵盤(pán),各鍵分別代表“0”-“9”、4個(gè)方向鍵(“↑”、“↓”、“→”、“←”)、確認(rèn)鍵以及返回鍵。液晶顯示模塊則采用型號(hào)為JHD192×64的點(diǎn)陣型LCD,,最多可顯示48個(gè)(16×16點(diǎn)陣)漢字或92個(gè)(16×8點(diǎn)陣)英文字符。GPS接收機(jī)用來(lái)對(duì)機(jī)組進(jìn)行田間定位,USB模塊則用來(lái)從U盤(pán)相關(guān)文件中讀出施水量并上傳給單片機(jī),單片機(jī)根據(jù)施水量來(lái)控制執(zhí)行機(jī)構(gòu)進(jìn)行施水。為實(shí)現(xiàn)水種同步,系統(tǒng)采用光電傳感器對(duì)種子的下落進(jìn)行監(jiān)控。
3.人機(jī)交互用戶界面設(shè)計(jì)
3.1 功能設(shè)計(jì)
變量穴施水穴播機(jī)在工作之前控制系統(tǒng)要進(jìn)行自檢,工作過(guò)程中可根據(jù)需要對(duì)工作模式進(jìn)行切換,同時(shí)用戶也可單獨(dú)對(duì)其中一個(gè)附屬部件進(jìn)行檢測(cè)和試驗(yàn),因此,在設(shè)計(jì)人機(jī)交互界面時(shí)必須進(jìn)行充分的考慮。根據(jù)該機(jī)具的具體結(jié)構(gòu)及使用要求,本文設(shè)計(jì)了由4級(jí)菜單組成的人機(jī)交互界面,表1列出了各級(jí)菜單名稱(chēng)及索引號(hào)(ID)。為增加程序的可讀性,菜單的ID定義為有代表意義的字符。從表1可看出,整個(gè)菜單呈樹(shù)形拓?fù)浣Y(jié)構(gòu),每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)都是唯一的。
3.2 軟件設(shè)計(jì)
系統(tǒng)軟件采用C51語(yǔ)言編寫(xiě),在Keil環(huán)境下編譯和調(diào)試。人機(jī)交互界面設(shè)計(jì)的總體思想是以固定格式建立一個(gè)變量庫(kù)和一個(gè)菜單庫(kù),以索引號(hào)作為各個(gè)變量和菜單的主關(guān)鍵字。變量庫(kù)中專(zhuān)門(mén)存放液晶顯示所涉及的變量,每個(gè)變量有一個(gè)變量索引號(hào);菜單庫(kù)中專(zhuān)門(mén)存放各個(gè)菜單的內(nèi)容,每個(gè)菜單有一個(gè)菜單索引號(hào),菜單中所涉及的變量可以從變量庫(kù)中抽取。
3.2.1相關(guān)參數(shù)及結(jié)構(gòu)體定義
(1).與菜單操作有關(guān)的按鍵定義
#define KeyUp 10 //“向上”鍵鍵碼
#define KeyEnter 11 //“向下”鍵鍵碼
#define KeyEsc 12 //“返回”鍵鍵碼
#define KeyDown 14 //“回車(chē)”鍵鍵碼
(2).根據(jù)需求,建立一個(gè)結(jié)構(gòu),并定義一個(gè)結(jié)構(gòu)體變量KeyTabStruct。
typedef struct
{
uchar KeyTab_MenuIndex; //當(dāng)前菜單的ID號(hào)
uchar KeyTab_MaxItems; //當(dāng)前菜單最大項(xiàng)目數(shù)
uchar KeyTab_PressEnter; //按下“回車(chē)”鍵時(shí)轉(zhuǎn)向的菜單ID號(hào)
uchar KeyTab_PressEsc; //按下“返回”鍵時(shí)轉(zhuǎn)向的菜單ID號(hào)
uchar KeyTab_PressDown; //按下“向下”鍵時(shí)轉(zhuǎn)向的菜單ID號(hào)
uchar KeyTab_PressUp; //按下“向上”鍵時(shí)轉(zhuǎn)向的菜單ID號(hào)
void (*CurrentOperate)(); //當(dāng)前菜單對(duì)應(yīng)的功能操作函數(shù)指針
}KeyTabStruct;
評(píng)論