单片机AT89S51与ADC0809设计一个数字电压表

发布者:stampie最新更新时间:2013-03-21 来源: dzsc关键字:单片机  AT89S51  ADC0809  数字电压表 手机看文章 扫描二维码
随时随地手机看文章
1. 实验任务

  利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。

  2. 电路原理图

  3. 系统板上硬件连线

   a) 把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 [page]

   b) 把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。

  c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。

  d) 把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。

  e) 把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。

  f) 把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。

  g) 把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。

  h) 把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。

  i) 把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。

  4. 程序设计内容

  由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了;由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值 (D/256*VREF)

  5. 汇编源程序

  6. C语言源程序

  #include

  unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,

  0xef,0xdf,0xbf,0x7f};

  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

  unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};

  unsigned char dispcount;

   unsigned char getdata;

  unsigned int temp;

  unsigned char i;

       sbit ST=P3^0;

       sbit OE=P3^1;

       sbit EOC=P3^2;

       sbit CLK=P3^3;

       void main(void)

      {

       ST=0;

       OE=0;

       ET0=1;

       ET1=1;

       EA=1;

       TMOD=0x12;

       TH0=216;

       TL0=216;

       TH1=(65536-4000)/256;

       TL1=(65536-4000)%256;

       TR1=1;

      TR0=1;

      ST=1;

       ST=0; [page]

        while(1)

      {

       if(EOC==1)

      {

        OE=1;

        getdata=P0;

        OE=0;

       temp=getdata*235;

       temp=temp/128;

       i=5;

       dispbuf[0]=10;

       dispbuf[1]=10;

       dispbuf[2]=10;

       dispbuf[3]=10;

       dispbuf[4]=10;

        dispbuf[5]=0;

        dispbuf[6]=0;

        dispbuf[7]=0;

        while(temp/10)


  {


  dispbuf[i]=temp%10;


  temp=temp/10;


  i++;


  }


  dispbuf[i]=temp;


  ST=1;


  ST=0;


  }


  }


  }


  void t0(void) interrupt 1 using 0


  {


  CLK=~CLK;


  } [page]


  void t1(void) interrupt 3 using 0


  {


  TH1=(65536-4000)/256;


  TL1=(65536-4000)%256;


  P1=dispcode[dispbuf[dispcount]];


  P2=dispbitcode[dispcount];


  if(dispcount==7)


  {


  P1=P1 | 0x80;


  }


  dispcount++;


  if(dispcount==8)


  {


  dispcount=0;


  }


  }

关键字:单片机  AT89S51  ADC0809  数字电压表 引用地址:单片机AT89S51与ADC0809设计一个数字电压表

上一篇:51单片机数码管动态显示程序
下一篇:单片机驱动蜂鸣器原理与设计

推荐阅读最新更新时间:2024-03-16 13:20

AT89C51单片机数字逻辑无环流可逆调速系统设计
1 引言 生产中有许多机械要求既能正转,又能反转,而且常需要快速起动和制动,即需要可逆调速系统。由模拟电路实现的可逆调速系统,线路复杂,调整困难,可靠性低,缺乏灵活的控制。因此,这里给出一种基于单片机的逻辑无环流可逆调速控制系统设计方案。该系统设计采用全数字电路,实现数字脉冲触发、数字转速给定检测和数字PI算法等功能,由软件实现转速、电流调节及逻辑判断和复杂运算,具有不同于一般模拟电路的最优化、自适应、非线性、智能化等控制规律,而且更改灵活方便。 2 系统组成和控制原理 2.1 系统组成 该数字逻辑无环流可逆调速系统是由AT89C51单片机实现双闭环控制、无环流逻辑控制、触发脉冲的形成及相位控制,如图1所示。图1中,ASR为速
[单片机]
AT89C51<font color='red'>单片机</font>数字逻辑无环流可逆调速系统设计
基于飞思卡尔MCU的电动助力转向系统(EPS)方案
方案描述: 专门用于关键安全应用的先进的16位和32位 MCU ,已成为当前电子助力转向系统的核心组件。这些控制器可提供更强的计算能力和用以支持复杂电机控制功能的专用片内外设。 集成式电源解决方案也是电子助力转向单元的重要组件。它们集成了用于CAN和LIN等各种汽车总线互连能力。 MCU 通常可以通过SPI接口或直接控制内置的预驱动器,对功率MOSFET进行驱动。 方案设计图: 方案关键器件表:
[汽车电子]
基于飞思卡尔<font color='red'>MCU</font>的电动助力转向系统(EPS)方案
单片机内部的时序图简介
单片机内部的时序 单片机执行各种操作时,CPU都是严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序成为时序。 单周期指令的操作时序 双周期指令的操作时序 时钟电路 时钟电路参数: 频率范围:0~40MHz C1、C2:20~30pF
[单片机]
<font color='red'>单片机</font>内部的时序图简介
单片机设计经验技巧精华集锦(二)
3 发条和秒表和继电器组成的控制器   在电气时代开始时,人们用钟表内机械的旋转分时控制一些继电器的通断,从而控制一些机床和生产线的运行。这种装置类似于早期洗衣机内的定时器。      三 入门首选 AT89S51系列单片机   1 简介   1980,英特尔公司开发出一种简易的8031CPU,在当时该CPU性能不比8086差很多,但价格较便宜,因此被很多低端应用选中。由于市场看好,ATMEL公司购买了8031的内核,把Flash存储器和加强型IO口融入进去开发出了AT89系列单片机。所有兼容8031指令和内核相似的单片机统称为51单片机,它是目前应用最广泛的8位单片机之一。因51单片机结构简单,指令易学,应用广泛,因此是初
[模拟电子]
<font color='red'>单片机</font>设计经验技巧精华集锦(二)
PIC16F877A单片机 (中断与定时器Timer1)
1 基本原理 上图中,如果RC0左边外接了外部的晶振,那么T1OSCEN必须置一。这个外部的晶振频率一般都比较低。因为晶振频率越低,一般功耗越低。 为什么这里需要外接晶振呢?保证单片机在休眠模式下还可以计数,这一点是51单片机所不具备的。 2 实现代码 主要根据FIGURE6-2和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解。但有些寄存器在框图中没有说明,所以也需要仔细阅读定时器0的官方文档,即基本原理部分。 /*----------------函数功能: 中断 定时器1 --------------------------*/ #include pic.h // 调用PIC1
[单片机]
PIC16F877A<font color='red'>单片机</font> (中断与定时器Timer1)
松翰单片机数码管程序
;数码管 ---- 目的:学习查表及间接寻址 CHIP SN8F27E65 //{{SONIX_CODE_OPTION .Code_Option WDT_CLK Flosc/4 .Code_Option Reset_Pin P04 .Code_Option LVD LVD_Max ; 3.3V Reset .Code_Option Watch_Dog Disable .Code_Option Low_Fcpu Flosc/1 .Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator .Code_Option High_Fcpu Fhosc/1 .Code
[单片机]
利用小型MCU实现LED照明的色彩控制
LED用于通用照明已指日可待。LED在通用照明系统中优势很多,如寿命更长以及效率更高。然而, LED技术还面临着一些挑战。其中一个挑战就是如何产生高品质的白光。白光LED的构成包含了蓝光LED 和能将光输出移至光谱的其他波段的一种荧光粉。许多白光LED都无法产生高显色指数(Color Rendering Index,CRI),该参数用于衡量光源真实重现色彩的能力。 通过混合两种或两种以上颜色的LED光,可以获得品质更高的白光系统。在这些多色系统中,每种色源的光输出会随时间和温度而漂移。光传感器和小型单片机(MCU)可用于维持特定颜色和相关色温(Correlated Color Temperature,CCT)。在本文中,我们将进一
[电源管理]
利用小型<font color='red'>MCU</font>实现LED照明的色彩控制
AT与STC单片机的主要区别
1.常用的51单片机 51单片机即传统的兼容8051指令代码的8位单片机,对于新手来说,刚接触单片机主要已AT单片机和STC单片机。其两种单片机主要区别为不同的厂家生成,但代码基本可以通用。常用的AT89C51、AT89C52、AT89S51、AT89S52、STC89C51、STC89C52单片机代码均可通用。 但在使用52单片机时需要注意,52是51单片机的更新版本,相比51单片机,52多了一个T2定时器、128B只读存储器、4K只读存储器、2个中断和一个看门狗。 AT与STC单片机的主要区别是程序的下载方式,AT中的S51、S52系列的下载方式是ISP下载方式,而C51、C52与STC都是串口下载方式;其他方面基本大同小
[单片机]
AT与STC<font color='red'>单片机</font>的主要区别
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved