|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
基于Easy_Arm開發(fā)板的按鍵輸入液晶顯示主程序 |
| 作者:mountain25 欄目:ARM技術(shù) |
int main(void) { uint8 key; PINSEL1 = 0x00000000; IO1DIR = LCM_LEDCON; IO1SET = LCM_LEDCON; GUI_Initialize(); // 初始化LCM GUI_SetColor(1, 0); // 設(shè)置前景色及背景色 PINSEL0 = 0x00000000; // 設(shè)置管腳連接,使用I2C口 PINSEL1 = 0x00000000; I2C_Init(30000); // I2C配置及端口初始化 /* 讀取按鍵,并顯示 */ while(1) { DelayNS(1); key = 0; key = WaitKey(); SWITCH(key) { case 1: GUI_PutString(180,10,"1"); break; case 2: GUI_PutString(180,25,"2"); break; case 3: GUI_PutString(180,40,"3"); break; case 4: GUI_PutString(180,55,"4"); break; default: break; } } return(0); } 這段程序想實(shí)現(xiàn),從鍵盤輸入字符,在液晶上顯示,用到的子函數(shù)都是實(shí)驗(yàn)板實(shí)驗(yàn)程序中自帶的,程序編譯的時候沒有錯誤,但就是得不到所要的效果,肯請大俠們幫忙看看,問題出在哪里,小弟謝了先! |
| 2樓: | >>參與討論 |
| 作者: astonzorro 于 2006/7/30 11:20:00 發(fā)布:
給你修改下!你的邏輯有問題 while(1) { while(!( (key==1) || (key==2) || (key==3) || (key==4 ) ) ) { key = WaitKey(); } SWITCH(key) {;//自己加代碼 } } 這樣就行了!你的邏輯有問題! * - 本貼最后修改時間:2006-7-30 11:21:55 修改者:astonzorro |
|
| 3樓: | >>參與討論 |
| 作者: mountain25 于 2006/7/30 11:40:00 發(fā)布:
發(fā)現(xiàn)了問題在哪兒,就是不知道怎么解決:( 多謝astonzorro! 我單步執(zhí)行程序后,發(fā)現(xiàn)程序停留在 key = WaitKey(); 這一句執(zhí)行不下去,跟蹤發(fā)現(xiàn)程序停留在下面的一個子函數(shù)里面: /**************************************************************************** * 名稱:IRcvStr() * 功能:向有子地址器件讀取多字節(jié)數(shù)據(jù)。 * 入口參數(shù):sla 器件地址 ╚ * suba 器件子地址 ╚ * s 數(shù)據(jù)接收緩沖區(qū)指針 ^3 ╚ * no 讀取數(shù)據(jù)個數(shù) ╚3 * 出口參數(shù):返回值為0時表示操作出錯,為1時表示操作正確。 * 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式 ****************************************************************************/ uint8 IRcvStr(uint8 sla, uint8 suba, uint8 *s, uint8 no) { if(0==no) return(0); /* 參數(shù)設(shè)置 */ I2C_sla = sla+1; // 讀操作的器件地址 ^3 I2C_suba = suba; ? I2C_buf = s; I2C_num = no; I2C_suba_en = 1; // 有子地址讀 ^3 I2C_end = 0; I2CONCLR = 0x2C; I2CONSET = 0x60; // 設(shè)置為主機(jī),并啟動總線 while(0==I2C_end); if(1==I2C_end) return(1); else return(0); } 執(zhí)行到 while(0==I2C_end) 這一句就執(zhí)行不下去了,不知是何故? 我的QQ:306047500 ,搞了幾天,比較郁悶, 希望得到大俠們的指點(diǎn)! |
|
| 4樓: | >>參與討論 |
| 作者: astonzorro 于 2006/7/30 12:08:00 發(fā)布:
這是個IIC的總線程序,不是串口取KEY值的程序! 請?zhí)砑?自己的GETKEY程序! |
|
| 5樓: | >>參與討論 |
| 作者: mountain25 于 2006/7/30 13:58:00 發(fā)布:
還是有點(diǎn)困惑 謝謝! 實(shí)驗(yàn)程序的GETKEY子函數(shù)是這樣的: /********************************************************************************************************* ** 函數(shù)名稱: ZLG7290_GetKey ** 功能描述: 讀取鍵值 ** 輸 入: 無 ** ** 輸 出: >0 鍵值 ** =0 無鍵按下 ** 全局變量: 無 ** 調(diào)用模塊: IRcvStr、delayMS **------------------------------------------------------------------------------------------------------- ** 修改人: ** 日 期: **------------------------------------------------------------------------------------------------------ ********************************************************************************************************/ unsigned CHAR ZLG7290_GetKey(void) { unsigned CHAR rece; rece=0; IRcvStr(ZLG7290,1,&rece,1); DelayMS(10); return rece; } WaitKey()中就調(diào)用了它。在實(shí)驗(yàn)程序中可以用,為什么它在我的程序里就不好調(diào)用呢? 如果要改的話該如何改? 不好意思,還是比較困惑。 |
|
| 6樓: | >>參與討論 |
| 作者: astonzorro 于 2006/8/1 14:42:00 發(fā)布:
不好調(diào)用是什么意思!是沒有值嗎??仿真測試下! |
|
| 7樓: | >>參與討論 |
| 作者: xixi 于 2007/8/24 15:35:45 發(fā)布:
IRcvStr這個函數(shù)是什么意思? |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |