基于51单片机的数字电流表设计.docx
- 文档编号:27544802
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:18
- 大小:756.71KB
基于51单片机的数字电流表设计.docx
《基于51单片机的数字电流表设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字电流表设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于51单片机的数字电流表设计
湖南科技大学
单片机课程设计
题目基于单片机的数字电流表设计
姓名
学院
专业
学号
指导教师
成绩
二o—一年五月二十六日
单片机课程设计任务书
一、设计题目:
基于单片机的数字电流表设计
二、设计要求:
1、数字电流表在平常工作环境中能良好工作
2、能测0——1000mA电流,至少能达1%的精度
3、要求掌握I/V信号转换,A/D转换器的使用和数据采集系统的设计
4、电流表能数字显示,且由单片机处理采集数据并驱动LED显示
摘要
本设计是通过采样电阻及信号放大电路将待测的电流信号I转换成0—IV电压信号,由A/D转换器采集电压信号,并将电压转换的数字信号传输给单片机,由单片机完成对采样信号的处理、分析,最后输出信号驱动LED显示器,显示被测的电压值。
功能要
求1
二、原理及方案论
证・•・・・2
三、系统硬件电路的设
计3
四、系统程序的设
计4
五、调试及设计结
果.5
参考文
献
6
一、功能要求
1、数字电流表在平常工作环境中能良好工作
2、能测0——1000mA电流,至少能达1%的精度
3、要求掌握I/V信号转换,A/D转换器的使用和数据采集系统的设计
4、电流表能数字显示,且由单片机处理采集数据并驱动LED显示
二、原理及方案论证
1、数字电流表工作原理
1.1采样电阻网络
原理如下图所示,输入被测电流通过量程转换开关S1——S4,流经采样电阻R1——R4,由欧姆定律可知:
U二I*R,因而转换输出电压为0V——0.IV的电压,输出电压可再经后续放大电路放大处理。
1.2高共模抑制比放大电路
如下图,由双运放组成的同相输入高共模抑制比放大电路,其闭环输出可表示为:
共模输入为0,可令R1/R2二R4/R3,此时电路的差动闭环增益为Kd=l+Rl/R2,U0二Kd(Ul-U2);下图即Kd二11,
UO=11(U1-U2);
1.3通用A/D转换器
ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。
由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前己经有很高的普及率。
ADC0832具有以下特点:
♦8位分辨率;♦双通道A/D转换;
♦输入输出电平与TTL/CMOS相兼容;
♦5V电源供电时输入电压在0~5V之间;
♦工作频率为250KHZ,转换时间为32US;
♦一般功耗仅为15mW;
♦8P、14P—DIP(双列直插)、PICC多种封装;
♦商用级芯片温宽为0°Cto+70°C,工业级芯片温宽为-40°Cto+85°C;
芯片接口说明
CS_片选使能,低电平芯片使能。
CH0模拟输入通道0,或作为IN+/-使用。
CH1模拟输入通道1,或作为IN+/-使用。
GND芯片参考0电位(地)。
DI数据信号输入,选择通道控制。
DO数据信号输出,转换数据输出。
CLK芯片时钟输入。
Vcc/REF电源输入及参考电压输入(复用)o
1.4AT89C52单片机
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位
单片机,片内含8kbytes的可反复擦写的只读程序存储器
(PEROM)和256bytes的随机存取数据存储器(RAM),器件采
用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。
主要性能参数
•与MCS-51产品指令和引脚完全兼容
-8k字节可擦写Flash闪速存储器
・1000次擦写周期
・全静态操作:
0Hz—24MHz
・三级加密程序存储器
・256X8字节内部RAM
・32个可编程I/0口线
・3个16位定时/计数器
・8个断源
・可编程串行UART通道
・低功耗空闲和掉电模式
功能特性概述
AT89C52提供以下标准功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/0口线,3个16位定时/计数器,一个6向量两级断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至OHz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
2、方案论证
木设计采用精密采样电阻(9欧、0.9欧、0.09欧、0.01欧),电阻精度可达0.1%可忽略;八位A/D精度为5/256(V);因而除去放大电路增益误差及线性误差,电流表精度约为(5/256)/II,约为1.7mA;对于1000mA的总量程精度可达0.1%,因而方案可达设计要求。
三、系统硬件电路的设计
系统仿真接线简图
本设计中用到AT89C52单片机、八位ADCAD0832、发光二极管、六位八段显示数码管LED,通用运放UA741、PNP管及必要的电阻、电容元件等。
系统原理方框图电路仿真简图如上图。
高共模抑制比放大电路
亠精密来样电阻网络
系统方框图
四、系统程序设计
程序流程图如下:
系统程序流程图
C语言程序如下:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharaxs[6],azs[6J,ac[10],de[6];
voidITOAZ(intnum,uchar*p);
voidITOAX(intnum,uchar*p);
floatU,U1;
sbitCS二P3"4;//定义数模转换器硬件对应引脚
sbitCLK二P3"5;
sbitDO=P3飞;
sbitDI二P3"7;
fslzkIxvlxkIxkIzsZzvizf
unsignedcharReadADC(unsignedcharchannel)
unsignedcharj;
unsignedcharTemp=0;
DI=1;
_nop_();
_nop_();
cs=o;〃拉低cs端
_nop_();
_nop_();
CLK=1;//拉高CLK端
_nop_();
_nop_();
CLK二0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
CLK二1;//拉高CLK端
DI=(channel>>l)&0xl;
_nop_();
_nop_();
CLK二0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
CLK二1;//拉高CLK端
DI=channel&0xl;
_nop_();
_nop_();
CLK二0;//拉低CLK端,形成下降沿3
DI=1;//控制命令结束
_nop_();
_nop_();
for(j=0;j<8;j++)//处理读入8位数据
{
CLK二0;
_nop_();
Temp=(Temp< _nop_(); CLK二1; } CS=1; CLK二0; DI二1; return(Temp);//返回转换值 } fSLXkIxkIxvtxkIzvlxkIzvlxxlxvlxvlxkI^/ /J^T>^T>f fslzkI^^lxkIxvlxkIxkI^%IxxfzkIzsZzvizs^z/ I%VxkIzxizkIz%1xs£xk1^xlxkIzxizkI^kIx%/xkJz^lxkI^v£^%lz^£x/ I^s^s^s^s^s^s^s^st //延时函数 voiddelay(uintn)uinta; uchari; for(a=n;a>0;a--) for(i=0;i<2;i++); } //将浮点数转成函数 voidIT0C(floatf,uchar*c)floatzs,xs; intbxs,bzs,i,k=0; xs二modf(f,&zs); //分离整数部分与小数部分函数 辻(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;axs[i]! ='s';i++)〃把最终结果存入c数组c[i]=axs[i]; c[i]=/; for(k=0,i二i+1;azs[k]! ='s';k++,i++) c[i]=azs[k]; if(U<0)c[i]二'-’; elsec[i]=0xff; c[i+l]=S5; } //将整型数转换成对应的 voidITOAZ(intnum,uchar*p) { ucharw,i=0; do { w=num%10;//将整型数各位分离,并转换成对应的字符存入a中 p[i]=w; num二num/10; i++; }while(num); p[i]二's'; //将小数数部分转换成对应的 voidIT0AX(intnum,uchar*p) { ucharw,i=0; do { w=num%10;//将整型数各位分离,并转换成对应的字符存入a中 p[i]=w; num二num/10; i++; }while(num); while(i<2) {p[i]二0;i++;} p[i]二's'; w=p[i]; } //显示译码函数 voiddecode(uchar*n,uchar*dn) {uchari; for(i=0;n[i]! 二's';i++) {switch(n[i]) {case0: dn[iJ=0x3F;break; case1: dn[i]=0x06;break; case2: dn[i]=0x5B;break; case9: dn[i]=0x6F;break; case3: dn[i]=0x4F;break; case4: dn[i]=0x66;break; case5: dn[i]=0x6D;break; case6: dn[i]=0x7D;break; case7: dn[i]=0x07;break; case8: dn[i]=0x7F;break; case46: dn[i]=0x80;break; case'-': dn[i]=0x40;break; default: dn[i]=0x00;break; } } dn[i]=*; } /sfzvizkIzkIzkIxxlxvizvlxkIxxlxf 彳、"7^"I、"卜"卜"I、叫7彳、"卜#卜"4彳、叫7彳."卜"1^"卜"I、叫7彳、叫u彳、"卜叫〜彳.V"I、叫J"卜V"I、叫7"卜叫“*1、叫z /vfzKlzkIxvlxxfxkIzkI^kIx%/xK1XsfzkIxvfzkIzkZzkIxxlz 彳、/卜彳、"卜V、"4彳J"卜"卜叫J#卜叫J彳、"卜彳、"卜"卜叫J"卜彳、"卜彳J"卜彳j彳、"卜彳、"卜"卜叫J"卜彳、"卜"卜彳u"卜 Ixlz^Xxvlxx£xkIxnIzkI^x£xxlxxlxvlx lI voidmain(void) uchari,j,P2_; floatA; while (1) { U=ReadADC(0)/256.0; switch(Pl) {caseOxfe: A=U*10*l.025;break; caseOxfd: A=U*100/l.09;break; caseOxfb: A=U*1000;break; default: A=0.0;break; } A二10*A; ITOC(A,ac); decode(ac,de); P2=0XFf; P2_=0Xfe; for(j=0;dc[j]! -s';j++) {P2=0XFf; P0二dc[j]; P2=P2_; delay(150); P2_=_crol_(P2_,1); /*P2_«=1;*/ fslzkIxvlxkIxxfzkIzsZzviz/ I^Xzxl^^/zK(^^ZxkI^^lxkI^xlz^JxKt^^Xxvlxx£xkIxnIz^lxvl^kI^x£xxlxK(^xlxvlx^lx%fx /I 五、调试及设计结果 1、PROTUSE系统仿真结果 系统仿真能正常运行,达设计所有指标,仿真部分电路如下: 数字电流表设计 PROTUSE系统仿真效果图 2、实际硬件制作结果 根据电路图自制电路,测试结果: 能正常测量10——1000mA电流, 达大部分设计要求。 实物测试结果如下: 实际制作效果图 参考文献: [1]测控电路.天津: 天津大学出版社,2010.09 [2]单片机原理及接口技术.北京: 北京航空航天大学出版社, 2005.10 [3]电子技术基础(模拟部分、数字部分).北京: 高等教育岀版社, 2006.01 [4]大学生电子设计与应用.北京: 中国电力出版社,2007.03
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 电流表 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)