OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 226|回复: 1

AVR单片机ADC的应用

[复制链接]

  离线 

77

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-1-5
在线时间
25 小时
发表于 2017-10-9 15:01:48 | 显示全部楼层 |阅读模式
正点原子公众号
系统功能:当在模拟通道3输入电压超过3V时,系统点亮红色LED;当输入电压小于2V时,点亮黄色LED,当输入电压在2V--3V间,点亮绿色LED.


硬件连接:三个LED分别接至AT908535的PORD口的PORTD.0、 PORTD.1、PORTD.2 AVR微控制器的ADC外设会根据所使用的具体微控制器而有所不同,所有的ADC都对VCC连接中的引脚电压有噪声抑制要求,有些拥有内置的噪声消除器,有些则拥用在内部控制Vref的能力,使用ADC时需要查看相关微控制器的手册。


程序代码:
#i nclude<90s9535.h>
#define LEDS PORTD
#define red 0xfe
#define yellow 0xfd
#define green 0xfc
#define uchar unsigned char
interrupt[ADC_INT] void adc_isr(void)
{
uchar adc_data; //variable for ADC result
adc_data=ADCW; //read all 10bits into variable
if(adc_data>(3*1023)/5)
LEDS=red;
else(adc_data<(2*1023)/5)
LEDS=yellow;
else
LEDS=green;
ADCSR=ADCSR|0x40; //start the next conversion
}
void main()
{
DDRD=0x07; //least signifcant 3 bits for output
ADMUX=0x03; //select to read only channel 3
ADCSR=0xCE; //ADC中断,64分频
#asm("sei")
while(1); //等待ADC中断产生
}
【马良】神奇芯片去字笔(用于芯片表面丝印或光刻文字的去除)
回复

使用道具 举报

  离线 

1

主题

2

帖子

0

精华

新手上路

Rank: 1

积分
16
金钱
16
注册时间
2018-1-3
在线时间
1 小时
发表于 2018-1-3 11:24:08 | 显示全部楼层
你好 我看了你的程序,因为我是新手 所有有几个问题想请教下。
Q1:你的这个程序中没有使用内部参考电压吗,ADC的时候不使用内部参考电压没问题的吗
Q2:【adc_data>(3*1023)/5】你的这一句中 1023代表的应该是10位ADC吧  但是你最后的那个5代表的是什么啊,不是很明白
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-23 07:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */