⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc_key_v1_0.c

📁 avr单片机的adc键盘
💻 C
字号:
//*******************************adc扩展16键盘********************************//
//*
//*键值在一定范围内判定
//*
//*
//****************************************************************************//
#include"iom16.h"                        
#include"intrinsics.h"                    
#define uchar unsigned char
#define XTAL 16

//****************************************************************************//
main(void)
{
  DDRC=0XFF;
  DDRD=0XFF;
    
  uchar key=16;
  uchar adc_datal;
  uchar adc_datah;
  int adc_data;
  DDRA_Bit0=0; //ADC初始化
  PORTA_Bit0=0;
  ACSR=0x80;
  ADMUX=0X40;
  ADCSRA=0X27;
  ADCSRA_Bit7=1;//ADEN
  ADCSRA_Bit6=1;//ADSC
  
  while(1)
  {
  adc_datal=ADCL;
  adc_datah=ADCH;
  adc_data=adc_datal+adc_datah*256;
  if(adc_data==1023);
    else
      {
        for(uchar i=0;i<50;i++)
        __delay_cycles(1000*XTAL);
        adc_datal=ADCL;
        adc_datah=ADCH;
        adc_data=adc_datal+adc_datah*256;
      }
  if(adc_data<=1023&&adc_data>=988);
  else if(adc_data>=0&&adc_data<32) key=0;
  else if(adc_data<96) key=1;
  else if(adc_data<158) key=2;
  else if(adc_data<219) key=3;
  else if(adc_data<283) key=4;
  else if(adc_data<348) key=5;
  else if(adc_data<415) key=6;
  else if(adc_data<478) key=7;
  else if(adc_data<540) key=8;
  else if(adc_data<604) key=9;
  else if(adc_data<671) key=10;
  else if(adc_data<737) key=11;
  else if(adc_data<799) key=12;
  else if(adc_data<861) key=13;
  else if(adc_data<924) key=14;
  else key=15;
  
  if(key==16);//按键功能
  else
    {ADCSRA_Bit6=0;
      switch(key)
        {
          case 0:{PORTC=0X01;PORTD=0X00;break;}
          case 1:{PORTC=0X02;PORTD=0X00;break;}
          case 2:{PORTC=0X04;PORTD=0X00;break;}
          case 3:{PORTC=0X08;PORTD=0X00;break;}
          case 4:{PORTC=0X10;PORTD=0X00;break;}
          case 5:{PORTC=0X20;PORTD=0X00;break;}
          case 6:{PORTC=0X40;PORTD=0X00;break;}
          case 7:{PORTC=0X80;PORTD=0X00;break;}
          case 8:{PORTD=0X01;PORTC=0X00;break;}
          case 9:{PORTD=0X02;PORTC=0X00;break;}
          case 10:{PORTD=0X04;PORTC=0X00;break;}
          case 11:{PORTD=0X08;PORTC=0X00;break;}
          case 12:{PORTD=0X10;PORTC=0X00;break;}
          case 13:{PORTD=0X20;PORTC=0X00;break;}
          case 14:{PORTD=0X40;PORTC=0X00;break;}
          case 15:{PORTD=0X80;PORTC=0X00;break;}
          default:{PORTD=0X00;PORTC=0X00;break;}
        }
      key=16;
      ADCSRA_Bit4=0;
      ADCSRA_Bit6=1;
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -