3 軟件設(shè)計分析
對于按鍵的處理, 系統(tǒng)采用中斷方式, 流程如圖5所示。
圖5按鍵流程圖
主要相關(guān)程序如下:
/* 觸摸屏寫控制指令、讀數(shù)據(jù)子程序* /
LDB R6, # 08H ; 寫8位控制指令代碼
CLRC; LDB AL, COM ; 指令代碼準(zhǔn)備發(fā)送
ADS7843_W: SHLB AL, # 1 ; 數(shù)據(jù)串行發(fā)送
JC S_D I_1; JMP S_DI_0
S_DI_1: LDB BL, IOPORT1 ; 將P1 口狀態(tài)保存在BL 寄存器中
ORB BL, # 03H ; 將數(shù)據(jù)出DOUT置高, 數(shù)據(jù)入DIN 為信號輸入狀態(tài)
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
JMP SKCLK
S_DI_0: LDB BL, IOPORT1 ; 將P1 口狀態(tài)保存在BL 寄存器中
ANDB BL, # 0FEH ; 將數(shù)據(jù)出DOUT 置低
ORB BL, # 02H ; 數(shù)據(jù)入D IN為信號輸入狀態(tài)
LDB IOPORT1, BL; 將修改后的狀態(tài)送至P1口
SKCLK: LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時鐘信號DCLK為低
ORB BL, # 01H ; 將數(shù)據(jù)出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ORB BL, # 09H ; 時鐘信號DCLK 為高, 將數(shù)據(jù)出DOUT置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
DJNZ R6, ADS7843_W ; 8位指令送完
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時鐘信號DCLK為低
ORB BL, # 01H ; 將數(shù)據(jù)出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
/* 準(zhǔn)備接受觸摸屏按鍵讀14 位數(shù)據(jù)數(shù)據(jù), 先接受低8位數(shù)據(jù)* /
LDB R6, # 08H ; 鍵值設(shè)定方向讀低8位數(shù)據(jù)程序
DATA_OUT: LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ORB BL, # 09H ; 時鐘信號DCLK 為高, 將數(shù)據(jù)出DOUT置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時鐘信號DCLK為低
ORB BL, # 01H ; 將數(shù)據(jù)出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
SHLB AL, # 1 ; 數(shù)據(jù)左移一位
JBS IOPORT1, 0, DI_O_1 ; 判數(shù)據(jù)入DIN 高?
ANDB AL, # 0FEH ; 數(shù)據(jù)入DIN低, 輸入0
JMP DATA_OUT1
DI_O_1: ORB AL, # 01H ; 數(shù)據(jù)入DIN高, 輸入1
DATA_OUT1: DJNZ R6, DATA_OUT ; 8位數(shù)據(jù)讀完
STB AL, FIRST ; 低8位數(shù)據(jù)保存至FIRST單元同樣處理接受數(shù)據(jù)高4位數(shù)據(jù)
…… …… ; 4位數(shù)據(jù)讀完, 數(shù)據(jù)保存。讀14 位數(shù)據(jù)程序完成后返回
程序上機調(diào)試后再沒有出現(xiàn)觸摸屏與單片機之間指令不執(zhí)行, 燒壞觸摸芯片的問題。也許你會發(fā)現(xiàn), 在程序編程中, 我們使用了BL寄存器作P1口的過渡保護單元, 對輸出信號采用了對位的或、與方式達到輸出“1”、 “0”電平。保證P1的輸入端口不會因其他P1 端口的操作而改變其狀態(tài), 在信號線上出現(xiàn)兩個輸出、爭搶信號的現(xiàn)象。這就是觸摸屏出問題的主要原因。
4 結(jié)語
在項目鑒定時, 專家們給出了系統(tǒng)設(shè)計新穎、結(jié)構(gòu)合理、功能比較完善, 擴展性強, 有一定的市場空間。特別提到了每個觸摸鍵設(shè)計合理、反映正確的結(jié)論。
在本項目結(jié)束時還有一個關(guān)于按鍵的遺留問題: 由于是使用單端模式工作, 且CPU 接到請求后, 為了消除抖動、防止誤觸發(fā), 延時后再響應(yīng)其請求, 造成了按鍵反映遲緩, 這是一個硬件、軟件都需改進的問題, 硬件需換模擬數(shù)據(jù)轉(zhuǎn)換芯片,軟件上延時可以短一些。
評論
查看更多