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

📄 mega16_ad.c

📁 AVR16单片机集成10位AD程序
💻 C
字号:
/*******************************************
  文件:MEGA16_AD.C
  环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 
  硬件:ATMEGA16芯片
  日期:2006年12月10日 
  功能:驱动MEGA16片上自带的AD转换器
  备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
/******************************************/
#include <iom16v.h>			//包含型号头文件
#include <macros.h>			//包含"位"操作头文件
#include <stdio.h>			//标准输入输出头文件
#include <AVR_PQ1A.h>		//包含自定义常量头文件
#include "SMG.C"			//包含数码管显示函数

/*******************************************
函数名称: Mega16_ad
功    能: 对指定的通道进行模数转换
参    数: chl--指定的通道(本开发板只用了通道0)
返回值  : addata--10位数据输出
/********************************************/
uint Mega16_ad(uchar chl)
{
 uint addata;  
 DDRA&=~(BIT(PA0)|BIT(PA1));	//转换口设置为输入、无上拉
 PORTA&=~(BIT(PA0)|BIT(PA1));	
 ADMUX=0;	 					//采用外部参考电压,输出数据右对齐
 ADMUX|=chl; 					//设置指定的通道
 ADCSR=0x80; 					//采用单次转换,查询模式,2分频
 ADCSR|=BIT(ADSC);				//启动转换
 while(!(ADCSR&(BIT(ADIF))));   //等待转换结束
 addata=ADCL;					//读取低8位数据
 addata+=ADCH*256;				//读取高2位数据
 return addata;					//返回10位数据
}
/*******************************************
函数名称: Num_BCD
功    能: 将一个字节的整数转换成三位BCD码
参    数: num--需要转换的整数
返回值  : chr--三位BCD码数组指针
/********************************************/
uchar* Num_BCD(uchar num)
{
 uchar i,chr[3];	  
 uchar *rept;
 rept=&(chr[0]);	  //返回指针指向BCD码数组
 for(i=0;i<3;i++)
 {
  chr[2-i]=num%10;	  //对10取余数(其实是求模,但是对于正数,取余与求模是相等的)
  num/=10;			  //除以10,为取出下一位做准备
 }
 return rept;		  //返回指针
}
/*******************************************
函数名称: main
功    能: 驱动MEGA16的AD,并在数码管上显示采集值
参    数: 无
返回值  : 无
/********************************************/
void main(void)
{	 
	 uchar *adpt;						//定义一个接受返回指针的指针变量
	 uchar i,ad0[3];					  
	 Board_init( );	  					//初始化开发板
	 while(1)
	 {
	  adpt=Num_BCD(Mega16_ad(0)/4);		//启动AD转换通道0,同时将数值转换成BCD码
	  for(i=0;i<3;i++)					//将转换后的BCD码存入显示数组
	  {
	   ad0[i]=*(adpt+i);
	  }
	  for(i=0;i<3;i++)					//显示转换的数值
	  {
	   One_smg_display(ad0[i],i+1);
	   Delayms(2);	      
	  }
	 }
}

⌨️ 快捷键说明

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