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

📄 mypro.c.txt

📁 本频率计具有测周、测频、测量占空比等基本功能
💻 TXT
字号:
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char

sbit FCLK=P2^0;   //单片机与FPGA联络信号
sbit PERIOD=P2^4; //1测周,0测频
sbit ENABLE=P2^6; //单片机与FPGA联络信号
sbit DCLK=P3^4;   //7219时钟
sbit DIN=P3^5;    //7219串行输入
sbit LOAD=P3^3;   //7219选通/装载
sbit Dp1=P3^2;    //百位小数点
sbit Dp2=P2^1;   //十位小数点

const code LED_DISP[]={
 0x7e,// '0'
 0x30,// '1'
 0x6d,// '2'
 0x79,// '3'
 0x33,// '4'
 0x5b,// '5'
 0x5f,// '6'
 0x70,// '7'
 0x7f,// '8'
 0x7b,//  '9'
 0x37, //'H'
 0xfe,
 0xb0,
 0xed,
 0xf9,
 0xb3,
 0xdb,
 0xdf,
 0xf0,
 0xff,
 0xfb,
 0x00
 };
/********送一个字节函数********/
void SendByte(uchar dat)
{uchar i;
   for(i=0;i<8;i++)
     { DCLK=0;
	   DIN=(bit)(dat&0x80);
	   DCLK=1;
	   dat=dat<<1;
	 }
}

/******送某个地址一个字节******/
void SendData(uchar adr,uchar dat)
{ LOAD=0;
  SendByte(adr);
  SendByte(dat);
  LOAD=1;
}

/********初始化7219*********/
void Init7219()
{ LOAD=0;
  DCLK=0;
  DIN=0;
  SendData(0x0c,0x01); //0关闭,1亮
  SendData(0x0b,0x07); //1-8管全亮
  SendData(0x09,0x00); //不编码
  SendData(0x0a,0x08); //亮度
  SendData(0x0f,0x00); //测试
  LOAD=1;
}

/*****显示某一位置的某个字符*****/
void DispChar(uchar Pos,uchar Chr)
{
   SendData(Pos,LED_DISP[Chr]);
}

/******显示全屏8个字符******/
void DispAll(uchar *dat)
{ uchar i;
   for(i=1;i<=8;i++)
     DispChar(i,*(dat++));
}

/*********主函数********/
void main()
{ uchar k,j,t;
  uchar d[8]={0};
  uchar b[3],c[3];
  uchar temp[6]={0};
  uint m,n;
  Init7219();
  FCLK=0;
  ENABLE=0;
   while(1)
   { ENABLE=1;
     for(j=0;j<6;j++)
	 { FCLK=1;
	   FCLK=0;
          for(k=0;k<255;k++)
            for(t=0;t<255;t++);
	   temp[j]=P0;
	 }
         FCLK=1;
         FCLK=0;
         ENABLE=0;
	 d[0]=temp[1];
	 d[1]=temp[0]&0xf0;
         d[1]=d[1]>>4;
	 d[2]=temp[0]&0x0f;
         b[0]=temp[3];
         b[1]=temp[2]&0xf0;
         b[1]=b[1]>>4;
         b[2]=temp[2]&0x0f;
         c[0]=temp[5];
         c[1]=temp[4]&0xf0;
         c[1]=c[1]>>4;
         c[2]=temp[4]&0x0f;
         m=((int)b[0])*100+b[1]*10+b[2];
         n=((int)c[0])*100+c[1]*10+c[2];
         d[6]=m*10/n;
         m=(m*10)%n;
         d[7]=m*10/n;
         d[5]=11;
         d[4]=21;
         d[3]=21;
         
	  if(PERIOD==1)
	   { m=((int)d[0])*100+d[1]*10+d[2];
	     d[0]=1000/m;
		 n=1000%m;
		 d[1]=n*10/m;
		 n=(n*10)%m;
		 d[2]=n*10/m;
		 d[3]=10; //字符'H'
	   }

	   if((Dp1==1)&&(Dp2==0))
	    {  d[0]=d[0]+11;
            DispAll(d);}
		else if((Dp1==0)&&(Dp2==1))
		 {d[1]=d[1]+11;
            DispAll(d);}
            DispAll(d);

	}
 }

⌨️ 快捷键说明

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