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

📄 liyi.c

📁 该设计使用环境是proteus
💻 C
字号:
#include <REG2051.H>
#include <stdio.h>
#define uchar unsigned char

sbit DIN=P1^0;
sbit LOAD=P1^1;
sbit CLK=P1^2;
sbit sound=P3^7;

sbit kaiguan=P1^7;
//unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


//unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,




unsigned char disbuf[8]={0,0,0,0,0,0,10,10}; 
unsigned char temp[8];	 
unsigned char dispcount;  
unsigned char T0count;	 
unsigned char timecount;   
bit flag;
 unsigned long chushizhi=1000;


void send(uchar add,uchar dat);
void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8);

void initt0andt1(void);

void  frequency_process(void );


void main(void)	
{ 
//	unsigned char i;
	sound=0;
	kaiguan=0;																	
 	initt0andt1();

	while(1)
	{ 
     if(flag) 
       { 		 
         flag=0;
		 frequency_process();
		 s_seg(disbuf[0],disbuf[1],disbuf[2],disbuf[3],disbuf[4],disbuf[5],disbuf[6],disbuf[7]);
       }


 	}


}

void  frequency_process(void )
{
	   uchar i;	
	  // 	unsigned long freadd;

	   
	    unsigned long my_result;
  
		  my_result=T0count*65536+TH0*256+TL0;	
		   	my_result=chushizhi-my_result;
			if(my_result<100) sound=1;	else sound=0;
			if(my_result<80)  kaiguan=1;else kaiguan=0;

         for(i=0;i<8;i++)  
           {   
             temp[i]=0;	 
           }
         i=0;  
         while(my_result/10)  
           {	
             temp[i]=my_result%10;	 
             my_result=my_result/10;
             i++;  
           } 			 
         temp[i]=my_result;	 
         for(i=0;i<8;i++)  
           {  
             disbuf[i]=temp[7-i];
									
           } 
         timecount=0;	 
         T0count=0;	
         TH0=0;	 
         TL0=0;	 
         TR0=1;	 
}


void initt0andt1(void)
{
  	TMOD=0x15;
	TH0=0; 
	TL0=0;	
	TH1=(65536-4000)/256; 
	TL1=(65536-4000)%256;	 
	TR1=1;
	TR0=1; 
	ET0=1; 
	ET1=1; 
	EA=1; 
}


void t0(void) interrupt 1 using 0		//T0


{


T0count++;


}


void t1(void) interrupt 3 using 0	 //T1	   4ms中断一次


{


TH1=(65536-4000)/256;


TL1=(65536-4000)%256;


timecount++;


if(timecount==250)


    {


      TR0=0;


      timecount=0;


      flag=1;


    }


//P0=dispcode[dispbuf[dispcount]];


//P2=dispbit[dispcount];


//dispcount++;


//if(dispcount==8)


   // {


    //  dispcount=0;


  //  }


}









void send(uchar add,uchar dat)
{
   	uchar ADS,i,j;
   	CLK=0;
	LOAD=0;
	DIN=0;
   	i=4;
   	while(i<16)
   	{
     	 if(i<8)
	  	{
	  		ADS=add;
		}
	  else
	  	{
			ADS=dat;
		}
	  for(j=8;j>=1;j--)
	  	{

			if((ADS&0x80)==0)
			{	DIN=0 ;}
			else 
			{	DIN=1;}
	  	  	ADS=ADS<<1;
		
		CLK=1;
		CLK=0;	
	 	 }
	  i=i+8;
   }
   LOAD=1;
}

//void s_seg(uchar X1,uchar X2,uchar X3,uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
{
	 send(0x0c,0x01);//正常状态
   send(0x0b,0x07);//设置扫描范围DIG0-7
	 send(0x0a,0x05);//设置亮度11/32
   send(0x09,0xff);//采用译码方式

   send(0x01,X1);
   send(0x02,X2);
   send(0x03,X3);
   send(0x04,X4);
   send(0x05,X5);
   send(0x06,X6);
   send(0x07,X7);
   send(0x08,X8);	
}



















⌨️ 快捷键说明

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