• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的共阴极数码管数字电压表设计!!!

04/24 09:49
1142
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【T01】

1.? 简介

? 本文提出了一种基于51单片机共阴极数码管数字电压表设计。该系统采用AT89C51单片机为控制核心,模拟量输入范围直流0v-5v。模拟量经ADC0809模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制4位数码管显示模拟量输入的电压值。

2.? 主要功能

a.通过4位共阴极数码管显示电压值。量程:0-5V

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include<reg51.h>					      /*包含头文件reg51.h */
#define uchar unsigned char	 		/*宏定义后方便书写*/
#define uint unsigned int				/*宏定义后方便书写*/
uchar code DigitSTARTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //LED码表
uchar DisplayBuffer[4];				//显示码数据缓冲区
uchar AD_Data;					//AD0809原始数据
uint Temp; 						  //处理后的数据
sbit START=P3^0; 				//定义P3.0引脚位名称为START
sbit OE=P3^1; 					//定义P3.1引脚位名称为OE
sbit EOC=P3^2;					//定义P3.2引脚位名称为EOC
sbit CLK=P3^3;					//定义P3.3引脚位名称为CLK
sbit ADDA=P3^4;					//定义P3.4引脚位名称为ADDA
sbit ADDB=P3^5;					//定义P3.5引脚位名称为ADDB
sbit ADDC=P3^6;					//定义P3.6引脚位名称为ADDC
sbit LED0=P2^0;					//定义P2.0引脚位名称为LED0,选择LED的0位
sbit LED1=P2^1;					//定义P2.1引脚位名称为LED1,选择LED的1位
sbit LED2=P2^2;					//定义P2.2引脚位名称为LED2,选择LED的2位
sbit LED3=P2^3;					//定义P2.3引脚位名称为LED3,选择LED的3位
sbit LED_DP=P1^7;				//定义P1.7引脚位名称为LED_DP,选择LED的DP位

//*********************************************************************************
//函数名:Delay
//函数功能:软件延时函数
//形式参数:uint i
//*********************************************************************************
void Delay(uint i)
{  uint j;
  for(;i>0;i--)
   { for(j=0;j<50;j++)
     ;
   }
}

//*********************************************************************************
//函数名:TimeInitial
//函数功能:定时器初始化函数 T0方式2,自动重装初值:10,定时:10us,
//信号周期T:20us 信号频率f:f=1/T=1000000/20=50 000HZ=50KHZ
//*********************************************************************************
void TimeInitial()		 //定时器初始化
{ TMOD=0x02;	 				 //定时器工作模式
 TH0=246;				       //定时器初值高8位
 TL0=246; 			       //定时器初值低8位
 EA=1;						     //开总中断
 ET0=1;		 				//开定时器中断
 TR0=1;		 				//启动定时器
 }

//*********************************************************************************
//函数名:Time0
//函数功能:定时器0中断服务子程序函数
//*********************************************************************************
 void Time0(void) interrupt 1 using 0  	//定时器中断服务子程序
 { 
  CLK=~CLK;	   				//产生AD0809工作脉冲:50KHZ
    }
 
//*********************************************************************************
//函数名:Display
//函数功能:LED数码管显示函数
//*********************************************************************************
void Display()
{ 
 P1=DigitSTARTable[DisplayBuffer[3]];	//取数据送P1端口显示(十位)
 LED0=0;	   					// LED0管子开
 Delay(5); 						// 延时显示
 LED0=1;	  					// LED0管子关
 P1=DigitSTARTable[DisplayBuffer[2]];//取数据送P1端口显示(个位)
 LED_DP=1;					// 小数点显示
 LED1=0;   					// LED1管子开
 Delay(5); 						// 延时显示
 LED1=1;  						// LED1管子关
 P1=DigitSTARTable[DisplayBuffer[1]];//取数据送P1端口显示 (小数1位)
 LED2=0;	  					// LED2管子开
 Delay(5);						// 延时显示
 LED2=1;	   					// LED2管子关
 P1=DigitSTARTable[DisplayBuffer[0]];//取数据送P1端口显示(小数2位)
 LED3=0;						// LED3管子开
 Delay(5);						// 延时显示
 LED3=1;	  					// LED3管子关
}

4.? 仿真proteus8.6

? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

运行:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【T01】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐