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

下载本文档

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

文档简介

湖 南 科 技 大 学单 片 机 课 程 设 计 题 目 基于单片机的数字电流表设计姓 名 学 院 专 业 学 号 指导教师 成 绩 二一一年 五 月 二十六日 单片机课程设计任务书一、设计题目:基于单片机的数字电流表设计二、设计要求:1、 数字电流表在平常工作环境中能良好工作2、 能测01000mA电流,至少能达1%的精度3、 要求掌握I/V信号转换,A/D转换器的使用和数据采集系统的设计4、 电流表能数字显示,且由单片机处理采集数据并驱动LED显示摘 要本设计是通过采样电阻及信号放大电路将待测的电流信号I转换成01V电压信号, 由A/D转换器采集电压信号,并将电压转换的数字信号传输给单片机,由单片机完成对采样信号的处理、分析,最后输出信号驱动LED显示器,显示被测的电压值。目 录一、功能要求 1二、原理及方案论证.2三、系统硬件电路的设计3四、系统程序的设计4五、调试及设计结果.5参考文献 .6 一、功能要求1、数字电流表在平常工作环境中能良好工作2、能测01000mA电流,至少能达1%的精度3、要求掌握I/V信号转换,A/D转换器的使用和数据采集系统的设计4、电流表能数字显示,且由单片机处理采集数据并驱动LED显示二、原理及方案论证1、数字电流表工作原理1.1采样电阻网络原理如下图所示,输入被测电流通过量程转换开关S1S4,流经采样电阻R1R4,由欧姆定律可知:U=I*R,因而转换输出电压为0V0.1V的电压,输出电压可再经后续放大电路放大处理。 1.2高共模抑制比放大电路如下图,由双运放组成的同相输入高共模抑制比放大电路,其闭环输出可表示为:为使共模输入为0,可令R1/R2=R4/R3,此时电路的差动闭环增益为Kd=1+R1/R2, U0=Kd(U1-U2); 下图即Kd=11,U0=11(U1-U2); 1.3通用A/D转换器ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC0832 具有以下特点: 8 位分辨率; 双通道 A/D转换; 输入输出电平与 TTL/CMOS 相兼容; 5V 电源供电时输入电压在 05V 之间; 工作频率为 250KHZ,转换时间为 32S; 一般功耗仅为 15mW; 8P、14PDIP(双列直插)、PICC 多种封装; 商用级芯片温宽为0C to +70C,工业级芯片温宽为- 40C to +85C;芯片接口说明 CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道 0,或作为 IN+/-使用。 CH1 模拟输入通道 1,或作为 IN+/-使用。 GND 芯片参考 0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。 1.4 AT89C52单片机 AT89C52 是美国ATMEL 公司生产的低电压,高性能CMOS 8 位单片机,片内含8k bytes 的可反复擦写的只读程序存 储器(PEROM)和256 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产, 与标准MCS-51 指令系统及8052 产品引脚兼容,片内置通用8 位 央处理器(CPU)和Flash 存储单元,功能强大AT89C52 单片机适合于许多较为复杂控制应用场合。 主要性能参数 与MCS-51 产品指令和引脚完全兼容 8k 字节可 擦写Flash 闪速存储器 1000 次擦写周期 全静态操作:0Hz24MHz 三级加密程序存储器 256 8 字节内部RAM 32 个可编程I O 口线 3 个16 位定时计数器 8 个 断源 可编程串行UART 通道 低功耗空闲和掉电模式 功能特性概述 AT89C52 提供以下标准功能:8k 字节Flash 闪速存储器,256 字节内部RAM,32 个I O 口线,3 个16位定时计数器,一个6 向量两级 断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2、方案论证 本设计采用精密采样电阻(9欧、0.9欧、0.09欧、0.01欧),电阻精度可达0.1%可忽略;八位A/D精度为5/256(V);因而除去放大电路增益误差及线性误差,电流表精度约为(5/256)/11,约为1.7mA;对于1000mA的总量程精度可达0.1%,因而方案可达设计要求。三、系统硬件电路的设计 系统仿真接线简图本设计中用到AT89C52单片机、八位ADC AD0832、发光二极管、六位八段显示数码管LED,通用运放 UA741 、PNP管及必要的电阻、电容元件等。系统原理方框图电路仿真简图如上图。系统方框图四、系统程序设计程序流程图如下: 系统程序流程图C语言程序如下:#include/包含相应的头文件#include#include#define uchar unsigned char#define uint unsigned intuchar axs6,azs6,ac10,dc6;void ITOAZ(int num,uchar *p); void ITOAX(int num,uchar *p);float U,U1;sbit CS=P34;/定义数模转换器硬件对应引脚sbit CLK=P35;sbit DO=P36;sbit DI=P37;/*读写AD0832函数*/*/unsigned char ReadADC(unsigned char channel) unsigned char j; unsigned char Temp=0; DI=1; _nop_(); _nop_(); CS=0;/拉低CS端 _nop_(); _nop_(); CLK=1;/拉高CLK端 _nop_(); _nop_(); CLK=0;/拉低CLK端,形成下降沿1 _nop_(); _nop_(); CLK=1;/拉高CLK端 DI=(channel1)&0x1; _nop_(); _nop_(); CLK=0;/拉低CLK端,形成下降沿2 _nop_(); _nop_(); CLK=1;/拉高CLK端 DI=channel&0x1; _nop_(); _nop_(); CLK=0;/拉低CLK端,形成下降沿3 DI=1;/控制命令结束 _nop_(); _nop_(); for(j=0;j8;j+) /处理读入8位数据 CLK=0;_nop_(); Temp=(Temp0;a-)for(i=0;i2;i+); /将浮点数转成函数void ITOC(float f,uchar *c)float zs,xs;int bxs,bzs,i,k=0;xs=modf(f,&zs); /分离整数部分与小数部分函数 if(P3=0XFE) bxs=(int)(xs*100)+0.5); else bxs=(int)(xs*100)+0.5); /小数点后两位有效数字ITOAX(bxs,axs); /把小数部分转换成字符串存入axs数组bzs=(int)zs; /把整数部分转成整型ITOAZ(bzs,azs); /把整数部分转换成字符串存入azs数组 for (i=0;axsi!=s;i+) /把最终结果存入c数组ci=axsi; ci=.;for(k=0,i=i+1;azsk!=s;k+,i+) ci=azsk; if(U0) ci=-; else ci=0xff;ci+1=s;/将整型数转换成对应的void ITOAZ(int num,uchar *p) uchar w,i=0; dow=num%10; /将整型数各位分离,并转换成对应的字符存入a中pi=w; num=num/10;i+;while(num); pi=s;/将小数数部分转换成对应的void ITOAX(int num,uchar *p) uchar w,i=0; dow=num%10; /将整型数各位分离,并转换成对应的字符存入a中pi=w; num=num/10;i+; while(num); while(i2) pi=0;i+; pi=s; w=pi;/显示译码函数void decode(uchar *n,uchar *dn) uchar i;for(i=0; ni!=s;i+) switch( ni) case 0: dni=0x3F;break; case 1: dni=0x06;break; case 2: dni=0x5B;break; case 9: dni=0x6F;break; case 3: dni=0x4F;break; case 4: dni=0x66;break; case 5: dni=0x6D;break; case 6: dni=0x7D;break; case 7: dni=0x07;break; case 8: dni=0x7F;break; case 46: dni=0x80;break; case-:dni=0x40;break; default:dni=0x00;break; dni=s;/*/*/*主换函数*/*/void main(void)uchar i,j,P2_;float A;while(1)U=ReadADC(0)/256.0;switch(P1)case 0xfe:A=U*10*1.025;break; case 0xfd:A=U*100/1.09;break; case 0xfb: A=U*1000;break; default: A=0.0;break;A=10*A;ITOC(A,ac);decode(ac,dc); P2=0XFf; P2_=0Xfe;for(j=0;dcj!=s;j+) P2=0XFf; P0=dcj; P2=P2_; delay(150); P2_=_crol_(P2_,1); /*P2_=1;*/ /*/*/ 五、 调试及设计结果1、 PROTUSE系统仿真结果 系统仿真能正常运行,达设计所有指标,仿真部分电路如下: PROTUSE系统仿真效果图2、实际硬件制作结果 根据电路图自制电路,测试结果:能正常测量1

温馨提示

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

评论

0/150

提交评论