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

📄 adc._h

📁 关于单片机的哈吉阿 吉阿 将阿吉阿吉阿吉阿吉阿吉阿
💻 _H
字号:
//ICC-AVR application builder : 2006-5-30 8:29:21
// Target : M8
// Crystal: 4.0000Mhz

#include <iom8v.h>
#include <macros.h>

#define Vref   500//参考电压值

unsigned int adc_rel;
unsigned char adc_mux;

const unsigned char seg_table[]={0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39};//,0x41,042,0x43,0x44,045,0x46};
unsigned char led_buff[16]={0x53,0x74,0x50,0x3a,0,0,0,0x20,0x50,0x72,0x65,0x73,0x3a,0,0,0};
unsigned char key_buff[16]={0x53,0x74,0x54,0x3a,0,0,0,0x20,0x54,0x69,0x6d,0x65,0x3a,0,0,0};

void adc_init(void);
unsigned int ADCtoBCD(unsigned int temp,unsigned int temp1,unsigned int choose);

void adc_init(void)
{
 PORTC = 0x7E; //m103 output only
 DDRC  = 0x0E;
 ADCSRA = 0x00; 
 ADMUX =(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
 ACSR  =(1<<ACD);//关闭模拟比较器
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
}

//ADC完成中断
#pragma interrupt_handler adc_isr:iv_ADC     
void adc_isr(void)
{
 adc_rel=ADC&0x3ff;
 ADMUX=(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
 ADCSRA|=(1<<ADSC);//启动AD转换
}

//将ADC得到的HEX数据转换成ASC码,供显示用,并加上了小数点。
unsigned int ADCtoBCD(unsigned int temp,unsigned int temp1,unsigned int choose)
 {
  unsigned int tt;
  unsigned char i;
  if(choose==1)
   { temp=tt=((52.69*(unsigned int)(((unsigned long int)((unsigned long int)temp*Vref))/0x3ff))-208)*0.0075;
  for(i=0;i<2;i++)
  {
   led_buff[14-i]=seg_table[temp%10];
   temp=temp/10;
   led_buff[5-i]=seg_table[temp1%10];
   temp1=temp1/10;
   led_buff[6]=led_buff[15]=0X20;
   }
   }
  else
   for(i=0;i<2;i++)
  {
   key_buff[14-i]=seg_table[temp%10];
   temp=temp/10;
   key_buff[5-i]=seg_table[temp1%10];
   temp1=temp1/10;
   key_buff[6]=key_buff[15]=0X20;
   }
   return tt;
 }

⌨️ 快捷键说明

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