AVR单片机 实验六 AD转换应用实验

1 实验目的
通过实验,了解AVR单片机模数转换器的初始化,及以定时器自动触发AD转换的方法和工作原理。
2 实验内容
(1) 调整可变电阻, 以获取模拟电压输入至ADC。
(2) 设置定时器中断,实现自动触发AD转换,并将结果显示于数码管。
实验电路:


3 通过调整可变电阻, 以实时改变输入的模拟电压; 实现将输入模拟电压进行AD转换, 并将结果换算为电压值(以mv为单位),于数码管上显示该电压值,例如检测到的电压为2.5V则数码管上显示2.500。请写出完整实验代码。
#include <iccioavr.h>
#include <macros.h>
#include <stdio.h>

void Show(void); //数码管动态显示扫描函数
void Convert(unsigned int); //数字值转换回电压值函数
unsigned char flg = 0, ix = 0;
unsigned char seg[10] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90 }; //段码0~9
unsigned char buf[4] = { 0xff, 0xff, 0xff, 0xff }; //显示数组内容为不亮段码
unsigned char en[4] = { 0xf7, 0xfb, 0xfd, 0xfe }; //4位数码管扫描码
int vref = 5000; //参考电压数值

void main(void)
{
DDRA = 0x7f; //设PA7为ADC输入
PORTA = 0x7f; //使PA7上拉电阻无效
DDRB = 0xff; //设PC0~PC7全部为输出
PORTB = 0xff; //令数码管所有段灯皆不亮
DDRA |= 0x0f; //设PB0~PB3为输出
PORTA |= 0x0f; //关闭所有数码管
TCCR0 = 0x0c; //设T/C0为CTC模式,分频系数为8
TCNT0 = 0; //T/C0计数器内容清0
OCR0 = 31; //设置OCR0以产生约1ms的定时
TIMSK = 0x02; //允许T/C0的比较匹配中断
ADMUX = 0x47; //参考电源为工作电压(AVcc), 结果右对齐, AD7为单端输入
ADCSRA = 0xad; //致能ADC﹑自动触发转换﹑允许ADC转换中断﹑64分频
SFIOR = 0x60; //选择T/C0比较匹配中断为自动触发源
SREG |= 0x80; //致能中断

do{if (flg == 1)                 //1ms定时标志是否设定?{Show();               //调用数码管动态扫描显示函数flg = 0;                 //解除1ms定时标志}
} while (1);

}

void Show(void) //数码管动态显示扫描函数
{
PORTA = PORTA | 0x0f; //关闭所有数码管
PORTB = buf[ix]; //送出段码至数码管
PORTA = PORTA&en[ix]; //显示该位数码管
ix++; //数码管位指针切换至下一位
if (ix>3)
ix = 0; //若已到最后1位, 则数码管位指针清0
}

void Convert(unsigned int num) //数字值转换回电压值函数0
{
int i;
unsigned int value, t;
value = (unsigned long)num * 5000 / 1023;
t = value;
for (i = 0; i <4; i++)
{
buf[i] = seg[t % 10];
t = t / 10;
}
buf[3] &= ~(1 << 7);
}

#pragma interrupt_handler ADC_SUB: 15 //ADC中断服务程序
void ADC_SUB(void)
{
unsigned int value = 0;

if (flg == 0)
{value = ADC;Convert(value);
}

}

#pragma interrupt_handler TC0_SUB: 20 //T/C0比较匹配中断服务程序
void TC0_SUB(void)
{
flg = 1; //设置1ms标志位,以表示1ms已终了
}

AVR单片机 实验六 AD转换应用实验相关推荐

  1. 计算机控制系统AD实验报告,实验一AD转换实验报告.docx

    文档介绍: 实验一AD转换实验报告.docx计算机控制系统实验报告实验一实验名称:A/D转换实验二零一六年三月实验_A/D转换实验.实验要求利用ADC做A/D转换器,将模拟量转换成二进制数字量,用延时 ...

  2. 计算机控制系统AD实验报告,实验一AD转换实验报告

    实验一AD转换实验报告 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机控制系统实验报告实验一实验名称:A/D转换实验二零一六年三 ...

  3. 计算机网络 实验六 静态路由配置,实验六-静态路由配置.doc

    实验六-静态路由配置 实验报告书 课程名称 计算机网络技术与应用 实验题目 实验六:静态路由配置 专业班级 2010级信息管理与信息系统2班 学 号 37号 姓 名 肖丹妮 指导教师 赵圆圆老师 计算 ...

  4. 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验 ...

  5. 实验六 键盘扫描显示实验(矩阵键盘)

    实验六 键盘扫描显示实验(矩阵键盘) 一.实验要求 在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在八位数码管上显示出来. 实验程序可分成 ...

  6. 数据库实验六:完整性语言实验

    数据库实验六 1.参照实验一供应商的表结构,创建供应商表(Supplier1)时定义实体完整性(列级实体完整性). 2.参照实验一供应商的表结构,创建供应商表(Supplier2)时定义实体完整性(表 ...

  7. 基于51单片机PT100热电偶AD转换protues仿真设计

    基于51单片机PT100热电偶AD转换protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0023 这里写 ...

  8. 山东大学计算机组成与设计实验六 二进制补码加法器实验

    山东大学计算机组成与设计实验六 二进制补码加法器实验, 山东大学计算机组成与设计实验, 山东大学计算机组成与设计实验报告, 计算机组成原理实验报告, 山东大学计算机组成原理实验报告 文章目录 实验6 ...

  9. linux编译内核实验,实验六 Linux内核编译实验.doc

    实验六 Linux内核编译 讲师:杨行 [实验目的] 1.掌握Linux内核编译 2.了解Linux内核Makefile 3.了解Linux内核Kbuild系统 [实验原理] 网站可以下载标准内核文件 ...

最新文章

  1. Android CheckBox 修改选择框
  2. mac使用被动ftp模式(pasv)_网络安全工程师与白帽子黑客教你:Kali Linux之使用Metasploit进行FTP服务扫描实战...
  3. Markdown转LaTeX的Python程序大全(持续更新)
  4. 【ARM】一步一步移植Linux Kernel 2.6.13到板子
  5. HDU 5919 Sequence II 主席树
  6. 20145231第四周学习笔记
  7. 一步步编写操作系统 54 CPL和DPL入门1
  8. 突然无法连接数据库了(解决了)
  9. linux 关于虚拟内存的几个系统调用
  10. 12499元!“不知名”折叠手机2分钟售罄,网友:备货就10台...
  11. 我想向你们推荐一门最好的python课程——CS61A学习笔记(一)
  12. [PHPCMS]精美大气自适应资源模板下载网站源码
  13. centos安装部署webssh
  14. java基础简答题1
  15. Python学习-通过斗鱼api获取弹幕
  16. 腾讯地图的引用html
  17. 基于android 平台的校园二手物品交易系统设计与实现
  18. 我的Qt作品(1)高仿海康威视MVS主界面
  19. python敲七游戏代码_Python_day04_2018.7.5-(Lis列表的介绍,增删改查)
  20. 全国青少年软件编程等级考试内容,知识点思维导图(Scratch编程一级)

热门文章

  1. linux下升级BMC,Linux下升级IBM3650主板bios、bmc和raid卡firmware
  2. 【强化学习】强化学习概述
  3. Adobe Fireworks CS6 安装完提示无法访问Adobe服务器 请检查Internet链接或防火墙设置(错误代码:P206)
  4. 分布式调度框架 elastic-job 实践详解(超详细)
  5. c语言俄罗斯方块游戏代码
  6. 谷歌云盘大文件下载失败解决方案
  7. AVfoundation中焦距的设置(slider实现拉近拉远镜头)
  8. 《水经注地图服务》发布的卫星影像数据在QGIS中调用
  9. 逆势“赚钱”,VIPKID凭什么?
  10. TruthTable真值表---python