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

📄 v.c

📁 利用mega16自带的AD进行电压测量.测量范围0~5V.
💻 C
字号:
#include <mega16.h> 
#include <delay.h>    
#define data PORTA.0
#define clk PORTA.1
flash unsigned char led[]={0x28,0xeb,0x19,0x89,0xca,0x8c,0x0c,0xe9,0x08,0x88,0xff};

unsigned char dis_buff[4];
    
void sendbyte(unsigned char byte)
{    
 unsigned char num,c; 
 num=led[byte];
 for(c=0;c<8;c++)
 {
  clk=0;
  data=num&0x01; //(0x80即十进制的128, 二进制的10000000 按位发送)
  clk=1;
  num>>=1; 
 }
}

// ADC电压值送显示缓冲区函数
void display(unsigned int adc)		
{
 unsigned char i;  
 sendbyte(10); 
 sendbyte(10);
 sendbyte(10);
 sendbyte(10);
 for (i=0;i<=3;i++)
 {
  dis_buff[i]=adc%10;
  sendbyte(dis_buff[i]); 
  adc /= 10; 
 } 
}

void init()
{
  DDRA=0X7f;
  ADMUX=0x47; 
  ADCSRA=0xCd;
}

void main()
{  
  init();
  delay_ms(500);//点亮测试
  #asm("sei");    
  while(1);
}

interrupt [15] void adc_is()
{   
    float adc_data;
    int adc_v;
    #asm("cli");
    adc_data=ADCW;                                 
    adc_v=adc_data*5050/1024;
    display(adc_v);
    ADCSRA=0xCE;
    #asm("sei");  
}

⌨️ 快捷键说明

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