基于avr的连续ADC转换例程

2023-10-22 11:48
文章标签 转换 adc 连续 例程 avr

本文主要是介绍基于avr的连续ADC转换例程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本例,使用1ch进行ADC转换,对应的引脚为PA1,连续转换,在main中只要调用void Init_AD(INT8U ch)后,便可以初始化。初始化后,调用void Read_ADC(INT8U ch)便可以随时读取ADC的转换结果;

ADC_tran.c文件如下:

#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "lcd1602.h"
#define INT8U unsigned char
#define INT16U unsigned int
#define CH  0x01INT16U	adc_data;
char str[20];void Init_AD(INT8U ch)
{DDRA &= (0<<ch);	//把通道ch设置位输入;PORTA &= (0<<ch);	//把通道ch设置为0;ADMUX = (1<<REFS1)|(1<<REFS0)|(0<<ADLAR)| ch; //选择ch通到,数据右对齐,选择2.56V作为参考电平;SFIOR = (0<<ADTS1) & (0<<ADTS2) & (0<<ADTS1); //使用连续转换方式ADCSRA = (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADPS0);	//ADC使能,ADATE自动触发使能,ADPS选为2分频;开始正式转换,需等待25个ADC时钟周期;_delay_ms(1000);  //开始ADC转换; 
}void Read_ADC(INT8U ch)
{ADMUX |= ch;	//选择读取的通道ch;adc_data = ADC;	//读取ADC转换结果;Display_String(0,0,"                "); //清屏;sprintf(str,"power is %d",adc_data);	//把需要显示的数据写入字符串;Display_String(0,0,str);	//显示字符串STR;_delay_ms(200);	//防止屏幕闪烁太快;
}

 

ADC_tran.h文件如下:


#ifndef ADC_TRAN_H_
#define ADC_TRAN_H_#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "lcd1602.h"
#define CH  0x01extern void Init_AD(INT8U ch);
extern void Read_ADC(INT8U ch);#endif /* ADC_TRAN_H_ */

 

最后,为了方便显示,调用了LCD驱动来显示,以为可参考上一篇关于LCD驱动的文章https://blog.csdn.net/rzchong1988/article/details/101764091;

最终的main如下:

#define  F_CPU 4000000UL
#include "lcd1602.h"
#include "ADC_tran.h"int main(void)
{Init_LCD1602();Init_AD(CH);while(1){Read_ADC(CH);}
}

 

使用Proteuss仿真如下:

这篇关于基于avr的连续ADC转换例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261245

相关文章

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };