[ICCAVR C 例程]AVR单片机 ADC转换实验 - 单片机应用 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 单片机应用

TOP

[ICCAVR C 例程]AVR单片机 ADC转换实验
发表日期:2012-03-02 08:53:00 来源:麦克鼠单片机学习网 作者: 【 】 浏览:2882次 评论:0

单片机入门学习者练习用的AVR单片机的ADC功能实验程序。用一只电位器模拟电压变化,经ADC采集、转换,最后用两位数码管显示0 - 5伏的电压变化。用ICCAVR-V7开发,在AVR单片机Atmega48上调试通过。
本实验的详细说明和硬件搭建请参考>>

//------------------------------------------------------------------------
//------单片机入门实验 可调电阻做ADC转换实验 C 程序------------
//------------------------------------------------------------------------
//作者: 超简单工作室
//Email: fullmous@hotmail.com
//软件版本: ICCAVR ver 7.14
//创建日期: 2008.3
//版本 V1.00
// Target : M48
// Crystal: 8.0000Mhz

#include <iom48v.h>
#include <macros.h>
#pragma data:code //定义字型数组
const unsigned tabs[]=
{
0xC0,//"0"
0xF9,//"1"
0xA4,//"2"
0xB0,//"3"
0x99,//"4"
0x92,//"5"
0x82,//"6"
0xF8,//"7"
0x80,//"8"
0x98,//"9"
};
void port_init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x06;
}
void adc_init(void) //ADC 初始化函数
{
ADCSRA = 0x00; //设置前,先关闭ADC
ADMUX = (1<<REFS0) ; //选择内部AVCC为基准
ACSR = (1<<ACD); //关闭模拟比较器
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1); //使能ADC,启动ADC单次转换,选64分频
}
unsigned int adc_get(void) //ADC 转换函数
{
ADCSRA |= (1<<ADSC); //启动ADC转换
while( ADCSRA & (1<<ADSC));//判断ADC转换是否结束
return ADC;//取ADC的转换结果
}
void delay_us(int time)
{//微秒级延时
do
{
time--;
}
while (time>1);
}
void delay_ms(unsigned int time)
{//毫秒级延时
while(time!=0)
{
delay_us(1000);
time--;
}
}
void main() //主函数
{
unsigned int adc_v;
unsigned int t;
port_init();
adc_init();
while(1)
{
adc_v = adc_get(); //ADC转换
adc_v = adc_v/20;
t = adc_v /10;
PORTB = tabs[t];
PORTC = (1<<2);
delay_ms(10);

t = adc_v % 10;
PORTB = tabs[t];
PORTC = (1<<1);
delay_ms(10);
}
}

 > 相关内容:

 
Tags:ICCAVR 例程 AVR 单片机 ADC 转换 实验 责任编辑:博趣
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[ICCAVR C 例程]AVR单片机 红外接.. 下一篇[ICCAVR C 例程]AVR单片机控制8段..

赞助商链接

最新文章

热门文章

推荐文章