numled.c

来自「单片机开发资料光盘-双龙-686M.zip」· C语言 代码 · 共 54 行

C
54
字号
#include <AT89X52.H>
/*    10us延时程序       */
void delay_10us(void)
   {
	unsigned char i;
	for (i=0;i<1;i++)
	    ;
    }
/*     ms级延时程序      */
void delay_ms(unsigned int number)
   {
     unsigned char i;
     do
	   {
	    for(i=0;i<100;i++)
		     delay_10us();
		}
	 while(--number!=0);     
    }
#define num_bit P1
unsigned char xdata num_seg _at_ 0xf700;
unsigned char code seg_tabel[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char idata led_buffer[6] _at_ 0x90;
void display(void)
{
 unsigned char i;
 for(i=0;i<6;i++)
  {
   num_seg=led_buffer[i];
   num_bit=~(0x04<<i);
   delay_ms(1);
   num_bit=0xff;
   num_seg=0xff;
  }
}
void main(void)
{
 unsigned char i,j=6;
 for (i=0;i<6;i++)
   led_buffer[5-i]=seg_tabel[i];
 while(1)
  {
   for(i=0;i<200;i++)
       display();
   for (i=5;i>0;i--)
	   led_buffer[i]=led_buffer[i-1];
   led_buffer[0]=seg_tabel[j];
   if (j<15)
       j++;
   else
       j=0;
  }
}

⌨️ 快捷键说明

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