标题:
atmega128 AD 转换
[打印本页]
作者:
liuqq
时间:
2015-5-21 23:50
标题:
atmega128 AD 转换
/*********************************包含头文件********************************/
#include <iom128v.h>
#include <macros.h>
/********************************数码管段码表*******************************/
extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F};
/*********************************端口定义**********************************/
#define sclon PORTG |=BIT(0); //时钟高
#define scloff PORTG &=~BIT(0);
#define dion PORTG |=BIT(1); //数据高
#define dioff PORTG &=~BIT(1);
/*********************************全局变量**********************************/
unsigned int adc_rel;
int dat;
/****************************************************************************
函数功能:ADC初始化函数
入口参数:
出口参数:
****************************************************************************/
void adc_init(void)
{
ADCSRA=0x00; //关ADC
ADMUX = (1<<REFS1)|(1<<REFS0); // 2.56V
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
}
/****************************************************************************
函数功能:ADC中断函数
入口参数:
出口参数:
****************************************************************************/
#pragma interrupt_handler adc_isr:iv_ADC
void adc_isr(void)
{
int data_H,data_L;
ADCSRA = 0x00;
adc_rel=ADC;
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE);
}
/****************************************************************************
函数功能:数据输出程序
入口参数:temp
出口参数:
****************************************************************************/
void dataOUT(unsigned char temp)
{
unsigned char i,temp1;
temp1 = tab[temp];
for(i = 0;i < 8;i++ )
{
scloff;
if((temp1&0x80)!= 0x80)
{ dioff;}
else
{ dion;}
sclon;
temp1 <<=1;
scloff;
}
}
/****************************************************************************
函数功能:延时子程序
入口参数:
出口参数:
****************************************************************************/
void delay(void)
{
int i;
for(i=0;i<200;i++);
}
/****************************************************************************
函数功能:显示子程序
入口参数:k
出口参数:
****************************************************************************/
void display(unsigned int k)
{
dataOUT(k/1000);
PORTG &=0x03;
delay();
dataOUT(k/100%10);
PORTG |=0x04;
delay();
dataOUT(k/10%10);
PORTG &=0x0B;
PORTG |=0x08;
delay();
dataOUT(k%10);
PORTG |=0x0C;
delay();
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
DDRE=0x00;
DDRG=0xff;
adc_init();
SEI();
display(0);
while(1)
{
delay();
display(adc_rel);
}
}
复制代码
作者:
jsh163
时间:
2019-9-21 11:05
学习一下,谢谢!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1