基于8051单片机的简易数字电压表的设计
更新时间:2023-12-20 21:42:01 阅读量: 教育文库 文档下载
基于单片机的数字电压表的设计
李力
(长江大学电子信息学院, 湖北 荆州 434023)
摘 要 : 介绍了一种基于单片机的直流数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,采样数据处理模块及显示模块。A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片AT89C51来完成,其负责把ADC0808传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此数字电压表
可以测量0-5V的1路模拟直流输入电压值,并通过LCD显示出来。 关键词 : AT89C51单片机;数字电压表;A/D转换;ADC0808;LCD1602
Design of Digital Voltmeter Based on Microcontroller
Li Li
(College of Electronics and Information,Yangtze University,Jingzhou 434023,
China)
Abstract:a kind of DC digital voltmeter which is based on single-chip microcontroller design is introduced in this paper. The circuit of the voltage meter is mainly consisted of three mould pieces: A/D converting mould piece, A/D converting is mainly completed by the ADC0808, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data processing is mainly completed by the AT89C51 chip, it processes the data produced by the ADC0808 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. The voltmeter is capable of measuring voltage inputs from 1 route ranging from 0 to 5 volt, and displaying the measurements though LCD. Keywords :AT89C51 microcontroller; Digital voltmeter; A/D converter; ADC0808;LCD1602
1. 引言
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域显示出强大的生命力。
2.硬件电路设计
2.1 设计原理
1
选定以8051单片机为核心器件,组成一个简单的直流数字电压表。此电路的 工作原理是:+5V模拟电压信号通过变阻器RV2分压后由ADC08008的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C51芯片的P0口,AT89C51负责把接收到的数字量经过数据处理,产生正确的二进制数码经过算法转化成十进制数,然后将数据送往显示缓冲区,最后单片机通过调用LCD显示子程序,进行循环显示;同时它还通过其它的I/O口P2.1控制LCD寄存器选择信号,P2.2控制LCD读/写选择信号,P2.3控制LCD使能信号。此外,AT89C51还控制ADC0808的工作。其中,单片机AT89C51通过P2.0发正脉冲启动A/D转换,P3.3检测A/D转换是否完成,转换完成后,AD0808的EOC口置高,然后通过74LS02变成低电平,再通过查询的方式P3.3口是否为低电平,若转化完成从P0口读取转换结果送给LCD显示出来。该电路采用1路模拟量输入,通过模拟的电位器的控制改变,能够测量0-5V之间的直流电压值。电压显示用LCD显示,至少能够显示两位小数。硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LCD显示系统、时钟电路、报警电路以及测量电压输入电路。硬件电路设计框图如图1所示。这里选用的8051单片机集成了并行I/O口、异步串行口、16位定时器/计数器、中断系统、片内RAM、和片内ROM以及一些功能部件。
AT89C51 P1 P2 P2 P0 时钟电路 A/D转换电路 测量电压输入 液晶显示 报警电路
图1 数字电压表系统硬件设计框图
2.2 显示数据的转换存储
从IN0.0输入的模拟量经ADC0808转换后的到的是一个二进制数.我们无法知道实际电压是多少。于是需要我们转换成实际模拟电压值并显实出来.便于记录。
由于ADC0808是8位A/D转换.转换成的二进制最大为11111111,又因ADC0808的基准电压我设计的是5V。可用如下公式表示模拟量与A/D转换后的二进制数的关系:
模拟量模拟量转化后的二进制数= 5V111111112
将公式的右边换成十进制数:
模拟量二进制转化后的十进制数= 5V255在显示数据的转换存储模块部分中.我主要的任务是将单片机读到的数据再次转换成模拟量的数值大小.并将这个数值的整数值,小效值这三个十迸制值存入相应存储地址中去。具体的编程思想:设定8路模拟量转换成的二进制数存在30H-34H的片内缓冲区,用于存放A/D转化数据。
2.3 显示电路的设计
接口分配设计如图所示: RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。由单片机P2.1口控制,R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。由单片机P2.2口控制,E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。由单片机P2.3口控制,D0~D7为8位双向数据线。 单片机P0口输入,经过阻值为1K?的上拉电阻连接。
2.4 报警电路的设计
主要是将采样值和预设值进行比较,如果大于预设值,则会启动报警,硬件部分表现为灯亮或者是蜂鸣器会响 ,如图2所示
图2 报警仿真电路
3 软件设计
3.1 程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,主程序开始后进行初始化,LCD间接控制下的初始化,定时器的初始化,然后调用A/D转化子程序,再调用
3
显示子程序。
3.2 系统子程序设计
3.2.1 初始化程序
所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。 3.2.2 A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3所示。
启动转换 N A/D转换结束? Y 输出转换结果 数值转换 显示 结束
图3 A/D转化流程图
3.2.3部分程序
从ADC0808数据端口取出来的数据是0—255,代表电压0-4.99 V,通过单片机AT89C51内编写好的汇编语言程序来完成计算工作,并把测量的电压值还原显示出来;采样值需要和预设值进行比较,若大于预设值,则显示报警。 ;****定时初始化*********** S2:MOV TMOD,#0
MOV TH0,#4cH;赋定时初值,定时采样 MOV TL0,#00H
MOV IE,#82H;开中断 SETB TR0
;*****定时器中断服务程序 ******
4
BT0:
push ACC
MOV DPTR,#0F6FFH MOV A,#00H
MOVX @DPTR,A JB P3.3,$
MOVX A,@DPTR
QS:CJNE A ,#204 ,BJ ;判断读的数据与204的大小 相等则向下执行 不等则跳转
;********二级制如何转化为十进制****** TURN: MOV A,#10 MUL AB MOV 70H,B MOV B,#51 DIV AB MOV 72H,A MOV 71H,B MOV A,#5 MOV B,70H MUL AB ADD A,72H ADD A,#30H RET
4 仿真
4.1 软件调试
该系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,Proteus它不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作隋况。从某种意义上讲Proteus仿真,基本接近于工程应用。利用设计好的仿真电路图,调用已生成的HEX文件,即可 运用Proteus软件仿真实现本设计,结合uvision2集成开发环境进行调试,然后在单片机硬件开发板上进行实际操作,并采用将最程序固化到单片机中,实现0~5V直流电压的数字电压表,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。仿真电路图如图4
5
正在阅读:
基于8051单片机的简易数字电压表的设计12-20
幼儿园小班健康教案五官02-06
新型鞋子作文600字07-10
描写冬天的作文700字03-31
反恐防暴安全知识竞赛(选择题)(部分)12-26
C#中正则表达式的高级应用01-23
中国病理生理学会2007年学术活动计划07-21
我懂得了尊重别人作文500字02-05
这十个瑜伽每天练习5分钟01-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 电压表
- 单片机
- 简易
- 基于
- 数字
- 设计
- 8051