打印
[Atmel]

ATmega328p Xplained Mini (4)ADC

[复制链接]
2036|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
根据昨天的贴子,今天也跑了下ADC程序。感觉很好用,我太接可调电阻会损坏板子,就用镊子短3.3V和PC0

程序的原理是只要大于一半电压,LED就亮,以下是运行截图:



以下是完整程序清单:


/*
* GccApplication6.c
*
* Created: 2015-1-16 9:23:54
*  Author: Administrator
*/


#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdint.h>

void AD_Init(void)
{
        //参考电压AVCC  要加电容稳压,左对齐,ADC5单端输入
        ADMUX |= (0<<REFS1)|(1<<REFS0)|(1 << ADLAR) ;//(1 << MUX0)
        //AD使能, 连续转换,中断使能,32分频, 6M / 32 = 187.5khz
        ADCSRA |= (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS0);
        //AD开始转换
        ADCSRA |= (1 << ADSC);
}
int main(void)
{

        DDRC=(0<<PC0);
        PORTC=(0<<PC0);//注意adc输入口的设置  输入0

        //AD初始化
        AD_Init();

        //开总中断
        sei();

        while(1);


        return 0;
}
int result = 0;

ISR(ADC_vect)//中断函数命名方式的变化
{
        result = ADCH;
        //result = result * 500 / 255;
        if(result>=128)
        {
                DDRB=(1<<PB5);
                PORTB=(1<<PB5);//检测led的变化  因为pb5  接有led
        }
        else
        {DDRB=(0<<PB5);
                PORTB=(0<<PB5);//微亮
               
        }
}


相关帖子

沙发
123654789| | 2015-1-16 10:09 | 只看该作者
RAM不够大啊!!!

使用特权

评论回复
板凳
ddllxxrr|  楼主 | 2015-1-16 11:00 | 只看该作者
123654789 发表于 2015-1-16 10:09
RAM不够大啊!!!

老兄,你想要多大的,这款在Atmel 8位中已经算够大的

使用特权

评论回复
地板
123654789| | 2015-1-16 11:14 | 只看该作者
64K ROM  64KRAM 那么大

使用特权

评论回复
5
ddllxxrr|  楼主 | 2015-1-16 11:49 | 只看该作者
123654789 发表于 2015-1-16 11:14
64K ROM  64KRAM 那么大

看来版主只能用32位了,32位可以超过楼主的值

使用特权

评论回复
6
123654789| | 2015-1-16 11:57 | 只看该作者
是的,我本来想打算使用AVR32
偏巧这个东西难买

使用特权

评论回复
7
jazzyfox| | 2015-1-16 12:45 | 只看该作者
可惜啊,工业级的多,俺做汽车上的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6955

帖子

67

粉丝