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

📄 sumaguan.c

📁 AT89S52单片机中数码管的循环显示的实现例子
💻 C
字号:
#include <reg51.h>
#include <intrins.h>

unsigned char code dis_code[16]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,
                                  0x30,0x25,0xa9,0x26,0xa1,0xb1};
unsigned char dis_buf0(unsigned char tab);
unsigned char dis_buf1(unsigned char tab);
void show(unsigned char adr_num ,unsigned char num_ma);
void delayms(unsigned char ms);
void main( )
{
 P0=0x00;
 P2=0xff;
 while(1)
 {
  show(0x01,0xFE);
  show(0x02,0xDC);
  show(0x03,0xBA);
  show(0x04,0x98);
 }
}
void show(unsigned char adr_num ,unsigned char num_ma)
{ 
 unsigned char dis_digit=0xfe;
 unsigned char dis_buf[2];
 dis_buf[0]=dis_buf0(num_ma);
 dis_buf[1]=dis_buf1(num_ma);
 dis_digit = _crol_(dis_digit,2*adr_num-2);
 P2 = 0xff;					
 P0 = dis_buf[1];			
 P2 = dis_digit;
 delayms(1);
 dis_digit = _crol_(dis_digit,1);
 P2 = 0xff;;						
 P0 = dis_buf[0];			
 P2 = dis_digit;
 delayms(1);						
}

unsigned char dis_buf0(unsigned char tab)
{
 unsigned char ltab;
 unsigned char i; 
 ltab=tab&0x0f;
 for(i=0x00;i<0x10;i++)
 {
  if(ltab==i)
  {
  return dis_code[i];
  }
 }
}


unsigned char dis_buf1(unsigned char tab)
{
 unsigned char htab;
 unsigned char i,j; 
 htab=tab&0xf0;
 j=0x00;
 for(i=0x00;i<0x10;i++)
 {
  if(htab==j)
  {
  return dis_code[i];
  }
  j=j+0x10;
 }
}

void delayms(unsigned char ms)	
// 延时子程序
{						
	unsigned char i;
	while(ms--)
	{
		for(i = 0; i <120; i++);
	}
}

⌨️ 快捷键说明

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