基于51单片机ADC0808自动数字电压表仿真数码管显示

发布者:SereneSpirit最新更新时间:2022-08-19 来源: csdn关键字:51单片机  ADC0808  数码管显示 手机看文章 扫描二维码
随时随地手机看文章

硬件设计

该设计是基于51单片机,ADC采用TI公司的ADC0808,自动数字电压测量表,显示器采用4位数码管,测量范围为0.5~10V,精度约为0.02。


仿真图如下:

在这里插入图片描述
在这里插入图片描述

程序源码:


 #include

unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char dispbuf[4];

unsigned int i;

unsigned int j;

unsigned int getdata;

unsigned int temp;

unsigned int temp1;

unsigned char count;

unsigned char d;

sbit ST=P2^4;

sbit OE=P2^5;

sbit EOC=P2^6;

sbit CLK=P2^7;

sbit ADD_A=P3^4;  //选择AD的输入端

sbit ADD_B=P3^5;

sbit ADD_C=P3^6;

sbit D0=P2^0;  //数码管的位控制端

sbit D1=P2^1;

sbit D2=P2^2;

sbit D3=P2^3;

sbit P17=P1^7;  //确定小数点的位置

sbit s1=P3^2;

sbit s2=P3^3;

#define _v0_5 {s1=1;s2=0;}

#define _v10 {s1=0;s2=1;}

 


unsigned char m;


void TimeInitial();

void Delay(unsigned int i);


void TimeInitial()

{ TMOD=0x10;

 TH1=(65536-200)/256;

 TL1=(65536-200)%256;

 EA=1;

 ET1=1;

 TR1=1;

 }

void Delay(unsigned int i)

{

  unsigned int j;

  for(;i>0;i--)

  {

  for(j=0;j<125;j++)

  {;}

  }

}

 

void Display()


P1=dispbitcode[dispbuf[3]];


 D0=0;

 D1=1;

 D2=1;

 D3=1;

 Delay(10);

 P1=0x00;


 P1=dispbitcode[dispbuf[2]];

 if(m==2)

 {

 P17=1;

 }

 D0=1;

 D1=0;

 D2=1;

 D3=1;

 Delay(10); 

 P1=0x00;

 P1=dispbitcode[dispbuf[1]];

  if(m==10)

 {

P17=1;

  }

 D0=1;

 D1=1;

 D2=0;

 D3=1;

 Delay(10);

 P1=0x00;

 P1=dispbitcode[dispbuf[0]]; 

 D0=1;

 D1=1;

 D2=1;

 D3=0;

 Delay(10);

 P1=0x00;

}

void main()

{

TimeInitial();

ADD_A=0;

ADD_B=0;

ADD_C=0;

_v10;

m=2;

while(1)

 



ST=0;

OE=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

getdata=P0;

OE=0;

if ((s1==0) && (s2==1) && (getdata<6))

{

ADD_A=1;

_v0_5;


m=10;

}

else if ((s1==1)&&(s2==0) && (getdata>254))

{

ADD_A=0;

_v10;

m=2;

}



temp=(getdata*1.0/255)*500*m;

dispbuf[0]=temp%10;

dispbuf[1]=temp/10%10;

dispbuf[2]=temp/100%10;

dispbuf[3]=temp/1000;

Display();


}

}


void t1(void) interrupt 3 using 0

 {

  TH1=(65536-200)/256;

  TL1=(65536-200)%256;

  CLK=~CLK;

  }


附:http://www.jh-tec.cn/archives/7311

关键字:51单片机  ADC0808  数码管显示 引用地址:基于51单片机ADC0808自动数字电压表仿真数码管显示

上一篇:【STC单片机学习】第四课:了解你的开发板(STC51)
下一篇:基于51单片机的7键8键电子琴proteus仿真数码管显示程序原理设计

推荐阅读最新更新时间:2024-11-13 22:49

51单片机频率计Proteus仿真设计(带程序电路)
Proteus仿真电路图如下:(下载仿真文件后有清晰图) 有 电路图 和程序,电路是isis的,程序是uv3的, 仿真 工程文件下载: http://www.51hei.com/f/dgnplj.rar 下面是程序源代码: #include AT89x52.h #include stdio.h #include intrins.h //端口定义 sbit LCDRS = P3^5; sbit LCDRW = P3^6; sbit LCDEN = P3^7; sbit LCDBF = P2^7; #define DBPORT P2 #define DIS_CURS_OFF 0x0c #define LCD_C
[单片机]
<font color='red'>51单片机</font>频率计Proteus仿真设计(带程序电路)
51单片机的内部资源和最小系统解读
1、单片机内部资源 STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源 (1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢 (2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用 (3)SFR —— 特殊功能寄存器 2、单片机最小系统 最小系统:最少组件组成单片机可以工作的系统。 三要素: (1)、 电源电路:5V (2)、 晶振电路:11.0592MHZ、两个30PF (3)、 复位电路: P0:开漏输出,必须加上拉电阻 准双向口: 强推挽输出:电流驱动能力强 高阻态 上下拉电阻:上拉电路就是
[单片机]
<font color='red'>51单片机</font>的内部资源和最小系统解读
51单片机定时/计数器详解(工作原理及模式、应用)
51单片机是基础入门的一个单片机,还是应用最广泛的一种。本文主要介绍51单片机定时/计数器,首先介绍了51单片机定时/计数器的工作原理,其次介绍了51单片机定时/计数器的工作模式,最后阐述了51单片机定时/计数器的应用,具体的跟随小编一起来了解一下吧。 51单片机的定时/计数器的概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝,因此,单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单
[单片机]
<font color='red'>51单片机</font>定时/计数器详解(工作原理及模式、应用)
8051单片机教程第十一课:算术运算类指令
不带进位位的加法指令 ADDA,#DATA;例:ADDA,#10H ADDA,direct;例:ADDA,10H ADDA,Rn;例:ADDA,R7 ADDA,@Ri;例:ADDA,@R0 用途:将A中的值与其后面的值相加,最终结果否是回到A中。 例:MOVA,#30H ADDA,#10H 则执行完本条指令后,A中的值为40H。 下面的题目自行练习 MOV34H,#10H MOVR0,#13H MOVA,34H ADDA,R0 MOVR1,#34H ADDA,@R1 带进位位的加法指令 ADDCA,Rn ADDCA,direct ADDCA,@Ri A
[单片机]
C51单片机 写一个外部中断(入门单片机)
代码部分 void main() { /*---------------EA,IT,EX必须写-------------*/ EA=1; //开启总中断 IT1=1; //中断触发模式 //=0为低电平触发,=1为下降沿触发 EX1=1; //外部中断允许位 while(1) { led1=0; } } void int1() interrupt 0 { led=~led1; } 解释: 1.外部中断(按键中断)最最重要的部分就是EA,IT,EX三条语句,这三条是必不可少的。 2.EA是中断总开关,类似家里电闸的总闸,总闸
[单片机]
C<font color='red'>51单片机</font> 写一个外部中断(入门单片机)
51单片机STC89C52控制LED闪烁(将延时程序写成子函数有形参)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------端口/引脚定义区域----------------------*/ sbit LED=P2^0; //位定义P2.0引脚名为LED /*-----------------------函数声明区域---------------------------*/ void delay(unsigned int xms);//延时函数声明 /*-----------------------主函数区域-----
[单片机]
51单片机使用心得
  8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。   一、硬件部分   1、一定要记得接晶振和复位电路。很多学生在Proteus上仿真成功后,焊板子的时候总是不记得把晶振和复位电路接上,这样板子是不会工作的。   2、一般没有特殊要求的话,选用11.0592MHZ的晶振。这样有利于得到没有误差的波特率。特别是当与PC机进行通信的话,选用这种晶振比较好。   3、复位电路的电容可以选择10uF或者22uF。如果是10uF的话,充电电阻R的值要高于4K欧姆,如果你的单片机工作速度很慢,可以选择8.2K欧姆。   4、每个大规模的数字IC旁边都要放一个0.1
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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