欢迎光临散文网 会员登陆 & 注册

基于Atmel 51单片机开发平台和自动控制原理的数字电压表系统

2022-05-17 22:28 作者:大方老师单片机课堂  | 我要投稿

Atmel 51单片机开发平台和自动控制原理的数字电压表系统


///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比///


设计要求

1.MCS-51系列单片机为核心器件,设计一个简单的直流数字电压表;

2.电压量程0~5V

3.最小分辨率0.01V

4.所用元器件较少,成本低,且测量精度和可靠性较高;

系统概述

本设计是基Atmel 51单片机开发平台和自动控制原理的基础上实现的一种数字电压表系统。该系统采AT89C51单片机作为控制核心,ADC0809为模数转换芯片,实现量05V的被测电压数据采样LCD1602字符液晶显示被测电压值。

同时,数字电压表测量精度0.01V,能够满足一般测量要求,系统框架如下图所示。


系统框架

仿真电路图


数字电压表仿真电路图


原理图


PCB


仿真结果分析

Proteus仿真文件,文件后缀名DSN.双击单片机,加DianYa.hex文件(位C程序文件夹中),运行仿真,结果如下图所示。


LCD显示电压1.84V

图中可以看出LCDAD转换通IN0电压Voltage)的大小1.84VProteus软件自带的电压表Volts)测量的结果1.85V,两者0.01V的偏差,属于仿真正常现象。

通过点击滑动变阻RP2上下红色箭头,模拟被测电压值的改变0~5V之间)LCD实时跟踪显示电压的变化。

下图为调整滑动变阻器后LCD显示的电压值4.25VVolts电压表显示结果一致。


电压测量值均4.25V

综上所述,数字电压Proteus仿真设计运行效果满足设计要求。

C代码

#include"include.h"#define TIME0H 0x3C#define TIME0L 0xB0ucharuc_Clock=0;//定时0中断计数bitb_DATransform=0;

voidvShowVoltage(uintuiNumber){

ucharucaNumber[3],ucCount;

if(uiNumber>999)

uiNumber=999;

ucaNumber[0]=uiNumber/100;//把计算数字的每个位存入数组。ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;

ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];

for(ucCount=0;ucCount<3;ucCount++)

{

vShowOneChar(ucaNumber[ucCount]+48);//从首位到末位逐一输出。if(ucCount==0)

vShowOneChar('.');

}}

voidmain(){

TMOD=0x01;//定时0,模1TH0=TIME0H;

TL0=TIME0L;

TR0=1;//启动定时器。ET0=1;//开定时器中断。EA=1;//开总中断vdInitialize();

vWriteCMD(0x84);//写入显示起始地址(第一行4个位置)vShowChar("voltage");

vWriteCMD(0xC9);

vShowChar("(V)");

while(1)

{

if(b_DATransform==1)

{

b_DATransform=0;

vWriteCMD(0xC4);

vShowVoltage(uiADTransform());

}

}}

分享的内容有

1)基51单片机的数字电压表设计论文完整版

2C程序;

3Proteus仿真文件;

4)原理图PCB文件;

5Visio流程图;

6)元器件清单;

7)参考资料;

分享如下


基于Atmel 51单片机开发平台和自动控制原理的数字电压表系统的评论 (共 条)

分享到微博请遵守国家法律