简易数字电压表2路.docx

上传人:b****5 文档编号:7640167 上传时间:2023-01-25 格式:DOCX 页数:9 大小:84.25KB
下载 相关 举报
简易数字电压表2路.docx_第1页
第1页 / 共9页
简易数字电压表2路.docx_第2页
第2页 / 共9页
简易数字电压表2路.docx_第3页
第3页 / 共9页
简易数字电压表2路.docx_第4页
第4页 / 共9页
简易数字电压表2路.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

简易数字电压表2路.docx

《简易数字电压表2路.docx》由会员分享,可在线阅读,更多相关《简易数字电压表2路.docx(9页珍藏版)》请在冰豆网上搜索。

简易数字电压表2路.docx

简易数字电压表2路

简易数字电压表-2路

摘要

单片机是一种集成电路芯片,采用超大规模技术,具有数据处理能力。

随着单片机技术的飞速发展,单片机技术已成为一个国家现代化水平的重要标志。

本次设计是基于STC89C52单片机为核心的,以AD0809数模转换芯片采样、以数码管显示的具有电压测量功能的具有一定精度的数字电压表。

在实现基础功能的要求之上拓展了短路报警、高压报警等功能。

关键词:

单片机数模转换数字电压表

 

1.3显示方案

采用4位数码管显示。

虽然使用液晶的可以使电压表功能更完美,但考虑到价格,数码管虽然结构单一,但也能完成设计要求,所以我们选用4位数码管来完成显示。

(与单片机的连线图,从原理图上把那部分截过来)

1.4电源方案

采用USB供电,电路图如下:

将U2的USB接口接上电脑USB插口线或者接上电源转换器,这时电源指示灯发亮,表示USB电源供电正常即可。

使用十分方便。

1.5键盘部分

通过程序的扫描,判断按键,并切换到不同的功能模式中。

实现模式切换后可以实现电压表单路和循环显示所测电压值。

(也可以从原理图上截过来)

综上所述,按系统功能实现要求及我们手里边现有的元器件,决定控制系统采用低功耗、高性能的STC89C52单片机,A/D转换采用价格便宜,编程简单的ADC0809,显示部分,考虑到现有资源,采用共阳极4位8段数码管显示。

系统除能确保实现要求的功能外,还可以方便的进行8路其他A/D转换的测量和远程测量结果传送等拓展功能。

2系统硬件电路设计

简易数字电压测量电路由A/D转换、数据处理及显示控制等组成,电路原理图如图1.2所示。

(只接D0~1,满足2路输入)

A/D转换由集成电路ADC0809完成。

ADC0809具有8路模拟的输入端口,地址线(第23~25脚)可决定对哪一路模拟输入作A/D转换。

第22脚为抵制锁存控制,当输入高电平时,对地址信号进行锁存。

第6脚为测试控制,当输入一个2us宽高电平脉冲时,就开始A/D转换。

第7脚为A/D转换结束标志,当A/D转换结束时,第7脚输出高电平。

第9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出。

第10脚为ADC的始终输入端,利用单片机第30脚的6分频晶振频率,再通过14024二分频得到1MHz时钟。

单片机的P1、P3.0~P3.3端口作为4位LED数码管显示控制。

P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时显示的通道。

P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制。

3系统程序的设计

3.1初始化程序

系统上电时,初始化程序主要用来执行70H~73H内存清0和P2口置0等准备工作。

3.2主程序

刚上电时,系统默认为循环显示2个通道的电压值状态。

当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1s左右。

主程序在调用显示子程序与测量子程序之间循环。

主程序流程图如下:

3.3显示子程序

显示子程序采用动态扫描法实现4位数码管的数值显示。

测量所得的A/D转换数据存放在70H~73H内存单元中,测量数据在转换时需经过转换成为十进制BCD码存放在74H~77H单元中,其中77H存放通道标志数。

寄存器R3用作2路循环环控制,R0用作显示数据地址指针。

3.4A/D转换测量子程序

A/D转换测量子程序用来控制对ADC0809的2路模拟输入电压的A/D转换,并将对应数值移入70H~73H内存单元。

 

4调试及性能分析

4.1调试与测试

采用keilC51编译器进行源程序编译及仿真调试,将程序录进制作好的电路板进行软硬件联调。

4.1.1基础功能测试

进行端口电压对比测试。

测试对比表如表··所列。

表中标准电压值采用ut56数字万用表测得。

(表)

从表··中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在0.02V以内,这与采用8位A/D转换器所能达到的理论误差精度相一致,在一般的应用场合课满足要求。

4.1.2拓展功能

短路测试:

用导线将IN7与地短接,数码管显示为0,同时蜂鸣器报警。

高压报警测试:

把单片机接5.5V,蜂鸣器报警。

4.2性能分析

(1)由于单片机为8位处理器,当输入电压为5.00V是ADC0809输出数据值为255(FFH),因此单片机最高的分辨率为0.0196V(5/255)。

这就决定了改电压表的最高分辨率只能达到0.0196V,测试电压时一般以0.02V的幅度变化。

如果要获得更高的精度要求,应采用12位、13位的A/D转换器。

(2)从表··中可以看出,简易数字电压表测得的值基本上均比标准电压值偏大,这可以通过校正ADC0809的基准电压来解决(例如改变下拉电阻值)。

因为该电压表设计时直接用5V的宫殿电源作为基准带电压,所以电压可能有偏差。

另外也可通过软件怕编程来校正测量值。

(3)ADC0809的直流输入阻抗为1M欧姆,能满足常用的电压测试需要。

另外,经测试ADC0809可直接在2MHz的始终频率下工作,这样可省去二进制分频器14024集成块。

(4)当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。

但是量程越大,测量精度会越低。

5设计总结

通过为期2个星期的简易数字电压表的设计,我们结合所学过的课程,了解了简易仪表的发展状况,掌握了仪表的一把设计要求,工程设计方法,开发及设计工具使用方法,最重要的是通过这一设计实践过程,我们不再约束在理论上,而且锻炼了动手能力和分析解决问题的能力,积累了经验,培养了按部就班,一丝不苟的态度和对所学知识的综合应用能力,了解了很多课本上学不到的知识,为我们以后步入社会工作打下了一定的基础。

6致谢

首先我们非常感谢系里给我们这次机会来做课程设计,这让我们不仅强化了理论更强化了实践操作能力,也非常感谢指导老师们在本次设计中给予我们小组的帮助,无论是谢四莲老师严厉的指正还是岳舟老师细心的指导都让我们受益匪浅也十分感动,同时也感谢班上的同学在我们遇到困难时的热情帮助,在课程设计中,大家积极的交流与探讨也使我们受益非浅,希望在以后的学习道路中大家能够共同进步。

成功不是属于一个人的,而是属于大家的。

 

7参考文献

[1]楼然苗李光飞.《单片机课程设计指导》北京航空航天出版社,2009年3月,P1~P12

[2]万福君潘松峰.《单片机微机原理系统设计与应用》.中国科技大学出版社,2001年8月第2版,P28~P150

 

单片机C源程序清单

/*********************************************************************/

//2路电压表C程序

//使用keilC51ver7.09

/*********************************************************************/

/*使用AT89C52单片机,12MHZ晶振,P0口读入AD值,P2口作AD控制,用共阳LED数码管

P1口输出段码,P3口扫描,最高位指示通道(0-7)。

*/

#include"reg52.h"//52系列单片机定义文件

#include"intrins.h"//调用_nop_();延时函数用

#definead_conP2//AD控制口

#defineaddataP0//AD数据计入读入口

#defineDisdataP1//显示数据段码输出口

#defineucharunsignedchar//无符号字符(8位)

#defineuintunsignedint//无符号整数(16位)

sbitALE=P2^3;//锁存地址控制位

sbitSTART=P2^4;//启动一次转换位

sbitOE=P2^5;//0809输出数据控制位

sbitEOC=P3^7;//转换结束标志位

sbitDISX=Disdata^7;//LED小数点

//

//

ucharcodedis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

/*共阳七段LED段码表"0""1""2""3""4""5""6""7""8""9""不亮"*/

ucharcodescan_con[4]={0xfe,0xfd,0xfb,0xf7};//四位列扫描控制字

uchardataad_data[8]={0x00,0x00,0x00,0x00};//定义4个数据内存单元

uintdatadis[5]={0x00,0x00,0x00,0x00,0x00};//定义4个显示数据单元、1个数据暂存单元

//

//

/********1毫秒延时子函数**********/

delay1ms(uintt)

{

uinti,j;

for(i=0;i

for(j=0;j<120;j++)

;

}

//

//

/***********显示扫描子函数**********/

scan()

{

uchark,n;

inth;

dis[3]=0x00;//通道初值为0

for(n=0;n<2;n++)//每次显示2个数据

{

dis[2]=ad_data[n]/51;//测得值转换为三位BCD码,最大为5.00V

dis[4]=ad_data[n]%51;//余数暂存

dis[4]=dis[4]*10;//计算小数第一位

dis[1]=dis[4]/51;//

dis[4]=dis[4]%51;//

dis[4]=dis[4]*10;//计算小数第二位

dis[0]=dis[4]/51;//

for(h=0;h<500;h++)//每个通道值显示时间控制(约1秒)

{

for(k=0;k<4;k++)//四位LED扫描控制

{

Disdata=dis_7[dis[k]];

if(k==2){DISX=0;}

P3=scan_con[k];delay1ms

(1);P3=0xff;

}

}

dis[3]++;//通道值加1

}

}

//

//

/*******0809AD转换子函数***********/

test()

{

ucharm;

uchars=0x00;

ad_con=s;

for(m=0;m<2;m++)

{

ALE=1;_nop_();_nop_();ALE=0;//转换通道地址锁存

START=1;_nop_();_nop_();START=0;//开始转换命令

_nop_();_nop_();_nop_();_nop_();//延时4微秒

while(EOC==0);//等待转换结束

OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取AD值,地址加1

}

ad_con=0x00;//控制复位

}

//

//

/**************主函数****************/

main()

{

P0=0xff;//初始化端口

P2=0x00;

P1=0xff;

P3=0xff;

while

(1)

{

scan();//依次显示2个通道值一次

test();//测量转换一次

}

}

//

//

//*********************结束**************************//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1