单片机制作的数字电压表及源代码

发布者:BlossomBeauty最新更新时间:2012-09-11 来源: 21ic 关键字:单片机  数字电压表  AT89S51  ADC0809 手机看文章 扫描二维码
随时随地手机看文章

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

#include
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
                                  0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
                               0x6d,0x7d,0x07,0x7f,0x6f,0x00};
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)%6;
  TR1=1;
  TR0=1;
  ST=1;
  ST=0;
  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;
              temp=temp/10;
              i++;
            }
          dispbuf[i]=temp;         
          ST=1;
          ST=0;
        }
    }
}
void t0(void) interrupt 1 using 0
{
  CLK=~CLK;
}
void t1(void) interrupt 3 using 0
{
  TH1=(65536-4000)/256;
  TL1=(65536-4000)%6;
  P1=dispcode[dispbuf[dispcount]];
  P2=dispbitcode[dispcount];
  if(dispcount==7)
    {
      P1=P1 | 0x80;
    }
  dispcount++;
  if(dispcount==8)
    {
      dispcount=0;
    } 
}
关键字:单片机  数字电压表  AT89S51  ADC0809 引用地址:单片机制作的数字电压表及源代码

上一篇:单片机的最小系统电路设计
下一篇:PC机与多MCS-51单片机间的串行通信硬件设计

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

AVR复习笔记--AVR单片机SPI多机通讯
最近决定复习下AVR单片机,其实也是为了借此复习下几种简单的通信协议,包括串口,SPI,I2 C等。 本来以为一两个晚上就能搞定的事儿,没想到竟耗费了一周晚上空余的时间。 当然主要是这次的要求要提高点,实现SPI的多机通信, 不但要发数据还要回传数据。 实际中还是遇到了比我想象中要大的多的困难。 即使是现在的实现方式也不是很理想。 下面是spi部分的代码,由于spi接收发送用的同一终端,感觉使用起来形式不怎么样,还是采用了轮询标志位的方式 Code #include spi.h static char mode=1; void spi_init(char flag) { char tmp=0;
[单片机]
AVR复习笔记--AVR<font color='red'>单片机</font>SPI多机通讯
中国码电波机芯源码(仅供参考)MSP430单片机程序
电波钟源码:中国码机型的,有兴趣可以拿去参考吧。改下硬件引脚就可以了 不详细解说了,能看懂得应该都懂 单片机源程序如下: #include msp430x14x.h typedef unsigned char uchar; typedef unsigned int uint; #define XTOFF 0x40 #define DataDir P4DIR #define DataPort P4OUT #define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0; /
[单片机]
平凡单片机教学 第九讲 单片机指令(三)
2、累加器A与片外RAM之间的数据传递类指令 MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1)在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。 2)要读或写外部的RAM,当然也必须要知道R
[单片机]
MSP430单片机的特点、分类和优缺点
MSP430单片机 MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点… 特性: 强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式( 7 种源操作数寻址、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在
[单片机]
MSP430<font color='red'>单片机</font>的特点、分类和优缺点
台积电RRAM技术引入英飞凌汽车MCU
11月25日,英飞凌和 台积电 宣布,两家公司正准备将 台积电 的电阻式RAM( RRAM )非易失性存储器(NVM)技术引 入英飞凌 的下一代AURIX™微控制器(MCU),并将在 台积电 的28纳米节点上制造。 自第一个发动机管理系统问世以来,嵌入式闪存微控制器一直是汽车电子控制单元(ECU)的主要构建块。目前,市场上大多数MCU系列都基于嵌入式闪存技术(eFlash)技术。而 RRAM 是嵌入式存储器的下一步,可以进一步扩展到28纳米及以上。 英飞凌AURIX TC4x MCU系列将性能扩展与虚拟化、安全和网络功能的最新趋势相结合,以支持下一代软件定义的车辆和新的E/E架构。 据介绍,基于台积电 RRAM 技术的
[汽车电子]
单片机ATmega8读取165串入的拨码开关程序
/***********74HC165并入串出例子程序************/ // 单片机 ATmega8读取165串入的拨码开关地址 // // 晶振:内部1M // // Author:wanghu // // AVRGCC @2008.6.1 // /**********************************************/ #include avr/io.h #include util/delay.h /**********定义位操作的位移宏 by wanghu********/ #define setb
[单片机]
单片机存储器和I/O接口组织
  微处理器对I/O接口寻址的方式可分为两大类,一种是内存映射式寻址( Memory Mapped I/O),另一种是输入输出映射式寻址(I/O Mapped I/O)。   内存映射式寻址采用了I/O接口与存储器统一编址的方式,这种方式是将I/O接口看成内存区域中的一个或几个单元,占用内存区域中的一些地址。这种方式的优点是,不需专门的I/O指令,而采用访问内存的指令来访问I/O接口。一般来说,访问内存的指令功能是比较强的,因而这种方法可以像访问内存那样,直接对I/O接口的信息进行处理。这种方式的缺点是地址的利用率较低。I/O接口占用内存的一部分地址,使得内存可寻址的区域减少。由于存储器需占用的地址由该芯片的容量决定,且其占用的地址
[单片机]
单片机在晶闸管触发电路中的应用
0 前 言      在电力拖动系统、电炉控制系统中现已大量采用可控硅(晶闸管)元件作为可调电源向电动机或电炉供电,这种由晶闸管组成的控制系统,主要是利用改变可控硅的控制角θ来调节供电电压。在常规控制中,主要是用电子控制装置对可控硅实现触发,这种方法由于受到电子元器件的限制,其分辨率不高,有时还会出现误触发。本文介绍一种由8031单片机组成的触发控制系统,可实现高分辨率的数字触发。 1 硬件组成及原理      系统硬件组成如,只须在8031最小系统上加一块16位的定时/计数器8253和晶振电路,另加一块带一个14位定时/计数器的可编程RAM/IO扩展器8155,即可组成单片机的系统线路。 1.1 θ角定时      
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty