8096系列單片機與觸摸屏芯片的接口設計與實(shí)現
圖3 AD7843內部原理結構
圖4 ADS7843接口圖
對于A(yíng)DS7843來(lái)說(shuō), 除了電源與地線(xiàn), 輸入模擬信號X+ 、X- 、Y+ 、Y - 、IN3、IN4, 輸入數字信號DCLK、/CS、DIN;輸出數字信號BUSY、DOUT、/PEN IRQ.與編程有關(guān)的均是數字信號, 數據輸入、輸出、時(shí)鐘輸入均為串行方式, 最高轉換速率為1/125KH z, 線(xiàn)路設計結構上比較方便只需要6根端口線(xiàn)單片機就可以建立完全的數據交互。
2. 4 現象分析
采用80196的P1口的6個(gè)端口專(zhuān)門(mén)與其打交道, 從硬件上講是完全可以的。然而由于在編程中P1口有些端口是作輸入、有些端口需要作為輸出, 80196又沒(méi)有對位直接進(jìn)行操作的指令, 對P1某一個(gè)端口作輸出操作, 通常196會(huì )先讀P1口的8個(gè)管腳, 然后再進(jìn)行 寫(xiě)!的操作, 根據P1口結構, 必然會(huì )帶來(lái)若作為輸入端口的管腳在其外部輸入信號為低時(shí), 執行 寫(xiě)!指令后出現了將其輸入狀態(tài)改為了輸出狀態(tài)。此時(shí)在80196與ADS7843的DOUT與/PEN IRQ這兩根線(xiàn)上都將出現了同一根線(xiàn)上出現兩個(gè)輸出信號、爭搶信號的問(wèn)題, 這是數字電路中絕對不允許的, 它的出現就有可能損壞芯片。
根據資料介紹, 在編程操作中, 當P1口中有些管腳作為輸入, 有些管腳作為輸出時(shí)要特別注意對P1 口寫(xiě)指令操作,它是一個(gè)讀、寫(xiě)過(guò)程, 最好借助于一些單元。
3 軟件設計分析
對于按鍵的處理, 系統采用中斷方式, 流程如圖5所示。
圖5按鍵流程圖
主要相關(guān)程序如下:
/* 觸摸屏寫(xiě)控制指令、讀數據子程序* /
LDB R6, # 08H ; 寫(xiě)8位控制指令代碼
CLRC; LDB AL, COM ; 指令代碼準備發(fā)送
ADS7843_W: SHLB AL, # 1 ; 數據串行發(fā)送
JC S_D I_1; JMP S_DI_0
S_DI_1: LDB BL, IOPORT1 ; 將P1 口狀態(tài)保存在BL 寄存器中
ORB BL, # 03H ; 將數據出DOUT置高, 數據入DIN 為信號輸入狀態(tài)
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
JMP SKCLK
S_DI_0: LDB BL, IOPORT1 ; 將P1 口狀態(tài)保存在BL 寄存器中
ANDB BL, # 0FEH ; 將數據出DOUT 置低
ORB BL, # 02H ; 數據入D IN為信號輸入狀態(tài)
LDB IOPORT1, BL; 將修改后的狀態(tài)送至P1口
SKCLK: LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時(shí)鐘信號DCLK為低
ORB BL, # 01H ; 將數據出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ORB BL, # 09H ; 時(shí)鐘信號DCLK 為高, 將數據出DOUT置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
DJNZ R6, ADS7843_W ; 8位指令送完
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時(shí)鐘信號DCLK為低
ORB BL, # 01H ; 將數據出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
/* 準備接受觸摸屏按鍵讀14 位數據數據, 先接受低8位數據* /
LDB R6, # 08H ; 鍵值設定方向讀低8位數據程序
DATA_OUT: LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ORB BL, # 09H ; 時(shí)鐘信號DCLK 為高, 將數據出DOUT置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
LDB BL, IOPORT1 ; 將P1口狀態(tài)保存在BL寄存器中
ANDB BL, # 0F7H ; 時(shí)鐘信號DCLK為低
ORB BL, # 01H ; 將數據出DOUT 置高
LDB IOPORT1, BL ; 將修改后的狀態(tài)送至P1口
SHLB AL, # 1 ; 數據左移一位
JBS IOPORT1, 0, DI_O_1 ; 判數據入DIN 高?
ANDB AL, # 0FEH ; 數據入DIN低, 輸入0
JMP DATA_OUT1
DI_O_1: ORB AL, # 01H ; 數據入DIN高, 輸入1
DATA_OUT1: DJNZ R6, DATA_OUT ; 8位數據讀完
STB AL, FIRST ; 低8位數據保存至FIRST單元同樣處理接受數據高4位數據
…… …… ; 4位數據讀完, 數據保存。讀14 位數據程序完成后返回
程序上機調試后再沒(méi)有出現觸摸屏與單片機之間指令不執行, 燒壞觸摸芯片的問(wèn)題。也許你會(huì )發(fā)現, 在程序編程中, 我們使用了BL寄存器作P1口的過(guò)渡保護單元, 對輸出信號采用了對位的或、與方式達到輸出“1”、 “0”電平。保證P1的輸入端口不會(huì )因其他P1 端口的操作而改變其狀態(tài), 在信號線(xiàn)上出現兩個(gè)輸出、爭搶信號的現象。這就是觸摸屏出問(wèn)題的主要原因。
4 結語(yǔ)
在項目鑒定時(shí), 專(zhuān)家們給出了系統設計新穎、結構合理、功能比較完善, 擴展性強, 有一定的市場(chǎng)空間。特別提到了每個(gè)觸摸鍵設計合理、反映正確的結論。
在本項目結束時(shí)還有一個(gè)關(guān)于按鍵的遺留問(wèn)題: 由于是使用單端模式工作, 且CPU 接到請求后, 為了消除抖動(dòng)、防止誤觸發(fā), 延時(shí)后再響應其請求, 造成了按鍵反映遲緩, 這是一個(gè)硬件、軟件都需改進(jìn)的問(wèn)題, 硬件需換模擬數據轉換芯片,軟件上延時(shí)可以短一些。
評論