/*********************************************** 功能:1X4按鍵*** 實驗內(nèi)容:按下S1 S2 S3 S4 數(shù)碼管分別顯示出0 1 2 3*** 開發(fā)板連接方法:把J3的的跳線帽跳到1-2(左邊)*********************************************/#include //包含單片機內(nèi)部資源預定義__CONFIG(0xFF32);//芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩const unsigned char TABLE[] = {0x3f,0x6,0x5b,0x4f,0x66};int result;void delay(); //delay函數(shù)申明void init(); //I/O口初始化函數(shù)申明void scan(); //按鍵掃描程序申明void display(int x); //顯示函數(shù)申明/***************************************************************************** 名 稱:main()* 功 能:* 入口參數(shù):* 出口參數(shù):****************************************************************************/void main(){ result = 0x8; //開始時顯示Finit(); //調(diào)用初始化函數(shù)while (1) //死循環(huán){scan(); //調(diào)用按鍵掃描程序display(result); //調(diào)用結果顯示程序}}/***************************************************************************** 名 稱:init()* 功 能:初始化* 入口參數(shù):* 出口參數(shù):****************************************************************************/void init(){TRISB = 0X0F; //設置B口低4位為輸入TRISD = 0; //portd 輸出TRISC = 0xf0;TRISA = 0; //porta 輸出PORTA = 0x00; //先關閉所有顯示PORTD = 0x0f;PORTC = 0xff;}/***************************************************************************** 名 稱:scan()* 功 能:按鍵掃描* 入口參數(shù):* 出口參數(shù):****************************************************************************/void scan(){if (RB0 == 0) //判斷B0是否按下result = 0x1;if (RB1 == 0) //判斷B1是否按下result = 0x2;if (RB2 == 0) //判斷B2是否按下result = 0x3;if (RB3 == 0) //判斷B3是否按下result = 0x4;}/***************************************************************************** 名 稱:display()* 功 能:結果顯示* 入口參數(shù):int x 要現(xiàn)實的數(shù)據(jù)* 出口參數(shù):****************************************************************************/void display(int x){switch (x) //根據(jù)X值的不同,跳轉到相應的部分處理{case 0x1:PORTD = TABLE[0];PORTA = 0X3F;delay();break; //B0case 0x2:PORTD = TABLE[1];PORTA = 0X3F;delay();break; //B1case 0x3:PORTD = TABLE[2];PORTA = 0X3F;delay();break; //B2case 0x4:PORTD = TABLE[3];PORTA = 0X3F;delay();break; //B3case 0x8:PORTD = 0X71;PORTA = 0Xff;delay();break; //無按鍵下}}/***************************************************************************** 名 稱:delay()* 功 能:延時* 入口參數(shù):* 出口參數(shù):****************************************************************************/void delay() {int i; //定義整形變量for (i = 600;i--;); //延時}
評論