CSDN话题挑战赛第2期
参赛话题:学习笔记

软件设计

软件设计包括3个子模块:SPI初始化模块、AD7705驱动模块、定时器模块。工作过程:首先通过ATmega16的SPI接口驱动AD7705,完成AD7705通道设置、时钟设置、更新速率以及校准模式等,然后启动ATmega16的定时器,在定时器中断函数中查询AD7705的状态,如转换完成则读取转换结果,否则继续等待直到转换完成,如此不断读出所需的转换结果。程序流程如图5所示。

程序流程框图


程序流程框图

SPI初始化模块

对ATmega16的SPI接口进行配置:

void spi_init(void)

{

DDRB|=(1<

DDRB&=~(1<

PORTB|=(1<

SPCR=(1<

}

AD7705驱动模块

该模块程序完成对AD7705的配置任务,需要注意的是读写寄存器之前必须先选择要操作的寄存器。

向AD7705写入1字节函数,入口参数data为需写入的字节数据:

void wr_7705( unsigned char data)

{

SPDR = data; / /启动数据传输

while ( ! ( SPSR & ( 1 < < SPIF) ) ) / /等待传输

结束;

}

读出AD7705 数据函数,返回值为读出的2字节数据:

unsigned int rd_7705( void)

{

unsigned int temp; / /定义临时变量

wr_7705( 0x38) ; / /选择读数据寄存器,1 通道

SPDR = 1; / /启动数据传输

while ( ! ( SPSR & ( 1 < < SPIF) ) ) / /等待传输结

{

;

}

temp = SPDR < < 8; / /读取高字节

SPDR = 1; / /启动数据传输

while ( ! ( SPSR & ( 1 < < SPIF) ) ) / /等待传输结束

{

;

}

temp|=SPDR;//读取低字节

return(temp);

}

AD7705初始化函数:

void init_7705(void)

{

wr_7705(0x20);//选择时钟寄存器,下一操作是写

wr_7705(0x00);//20Hz的更新速率

wr_7705(0x10);//选择设置寄存器,下一操作是写

wr_7705(0x44);//自校准模式,增益为1,单极性

}

定时器模块

利用定时器1按一定的时间间隔读取AD7705的转换结果。读取数据之前必须确定数据寄存器的状态,有两种不同的方式:第1种是查询DRDY引脚,如果处于低电平,表示已经转换完成,可以读取;第2种是查询通信寄存器中的DRDY位,如果是0表示可以读取数据:

定时器1初始化函数:

定时器1溢出中断函数:

结语

本文总结了基于AD7705的32通道模拟量采集系统设计,经过试验证明,该采集系统不仅减少仪表设计调试时间,而且结合测量仪器可以构建灵活的测量系统,节约仪器购置成本,提高工作效率。

基于AD7705的32路信号采集软件设计相关推荐

  1. 基于AD7705的超高精度电压采集电路板 4路电压采集端口,通过前端通过AD620运算放大器输出至AD5505通过STM32F030数据处理

    基于AD7705的超高精度电压采集电路板 4路电压采集端口,通过前端通过AD620运算放大器输出至AD5505通过STM32F030数据处理,电压采集精度达到万分之一伏.显示电路通过74HC164静态 ...

  2. java开发组态软件下载_基于JAVA的煤矿安全监控系统组态软件设计研究.pdf

    ·218· 工矿自动化 基于JAVA的煤矿安全监控系统组态软件设计 鲍毅华钢 (中国矿业大学信电学院 江苏徐州 221008) [摘要]本文通过对当前煤矿安全监控系统组态存在的问题和发展趋势的问题,提 ...

  3. matlab编写信号采集程序,MATLAB语音信号采集课程设计

    MATLAB语音信号采集课程设计 数字信号处理 课程设计报告 课设题目:语音信号的采集与处理 学 院:信息科学与工程学院 专 业:电子信息工程 班 级:电子0903 姓 名: 学 号: 指导教师:张海 ...

  4. 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果  二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现- ...

  5. java毕业设计——基于java+Winpcap的局域网监听软件设计与实现(毕业论文+程序源码)——局域网监听软件

    基于java+Winpcap的局域网监听软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Winpcap的局域网监听软件设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  6. linux arm关闭光栅,基于Linux的光栅检测系统的软件设计与实现.pdf

    基于Linux的光栅检测系统的软件设计与实现.pdf - - - - - - - - - - 一 竣 应 ((_- 基 于 Linux 系 统 的 软 件 设 计 与 实 现 东北大学信息科学与工程学 ...

  7. 一、基于HTTPS协议的12306抢票软件设计与实现--实现效果

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  8. 二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  9. iOS开发笔记--基于面向协议MVP模式下的软件设计

    传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面:  相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板.随着时间的推移,在iOS ...

最新文章

  1. 查看CentOS的网络带宽出口
  2. 迄今为止程序员写过的最大Bug:亏损30亿、致6人死亡,甚至差点毁灭世界
  3. 深度学习核心技术精讲100篇(四十一)-阿里飞猪个性化推荐:召回篇
  4. java+mock+例子_java – 如何使用PowerMock和Mockito模拟枚举类的实例?
  5. 《ASP.NET Core 微服务实战》-- 读书笔记(第3章)
  6. Apache FOP与Eclipse和OSGi的集成
  7. pythonencode和decode_Python3的decode()与encode()
  8. vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项
  9. python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
  10. 如何运行 PPAS上的pgpool-II
  11. Oracle与SQL Server的语法区别——Oracle数据库学习
  12. 关于PC浏览器js提示兼容问题的代码 “您的浏览器版本太低了,已经和时代脱轨了“ 强制锁定极速模式
  13. 方正国际用CMMI的思想管理博客
  14. cocos2d-lua加载cocostudio创建的csb文件
  15. 如何快速在Ubuntu18.04.1上安装k8s1.20的简明教程
  16. 2022年版中国共享单车市场现状调研及投资前景预测报告
  17. 【软件定义汽车】【中间件】iceoryx冰羚
  18. vue项目首屏加载优化
  19. 一个完美的JS加密和解密程序
  20. 北航计算机学院非全日制双证研究生,北京航空航天大学有非全日制双证专业吗?...

热门文章

  1. Python最优化算法学习笔记(Gurobi)
  2. ipqc异常处理流程图_品质异常该怎么处理?照这个流程走!
  3. 为什么ArrayList查询效率高,删除效率慢
  4. 仿真通过AXI_lite接口读写寄存器时axi_awready信号无法拉高的一种原因
  5. 论文笔记(二十二):Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval
  6. 宽带显示不能建立到远程计算机,宽带连接错误820:不能建立到远程计算机的连接 正确处理办法...
  7. Unity局部坐标与世界坐标
  8. 前端js数组元素的筛选,修改,新增属性小技巧一---前端数据筛选filter()函数,更新数组map()函数;
  9. GitLab更换IP地址报错解决
  10. chapter 2 古典密码技术