目录

  • 基于51单片机数字电压表的设计
    • 1、PCB原理图
    • 2、Proteus 仿真图
    • 3、设计目标
      • 3.1、基本功能
      • 3.2、主要技术参数
    • 4、总设计框图
    • 5、硬件设计分析
      • 5.1、电源的设计
      • 5.2、单片机最小系统
      • 5.3、模数转换
    • 6、软件设计的组成
    • 7、元件清单
    • 8、程序源码
    • 9、资源获取

注:本毕设资源可在微信公众号:“Kevin的学习站” 中获取!

基于51单片机数字电压表的设计

1、PCB原理图

2、Proteus 仿真图


3、设计目标

3.1、基本功能

利用51单片机作为主控芯片,模拟量输入范围直流0v-5v。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。

3.2、主要技术参数

测量电压范围:0v至5v

A/D转换器:ADC0809(8位模数转换器)。

显示方式: LCD1602液晶

4、总设计框图

此次设计的是数字电压表,要求的电压范围是0~5v。系统设计主要包括四个部分:分别是电源模块、AD模数转换部分、51单片机最小系统部分、数码管显示部分。首先由单片机初始化ADC0809模数转换芯片和共阴数码管显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在LCD1602液晶上面。

以AT89C51单片机为核心,起着控制作用。系统包括LCD1602液晶显示电路、复位电路、时钟电路、模数转换电路电路。设计思路分为五个模块:复位电路、晶振电路模块、AT89C51、LCD1602液晶显示电路、模数转换器电路这五个模块。

5、硬件设计分析

5.1、电源的设计

系统电源使用直流5伏。

由电脑USB接口提供电源。

USB是通用串行总线(Universal Serial Bus)接口的简称。它是目前使用比较广泛的电脑接口之一,主要版本有1.0、1.1和最新的2.0三种版本。根据USB总线的工业标准,它可以提供额定功率为5V/500mA的电源供USB设备使用。

5.2、单片机最小系统

51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:

一个8位CPU;一个片内振荡器及时钟电路;

4KB的ROM程序存储器;

一个128B的RAM数据存储器;

寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;

32条可编程的I/O口线;

两个16位定时/计数器;

一个可编程全双工串行口;

5个中断源、两个优先级嵌套中断结构。

如图2-2-1所示为AT89C51单片机基本构造,其基本性能介绍如下:

AT89C51本身内含40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中端口,3个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C51的主要特性如下表所示:

兼容MCS—51指令系统 32个可编程I/O线
4k字节可编程闪烁存储器 可编程UARL通道
三个16位可编程定时/计数器中断 时钟频率0-24MHz
2个外部中断源,共8个中断源 256×8bit内部RAM
2个读写中断口线 可直接驱动LED
软件设置睡眠和唤醒功能 低功耗空闲和掉电模式

单片机最小系统原理图


单片机最小系统说明:

时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟振荡电路。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。

单片机复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期(即24个振荡周期)的高电平。

5.3、模数转换

ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

(1)主要特性:

1)8路输入通道,2位A/D转换器,即分辨率为8位。
   2)具有转换起停控制端。
   3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时) 
   4)单个+5V电源供电
   5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
   6)工作温度范围为-40~+85摄氏度
   7)低功耗,约15mW。

(2)模数转换电路

6、软件设计的组成

该系统由延时子函数、LCD1602液晶忙检测子函数、LCD1602液晶写命令/写数据子函数、汉字显示子函数、LCD1602液晶显示字符串子函数、LCD1602液晶初始化子函数、ADC0809转换子函数、主函数和数据定义这几部分组成。


7、元件清单

8、程序源码

//<程序名>:数字电压表
//<功能>:使用LCD显示被检测电压,精度为0.05V,范围是0~5V。
#include"includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
uchar uc_Clock=0;      //定时器0中断计数
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把电压显示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(uint uiNumber)
{uchar ucaNumber[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('.');}
}
//*************************************************************************************************
//*                                                                                               *
//*           ********************************主函数******************************               *
//*                                                                                               *
//*************************************************************************************************
void main()
{TMOD=0x01;            //定时器0,模式1。TH0=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());}}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0中断函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void t0() interrupt 1
{if(uc_Clock==0){uc_Clock=5;b_DATransform=1;}elseuc_Clock--;TH0=TIME0H;           //恢复定时器0。TL0=TIME0L;
}

9、资源获取


项目的仿真和PCB工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“数字电压表”,就可以免费获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励!

毕设--基于51单片机数字电压表的设计相关推荐

  1. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  2. 毕设--基于51单片机的温度报警器设计

    目录 1.简介 2.设计要求与方案论证 2.1.设计要求 2.2.系统基本方案选择和论证 2.2.1.单片机芯片的选择方案和论证 2.2.2.温度传感器设计方案论证 2.3.电路设计最终方案决定 3. ...

  3. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  4. 基于51单片机信号发生器仿真设计

    本设计 基于51单片机信号发生器仿真设计 (仿真+程序源码+设计说明书) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 目录标题 ...

  5. stc89c51单片机音乐盒系统设计_基于51单片机音乐盒课程设计1.doc

    基于51单片机音乐盒课程设计1 课程名称: 微机原理课程设计 题 目: 基于单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉.听觉方面的享受提出了越来越高的要求.小小的音乐盒可以给人们带来美好 ...

  6. c语言 计步算法,基于51单片机的计步器设计

    基于51单片机的计步器设计(任务书,开题报告,外文翻译,论文15000字) 摘  要 随着科技发展和国民健康意识的提高,许多检测健康状态的电子产品开始普及.电子计步器作为一种越来越流行的平民锻炼检测装 ...

  7. 基于51单片机的温度报警器设计

    目 录 前言.............................................................................................. ...

  8. 用计算机设计电路图,基于51单片机的计算器设计(含电路图,程序)

    基于51单片机的计算器设计(含电路图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文11200字,程序,答辩PPT) 摘 要 计算器一般是指"电子计算器",能进行 ...

  9. 基于51单片机 数控恒流源设计 可调电流源

    设计硬件组成: 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计  项目定制觉得选题不错 分享一下 由51单片机+LCD1602液晶+变压器+整流桥+开关电源LM2596+TLC56 ...

  10. 基于51单片机音乐盒仿真设计(音乐播放器)

    基于51单片机音乐盒仿真设计( proteus仿真+程序+原理图+PCB+报告+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0 ...

最新文章

  1. 为Apache动态增加模块
  2. 创建和触发Notification
  3. 【Flutter】Flutter 启动白屏问题 ( 问题描述 | 在 launch_background.xml 中设置启动过渡 UI )
  4. Kotlin 协程 + Spring webflux 开发后端
  5. 分类器评价与在R中的实现:收益图与提升图
  6. Android布局中涉及的一些属性
  7. linux shell数组动态在for中追加元素及其遍历
  8. boost::mp11::mp_none_of相关用法的测试程序
  9. SSL 1461——最大连续数列的和
  10. NIO和Netty经典面试题
  11. thinkphp中的session的使用和理解!
  12. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
  13. WinForm XML
  14. Mysql 高负载排查思路
  15. Linux的文件系统与文件
  16. Spring四个核心包
  17. Java| MANIFEST.MF讲解
  18. 2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest
  19. java excel列宽自动换行_Excel单元格中数据如何自动换行以便适应单元格的大小
  20. Cannot run program‘C:\Anaconda3\envs\...\python.exe’(in directory):CreateProcess error=2,系统找不到指定文件

热门文章

  1. xshell修改字体大小
  2. list转json的时候,关于date转换的问题
  3. C语言中的函数(详解)
  4. 使用devcpp遇到的常见错误解决方法
  5. Excel度分秒转度--公式大解析
  6. 简明python教程最新版价格_《简明Python教程》【价格 目录 书评 正版】_中国图书网...
  7. 天数怎么换算成月_小时天数换算(小时换算成天数怎么算)
  8. 地理信息系统(第二版)汤国安等编著第一章1.1-1.2节
  9. CUDA编程-02: 初识CUDA编程
  10. 分期手续费率转换成年利率