【正文】
驗(yàn)內(nèi)容通過(guò) zlg7289 芯片驅(qū)動(dòng) 17 鍵的鍵盤和 8 個(gè)共陰極 LED,將按鍵值在 LED 上顯示出來(lái)。三、預(yù)備知識(shí)1.掌握在 ARM ADS 集成開發(fā)環(huán)境中編寫和調(diào)試程序的基本過(guò)程。2.了解 ARM 應(yīng)用程序的框架結(jié)構(gòu)。3.了解 UC/OSII 多任務(wù)的原理。四、實(shí)驗(yàn)設(shè)備及工具硬件:ARM 嵌入式開發(fā)板、用于 ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上。軟件:PC 機(jī)操作系統(tǒng) win9Win2022 或 WinXP、ARM ADS 集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序五、實(shí)驗(yàn)步驟1.新建工程,將“鍵盤及 LED 實(shí)驗(yàn)”目錄下的文件添加到工程。2.定義 zlg7289 寄存器()define ZLG7289_CS (0x20) //GPB5define ZLG7289_KEY (0x10) //GPG4define ZLG7289_ENABLE()do{Zlg7289SIOBand=rSBRDR。Zlg7289SIOCtrl=rSIOCON。rSIOCON=0x31。rSBRDR=0xff。rPDATBamp。=(~ZLG7289_CS)。}while(0)define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS。rSBRDR=Zlg7289SIOBand。rSIOCON=Zlg7289SIOCtrl。}while(0)3.編寫 zlg7289 驅(qū)動(dòng)函數(shù)( )33 開 啟 z l g 7 2 8 9Z L G 7 2 8 9 _ E N A B L E ( )發(fā)送復(fù)位命令W r i t e S D I O ( Z L G 7 2 8 9 _ C MD _ R S T )關(guān) 閉 z l g 7 2 8 9Z L G 7 2 8 9 _ D I S A B L E ( )延時(shí)開 啟 z l g 7 2 8 9Z L G 7 2 8 9 _ E N A B L E ( )發(fā)送讀取鍵值命令W r i t e S D I O ( Z L G 7 2 8 9 _ C MD _ R D K E Y )關(guān) 閉 z l g 7 2 8 9Z L G 7 2 8 9 _ D I S A B L E ( )讀取鍵值R e a d S D I O ( )圖 71 zlg7289 復(fù)位 圖 72 從 zlg7289 讀取鍵值4.定義鍵盤映射表:()unsigned char KeyBoard_Map[]={4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}。 //64,鍵值映射表通過(guò)查找鍵盤映射表來(lái)確定鍵盤掃描碼對(duì)應(yīng)的按鍵值。5.定義鍵值讀取函數(shù)。 ()開始是否有鍵按 下?( r P D A T G amp。 Z L G 7 2 8 9 _ K E Y ) = = 1從z l g 7 2 8 9 讀取鍵 值按鍵值有效? = 6 4 ?通過(guò)鍵盤映射表得到 按鍵 值延時(shí)是是否否圖 73 鍵值讀取函數(shù)6.編寫主函數(shù),將按鍵值在數(shù)碼管上顯示。開發(fā)版初始化z l g 7 2 8 9 復(fù)位鍵值讀取延時(shí)開啟z l g 7 2 8 9發(fā)送個(gè)位數(shù)延時(shí)鍵值〉 9 ?發(fā)送十位數(shù)顯示十、個(gè)位 只顯示個(gè)位關(guān)閉z l g 7 2 8 9是否圖 74 主函數(shù)34六、思考題1.Zlg7289 有哪些功能。2.用中斷方式實(shí)現(xiàn)鍵盤驅(qū)動(dòng)。35實(shí)驗(yàn)八 LCD 與觸摸屏程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.了解觸摸屏基本概念與原理。2.理解觸摸屏與 LCD 的密切配合。3.編程實(shí)現(xiàn)對(duì)觸摸屏的控制。二、實(shí)驗(yàn)內(nèi)容學(xué)習(xí)觸摸屏基本原理,理解對(duì)觸摸屏進(jìn)行輸出標(biāo)定、與 LCD 顯示器配合的過(guò)程。三、預(yù)備知識(shí)用 ARM ADS 集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過(guò)程。ARM 應(yīng)用程序的框架結(jié)構(gòu)。能夠在 LCD 上進(jìn)行格式化輸出。四、實(shí)驗(yàn)設(shè)備及工具硬件:ARM 嵌入式開發(fā)板、用于 ARM7TDMI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上、摸擬電壓信號(hào)源。軟件:PC 機(jī)操作系統(tǒng) win9Win2022 或 WinXP、ARM ADS 集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、超級(jí)終端通訊程序五、實(shí)驗(yàn)步驟1.新建工程,將“LCD 的驅(qū)動(dòng)控制實(shí)驗(yàn)”目錄下的文件添加到工程。2.在頭文件中定義宏及常量(,)define ADS7843_CTRL_START 0x80define ADS7843_GET_X 0x50define ADS7843_GET_Y 0x10define ADS7843_CTRL_12MODE0x0define ADS7843_CTRL_8MODE 0x8define ADS7843_CTRL_SER 0x4define ADS7843_CTRL_DFR 0x0define ADS7843_CTRL_DISPWD0x3 // Disable power downdefine ADS7843_CTRL_ENPWD 0x0 // enable power downdefine ADS7843_PIN_CS (16) //GPF6define ADS7843_PIN_PEN(15) //GPG5//define ADS7843_PIN_BUSY (16)/////////觸摸屏動(dòng)作////////36define TCHSCR_ACTION_NULL 0define TCHSCR_ACTION_CLICK 1 //觸摸屏單擊define TCHSCR_ACTION_DBCLICK 2 //觸摸屏雙擊define TCHSCR_ACTION_DOWN 3 //觸摸屏按下define TCHSCR_ACTION_UP 4 //觸摸屏抬起define TCHSCR_ACTION_MOVE 5 //觸摸屏移動(dòng)define TCHSCR_IsPenNotDown() (rPDATGamp。ADS7843_PIN_PEN)define ADS7843_CMD_X(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采樣 x 軸電壓值,數(shù)據(jù)為 12 位,參考電壓輸入模式為差分模式,允許省電模式define ADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176,TchScr_Ymax=195,TchScr_Ymin=1910。//觸摸屏返回電壓值范圍3.定義驅(qū)動(dòng)函數(shù)() 發(fā)送讀取x 電壓值控制 字S e n d S I O D a t a等待8 個(gè)時(shí)鐘節(jié)拍讀取采樣值高8 位R e a d S I O D a t a發(fā)送讀取x 電壓值控制 字S e n d S I O D a t a將第一 次采樣值左移8 位讀取低8 位并與以前高8 位組成1 6 位數(shù)據(jù)去掉低4 位,保留1 2 位 有效數(shù)據(jù)打開A D S 7 8 4 3讀取觸摸點(diǎn)x 軸電壓值4 次取平均值讀取觸摸點(diǎn)y 軸電壓值4 次取平均值打開A D S 7 8 4 3對(duì)采樣 結(jié)果進(jìn)行轉(zhuǎn)換圖 81 讀取觸摸點(diǎn) x 軸電壓值 圖 82 讀取觸摸點(diǎn)坐標(biāo)開始觸摸動(dòng) 作不是按下也不 是移動(dòng)?有觸 摸動(dòng)作?! T C H S C R _ I s P e n N o tD o w n ( ) ?得到觸摸點(diǎn)坐 標(biāo)在規(guī)定 的時(shí)間內(nèi)抬起?在規(guī)定 的雙擊時(shí)間內(nèi) 按下?觸 摸動(dòng)作 為 雙擊 觸 摸動(dòng)作 為 單擊觸 摸動(dòng)作 為 抬起觸摸點(diǎn) 坐標(biāo)為上次觸摸點(diǎn) 坐 標(biāo)抬起 ?得 到觸摸 點(diǎn) 坐標(biāo)觸摸點(diǎn)變化?觸 摸動(dòng)作 為 移動(dòng)是 否觸 摸動(dòng)作 為 按下是 否否是是否否是是否圖 83 判斷觸摸動(dòng)作4.編寫測(cè)試函數(shù)()將觸摸動(dòng)作及觸摸點(diǎn)坐標(biāo)在超級(jí)終端上顯示出來(lái)。5.校準(zhǔn)觸摸屏坐標(biāo)輸出,轉(zhuǎn)換坐標(biāo),與 LCD 緊密配合可使用 TchScr_GetScrXY()函數(shù)(第三個(gè)參數(shù)為 0)來(lái)獲得液晶屏 x、y 軸的電壓范圍:TchScr_Xmax=1840。TchScr_Xmin=176。TchScr_Ymax=195。TchScr_Ymin=1910。六、思考題1)電阻型觸摸屏檢測(cè)坐標(biāo)值的原理22)如果 LCD 坐標(biāo)原點(diǎn)在右下角,分辨率為 240X180,觸摸屏坐標(biāo)原點(diǎn)在右上角,請(qǐng)給出觸摸屏輸出坐標(biāo)的轉(zhuǎn)換公式,對(duì)觸摸屏的分辨率有什么影響。