立即注册 登录
返回首页

uid:235027的个人空间

日志

数字电压表

已有 948 次阅读2017-9-23 09:30 |个人分类:学习

//程序头函数
#include <reg52.h>
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1
//ADC0809
sbit ST=P3^2;
sbit EOC=P3^3;
sbit OE=P3^1;
sbit DIAN = P0^5;          //小数点
/*******************************定义全局变量********************************/
unsigned char dis[3];       //显示数值
unsigned int sum=0;
unsigned int temp=0;
unsigned int dat=0;
/*******************************共阴LED段码表*******************************/
unsigned char code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x5e/*字母U*/}; //gc.debfa
/****************************************************************************
函数功能:AD转换子程序
****************************************************************************/
//ADC0809读取信息
uchar ADC0809()
{
 uchar temp_=0x00;
 //初始化高阻太
 OE=0;
 //转化初始化
 ST=0;
 //开始转换
 ST=1;
 ST=0;
 //外部中断等待AD转换结束
 while(EOC==0)
 //读取转换的AD值
 OE=1;
 temp_=Data_ADC0809;
 OE=0;
 return temp_;
}
/****************************************************************************
函数功能:延时子程序
入口参数:
出口参数:
****************************************************************************/
void delay(unsigned int x)
{
    unsigned int i,j;
    for(i=0;i<x;i++)
 for(j=0;j<121;j++);
}
//=====================================================================================
//=====================================================================================
//=====================================================================================
/****************************************************************************
函数功能:将0-255级换算成0.00-5.00的电压数值
入口参数:i
出口参数:
****************************************************************************/
void convdata(unsigned char dat1)
{
 unsigned int Vo;
 Vo=dat1*1.96; 
    dis[0] = Vo/100;       //十位
    dis[1] = Vo%100/10;      //个位 
    dis[2] = Vo%100%10;     //小数点后第1位
}
/****************************************************************************
函数功能:数码管显示子程序
入口参数:
出口参数:
****************************************************************************/
void display(void)

    P0=~tab[dis[0]];     
    P2=0xfe;                  //11011111
 DIAN=0;
    delay(1);   
    P2=0xff;
    P0=~tab[dis[1]];      
    P2=0xfb;                //10111111
    delay(1);
    P2=0xff;
    P0=~tab[dis[2]];     
    P2=0xef;              //01111111 
    delay(1);
    P2=0xff;
 P0=~tab[10];     
    P2=0xbf;             
    delay(1);
    P2=0xff;
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
 unsigned char p=0;
    while(1)       //主循环   
    {
  for(p=0;p<20;p++)
  { 
   sum=sum+ADC0809();
   display();
  }
//  dat=((sum/20)+dat)/2;
  dat=sum/20;
  convdata(dat);      //数据转换
  sum=0;
  display();      //显示数值
    }
}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部