您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机pic 4*4键盘扫描程序 正文
pic 4*4键盘扫描程序

pic 4*4键盘扫描程序

点击数:7592 次   录入时间:03-04 11:47:04   整理:http://www.55dianzi.com   PIC单片机
#include<pIC.h>            
 __CONFIG(0x1832);   
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};  //定义常数0-9的数据表格
     
 volatile unsigned char  result=0,temp=0,f=0; 
 volatile unsigned int   total=0,ge=0,shi=0,bai=0,qian=0,c=1;
 void  delay();              //delay函数申明
 void  init();               //I/O口初始化函数申明
 void  sCAN();               //按键扫描程序申明
 void  display(unsigned int x);       //显示函数申明
//---------------------------------------------------
                             //主程序  
void main()
{
   init();                  //调用初始化子程序
  while(1)                   //循环工作
    {
         
       scan();                
       display(result); 
    }
 }
 
//---------------------------------------------------
//初始化函数
void init() 
 {
  
  ADCON1=0X07;               //设置A口为普通I/O口
  TRISA=0B00000000;          //设置A口高2位为输出,低4位为输入
  TRISC=0B11110000;          //设置C口高4位为输入,低4位为输出
  TRISD=0X00;                //设置D口为输出
  PORTA=0XFF;              
  PORTD=0XFF;                //先清除所有显示
 }

//-----------------------------------------------3---
//按键扫描程序
void scan(){ 
               PORTC=0xff;
               RC3=0;                           { if(RC4==0) result=1; if(RC5==0) result=2;  if(RC6==0) result=3; if(RC7==0) result=4;}
               
              
               PORTC=0xff;
               RC2=0;                          { if(RC4==0) result=5; if(RC5==0) result=6;  if(RC6==0) result=7; if(RC7==0) result=8;}

              
               PORTC=0xff;
               RC1=0;                           { if(RC4==0) result=9; if(RC5==0) result=10;     if(RC6==0) result=11; if(RC7==0) result=12;}
              
             
               PORTC=0xff;
               RC0=0;                            { if(RC4==0) result=13; if(RC5==0) result=14;  if(RC6==0) result=15; if(RC7==0) result=16;}
            //  if(temp!=result) {f++; if(f==1) qian=1000*result; if(f==2) bai=100*result;  if(f==3) shi=10*result; if(f==4) ge=result; } if(f==4)   while(1){total=ge+shi+bai+qian; display(total); } 
 
 }

//----------------------------------------------------------
//显示程序
 void  display(unsigned int x)                      //电压显示函数  
   {
   
     unsigned int g,s,b,q;   //定义6个临时变量
    // temp=result;  c=1;
     q=x/1000;
     b=x%1000/100;             //求显示的千位        
     s=x%100/10;             //求显示的百位
     g=x%10;                  //求显示的十位
  
     PORTD=TABLE[q];      //显示一个小数点
     PORTA=0B11111110;             //RA0输出低电平,点亮千位显示     
     delay(1); 

     PORTD=TABLE[b];            //查表得百位显示的代码
     PORTA=0B11111101;            //RA1输出低电平,点亮百位显示
     delay(1);                    //延时一定时间,保证显示亮度

     PORTD=TABLE[s];             //查表得十位显示的代码

[1] [2]  下一页


本文关键字:程序  键盘  PIC单片机单片机-工控设备 - PIC单片机