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

📄 main.c

📁 串行扩展数码管显示
💻 C
字号:
#include "AT89X52.h"

#define uchar unsigned char
#define uint  unsigned int
#define Ls138 P1
#define key P2

code uchar led[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
void delay(uint i);
void display(uchar number);
void keypress(void);
void keyrelease(void);
uchar ch = 0;
bit time_flag = 0,fkeypress = 0,firstin = 0;
main()
{
// uchar j;
 SCON = 0x00;
 TMOD = 0x01;
 TH0 = 0x3c;
 TL0 = 0xb0;
 EA =1;
 ET0 = 1;
 TR0 = 1;
 display(led[ch]);
 while(1)
 {
  /*for(j=0;j<10;j++)
  {
  display(led[j]);
  delay(10000);
  }*/
  if(!fkeypress)
  {
	keypress();
  }
  if(fkeypress)
  {
  	keyrelease();
  }
  if(fkeypress&&!firstin)
  {
  	firstin = 1;
  	ch++;
	if(ch>9)
	{
	ch = 0;
	}
  }
  if(time_flag)
  {
  	time_flag = 0;
	display(led[ch]);
  }  
 }
}

void delay(uint i)
{
	while(--i);
}

void display(uchar number)
{
 uchar i;
  for(i=1;i<7;i++)
  {
	Ls138 = i;
	SBUF = ~number;
    while(!TI);
	TI = 0;
  }
}

void time0() interrupt 1 using 0
{
	TR0 = 0;
	TH0 = 0x3c;
 	TL0 = 0xb0;
	time_flag = 1;
	TR0 =1;
}

void keypress(void)
{
	key = 0xff;
	if(!(key&0x80))
	{
		delay(600);
	}
	else
	{
		fkeypress = 0;
		firstin = 0;
		return;
	}
	key = 0xff;
	if(!(key&0x80))
	fkeypress = 1;
}

void keyrelease(void)
{
	key = 0xff;
	if((key&0x80))
	{
		delay(600);
	}
	else
	{
		return;
	}
	key = 0xff;
	if((key&0x80))
	fkeypress = 0;
}

⌨️ 快捷键说明

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