找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15161|回复: 13
打印 上一主题 下一主题
收起左侧

基于51单片机+ADC0808的数字电压表PCB文件+仿真+程序设计

  [复制链接]
跳转到指定楼层
楼主
基于51单片机的数字电压表程序设计

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
见本文后面

单片机源程序如下:
  1. #include <REG51.H>
  2. sfr AUXR = 0x8e;
  3. int shuju;
  4. #include <display.c>
  5. sbit clock = P3^0;
  6. sbit OE = P3^7;
  7. sbit EOC = P3^2;
  8. sbit SATRA = P3^5;

  9. void timer0_isr()interrupt 1
  10. {
  11.         TH0 = (65535 - 2000) / 255;
  12.         TL0 = (65535 - 2000) % 255;
  13.         display0();        
  14. }
  15. void timer1_isr()interrupt 3
  16. {
  17.         clock = ~clock;
  18. }
  19. void timer0_init()
  20. {
  21.         TMOD = 0x21;
  22.         TH0 = (65535 - 2000) / 255;
  23.         TL0 = (65535 - 2000) % 255;
  24.         EA = 1;
  25.         ET0 = 1;
  26.         TR0 = 1;
  27.         TL1 = 0xfb;                //设置定时初值
  28.         TH1 = 0xfb;                //设置定时初值        
  29.         ET1 = 1;
  30.         TR1 = 1;                //定时器0开始计时
  31. }
  32. void main()
  33. {
  34.         timer0_init();
  35.         while(1)
  36.         {
  37.                 OE = 0;
  38.                 SATRA = 0;SATRA = 1;SATRA = 0;
  39.                 while(EOC == 0);
  40.                 OE = 1;
  41.                 shuju = P1 * 1.96;
  42.                 OE = 0;                        
  43.         }
  44. }
复制代码

摘要
本课题是利用单片机设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。

目录
1 前言
1.1 课题研究的背景及意义
2 设计要求
3系统原理框图
4 主要元器件
4.1  STC89C52
4.2  ADC0809 转换电路
4.3四位一体数码管
四位一体数码管
5系统设计电路
5.1电路
6程序设计
6.1 显示程序设计
6.2 主程序的设计
7 电路原理图
8  PCB图
9 程序
10 总结
参考文献
致谢

1 前言
1.1 课题研究的背景及意义
在生产过程,科学研究和其他产业领域中,电气控制技术应用十分广泛。在机械设备的控制中,电气控制也比其他的控制方法使用的更为普遍。
数字电压表简称DVM,它是采用数字化测量技术设计的电压表。从性能来看:数字电压表的发展从一九五二年美国NLS公司由四位电子管数字电压表精度千分之一到现在已经出现8位数字电压表。参数可测量直流电压、交流电压、电流、阻抗等。测量自动化程度不断提高,可以和计算机配合显示、计算结果、然后打印出来。
1.2 国内外研究现状和发展            
数字电压表(Digital Voltmeter)简称DVM,它出现在上世纪50年代初,60年代末发张起来的电压测量仪表,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后通过显示器件显示。这种电子仪表之所以出现,一方面是由于电子计算机的应用推广到系统的自动控制信号的实验领域,提出了各种被观测量或被控制量转换成数字量的要求,即为了实时控制和数据处理的要求;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的发展,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦琐与陈旧方式也促进了它的飞速发展。如今,它又成为向智能化仪表发展的必要桥梁。


2
设计要求
设计一个数字电压表,基于单片机或数字逻辑电路,设计A/D转化电路、密码校验电路和控制输出与显示电路,实现用户按键输入密码开锁功能。
1、以单片机为控制核心设计数字电压表;
2、可以测量0~5V的8路输入电压值;
3、LED数码管轮流显示或单路选择显示电压值;
4、最小分辨率为0.01V,测量误差约为±0.01V。


3系统原理框图
选择AT89S51作为单片机芯片,选用四位8段共阴极LED数码管实现电压显示,利用ADC0809作为数模转换芯片。将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示。P2口接数码管位选,P1接数码管,实现数据的动态显示,如图4.1所示。


4 主要元器件
4.1  STC89C52
STC89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C52是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
STC89C52功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。              


STC89C52各引脚功能
  P0端口:P0口是一个漏极开路的8位双向I/O口。作为输出端口每个引脚能驱动8个TTL负载对端口P0写入“1”时可以作为高阻抗输入。在访问外部程序和数据存储器时P0口也可以提供低8位地址和8位数据的复用总线。此时P0口内部上拉电阻有效。在Flash ROM编程时P0端口接收指令字节而在校验程序时则输出指令字节。验证时要求外接上拉电阻。
P1端口: P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动吸收或者输出电流方式4个TTL输入。对端口写入1时通过内部的上拉电阻把端口拉到高电位这是可用作输入口。P1口作输入口使用时因为有内部上拉电阻那些被外部拉低的引脚会输出一个电流。
P2端口:P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动吸收或输出电流方式4个TTL输入。对端口写入1时到高电平这时可用作输入口。P2作为输入口使用时因为有内部的上拉电阻那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和16位地址的外部数据存储器如执行“MOVX @DPTR”指令时P2送出高8位地址。在访问8位地址的外部数据存储器如执行“MOVX @R1”指令时P2口引脚上的内容就是专用寄存器SFR区中的P2寄存器的内容在整个访问期间不会改变。 在对Flash ROM编程和程序校验期间P2也接收高位地址和一些控制信号。
P3端口:P3口是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动吸收或输出电流方式4个TTL输入。对端口写入1时通过内部的上拉电阻把端口拉到高电位这时可用作输入口。P3做输入口使用时因为有内部的上拉电阻那些被外部信号拉低的引脚会输入一个电流。 在对Flash ROM编程或程序校验时P3还接收一些控制信号。

4.2  ADC0809 转换电路
ADC0808芯片有28条引脚,采用双列直插式封装,各引脚功能为:

IN0~IN7:8路模拟量输入端。
D0~D7:8位数字量输出端口。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号,高电平有效。
EOC:输出允许控制信号,高电平有效。
OE: 输出允许控制信号,高电平有效。
CLK:时钟信号输入端。
ADDA、ADDB、ADDC:转换通道地址,控制8路模拟通道的切换。ADDA、ADDB、ADDC分别与地址线或数据线相连,三位编码对应8个通道地址端口,ADDA、ADDB、ADDC=000~111分别对应IN0~IN7通道的地址端口。

4.3四位一体数码管四位一体数码管

首先数码管有共阴极和共阳极之分,区别他们的方法是若公共端接地,其他端接电源,若各段测试能亮,说明是共阴的,反之共阳的;若公共端接电源其他端分别接的,测得各端亮,则说明是共阳的,反之为共阴的。

5系统设计电路5.1电路
AT89C51单片机在启动运行时或者出现死机时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。复位电路产生的复位信号(高电平有效)由RST引脚送入到内部的复位电路,对AT89C51单片机进行复位,复位信号要持续两个机器周期(24个时钟周期)以上,才能使AT89C51单片机可靠复位。
AT89C51单片机复位电路如图3.3所示:



复位电路工作原理:上电瞬间RST引脚的电位与VCC等电位,RST引脚为高电平,随着电容C6充电电流的减少,RST引脚的电位不断下降,其充电时间常数为T=R9*C6=100ms,此时间常数足以RST引脚在保持为高电平的时间内完成复位操作。
当单片机已在运行当中时,按下复位键S1后松开,也能使单片机RST引脚维持一段时间的高电平,从而实现AT89C51单片机手动复位。
5.2 晶振电路

XTAL1和XTAL2是片内振荡电路输入端,这两个端子用来外接石英晶体和微调电容,即用来连接AT89C51单片机片内OSC的定时反馈回路。晶振起振后要能在XTAL2端输出一个3V左右的正弦波,以便使片内OSC电路按晶振相同频率自激振荡。通常,OSC的输出时钟频率FOSC为6MHZ—16MHZ,典型值为12MHZ或11.0592MHZ。电容C5和C6帮助晶振起振,典型值为30pf,调节它们可以达到微调FOSC的目的。本系统中,晶振为12MHZ,C5=C6=30pf。晶振电路如图3.4所示:

6程序设计
6.1 显示程序设计
系统上电后,配置数码管个引脚,然后对其进行初始化,再调用的读写函数,可将采集处理后的电压数值实时显示。其程序流程图如图所示。



6.2 主程序的设计
由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是连接在AT89C51单片机的40管脚,也就是要求从40管脚输出CLK信号供ADC0809使用。因此产生CLK信号的方法就等于从软件产生。电压表系统有主程序,A/D转换子程序、按键子程序和显示子程序。





7 电路原理图


8  PCB



Proteus8.8仿真+代码PCB资料:
数字电压表仿真程序PCB.7z (2.44 MB, 下载次数: 530)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:308785 发表于 2019-4-29 23:13 | 只看该作者
正在学习此项内容 比较感谢楼主的分享
回复

使用道具 举报

板凳
ID:524917 发表于 2019-4-30 09:12 | 只看该作者
感谢楼主分享
回复

使用道具 举报

地板
ID:375715 发表于 2019-4-30 14:09 来自手机 | 只看该作者
值得学习
回复

使用道具 举报

5#
ID:528087 发表于 2019-5-8 18:38 | 只看该作者
正在做此类设计,学习学习
回复

使用道具 举报

6#
ID:157286 发表于 2019-10-25 23:45 | 只看该作者
感谢楼主分享
回复

使用道具 举报

7#
ID:710050 发表于 2020-3-17 15:29 | 只看该作者
两个c文件添加到工程里面,为什么编译不了呢,显示   display.c(15): error C202: 'P0': undefined identifier
求解答。
回复

使用道具 举报

8#
ID:804169 发表于 2020-7-16 13:58 | 只看该作者
感谢楼主,我想问一下,你的ADC0809是自己画的,还是在库里找的,我在库里找不到咋办
回复

使用道具 举报

9#
ID:804169 发表于 2020-7-16 13:59 | 只看该作者
问一下楼主,你的ADC0809是自己画的吗,我在库里没有找到
回复

使用道具 举报

10#
ID:925314 发表于 2021-5-22 12:47 | 只看该作者
想问下ADC0808在哪里找到呀
回复

使用道具 举报

11#
ID:648066 发表于 2021-6-21 19:03 | 只看该作者
楼主你这个PCB图连线有问题啊
回复

使用道具 举报

12#
ID:978036 发表于 2021-11-28 11:29 | 只看该作者
di88 发表于 2020-7-16 13:58
感谢楼主,我想问一下,你的ADC0809是自己画的,还是在库里找的,我在库里找不到咋办

用ADC0808,一样的
回复

使用道具 举报

13#
ID:991606 发表于 2021-12-13 12:42 来自手机 | 只看该作者
正在学习此项内容 比较感谢楼主的分享
回复

使用道具 举报

14#
ID:992042 发表于 2021-12-14 08:57 | 只看该作者
看过楼主的设计,非常受用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表