久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于PIC16F877單片機數碼管顯示矩陣鍵值

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年04月04日   【字體:

    PIC16F877單片機數碼管顯示矩陣鍵值,4X4矩陣鍵盤一共有16個按鍵,對應的是0~F,十六進制數,本程序是利用行掃描法,進行循環掃描矩陣鍵盤,當每一行有一個按鍵被按下,它都會檢測得到鍵值,然后數碼管就會顯示對應的數值啦。

 

#include <pic.h>  

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}; //數碼管共陽段碼  

uchar table_we[]={0xfe,0xfd,0xfb,0x7f,0xef,0xdf}; // 位碼

uchar temp;  

//***********延時z毫秒***********/  

void delay(uint z)  

{  

uint x,y;  

for(x=z;x>0;x--)  

for(y=110;y>0;y--);  

}  

void init()  

{  

TRISC=0X0f;//設置c端口高4位為輸出,低4位為輸入;  

TRISD=0;  //設D口為輸出

TRISB=0;  //設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  

{  

//第四行掃描  

PORTC=0Xef;  

temp=PORTC;  

temp=temp&0x0f;  

   if(temp!=0x0f)  

   {  

       delay(10);  

           temp=PORTC;  

       temp=temp&0x0f;  

       if(temp!=0x0f)  

       {  

           temp=temp|0xe0;  

       }  

   }  

     }  

   }  

 }  

}  

void display()  //數碼管顯示函數

{  

   switch(temp)  

   {  

       case 0xee:PORTD=table[0];break;  //0

       case 0xed:PORTD=table[1];break;  //1

       case 0xeb:PORTD=table[2];break;  //2

       case 0xe7:PORTD=table[3];break;  //3  

       case 0xde:PORTD=table[4];break;  //4

       case 0xdd:PORTD=table[5];break;  //5  

       case 0xdb:PORTD=table[6];break;  //6

       case 0xd7:PORTD=table[7];break;  //7

       case 0xbe:PORTD=table[8];break;  //8

       case 0xbd:PORTD=table[9];break;  //9

       case 0xbb:PORTD=table[10];break;  //A

       case 0xb7:PORTD=table[11];break;  //B

       case 0x7e:PORTD=table[12];break;  //C

       case 0x7d:PORTD=table[13];break;  //D

       case 0x7b:PORTD=table[14];break;  //E

       case 0x77:PORTD=table[15];break;  //F

   }  

}  

void main() //主函數  

{  

 init();//端口初始化  

 while(1)   //無限循環

 {  

   keyscan();  //按鍵掃描

   display();  //顯示鍵值

 }  

}
關閉窗口

相關文章

主站蜘蛛池模板: 国产免费a| 亚州精品天堂中文字幕 | 免费激情av | 亚洲有码转帖 | 黄色91在线 | 日本三级做a全过程在线观看 | 日本在线看 | 四虎影视1304t | 久久久成| 99精品国产一区二区三区 | 亚洲一区精品视频 | 国产99热在线| 在线观看视频一区二区三区 | 天天想天天干 | 99精品视频在线观看 | 欧美aa在线| 国产精品国产三级国产播12软件 | 91国在线视频 | 天天天久久久 | 日韩视频区 | 99久久国产精 | www.久久久久久久久 | 天堂亚洲网 | 欧美日日日日bbbbb视频 | 精品区 | 怡红院怡春院一级毛片 | 久久精品国产一区二区电影 | 久久精品免费观看 | 蜜桃臀av一区二区三区 | 91在线一区二区 | 视频在线亚洲 | 亚洲欧美一区二区三区视频 | 亚洲欧洲视频 | 少妇精品久久久久久久久久 | 国产成人精品福利 | 亚洲网站在线观看 | 色综合久久天天综合网 | 国产精品久久久久久久久久免费看 | 欧美日韩视频在线 | 男人的天堂亚洲 | 福利视频一区二区三区 |