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

📄

📁 自调量程数字电压表 自动实现200MV档 2V档 20V档的量程调换
💻
字号:
#include<reg52.h>
#define uchar unsigned char 
#define uint  unsigned int
      


#define uchar unsigned char 
#define uint  unsigned int
 
uchar  a,b,c,d;
unsigned char getdata;
unsigned int temp;
unsigned int j;
unsigned char m;



uchar code table0[]=" The V Is:";
uchar code table2[]="0123456789MV .";





sbit rs=P2^5;
sbit rw=P2^6;
sbit e =P2^7;


sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit ALE=P3^7;



sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;

sbit s1=P2^0;
sbit s2=P2^1;


#define	 _v0_2 {s1=0;s2=1;}
#define  _v2   {s1=1;s2=0;}
#define  _v20  {s1=0;s2=0;} 


void TimeInitial();


void TimeInitial()
{ TMOD=0x10;
 TH1=(65536-200)/256;
 TL1=(65536-200)%256;
 EA=1;
 ET1=1;
 TR1=1;
 }


void delay(unsigned char x)
{
unsigned char a,b;
for(a=x;a!=0;a--)
for(b=20;b!=0;b--);
}


void writecomm(uchar comm)
{
P0=comm;
rs=0;
rw=0;
e=0;
delay(5);
e=1;
delay(5);
e=0;
}


void writedat(uchar dat)
{
P0=dat;
rs=1;
rw=0;
e=0;
delay(5);
e=1;
delay(5);
e=0;
}


void writesmh(uchar add,uchar date)
{
uchar count;
count=date;
writecomm(0xc0+add);
delay(5);
writedat(table2[count]);
delay(5);
}


void init()
{
uchar i;
delay(50);
writecomm(0x38);
delay(50);
writecomm(0x0c);
delay(50);
writecomm(0x06);
delay(50);
writecomm(0x01);
delay(50);
writecomm(0x80);
delay(5);
for(i=0;i<10;i++ )
{
writedat(table0[i]);

delay(5);
}
writesmh(4,a);
delay(5);
writesmh(5,b);
delay(5);
writesmh(7,c);
delay(5);
writesmh(8,d);
delay(5);

}

void main()
{  init();
   
   _v20;
   m=1;
  TimeInitial();
while(1)
{

  
  ST=1;
  ST=0;
  while(EOC==0);
  OE=1;
  getdata=P1;
  OE=0;
  if ((s1==0) && (s2==0) && (temp<200))
	{ 	
		_v2;
        m=2; 
		
	 }
  else if	((s1==1)&&(s2==0) && (getdata<26))
	{		 
		
		_v0_2;
	
		m=3;
	 }
   else if((s1==0)&&(s2==1) && (getdata>254))
        {
              
			   _v2;
               m=2;
         }
   else if ((s1==1)&&(s2==0) && (getdata>254))
	     {
		 
		  _v20;
		  m=1;
		 }
   temp=(getdata*1.0/255)*2000;
   a=temp/1000;
   b=temp/100%10;
   c=temp/10%10;
   d=temp%10;
   
      if(m==1)
      {	
	    
        writesmh(4,a);
        delay(5);
        writesmh(5,b);
        delay(5);
		writesmh(6,13);
        delay(5);
        writesmh(7,c);
        delay(5);
	    writesmh(8,d);
		delay(5);
		writesmh(9,12);
		delay(5);
		writesmh(10,11);
		delay(5);

		led2=1;
		led1=0;
		led3=1;
      }	
	   if (m==2)   
     {  
   	    writesmh(4,a);
        delay(5);
		writesmh(5,b);
        delay(5);
		writesmh(6,c);
        delay(5);
        writesmh(7,d);
        delay(5);
		writesmh(8,12);
        delay(5);
		writesmh(9,10);
        delay(5);
		writesmh(10,11);
        delay(5);
		led2=0;
		led1=1;
		led3=1;	
      } 
	   if (m==3)   
     {  
		
        writesmh(4,a);
        delay(5);
        writesmh(5,b);
        delay(5);
		writesmh(6,c);
        delay(5);
		writesmh(7,13);
        delay(5);
		writesmh(8,d);
        delay(5);
		writesmh(9,10);
        delay(5);
		writesmh(10,11);
        delay(5);
		led2=1;
		led1=1;
		led3=0;
      }	
	 for(j=0;j<40;j++)
     delay(250);	 
 }	 
}

void t1(void) interrupt 3 using 0
 {
  TH1=(65536-200)/256;
  TL1=(65536-200)%256;
  CLK=~CLK;
  }


⌨️ 快捷键说明

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