基于AT89C51单片机的简易自动电阻测试仪设计.docx

上传人:b****5 文档编号:5158478 上传时间:2022-12-13 格式:DOCX 页数:30 大小:333.34KB
下载 相关 举报
基于AT89C51单片机的简易自动电阻测试仪设计.docx_第1页
第1页 / 共30页
基于AT89C51单片机的简易自动电阻测试仪设计.docx_第2页
第2页 / 共30页
基于AT89C51单片机的简易自动电阻测试仪设计.docx_第3页
第3页 / 共30页
基于AT89C51单片机的简易自动电阻测试仪设计.docx_第4页
第4页 / 共30页
基于AT89C51单片机的简易自动电阻测试仪设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于AT89C51单片机的简易自动电阻测试仪设计.docx

《基于AT89C51单片机的简易自动电阻测试仪设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的简易自动电阻测试仪设计.docx(30页珍藏版)》请在冰豆网上搜索。

基于AT89C51单片机的简易自动电阻测试仪设计.docx

基于AT89C51单片机的简易自动电阻测试仪设计

 

简易自动电阻测试仪

 

学院______自动化及其电气学院_______

专业班级__________自动化092____________

成员_____余华杰、陈沈杰、温昌省_____

指导老师___________项新建_______________

 

2011年12月15日

 

摘要

本设计根据题目要求制作一台简易自动电阻测试仪,能够测量100Ω、1kΩ、10kΩ、10MΩ四档不同的量程,并实现其中前三档的自动量程转换功能,同时自动显示小数点和单位。

基于这些要求,经过讨论,决定利用555多谐振荡电路将电阻参数转化为频率,频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。

通过输入单片机AT89C51控制继电器控制被测RC振荡电路频率的自动选择,输入输出控制采用键盘输入控制电路、LCD12864显示系统和报警控制电路组成,能很好的实现各个要求。

单片机具有可编程性,硬件的功能描述可完全在软件上实现,另一方面便于使仪表实现自动化,设计时间短,成本低,可靠性高。

关键字:

AT89C51单片机555多谐振荡电路继电器自动量程转换

Abstract

Thedesignonthebasisofthesubjectdemandproducedasimpleautomaticresistancetester,capableofmeasuring100OmegaOmega,1K,10K,10MOmegaOmegafourprofileatdifferentrange,andrealizestheautomaticconversionrangebeforethethird,whileautomaticallydisplayadecimalpointandunit.Basedontheserequirements,afterdiscussion,decidedtousethe555multivibratorcircuitresistanceparametersaretransformedintofrequency,frequencyofFSCMiseasilyhandledthedigitalquantity,ahighmeasuringprecision,ontheotherhand,soeasytorealizeautomationofinstrumentation,andchipmicroprocessorapplicationsystemhashigherreliability.Throughtheinputofsingle-chipAT89C51controlrelaytocontrolthetestedRCoscillatingcircuitfrequencyautomaticselection,input/outputcontrolusingthekeyboardinputcontrolcircuit,LCD12864displaysystemandanalarmcontrolcircuit,canachieveaverygoodall.Microcontrollerhavingprogrammable,hardwaredescriptionofthefunctioncanbecompletelyrealizedinsoftware,ontheotherhand,soeasytorealizeautomationofinstrumentation,shortdesigntime,lowcost,highreliability.

Keywords:

singlechipAT89C51555multivibratorcircuitrelayautomaticrangeswitching

 

一、选题背景

现代电子产品正以前所未有的速度,向着多功能化、体积最小化、功耗最低化的方向发展。

本次设计出具有四档量程的简易自动电阻测试仪,量程分别为100Ω、1kΩ、10kΩ、10MΩ四档,难点在于小电阻的测量精度。

测量时电阻值为3位数字显示(最大显示数必须为999),能自动显示小数点和2字单位,如98.7欧姆,并实现前三档的自动量程转换。

在本设计中我们着重介绍一种把电子元件的参数R转换成频率信号f,然后采用单片机控制后,再通过程序处理运算求出R,最后应用LCD12864显示的方法。

量程自动转换原理分别是RC振荡电路和LM555多谐振荡器,这样就能够把待测电阻转换为频率,而频率f是单片机很容易处理的数字量。

目前市面上测量电子元器件参数R的仪表种类较多,方法和优缺点也各有不同。

一般的测量方法都存在计算复杂,不易实现自动测量而且很难实现智能化等缺点。

将电阻参数转化为频率,这样处理一方面使测量精度提高了,另一方面也便于使仪表实现智能化,并能很好的实现各个要求。

二、方案论证

2.1方案论证与比较

方案一:

最基本的就是根据R的定义式来测量。

在如图2-4中,分别用电流表和电压表测出通过电阻的电流和通过电阻的电压,根据公式R=U/I求得电阻。

这种方法要测出两个模拟量,不易实现自动化。

而指针式万用表欧姆档是把被测电阻与电流一一对应,由此就可以读出被测电阻的阻值,如图2-5所示。

这种测量方法的精度变化大,若需要较高的精度,必须要较多的量程,电路复杂。

图2-1定义法测电阻图2-2万用表测电阻

方案二:

把电阻转换成频率信号f,转换的原理分别是RC振荡电路和555电路,单片机根据所选通道,向模拟开关送两路地址信号,取得振荡频率,作为单片机的时钟源,通过计数则可以计算出被测频率,再通过该频率,通过公式计算出各个电阻参数。

然后根据所测频率判断是否转换量程,或者是把数据处理后,把电阻的值送显示部分显示出相应的参数值,利用编程实现量程自动转换。

总结:

通过精确度以及方便使用的角度考虑,方案二的方法更好。

2.2设计思路

2.2.1总体方案组成和说明

本系统的电路设计方框图如图2-2所示,它由四部分组成:

①控制部分主芯片采用单片机AT89C51;②测量部分主要是采用利用RC振荡电路和555振荡电路实现将被测电阻转换为频率;③通道选择部分主要是通过51单片机I/O接口控制继电器来自动选择被测频率的档位;④显示部分是通过LCD12864、二极管指示灯及按键选择测量电路。

图2-3系统设计框图

2.2.2组成部分及说明

第一,控制部分

(1)分析说明:

本设计以单片机为核心,采用AT89C51单片机,利用其管脚特殊的功能以及具备的中断系统,延时程序来控制换挡,以及12864液晶屏的显示等等功能。

(2)原理图

 

图2-4单片机最小系统

第二,测量部分

(1)计算分析:

RC振荡电路时利用555振荡电路实现被测电阻的频率,通过51单片机的I/O接口的自动识别量程,来实现自动测量。

(2)原理图

图2-5LM555振荡电路

第三,通道选择部分

(1)分析说明:

本设计通过单片机控制来控制继电器的自动选择,继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。

故在电路中起着自动调节、安全保护、转换电路等作用。

(2)原理图

图2-6继电器自动选择

第四,显示部分

(1)分析说明:

使用12864液晶显示屏,具有画面效果好,分辨率高,抗干扰能力强等特点,可以显示4行字,符合本次设计任务的要求。

(2)原理图

图2-712864显示

三、设计实现

3.1测量电路设计

根据题目要求,采用555多谐振荡电路,将电阻量转换为相应的频率信号值。

考虑到单片机对频率的灵敏度,具体的讲就是单片机对10HZ~10KHZ的频率计数精度最高。

所以要选用合理的电阻和电容大小,同时又要考虑到不能使电阻的功率过大。

所以首先要确定对应档位时适合的频率,然后在确定电阻或电容值,从而算出4个电阻和电容的值以及对应频率范围。

电阻的测量采用“脉冲计数法”,如下图所示由555电路构成的多谐振荡电路,通过计算振荡输出的频率来计算被测电阻的大小。

555接成多谐振荡器的形式,其振荡周期为:

T=t1+t2=(ln2)(R1+Rx)*C1+(ln2)Rx*C1,得出:

即,求出Rx

表3-1振荡测量电路对应量程参数

档位

电阻R1

电容C1

频率范围

0~100Ω

R1=200Ω

C1=4.7uF

766~1543HZ

100Ω~1KΩ

R2=15KΩ

C2=10nF

8487~9492HZ

1KΩ~10KΩ

R3=20KΩ

C3=10nF

3606~6568HZ

10KΩ~10MΩ

R4=10MΩ

C4=4.7pF

10930~16387HZ

3.2通道选择电路设计

利用实现测量CD4052类别的转换,CD4052是差分4通道数字控制模拟开关器件,有A0和A1两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止电流。

表3-2CD4052真值表

INHIBIT

B

A

0

0

0

0x,0y

0

0

1

1x,1y

0

1

1

2x,2y

0

1

1

3x,3y

1

x

x

None

该电路通过CD4052双向模拟开关控制量程的自动切换,直到进入适当的量程为止。

电路流程图如下:

 

图3-3量程自动转换流程图

注:

实际测试时由于CD4052出现问题,我们改用继电器实现量程转换,但原理相同。

3.3控制电路设计

本设计使用单片机为核心部件,来控制换挡以及显示。

以下是单片机管脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89S52的一些特殊功能口,如表1所示:

表1P3特殊功能口

P3口引脚

第二功能

P3.0

RXD(串行口输入)

P3.1

TXD(串行口输出)

P3.2

INT0(外部中断0输入)

P3.3

INT1(外部中断1输入)

P3.4

T0(定时器0外部脉冲输入)

P3.5

T1(定时器1外部脉冲输入)

P3.6

WR(外部数据存储器写脉冲输出)

P3.7

RD(外部数据存储器读脉冲输出)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

3.4显示电路

系统的显示部分采用OCM12864液晶显示模块。

3.5软件设计

系统通过频率来控制量程自动切换,并根据RC振荡频率公式换算成对应的电阻,然后再控制显示模块输出。

图3-2程序设计流程图

四、测试及结果分析

4.1测试方法及使用的仪器

测量方法:

采用555多谐振荡电路,将电阻量转换为相应的频率信号值。

再利用单片机及有关程序对范围的选择,显示侧量出数值。

测试使用的仪器设备:

数字万用表、示波器。

4.2指标测试和测试结果

表4.1.2测试结果对照分析表

档位

测量值

测量值

实际值

0~100Ω

23Ω

14Ω

100Ω~1KΩ

768Ω

231Ω

1KΩ~10KΩ

5614Ω

5501Ω

10KΩ~10MΩ

8978KΩ

8870KΩ

五、结论

本设计实现了一种利用51单片机实现的简易电阻测试仪,基于单片机和量程自动切换电路的控制系统,能够根据待测电阻的大小实现适当频率的控制,再分别采样频率,通过程序计算待测电阻Rx并在12864液晶上显示。

并且测量的数据结果较稳定。

设计过程中出现问题有以下:

1.在测量振荡电路中电阻和电容值时,由于单片机对10HZ~10KHZ的频率计数精度最高。

所以要选用合理的电阻和电容大小。

同时又要考虑到不能使电阻的功率过大,这样给我们计算带来了很多的麻烦。

2.我们接收到频率较高,所以通过电路很难控制精确度,产生的误差比较大。

3.CD4052是差分4通道数字控制模拟开关器件,有A0和A1两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止电流。

但是其频率较高不能自动换挡,最终我们选择了继电器来显示代替CD4052来自动换挡的功能。

4、在实验过程中时常有捉襟见肘的感觉,一方面是理论不足,很多好的方案,好的思想由于理论的匮乏,无法理解,也不能使用,在以后的学习过程中理论的学习始终是重点;还有就是程序的问题,由于编程水平跟不上,加上思路也不清晰,导致程序的编写存在很大的问题,好的思想,无法在程序中展现出来,这也是以后需要加强的地方。

六、致谢

在做毕业设计的这段时间里,我学会了很多知识,同学之间的团结互助,老师孜孜不倦的教导,使我们感受了老师们认真负责的态度,毕业论文的制作给了我难忘的回忆。

在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;亲手设计电路图的时间里,记忆最深的是每一步小小思路实现时那幸福的心情;为了论文我曾赶稿到深夜,但看着亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。

这段旅程看似荆棘密布,实则蕴藏着无尽的宝藏。

参考文献

1.高吉祥,黄智伟,丁文霞.数字电子技术[M].北京:

电子工业出版社,2003年,第1版

2.邹其洪黄智伟高嵩.电工电子实验与计算机仿真[M].北京:

电子工业出版社,2003年,第1版

3.张友汉.电子线路设计应用手册[M].福建:

福建科学技术出版社.2000.7第一版.

4.黄智伟.电子电路计算机仿真设计[M].北京:

电子工业出版社,2004年第1版

 

附录

附录1:

主要元器件清单

单元电路

元器件

型号及大小

数量

5V电源电路

变压器

220V

1个

整流桥

2W10

2个

电解电容

2200UF

2个

电解电容

2200UF

2个

元片电容

104

4个

三极管

7805

1个

三极管

7905

1个

电阻

510Ω

2个

发光二极管

2个

插针

若干

多路选

择继电器

继电器

943-1C-SDS

8个

三极管

C8050

8个

电阻

1K

8个

二极管

8个

插针

若干

单片机

最小系统

芯片

AT89C51

1个

晶振

11.0592MHZ

1个

电容

22PF

2个

电容

10UF

1个

按钮开关

SW-PB

1个

电阻

10KΩ

1个

电阻

1KΩ

1个

插针

若干

555振荡电路

LM555

1个

电阻

4个

RC振荡电路

4个

未知电阻

 

附录2:

程序清单

/*12864子程序*/

#include

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint//宏定义

/*12864接口定义*/

sbitLCD_RS=P2^0;//1:

输入数据;0:

输入命令

sbitLCD_RW=P2^1;//1:

读数据0:

写数据

sbitLCD_EN=P2^2;//LCM使能端

#defineLCD_DATAP1//12864总线端口

/*LCD功能初始化指令*/

#defineCLEAR_SCREEN0x01//清屏指令:

清屏且AC值为00H

#defineAC_INIT0x02//将AC设置为00H。

且游标移到原点位置

#defineCURSE_ADD0x06//设定游标移动方向(默认游标右移)

#defineFUN_MODE0x30//工作模式:

8位基本指令集

#defineDISPLAY_ON0x0c//显示开,显示游标,且游标位置反白

#defineDISPLAY_OFF0x08//显示关

#defineCURSE_DIR0x14//游标向右移动:

AC=AC+1

#defineSET_CG_AC0x40//设置AC,范围为:

00H~3FH

#defineSET_DD_AC0x80

/*汉字地址表*/

ucharcodeaddr_tab[]={//便于根据汉字坐标求出地址

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置

0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置

0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置

0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置

};

/*n(ms)延时子程序*/

voiddelayms(uintt)//约延时n(ms)

{

uinti;

while(t--)

{

for(i=0;i<150;i++);

}

}

/*等待12864显示屏忙*/

voidWaitBusy(void)//延时一小段时间,等待12864显示屏空闲

{

uchari=5;

while(i--);

}

/*写指令代码*/

voidLcd_WriteCmd(ucharcmdcode)

{

LCD_RS=0;

LCD_RW=0;

LCD_EN=1;

WaitBusy();

LCD_DATA=cmdcode;

LCD_EN=0;

}

/*写数据*/

voidLcd_WriteData(uchardispdata)

{

LCD_RS=1;

LCD_RW=0;

LCD_EN=1;

WaitBusy();

LCD_DATA=dispdata;

LCD_EN=0;

}

/*初始化12864显示屏*/

voidLcd_Init()

{

delayms(50);

Lcd_WriteCmd(0x30);//选择基本指令集

delayms

(2);

WaitBusy();

Lcd_WriteCmd(0x30);//选择8bit数据流

delayms

(2);

Lcd_WriteCmd(0x0c);//开显示(无游标、不反白)

delayms

(2);

Lcd_WriteCmd(0x01);//清除显示,并且设定地址指针为00H

delayms(20);

}

/*字符显示*/

voiddisplay10(unsignedlongm)/*这样写的好处就是能让每一位都能显示,且数据地址指针是自动加一位的*/

{

Lcd_WriteCmd(0x9a);//lcd_pos(2,4);//第四行第四个字节上显示;

Lcd_WriteData(m+0x30);//显示个位;

Lcd_WriteData('.');//写入“.”小数点固定

Lcd_WriteData(0+0x30);//显示百分位

Lcd_WriteData(0+0x30);//显示十分位

Lcd_WriteCmd(0x9a);//锁定显示位置;

}

voiddisplay11(unsignedlongu)/*这样写的好处就是能让每一位都能显示,且数据地址指针是自动加一位的*/

{

Lcd_WriteCmd(0x9a);//lcd_pos(2,4);//第四行第四个字节上显示;

Lcd_WriteData(u/10+0x30);//分离出十位;

Lcd_WriteData(u%10+0x30);//个位

Lcd_WriteData('.');//写入“.”小数点固定

Lcd_WriteData(u%10/10+0x30);//显示百分位

Lcd_WriteCmd(0x9a);//锁定显示

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

当前位置:首页 > 高等教育 > 艺术

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

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