原创 从简单学起--流水灯

2007-1-2 23:56 5700 8 8 分类: MCU/ 嵌入式


    本程序采用查表的方式来控制,所谓的查表的方式是将一些特定的数据,在此是LED展示的变化组合数据事先存在数组中,而在程序中逐一有数组中取出个别的样本数据向LED的输出端口P0送出,便可完成“流水灯”式电路的展示效果,由于展示的样本数据可以随意组合,因此以查表方式做流水灯电路的花样较多,效果很好。
    下面的程序执行后8个LED作出4种不同的花样,更多的花样大家可以补充。
#include <REGX51.H>

char led1[]={0x7F, 0XBF, 0XDF, 0XEF, 0XF7, 0XFB, 0XFD, 0XFE};
char led2[]={0xFE, 0XFD, 0XFB, 0XF7, 0XEF, 0XDF, 0XBF, 0X7F};
char led3[]={0x7E, 0XBD, 0XDB, 0XE7, 0XE7, 0XDB, 0XBD, 0X7E};
char led4[]={0x7F, 0X3F, 0X1F, 0X0F, 0X07, 0X03, 0X01, 0X00};

/*延时子程序*/
delay(unsigned char t)
{
  unsigned char i,j;
  for(i=0;i<t;i++)
    for(j=0;j<100;j++);
}

/*花样显示子程序*/
showled(char *p)
{
  char i;
  for (i=0;i<8;i++)
  {
    P0=p[ i ] ;            /*从数组中取出数据送往P0口*/
     delay(250);
  }
}


/*主函数*/
main()
{
  P1_6=0;
  while(1)
  {
  showled(led1);
  showled(led2);
  showled(led3);
  showled(led4);
  }

}

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条