|
(1)4*4 矩陣鍵盤布局如下,檢測(cè)按鍵,然后通過(guò) LCD1602 顯示出來(lái)
第一行:The key value is
第二行:每按一次鍵,鍵值依次顯示出來(lái),整行顯示完后,清屏,鍵值
從左開始顯示
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (21.62 KB, 下載次數(shù): 40)
下載附件
2018-12-7 02:11 上傳
單片機(jī)源程序如下:
- /**************************************************************************************
- * LCD1602液晶顯示實(shí)驗(yàn) *
- 實(shí)現(xiàn)現(xiàn)象:下載程序后插上LCD1602液晶在開發(fā)板上,即可顯示
- 注意事項(xiàng):如果不想讓點(diǎn)陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。
- ***************************************************************************************/
- #include "reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
- #include "lcd.h"
- typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
- typedef unsigned char u8;
- #define LCD1602_DATAPINS P0
- #define GPIO_KEY P1
- u8 KeyValue,k=0,n=0,miss=1;
- u8 Disp[]="The key value is";
- u8 cmy[17]={'1','2','3','/','4','5','6','%','7','8','9','@','*','0','#','='};
- u8 dp[17]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- void KeyDown(void)
- {
- char a=0;
- GPIO_KEY=0x0f;
- if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
- {
- Lcd1602_Delay1ms(10);//延時(shí)10ms進(jìn)行消抖
- if(GPIO_KEY!=0x0f)//再次檢測(cè)鍵盤是否按下
- { n=1;
- //測(cè)試列
- GPIO_KEY=0X0F;
- switch(GPIO_KEY)
- {
- case(0X07): KeyValue=0;break;
- case(0X0b): KeyValue=1;break;
- case(0X0d): KeyValue=2;break;
- case(0X0e): KeyValue=3;break;
- }
- //測(cè)試行
- GPIO_KEY=0XF0;
- switch(GPIO_KEY)
- {
- case(0X70): KeyValue=KeyValue;break;
- case(0Xb0): KeyValue=KeyValue+4;break;
- case(0Xd0): KeyValue=KeyValue+8;break;
- case(0Xe0): KeyValue=KeyValue+12;break;
- }
- while((a<50)&&(GPIO_KEY!=0xf0)) //檢測(cè)按鍵松手檢測(cè)
- {
- Lcd1602_Delay1ms(1);
- a++;
- }
- }
- }
- }
- void main(void)
- {
- u8 i,m;
- LcdInit();
- for(i=0;i<16;i++)
- {
- LcdWriteData(Disp[i]);
- }
- while(miss)
- {
- LcdWriteCom(0x80+0x40);
- KeyDown();
- if(n==1)
- {dp[k]=cmy[KeyValue];
- n=0;
- k++;
- }
- for(m=0;m<16;m++)
- {LcdWriteData(dp[m]);}
- if(k==16)
- { for(m=0;m<16;m++)
- {dp[m]=' ';}
- Lcd1602_Delay1ms(1000);
- LcdWriteCom(0x01);
- Lcd1602_Delay1ms(1000);
- k=0;
- for(i=0;i<16;i++)
- {
- LcdWriteData(Disp[i]);
- }
- }
- }
- }
-
-
復(fù)制代碼
所有資料51hei提供下載:
44矩陣鍵盤液晶顯示.zip
(74.41 KB, 下載次數(shù): 160)
2018-12-6 20:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
第四次實(shí)驗(yàn)課要求.pdf
(171.17 KB, 下載次數(shù): 22)
2018-12-6 20:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|