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

📄 adconv._c

📁 使用mega16单片机进行片上自带的AD转换编程
💻 _C
字号:
#include <iom16v.h>
#define CS 0 
#define CLK 1 
#define DIO 2 
#define KEY 3 

void SETB(unsigned char k)
{//这里的PORTB根据自己的程序修改
  PORTB=PORTB|(1<<k);
}

void CLRS(unsigned char l)
{//这里的PORTB根据自己的程序修改
  PORTB=PORTB&~(1<<l);
}

//初始化显示时Data=0xA4,position=0xFF
//Data为显示数据,position为数据显示位置
//Data为10进制或16进制数,只能一位一位发送
//position为1-8的数字
void Display(unsigned char Data,unsigned char position)
{
  unsigned char DataPos=~0;
  unsigned char num=~0;
  unsigned char wait=~0;
  unsigned char datanum=~0;
  unsigned int transdata=~0;
  unsigned int iToDIO=~0;
  unsigned char cToDIO=~0;
  DDRB=0xFF;
  SETB(KEY);
  SETB(CS);
  SETB(DIO);
  datanum=2;
  CLRS(CS);
  if(Data!=0xA4)
  {
    DataPos=0xC8+position-1;
    transdata=DataPos;
	transdata=transdata<<8;
	transdata=transdata+Data;
    while(datanum--)
    {
      wait=25;
      while(wait--)
	  {;}
      for(num=0;num<8;num++)
      {
        iToDIO=transdata&0x8000;
        transdata=transdata<<1;
        if(iToDIO==0x0000)
        {
          CLRS(DIO);
        }
        else
        {
          SETB(DIO);
        }
        SETB(CLK);
        wait=4;
        while(wait--)
		{;}
        CLRS(CLK);
        wait=4;
        while(wait--)
		{;}
      }
    }
  }
  else
  {
      wait=25;
      while(wait--);
      for(num=0;num<8;num++)
      {
        cToDIO=Data&0x80;
        Data=Data<<1;
        if(cToDIO==0x00)
        {
          CLRS(DIO);
        }
        else
        {
          SETB(DIO);
        }
        SETB(CLK);
        wait=4;
        while(wait--);
        CLRS(CLK);
        wait=4;
        while(wait--);
      }
  }
  SETB(CS);
}

unsigned int ADC_Conv(void)
{
  unsigned int temp1,temp2;
  temp1=(unsigned int)ADCL;
  temp2=(unsigned int)ADCH;
  temp2=(temp2<<8)+temp1;
  return temp2;
}

unsigned int count,i;
unsigned int j;
void main()
{
  ADMUX=0x00;
  ADCSR=0xE6;

  Display(0xA4,0xff);
  while(1)
  {
    count=20000;
    while(count--);
    i=ADC_Conv();
    for(j=0;j<4;j++)
    {
      Display(i%10,j+1);
      if(i!=0)
	  {
	    i=i/10;
	  }
    }
  }  
}

⌨️ 快捷键说明

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