单片机数字万用表课程设计.docx
- 文档编号:25888772
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:15
- 大小:202.82KB
单片机数字万用表课程设计.docx
《单片机数字万用表课程设计.docx》由会员分享,可在线阅读,更多相关《单片机数字万用表课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机数字万用表课程设计
《单片机》课程设计
题目:
基于单片机的数字多用表设计
专业:
电力系统及其自动化
班级:
本自动化
姓名:
学号:
指导老师:
小组成员:
成绩:
摘要
本次设计采用单片机芯片AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
为使系统更加稳定,使系统的整体精度得以保障,本电路使用了ADC0809数据转换芯片,单片机系统设计采用AT89S51作为主控芯片,配以RC上电复位电路和震荡电路,程序每执行周期耗时缩到最短,这样保证了系统的实时性。
关键词
数字万用表AT89S51单片机AD转换与控制
摘要…………………………………………………………………2
关键词………………………………………………………………2
绪论
1.数字万用表设计背景……………………………………………4
1.1数字万用表的设计目的和意…………………………………4
1.2数字万用表的设计依据…………………………………….4
1.3数字万用表设计重点解决的问题………………………………4
2.数字万用表总体设计方案……………………………………5
2.1数字万用表的基本原理……………………..…….…….5
2.2芯片选择及功能简介………………………………………..
2.3电路原理图及仿真图……………………………………..……….
2.4系统板上硬件连线………………………………..………..……
2.5程序设计内容………………………………..………..……
2.6C语言源程序………………………………..………..……
3总结……………………………………….….…………
4心得体会
5参考文献……………………………..…….………..13
绪论
数字万用表亦称数字多用表,简称DMM(DigtialMultimeter)。
它是采用数字化测量技术,把连续的模拟量转换成不连续的,离散的数字形式并加以显示的仪表。
传统的指针式万用表功能单精度低,不能满足数字化时代的需求,采用单片机的数字万用表,已被广泛用于电子及工业测量、工业自动化仪表、自动测试系统等智能测量领域,显示出强大的生命力。
数字万用表具有以下几点优势:
(1)显示清晰直观,计数准确
为了提高观察的清晰度,新型的手势式数字万用表已普遍采用字高为26mm的大屏幕LCD(液晶显示器)。
有些数字万用表还增加了背光源,以便于夜间观察读数。
(2)显示位数
数字万用表的显示位数通常为3位到8位半。
(3)准确度高
准确度是测量结果中系统误差与随机误差的综合。
它表示测量结果与真值的一致程度,也反映了测量误差的大小,准确度愈高,测量误差愈小。
数字万用表的准确度远优于指针万用表。
(4)分辨力高
数字万用表在最低电压量程上末位1个字所代表的电压值,称作仪表的分辨率,宏观世界反映了仪表灵敏度的高低,分辨率随显示位数的增加而提高。
(5)测试功能强
数字万用表不止可以测量直流电压,直流电流,电阻二极管正向压降等等。
(6)测量范围宽
数字万用表可满足常规电子测量的需要,智能数字万用表的测量范围更宽广。
(7)测量速率快
数字万用表在每秒中内对被电压的测量次数称为测量速率,单位是次/秒。
它主要取决于A/D转换器的转换速率。
一般数字万用表的测量速率为2到5次/秒。
有的呢过达到20次/秒以上,另外有的比这个还要高得多。
数字万用表可满足不同用户对测量速率的需要。
(8)输入阻抗高
数字万用表电压档具有很高的输入阻抗,通常为10至10000M欧姆,从被测电路上吸取的电流小,不会影响被测信号源的工作状态,能减小由信号源内阻引起的测量误差。
(9)保护功能完善,抗干扰能力强
数字万用表具有比价完善的保护电路,过载能力强,新型的数字万用表还增加了高压保护器件,能防止浪涌电压。
本设计就是居于这个设计理念一个基于单片机的数字万用表。
该设备具有直观简单的优点。
并且能深入的说明万用表的测量原理。
能直观的了解万用表各个部分的结构和测试原则。
1数字万用表的设计背景
在本章中主要介绍了系统的设计原则和总体方案及其系统概述等。
1.1数字万用表的设计目的和意义
数字万用表是当前电子、电工、仪器、仪表和测量领域大量使用的一种基本测量,已被广泛应用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
随着时代科技的进步,数字万用表的功能越来越强大,把电量及非电量的测量技术提高到崭新水平。
1.2数字万用表的设计依据
根据数字万用表的原理,结合以下的设计要求:
"设计一个数字万用表,能够测量直流电压值,直流电流、直流电阻。
实现多级量程的直流电压测量,其量程范围是200mv、2v,20v,200v和500v.实现多级量程的直流电流测量,其量程范围是2mA,20mA,200mA、2A和20A.实现多级量程的电阻测量,其量程范围是200、2k,20k,200k和2M。
由此设想出以下的解决方法,即数字万用表的系统由分流电阻、分压电阻、基准电阻、电容测试芯片电路、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体精度得以保障。
1.3数字万用表设计重点解决的问题
本设计重点要解决的问题是对不同量程的各种测量内容的转换,还有就是各部分电路组合成一个完整的数字万用表,而难点解决的问题就是程序的设计,要保正其可行性从而保证设计的正确性。
2数字万用表总体设计方案
2.1数字万用表的基本原理
数字万用表的最基本功能是能够测量直流电压,直流电流,还有能够测电量阻。
下面我们分别介绍各个部分的组成:
(1)、模数(A/D)转换与数字显示电路
常见的物理量都是幅值(大小)连续变化的所谓模拟量(模拟信号)。
指针式仪表可以直接对模拟电压、电流进行显示。
而对数字式仪表,需要把模拟电信号(通常是电压信号)转换成数字信号,再进行显示和处理(如存储、传输、打印、运算等)。
数字信号与模拟信号不同,其幅值(大小)是不连续的。
这种情况被称为是"量化的"。
若最小量化单位(量化台阶)为,则数字信号的大小一定是的整数倍,该整数可以用二进制数码表示。
但为了能直观地读出信号大小的数值,需经过数码变换(译码)后由数码管或液晶屏显示出来。
(2)、多量程数字电压表原理
在基准数字电压表头前面加一级分压电路(分压器),可以扩展直流电压测量的量程。
(3)多量程数字电流表原理
测量电流的原理是:
根据欧姆定律,用合适的取样电阻把待测电流转换为相应的电压,再进行测量。
(4)电阻测量原理
数字万用表中的电阻档采用的是比例测量法。
由稳压管ZD提供测量基准电压,流过标准电阻和被测电阻的电流基本相等
2.2芯片选择及功能简介
这次的课程设计中,我们这一种选择了芯片AT89S51和ADC0809。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40Pin封装的双列直接PDIP封装,芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口左边那列引脚逆时针数起,依次为1、2、3、4、…、40,其中芯片的1脚顶上有个凹点。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。
1、主电源引脚(2根)VCC(Pin40):
电源输入,接+5V电源GND(Pin20):
接地线2、外接晶振引脚(2根)XTAL1(Pin19):
片内振荡电路输入端XTAL2(Pin20):
片内振荡电路输出端3、控制引脚(4根)RST/VPP(Pin9):
复位引脚,出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号PSEN(Pin29):
外部存储器读选通信号EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7。
AT89S51的主要性能参数:
与MCS-51产品指令系统完全兼容4k字节在系统编程(ISP)Flash闪速存储器1000次擦写周期4.0-5.5V的工作电压范围全静态工作模式:
0Hz-33MHz三级程序加密锁128×8字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP字节或页写模式)
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片1.主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
3.外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。
首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
2.3电路原理图
2.4系统板上硬件连接
a) 把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
b) 把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
d) 把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
e) 把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
f) 把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
g) 把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
h) 把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。
i) 把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
2.5程序设计内容
1. 由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。
因此产生CLK信号的方法就得用软件来产生了。
2.由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值 (D/256*VREF)
2.6C语言源程序
#include
unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsignedchardispbuf[8]={10,10,10,10,10,0,0,0};
unsignedchardispcount;
unsignedchargetdata;
unsignedinttemp;
longinti;\\代替原来的unsignedchari;
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
voidmain(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
TR0=1;
ST=1;
ST=0;
while
(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
i=getdata*196;
dispbuf[5]=i/10000;
i=i%10000;
dispbuf[6]=i/1000;
i=i%1000;
dispbuf[7]=i/100;
/*原来的:
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf[1]=10;
dispbuf[2]=10;
dispbuf[3]=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;*/
ST=1;
ST=0;
}
}
}
voidt0(void)interrupt1using0//定时器0 中断服务
{
CLK=~CLK;
}
voidt1(void)interrupt3using0//定时器1 中断服务
{
TH1=(65536-6000)/256;
TL1=(65536-6000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==5)
{
P1=P1|0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
3.总结
设计结果综述:
(1)、数字万用表完成的功能主要是对电压、电流、电阻的测量,它主要由分流电阻、分压电阻、基准电阻、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
(2)、数字万用表属于一种测量工具,其本身的好坏直接影响到测量结果,因此上面的设计在实物上只可以测直流电压,在仿真上可以测出直流电压电流和电阻。
(3)、单片机部分跟AD转换部分是整个设计的核心,ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值(D/256*VREF);AT89S51单片机作为主控芯片,配以RC上电复位电路和震荡电路,使系统稳定运行。
(4)、在本次软件设计过程中,采用的是C语言程序。
4心得体会
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的仿真环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
通过这次的课程设计,使我更加透彻的了解到我在单片机这方面的知识的浅薄,从而促进了握要更加了解单片机知识的决心。
5参考文献
C语言程序设计第三版
51单片机开发与应用基础教程(C语言版)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 万用表 课程设计