基于单片机的数字电压表设计_第1页
基于单片机的数字电压表设计_第2页
基于单片机的数字电压表设计_第3页
基于单片机的数字电压表设计_第4页
基于单片机的数字电压表设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言前言 在电量的测量中 电压 电流和频率是最基本的三个被测量 其中电压量在电量的测量中 电压 电流和频率是最基本的三个被测量 其中电压量 的测量最为经常 而且随着电子技术的发展 更是经常需要测量高精度的电压 的测量最为经常 而且随着电子技术的发展 更是经常需要测量高精度的电压 所以数字电压表就成为一种必不可少的测量仪器 数字电压表简称所以数字电压表就成为一种必不可少的测量仪器 数字电压表简称 DVMDVM 它是 它是 采用数字化测量技术 把连续的模拟量转换成不连续 离散的数字形式并加以采用数字化测量技术 把连续的模拟量转换成不连续 离散的数字形式并加以 显示的仪表 由于数字式仪器具有读数准确方便 精度高 误差小 测量速度显示的仪表 由于数字式仪器具有读数准确方便 精度高 误差小 测量速度 快等特而得到广泛应用 快等特而得到广泛应用 最近的几十年来 随着半导体技术 集成电路 最近的几十年来 随着半导体技术 集成电路 ICIC 和微处理器技术的发 和微处理器技术的发 展 数字电路和数字化测量技术也有了巨大的进步 从而促使了数字电压表的展 数字电路和数字化测量技术也有了巨大的进步 从而促使了数字电压表的 快速发展 并不断出现新的类型 数字电压表从快速发展 并不断出现新的类型 数字电压表从 19521952 年问世以来 经历了不断年问世以来 经历了不断 改进的过程 从最早采用继电器 电子管和形式发展到了现在的全固态化 集改进的过程 从最早采用继电器 电子管和形式发展到了现在的全固态化 集 成化 成化 ICIC 化 化 另一方面 精度也从 另一方面 精度也从 0 01 0 005 0 01 0 005 数字电压表作为数字技术的成功应用 发展相当快 数字电压表 以其功 能齐全 精度高 灵敏度高 显示直观等突出优点深受用户欢迎 特别是以 A D 转换器为代表的集成电路为支柱 使 DVM 向着多功能化 小型化 智能化 方向发展 DVM 应用单片机控制 组成智能仪表 与计算机接口 组成自动测 试系统 目前 数字电压表的内部核心部件是目前 数字电压表的内部核心部件是 A DA D 转换器 转换的精度很大程度上转换器 转换的精度很大程度上 影响着数字电压表的准确度 因而 以后数字电压表的发展就着眼在高精度和影响着数字电压表的准确度 因而 以后数字电压表的发展就着眼在高精度和 低成本这两个方面 低成本这两个方面 本文是以简易数字直流电压表的设计为研究内容 本系统主要包括三大模本文是以简易数字直流电压表的设计为研究内容 本系统主要包括三大模 块 转换模块 数据处理模块及显示模块 其中 块 转换模块 数据处理模块及显示模块 其中 A DA D 转换采用转换采用 ADC0808ADC0808 对输对输 入的模拟信号进行转换 控制核心入的模拟信号进行转换 控制核心 AT89C51AT89C51 再对转换的结果进行运算处理 最再对转换的结果进行运算处理 最 后驱动输出装置后驱动输出装置 LEDLED 显示数字电压信号 显示数字电压信号 相关原理及技相关原理及技术术 数字电压表有多种的设计方法 方案是多种多样的 由于大规模集成电路 数字芯片的高速发展 各种数字芯片品种多样 导致对模拟数据的采集部分的 不一致性 进而又使对数据的处理及显示的方式的多样性 又由于在现实的工 作生活中 电压表的测量测程范围是比较大的 所以必须要对输入电压作分压 处理 而各个数据处理芯片的处理电压范围不同 则各种方案的分段也不同 由此结合设计要求选择由单片机系统及数字芯片构建 这种方案是利用单片机系统与与其模数转换功能 显示模块等的结合构建 数字电压表 由于单片机的发展已经成熟 利用单片机系统的软硬件结合 可 以组装出许多的应用电路来 此方案的原理选用单片机的外部参考电压 AREF 为 模数 A D 转换功能的基准电压端 被测量电压输入端分别输入基准电压和被 测电压 模数 A D 转换功能将被测量电压输入端所采集到的模拟电压信号转 换成相应的数字信号 然后通过对单片机系统进行软件编程 使单片机系统能 按规定的时序来采集这些数字信号 通过一定的算法计算出被测量电压的值 最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以 显示 数字数字电压电压表的表的设计设计与与实现实现 设计设计要求 要求 1 采用 1 路模拟量输入 能够测量 0 5V 之间的直流电压值 2 电压显示用 4 位一体的 LED 数码管显示 至少能够显示两位小数 3 尽量使用较少的元器件 设计设计思路 思路 1 要求 选择 AT89C51 单片机为核心控制器件 2 AD 转换采用 ADC0808 实现 与单片机的接口为 P1 口和 P2 口的高四位引脚 3 压显示采用 4 位一体的 LED 数码管 4 LED 数码的段码输入 由并行端口 P0 产生 位码输入 用并行端口 P2 低四 位产生 设计设计方案 方案 硬件电路设计由 5 部分组成 A D 转换电路 AT89C51 单片机系统 LED 显 示系统 时钟电路 以及测量电压输入电路 硬件电路设计框图如下图所示 时钟电路 A D 转换电路测量电压输入 显示系统 AT89C52 P1 P2 P2 P0 图 1 数字电压表系统硬件设计框图 硬件硬件设计设计 A D 转换模块转换模块 A D 转换器 ADC 的作用是把模拟量转换成数字量 以便于计算机进行处 理 随着超大规模集成电路技术的飞跃发展 现在有很多类型的 A D 转换器芯 片 不同的芯片内部结构不一样 转换原理也不仅相同 各种转换芯片根据转 换原理可分为 计数型 A D 转换器 逐次逼近型 A D 转换器 双重积分型 A D 转换器 和并行式 A D 转换器等 按转换方法可分为直接 A D 转换器和间接 A D 转换器 按其分辨率分为 4 16 位转换器 AT89C52 单片机单片机 AT89C52 提供以下标准功能 4KB 的 Flash 闪速存储器 128B 内部 RAM 32 个 I O 口线 两个 16 位定时 计数器 一个 5 向量两级中断结构 一个全双工 串行通信口 片内震荡器及时钟电路 同时 AT89C52 降至 0Hz 静态逻辑操作 并支持两种软件可选的节电工作模式 空闲方式停止 CPU 的工作 但允许 RAM 定时 计数器 串行通信口及中断系统继续工作 掉电方式保存 RAM 中的 内容 但震荡器停止工作并禁止其他所有工作直到下一个硬件复位 AT89V52 引脚图 中断程序中断程序设计设计 ICL7135 每一分钟完成 3 次据的采集工作 1 3 秒完成后向 CPU 申请中断 CPU 这时暂停工作 为中断服务 中断响应后关中断 将 PSW ACC 压栈 判断 是否首次中断 如果是首次中断 则将正负号标志位置入 60H 再把万位置入 61H 中 如果不是首次中断 则跳到 NEXT 处 如果是第二次中断 则将千位数 置入 62H 中 如果是第三次中断 再将百位数置入 63H 中 第四次中断则将十 位数置入 64H 中 第五次中断则将小数点位置入 65H 中 同时个位置入 66H 中 同时清除中断次数寄存器 30H 中的值 完成中断后将 ACC PSW 出栈 开中断 时钟电时钟电路路设计设计 单片机中 CPU 每执行一条指令 都必须在统一的时钟脉冲的控制下严格按 时间节拍进行 而这个时钟脉冲是单片机控制中的时序电路发出的 CPU 执行 一条指令的各个微操作所对应时间顺序称为单片机的时序 MCS 51 单片机芯片 内部有一个高增益反相放大器 用于构成震荡器 XTAL1 为该放大器的输入端 XTAL2 为该放大器输出端 但形成时钟电路还需附加其他电路 1 本设计系统采用内部时钟方式 利用单片机内部的高增益反相放大器 外 部电路简 只需要一个晶振和 2 个电容即可 如图所示 电路中的器件选择可以通过计算和实验确定 也可以参考一些典型电路 的参数 电路中 电容器 C1 和 C2 对震荡频率有微调作用 通常的取值范围 是 30 10pF 在这个系统中选择了 33pF 在本系统中选择的是 12MHz 因而 时钟信号的震荡频率为 12MHz LED 显显示器示器 4 LED 显示器引脚如图 9 所示 是一个共阴极接法的 4 位 LED 数码显示管 其中 a b c e f g 为 4 位 LED 各段的公共输出端 1 2 3 4 分别是每 一位的位数选端 dp 数点引出端 4 位一体 LED 数码显示管的内部结构是由 4 个单独的 LED 组成 每个 LED 的段输出引脚在内部都并联后 引出到器件的外 部 4 位 LED 引脚 LED 显显示器与示器与单单片机接口片机接口设计设计 为了简化数字式直流电压表的电路设计 在 LED 驱动电路的设计上 可以利 用单片机 P0 口上外接的上拉电阻来实现 即将 LED 的 A G 段显示引脚和 DP 小 数点显示引脚并联到 P0 口与上拉电阻之间 这样 就可以加大 P0 口作为输出 口德驱动能力 使得 LED 能按照正常的亮度显示出数字 LED 与单片机接口间的设计 程序程序设计设计 ORG 0000H LJMP START ORG 000BH LJMP ABC ORG 0800H START ACK BIT PSW 5 CLR P3 5 MOV TMOD 01H SETB ET0 SETB EA SETB TR0 SDA BIT P3 6 SCL BIT P3 7 MOV TH0 0F8H MOV TL0 30H SJMP ABC MOV TH0 0F8H MOV TL0 30H LCALL START1 MOV A 90H LCALL WRBYTE LCALL CACK JNB ACK STOP MOV A 00H LCALL WRBYTE LCALL CACK JNB ACK STOP LCALL START1 MOV A 91H LCALL WRBYTE LCALL CACK JNB ACK STOP LCALL YS LCALL RDBYTE LCALL MNACK LCALL STOP LCALL ZHUANGHUAN LCALL XIANSHI RETI 名称 STOP 描述 停止 I2C 总线子程序 发送 I2C 总线停止条件 STOP CLR SDA 发送停止条件的数据信号 NOP NOP SETB SCL 发送停止条件的时钟信号 NOP NOP NOP NOP NOP 起始条件建立时间大于 4 7us SETB SDA 发送 I2C 总线停止信号 NOP NOP NOP NOP NOP 延迟时间大于 4 7us RET ZHUANGHUAN MOV B 51 DIV AB MOV 70H A MOV A B CLR F0 SUBB A 1AH MOV F0 C MOV A 10 MUL AB MOV B 51 DIV AB JB F0 AG ADD A 5 AG MOV 71H A RET XIANSHI MOV A 01H MOV P1 A SETB P2 1 CLR P2 1 MOV A 70H MOV DPTR TABLE MOVC A A DPTR MOV P1 A CLR P1 7 SETB P2 0 CLR P2 0 LCALL YS MOV P1 02H SETB P2 1 CLR P2 1 MOV A 71H MOV DPTR TABLE MOVC A A DPTR mov P1 A SETB P2 0 CLR P2 0 LCALL YS RET 名称 STRRT 描述 启动 I2C 总线子程序 发送 I2C 总线起始条件 START1 SETBSDA 发送起始条件数据信号 NOP 起始条件建立时间大于 4 7us SETBSCL 发送起始条件的时钟信号 NOP NOP NOP NOP NOP 起始条件锁定时间大于 4 7us CLR SDA 发送起始信号 NOP NOP NOP NOP 起始条件锁定时间大于 4 7us CLRSCL 钳住 I2C 总线 准备发送或接收 数据 NOP RET 名称 MACK 描述 发送应答信号子程序 MACK CLRSDA 将 SDA 置 0 NOP NOP SETBSCL NOP NOP NOP NOP NOP 保持数据时间 大于 4 7us CLRSCL NOP NOP RET 名称 MNACK 描述 发送非应答信号子程序 MNACK SETBSDA 将 SDA 置 1 NOP NOP SETBSCL NOP NOP NOP NOP NOP CLRSCL 保持数据时间 大于 4 7us NOP NOP RET 名称 CACK 描述 检查应答位子程序 返回值 ACK 1 时表示有应答 CACK SETBSDA NOP NOP SETBSCL CLRACK NOP NOP MOVC SDA JCCEND SETBACK 判断应答位 CEND NOP CLRSCL NOP RET 名称 WRBYTE 描述 发送字节子程序 字节数据放入 ACC WRBYTE MOVR0 08H WLP RLCA 取数据位 JCWRI SJMPWRO 判断数据位 WLP1 DJNZR0 WLP NOP RET WRI SETBSDA 发送 1 NOP SETBSCL NOP NOP NOP NOP NOP CLRSCL SJMPWLP1 WRO CLRSDA 发送 0 NOP SETBSCL NOP NOP NOP NOP NOP CLRSCL SJMPWLP1 名称 RDBYTE 描述 读取字节子程序 读出的数据存放在 ACC RDBYTE MOVR0 08H RLP SETBSDA NOP SETBSCL 时钟线为高 接收数据位 NOP NOP MOVC SDA 读取数据位 MOVA R2 CLRSCL 将 SCL 拉低 时间大于 4 7us RLCA 进行数据位的处理 MOVR2 A NOP NOP NOP DJNZR0 RLP 未够 8 位 继续读入 RET MOVR1 0F0H 延时 等待其它芯片复位完成 DJNZR1 TABLE DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 98H YS MOV R6 10 LOOP1 MOV R7 98 DJNZ R7 DJNZ R6 LOOP1 RET END 测试测试分析分析 1 当 IN0 口输入电压值为 0V 时 显示结果如图所示 测量误差为 0V 输入电压为 0V 时 LED 的显示结果 2 当 IN0 输入电压值为 0 3V 时 显示结果如图所示 输入电压为 0 3V 时 LED 的显示结果 3 当 IN0 口输入电压值为 5 0V 时 显示结果如图 输入电压为 5 0V 时 LED 的显示结果 误差分析误差分析 通过以上仿真测量结果可得到简易数字电压表与 标准 数字电压表对比 测试表 如下表 4 所示 简易数字电压表与 标准 数字电压表对比测试表 标准电简易电压表绝对误差 V 压值 V测量值 V 0 000 000 00 0 500 510 01 1 001 000 00 1 501 510 01 2 002 000 00 2 502 500 00 3 003 000 00 3 503 500 00 4 004 000 00 4 995 000 01 由于单片机 AT89C51 为 8 位处理器 当输入电压为 5 00V 时 ADC0808 输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论