⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 voltage.c

📁 数字电压表
💻 C
字号:
#include"reg51.h"  
#include<INTRINS.H>

#define timerh 0xee
#define timerl 0xff
sbit TLC549_clk=P2^3;
sbit TLC549_data=P2^4;

unsigned char cs;
unsigned char dispram[4];
unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char sega[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0x6f};

void intimer(void);
void selectcs(void);
void select_none(void);
unsigned char TLC549_AD(void);

unsigned char advalue,adcnt;
unsigned int adsum,addisplay;
 
void main()
{
  P0=0xff;
  P1=0xff;
  P2=0xff;

  intimer();

  dispram[0]=0;
  dispram[1]=1;
  dispram[2]=2;
  dispram[3]=3;
  adcnt=0;
  adsum=0;
  
  TR1=1;

  while(1)
  {  
    advalue=TLC549_AD();
    if(adcnt==255)
       {
         adcnt=0;
         addisplay=adsum/128;
         dispram[0]=addisplay/1000;
         dispram[1]=(addisplay%1000)/100;   
         dispram[2]=(addisplay%100)/10;
         dispram[3]=addisplay%10;
         adsum=0;
       }
     else
        {
	     adcnt++;  
         adsum+=advalue;
         }
   }
}

unsigned char TLC549_AD(void)
{
  char i;
  unsigned char rt=0;
  TLC549_data=1;
  TLC549_clk=0;
  selectcs();

  if(TLC549_data&1)
    rt|=0x80;
  TLC549_clk=1;
  TLC549_clk=1;

  for(i=6;i>=0;i--)
     {
 	   TLC549_clk=1;
	   if(TLC549_data&1)
		  rt|=(1<<i);
       TLC549_clk=0;
 	 }
  TLC549_clk=1;
  select_none();
  return rt;
}	 
 	  
void selectcs(void)
{
 _nop_();
 _nop_();
 P2&=0x7f;
}

void select_none(void)
{
 _nop_();
 _nop_();
  P2|=0xe0;
}
 
void segdata(unsigned char m)
{
  if(cs==1)
     P0=sega[m];
  else
     P0=seg[m];
  _nop_();
  _nop_();
  P2&=0x1f;
  _nop_();
  _nop_();
  P2|=0xe0;
}

void csdata(unsigned char cs)
{
 cs&=0x0f;
 P0=~cs;
 _nop_();
 _nop_();
 P2&=0x3f;
 _nop_();
 _nop_();
 P2|=0xe0;
}

void intimer(void)
{
  cs=0;
  dispram[0]=dispram[1]=dispram[2]=dispram[3]=0;

  TMOD=0x10;
  TH1=timerh;
  TL1=timerl;

  EA=1;
  ET1=1;
}

void timer(void) interrupt 3 using 2
{
  TH1=timerh;
  TL1=timerl;
  TF1=0;

  if(cs>=3)
     cs=0;
  else
     cs++;
  segdata(dispram[cs]);
  csdata(1<<cs);
}




  






        




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -