新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PIC16F877單片機(jī)數(shù)碼管顯示矩陣鍵值

        基于PIC16F877單片機(jī)數(shù)碼管顯示矩陣鍵值

        作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
        值,4X4矩陣鍵盤一共有16個(gè)按鍵,對(duì)應(yīng)的是0~F,十六進(jìn)制數(shù),本程序是利用行掃描法,進(jìn)行循環(huán)掃描矩陣鍵盤,當(dāng)每一行有一個(gè)按鍵被按下,它都會(huì)檢測(cè)得到鍵值,然后數(shù)碼管就會(huì)顯示對(duì)應(yīng)的數(shù)值啦。
        #include   typedef unsigned char  uchar;  typedef unsigned int   uint;  uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //數(shù)碼管共陽段碼  uchar table_we[]={0xfe,0xfd,0xfb,0x7f,0xef,0xdf}; // 位碼uchar temp;  //***********延時(shí)z毫秒***********/  void delay(uint z)  {  uint x,y;  for(x=z;x>0;x--)  for(y=110;y>0;y--);  }  void init()  {  TRISC=0X0f;//設(shè)置c端口高4位為輸出,低4位為輸入;  TRISD=0;  //設(shè)D口為輸出TRISB=0;  //設(shè)B口為輸出PORTB=0XFF;  }  void keyscan()  //矩陣鍵盤掃描子程序{  //uchar temp;  //第一行掃描  PORTC=0X7f;//1110 1111  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)//有鍵按下  {  delay(10);  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)  {  temp=temp|0x70;  }  }  else  {  //第二行掃描  PORTC=0Xbf;  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)  {  delay(10);  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)  {  temp=temp|0xb0;  }  }  else  {  //第三行掃描  PORTC=0Xdf;  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)  {  delay(10);  temp=PORTC;  temp=temp&0x0f;  if(temp!=0x0f)  {  temp=temp|0xd0;  }  }  else  {  				   
        				
                    
                        
        			
        							
        上一頁 1 2 下一頁

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 许昌县| 皋兰县| 美姑县| 北京市| 巴彦淖尔市| 芜湖县| 阜城县| 汝南县| 军事| 邢台县| 东台市| 余江县| 安龙县| 昂仁县| 卓资县| 富锦市| 信丰县| 香河县| 吉木萨尔县| 安仁县| 都昌县| 绥滨县| 巨鹿县| 石河子市| 余庆县| 桐乡市| 红桥区| 开平市| 遂昌县| 南岸区| 青冈县| 宜州市| 山西省| 赣榆县| 海丰县| 永胜县| 丰县| 天峨县| 崇左市| 恩平市| 福泉市|