目录摘要 2 关键词21 概述 31.1设计意义 31.2系统主要功能 32 硬件电路设计方案及描述32.1 设计方案 3 2.2 主要元器件的介绍 42. 3控制电路模块132.4 元件清单16 3数字式电流表的软件设计163.1系统程序设计总方案 163.2系统子程序设计 17 4数字式电流表的调试194.1软件调试 19 4.2显示结果及误差分析 20 5总结22附录1.电路原理图及仿真图23附录2. 程序代码24参考文献 26基于单片机的简易数字电流表设计摘要数字电流表的诞生打破了传统电子测量仪器的模式和格局。
它显示清晰直观、读数准确,采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件。
数字电流表是建立在数字电压表的基础上,让电压表与电阻串联,其显示的是电流,数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。
数字电流表把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起,成为仪器、仪表领域中独立而完整的一个分支,数字电流表标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河。
本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用ADC0809。
系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。
简易数字电流测量电路由A/D转换、数据处理、显示控制等组成。
关键词:单片机 AT89C51 A/D转换ADC0809数据处理1 .概述1.1设计意义通过课程设计,掌握电子设计的一般步骤和方法,锻炼分析问题解决问题的能力,学会如何查找所需资料,同时复习以前所学知识并加深记忆,为毕业设计打好基础,也为以后工作作准备。
通过对选题的分析设计,学习数字电流表的工作原理、组成和特性;掌握数字电流表的校准方法和使用方法;1.2系统主要功能A、利用AD转换芯片和精密电阻测量0~20mA电流B、系统工作符合一般数字电流表要求2 硬件电路设计方案及描述2.1 数字式电流表系统硬件设计硬件电路设计主要包括:AT89S51单片机系统,A/D转换电路,显示电路。
测量最大电流为20ma,显示最大值为20.00ma。
本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电流表。
硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LED显示系统、时钟电路、复位电路以及测量电流输入电路。
硬件电路设计框图如图2.1所示。
2.1数字式电流表系统硬件设计框图2.2 主要元器件的介绍2.2.1单片机AT89S51AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS 8位单片机。
图4.2和4.3分别为其实物图和内部总体结构图。
AT89S51片内含有4k字节Flash闪速存储器,128字节内部 RAM,32个I/O 口线,看门狗(WDT),两个数据指针,两个16 位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存 RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要性能参数与MCS-51产品指令系列完全兼容;4K字节在系统编程(ISP)Flash闪速存储器;1000次擦写周期;4.0~5.5 V工作电压范围;全静态工作模式:0Hz~33MHz;三级程序加密锁;128字节内部RAM;32个可编程I/O口线;2个16位的定时/计数器;6个中断源;全双工串行UART通道;低工耗空闲和掉电模式;中断可从空闲模式唤醒系统;看门狗(WDT)及双数据指针;掉电标识和快速编程特性;灵活的在系统编程2.2.1 AT89S51的引脚AT89S51芯片为40引脚双列直插式封装,其引脚排列如图2.2所示。
图2.2 AT89S51的引脚图(1)VCC:电源电压;(2)GND:接地;(3)P0口:P0口是一组8位漏极开路双向I/O口,每位引脚可驱动8个TTL逻辑门路。
对P0口的管脚写“1”时,被定义为高阻抗输入。
在访问外部数据存储器或程序存储器时,它可以被定义为数据总线和地址总线的低八位。
在FLASH编程时,P0 口作为原码输入口;当FLASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
(4)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口的输出缓冲器可驱动4个TTL逻辑门电路。
对P1口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。
P1口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
(5)P2口:P2口是一个内部提供上拉电阻的8位双向I/O口,P2口的输出缓冲器可驱动4个TTL 逻辑门电路。
对P2口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。
P2口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在访问8位地址外部数据存储器时,P2口线上的内容,在整个访问期间不改变。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(6)P3口:P3口是一个内部提供上拉电阻的8位双向I/O口,P3口的输出缓冲器可驱动4个TTL 逻辑门电路。
对P3口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。
P3口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。
P3口除了一般I/O线的功能外,还具有更为重要的第二功能。
P3口同时为FLASH编程和编程校验接收一些控制信号P3口的第二功能(7) RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(8) ALE//RPOG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
(9)/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。
但在访问外部数据存储器时,这两次有效的信号将不出现。
(10)/EA/VPP:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
AT89S51 有256 个字节的内部RAM,80H-FFH 高128 个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
·定时器0和定时器1:AT89S51的定时器0和定时器1 的工作方式与AT89C51 相同。
定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择,这两个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。
其中模式0、1和2都相同,模式3不同。
·定时器2:定时器2 是一个16 位定时/计数器。
它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2 位选择。
定时器2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON 的控制位来选择。
定时器2 由两个8 位寄存器TH2 和TL2 组成,在定时器工作方式中,每个机器周期TL2 寄存器的值加1,由于一个机器周期由12 个振荡时钟构成,因此,计数速率为振荡频率的1/12。
在计数工作方式时,当T2 引脚上外部输入信号产生由1 至0 的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5SP2 期间,对外部输入进行采样。
若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的S3P1 期间寄存器加1。
由于识别1 至0 的跳变需要2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的1/24。
为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
·可编程时钟输出:定时器2 可通过编程从P1.0 输出一个占空比为50%的时钟信号。
P1.0 引脚除了是一个标准的I/O 口外,还可以通过编程使其作为定时/计数器2 的外部时钟输入和输出占空比50%的时钟脉冲。
当时钟振荡频率为16MHz 时,输出时钟频率范围为61Hz—4MHz。
·UART:AT89S51的工作方式与AT89C51工作方式相同。
串口为全双工结构,表示可以同时发送和接收,它还具有接收缓冲,在第一个字节从寄存器读出之前,可以开始接收第二个字节。
(但是如果第二个字节接收完毕时第一个字节仍未读出,其中一个字节将会丢失)。
串口的发送和接收寄存器都是通过SFR SBUF进行访问的。
写入SBUF的数据装入发送寄存器,对SBUF的读操作是对物理上分开的接收寄存器进行访问。
该串口有4种操作模式(模式0、模式1、模式2和模式3),在这4种模式中,发送过程是以任意一条写SBUF作为目标寄存器的指令开始的,模式0时接收通过设置R0=0及REN=1初始化,其他模式下如若REN=1则通过起始位初始化。
·中断:AT89S51共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。
这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。
IE 也有一个总禁止位EA,它能控制所有中断的允许或禁止。
定时器2 的中断是由T2CON 中的TF2 和EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2 或EXF2 产生中断,而由软件清除中断标志位。