基于51单片机电容表设计

基于51单片机电容表设计

(仿真+程序+设计报告)

功能介绍

具体功能:

1.测量有四个档位,2nf档、20nf档、200nf档和2000nf档;

2.采用六位数码管显示测得电容;

3.若测量值超过了测量范围,最高位显示1;

添加图片注释,不超过 140 字(可选)

程序

#include<reg52.h>
/***微信公众号:木子单片机********/
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P3^0;//定义锁存使能端口 段锁存
sbit CAP=P1^2;//运放输出连接端,当输出高电平时停止计时
sbit nf=P3^1;//测量控制总按键,低电平有效
sbit lm1=P1^3;
sbit lm2=P1^4;
sbit lm3=P1^5;
sbit lm4=P1^6;
sbit  key1=P3^2;
sbit  key2=P3^3;
sbit  key3=P3^4;
sbit  key4=P3^5;

unsigned int num;
unsigned char code 
dofly_DuanMa1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F,不显示小数点。
unsigned char code 
dofly_DuanMa2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};// 显示段码值0~F,显示小数点。

dofly_WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码
unsigned char TempData[8]; //存储显示值的全局变量

void Delay(unsigned int t); //延时函数声明
void delayms(unsigned char t);
void Display(unsigned char FirstBit,unsigned char Num);
void  ke1(void) ;
void  ke2(void) ;
void  ke3(void) ;
void  ke4(void) ;

void  ke1(void)
{
   TempData[0]=dofly_DuanMa2[num/1000];
   TempData[1]=dofly_DuanMa1[num%1000/100];
   TempData[2]=dofly_DuanMa1[num%1000%100/10];
   TempData[3]=dofly_DuanMa1[num%1000%100%10];
   TempData[4]=0x37;
   TempData[5]=0x71;	  
}

void ke2(void)
{
	TempData[0]=dofly_DuanMa1[num/1000];
    TempData[1]=dofly_DuanMa2[num%1000/100];
    TempData[2]=dofly_DuanMa1[num%1000%100/10];
    TempData[3]=dofly_DuanMa1[num%1000%100%10];
	TempData[4]=0x37;
    TempData[5]=0x71;
}

void ke3(void)
{
	TempData[0]=dofly_DuanMa1[num/1000];
    TempData[1]=dofly_DuanMa1[num%1000/100];
    TempData[2]=dofly_DuanMa2[num%1000%100/10];
    TempData[3]=dofly_DuanMa1[num%1000%100%10];
	TempData[4]=0x37;
    TempData[5]=0x71;
}

void  ke4(void)
{
   TempData[0]=dofly_DuanMa1[num/1000];
   TempData[1]=dofly_DuanMa1[num%1000/100];
   TempData[2]=dofly_DuanMa1[num%1000%100/10];
   TempData[3]=dofly_DuanMa1[num%1000%100%10];
   TempData[4]=0x37;
   TempData[5]=0x71;
	}

bit key(void)
{
    if(nf==0)
	{
	  delayms(10);
	  if(nf==0)
	 return 0;
	  }
	  else 
	  return 1;
}
	
void Delay(unsigned int t)
{
 while(--t);
}
void delayms(unsigned char t)      //约延时1ms
  {
  while(--t)
  {
  Delay(245);
  Delay(245);
       }
	 }

void Display(unsigned char FirstBit,unsigned char Num)
{
      unsigned char i;
	  
	  for(i=0;i<Num;i++)
	   { 
	   DataPort=0;   //清空数据,防止有交替重影
       LATCH1=1;     //段锁存
       LATCH1=0;
 P2=dofly_WeiMa[i+FirstBit]; //取位码 
 DataPort=TempData[i]; //取显示数据,段码
       LATCH1=1;     //段锁存
       LATCH1=0;
       Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
 }
}

硬件设计

使用元器件:

单片机:AT89C51;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

结构框图:

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus7.8版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用Keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计报告

一万字设计报告,具体如下!

添加图片注释,不超过 140 字(可选)

04设计资料

        资料获取请关注同名公众号,全部资料包括程序(含注释)、仿真源文件 、设计报告等。具体内容如下,全网最全! !

添加图片注释,不超过 140 字(可选)

资料获取请观看前面演示视频!

点赞分享一起学习成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值