您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>发光二极管>

源程序 - LED显示摇棒制作

2011年12月27日 10:56 互联网 作者:秩名 用户评论(0
以下是源程序:

  /*************************************************************************/

  // ---------------

  // LED显示摇棒

  // ---------------

  // 作者:nim 于 http://www.21icbbs.com 2005-1-7

  //

  // email: linyige@yahoo.com

  //

  // 本设计版权归作者所有,请勿擅自用于商业目的,转载请注明作者及出处

  /*************************************************************************/

  #include

  #define SEG 17 //每帧图片分成17列来显示

  #define INTERVAL 20 //每幅图片在左右摇摆20次后换下一幅

  typedef unsigned char uchar;

  typedef unsigned int uint;

  code char pattern[17][3]={ //3幅图片的字模

  {0xff,0xff,0xff},

  {0xff,0xff,0xff},

  {0xff,0xff,0xff},

  {0xff,0x9f,0xff},

  {0xff,0x6f,0xf9},

  {0xff,0x77,0x65},

  {0xfe,0xbb,0x1e},

  {0x7e,0xdd,0xfe},

  {0x00,0xee,0xfe},

  {0x7e,0xdd,0xfe},

  {0xfe,0xbb,0x1e},

  {0xff,0x77,0x65},

  {0xff,0x6f,0xf9},

  {0xff,0x9f,0xff},

  {0xff,0xff,0xff},

  {0xff,0xff,0xff},

  {0xff,0xff,0xff},

  };

  uchar phase,th1,tl1,index,count;

  main()

  {

  EA=0;

  EX0=1;

  ET1=1;

  PX0=1;

  IT0=1;

  TMOD=0x11;

  index=0;

  EA=1;

  while(1)

  {

  }

  }

  void Int0_Handle(void) interrupt 0 using 2

  {

  uint t0_time;

  TR0=0;

  TR1=0;

  TF1=0;

  t0_time=TH0<<8|TL0;

  TL0=0;

  TH0=0;

  TR0=1;

  t0_time=65535-t0_time/SEG;

  th1=t0_time/256;

  TH1=th1;

  tl1=t0_time % 256;

  TL1=tl1;

  if (count<3*INTERVAL){ //3幅图片循环

  count++;

  }

  else{

  count=0;

  }

  index=count/INTERVAL;

  if (th1!=0xff || tl1!=0xff){ //如果摆动特别慢,定时器溢出就不显示

  phase=0;

  TR1=1;

  }

  else{

  TR1=0;

  }

  }

  void Timer1(void) interrupt 3 using 3

  {

  if (phase

  {

  P1=pattern[phase][index];

  phase++;

  TH1=th1;

  TL1=tl1;

  }

  }

非常好我支持^.^

(78) 98.7%

不好我反对

(1) 1.3%

( 发表人:小兰 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!