简易数字电压表2路Word下载.docx
- 文档编号:20761623
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:9
- 大小:84.25KB
简易数字电压表2路Word下载.docx
《简易数字电压表2路Word下载.docx》由会员分享,可在线阅读,更多相关《简易数字电压表2路Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
综上所述,按系统功能实现要求及我们手里边现有的元器件,决定控制系统采用低功耗、高性能的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系列单片机定义文件
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<
t;
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[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<
m++)
ALE=1;
_nop_();
ALE=0;
//转换通道地址锁存
START=1;
START=0;
//开始转换命令
_nop_();
//延时4微秒
while(EOC==0);
//等待转换结束
OE=1;
ad_data[m]=addata;
OE=0;
s++;
//取AD值,地址加1
ad_con=0x00;
//控制复位
/**************主函数****************/
main()
P0=0xff;
//初始化端口
P2=0x00;
P1=0xff;
while
(1)
scan();
//依次显示2个通道值一次
test();
//测量转换一次
//*********************结束**************************//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 电压表