/********************************AD头文件**********************************/
#ifndef __ad_chafenscan_H__
#define __ad_chafenscan_H__
uint mega128_ad_chafen01(void);//01通道差分,1为参考
uint mega128_ad_chafen32(void);//23通道差分,2为参考
#endif
/********************************ADC文件************************************/
#include "config.h"
uint mega128_ad_chafen01(void)
{
uint addata1;
DDRF&=~BIT(0);
PORTF&=~BIT(0);/*端口设置*/
DDRF&=~BIT(1);
PORTF&=BIT(1);
ADMUX=0B11010000;/*选择ADC通道1为参考,通道0输入*/
ACSR=0x80;/*关模拟比较器*/
ADCSRA=0X86;/*ADC使能ADEN,64分频*/
// ADCSRA|=BIT(ADFR);
ADCSRA|=BIT(ADSC);/*开始转换*/
while(!(ADCSRA&(BIT(ADIF)))); /*等转换完成*/
addata1=ADCL;
addata1|=ADCH<<8;/*接收数据*/
ADCSRA&=~BIT(ADIF); /*清标志*/
ADCSRA&=~BIT(ADEN); /*关闭转换*/
return addata1;
}
uint mega128_ad_chafen32(void)
{
uint addata1;
DDRF&=~BIT(0);
PORTF&=~BIT(0);/*端口设置*/
DDRF&=~BIT(1);
PORTF&=BIT(1);
ADMUX=0B11011011;/*选择ADC通道2为参考,通道3输入*/
ACSR=0x80;/*关模拟比较器*/
ADCSRA=0X86;/*ADC使能ADEN,64分频*/
// ADCSRA|=BIT(ADFR);
ADCSRA|=BIT(ADSC);/*开始转换*/
while(!(ADCSRA&(BIT(ADIF)))); /*等转换完成*/
addata1=ADCL;
addata1|=ADCH<<8;/*接收数据*/
ADCSRA&=~BIT(ADIF); /*清标志*/
ADCSRA&=~BIT(ADEN); /*关闭转换*/
return addata1;
}
/********************************主函数头文件**********************************/
#ifndef __config_H__
#define __config_H__
#include
#include
#define uchar unsigned char
#define uint unsigned int
#include "delay.h"
#include "lcd.h"
#include "ad_chafenscan.h"
#endif
/**************************主函数头文件****************************/
#include "config.h"
void main()
{ uchar i;
uint ad1,ad2;
uint ad[4];
DDRA=0X00;
PORTA=0X00;
DDRB = 0x00;
PORTB = 0x00 ;
DDRC = 0x00;
PORTC = 0x00;
DDRD = 0x00;
PORTD = 0x00;
DDRE=0X00;
PORTE=0X00;
DDRF=0X00;
PORTF=0X00;
DDRG=0X00;
PORTG=0X00;/*端口设置*/
LCD1602_initial();
LCD1602_gotoXY( 1 , 3 );
LCD1602_sendbyte(iDat,'a');
LCD1602_sendbyte(iDat,'d');
LCD1602_sendbyte(iDat,'c');
while(1)
{
ad1=mega128_ad_chafen01();ad2=mega128_ad_chafen32();
if(ad1
ad[1]=ad1%1000/100;
ad[2]=ad1%100/10;
ad[3]=ad1%10;
LCD1602_gotoXY( 2 , 6 );
for(i=0;i<4;i++)
{
LCD1602_sendbyte(iDat,0x30+ad[i]);
}
delayms(300);
}
}
上一篇:AVR(ATMEGA128/16)内部EEPROM读写
下一篇:AVR (ATMEGA)软件滤波方法程序(限值平均滤波法)
推荐阅读最新更新时间:2024-03-16 15:16