基于AT89S52单片机的数字电压表
设计报告
设计者: 何育捷 丁长宝 院 系 : 信息工程学院 指导教师: 王本有 完成时间: 2011.04.09
摘要:本系统采用AT89S52单片机作为系统的控制中心,将通过ADC0809采集转换来的数字电压量进行处理,通过LCD1602液晶显示器显示出来,实现一个简易的数字电压表的功能。 该系统将前向通道采集来的数据通过控制系统的处理通过输出设备输出显示出来,是一个很典型的微型计算机系统。
1系统功能
设计一个基于AT89S52单片机的数字电压表,该系统能循环采集8路电压并显示在液晶显示器上,调节电压的值,数字电压表能即时的显示电压的变化。
2系统分析
该系统结构非常简单,通过A/D转换器将采集来的模拟电压转换为数字量,经过单片机处后显示在液晶显示器上,不断采集并显示达到电压的更新。
A/D 单片机 LCD 模拟量
本系统A/D采用比较熟悉的ADC0809,LCD使用简单易用的LCD1602。
3硬件系统设计
3.1硬件系统总体框图
本图采用Proteus仿真
3.2 ADC0809部分
ADC0809是一款很常用的8位的A/D转换器,有8个模拟量输入引脚,A B C三位通道选通引脚,地址锁存引脚ALE用来锁存地址,基准电压源引脚提供转换的基准电压,8位数据输出引脚,时钟引脚CLK,最大时钟频率640kHz,START引脚用来启动A/D转换,转换结束后EOC引脚变为高电平,OE引脚用来使能读操作。
本设计使用滑动变阻器提供待测电压,8路模拟量由IN0-IN7口输入ADC0809,地址端口A B C及数字量输出端口连接AT89S52扩展总线P0口,作为单片机的片外扩展外设,由于电平刚好相反,单片机的WR RD引脚接反相器与ADC0809相连,WR连接ALE和START引脚用于锁存通道地址以及启动A/D转换,EOC引脚与单片机的P3.5相连,送达转换完成信号,CLK与P3^3相连,由单片机模拟时钟。 3.3 LCD1602部分
LCD1602是一款字符型的液晶显示器,8位数据端口,三位控制引脚RS(指令/数据),RW(读/写),E(使能)控制LCD1602的工作。 液晶显示器的数据口与AT89S52的P2口相连,传输显示数据,RS RW E分别与单片机的P3.2 P3.1 P3.0相连接收控制信息。
3.4其他
图中P0口接了上拉电阻,通常情况下P0应该接上拉电阻以输出高电平,但在这里可以不接,因为在程序中把P0当做外部扩展的数据总线来用的,不接上拉电阻仿真照样正常,但为了美观所以就把它接上了。
4软件系统设计
4.1软件设计
本系统的软件结构,其思想就是不断的从ADC0809中读取数据,然后转换并循环显示出8路电压值,当然其标号也要随之不断变化以指明当前显示的是哪路电压。
软件结构分为采样电压部分,计算转换部分,驱动显示部分,三部分综合组成软件系统的基本结构。
4.2程序流程图 主程序流程图 定时器中断程序
开始 初始化定时器 初始化LCD 显示标题 开始 CLK引脚取反 返回 获取电压函数 开始 永真 写通道地址 获得8路电压值 转换并显示 等待转换完成 取数据 返回
返回 显示电压
转换显示函数
开始 转换并存入缓冲 8路采样 单片机计算转换 显示输出 写显示位置 5系统调试
本系统先用Proteus仿真软件进行仿真,能正确的采集电压和显示,实现了要求的功能,不过电压的最小调节值由于仿真软件的原因是在0.08V左右。然后我们将其制作成实物,并采用多圈滑动变阻器,使得其调节电压可以精确到0.02V左右。在制作实物的过程中我们发现由于实验板上的负载太多使用PC机的USB接口电压不够,驱动不起来,芯片不能正常工作,我们就用手机充电器的USB口提供驱动电压,可以是数字电压表正常工作。
6课程设计总结
通过本次课程设计,我们充分运用了我们以前所学的硬件课程知识,设计完成了一个基于单片机的小系统,实现了软硬结合,从理论到实践,学以致用,同时也是对计算机硬件基础课程学习的一个很好的总结。
参考文献
《单片机原理与接口技术》 李朝青 编著 北京航空航天大学出版社 《例说51单片机(C语言版)》 张义和等 编著 人民邮电出版社