综合技术交流
直播中

ss

7年用户 8762经验值
擅长:电源/新能源 制造/封装 RF/无线
私信 关注
[经验]

设计花样闪烁效果的程序分享

  由于面包板面积的限制,以8个LED为例,设计花样闪烁效果。硬件电路同上节。
  1.程序设计
  #include 《reg52.h》
  #define uchar unsigned char
  #define uint unsigned int
  uchartable[ ]={0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0xff, 0xff, 0x00,0x00, 0x55, 0x55, 0xaa, 0xaa};//只要不超过ROM空间可以无限添加// 0111 1111(0x7f) 1011 1111(0xbf) 1101 1111(0xdf) 1110 1111(0xef) 1111 0111(0xf7)// 1111 1011(0xfb) 1111 1101(0xfd) 1111 1110(0xfe) 1111 1111(0xff) 1111 1111(0xff)// 0000 0000(0x00) 0000 0000(0x00) 0101 0101(0x55) 0101 0101(0x55) 1010 1010(0xaa)
  void delay(uint a)//简易延时
  {
  while(a--);
  }
  void main()
  {
  uchar i;
  while(1)
  {
  for(i=0;i《16;i++)//查表简单显示各种花样
  {
  delay(40000);
  P1=table[i];
  }
  }
  }
  2.程序解释
  通过for循环语句不断地从数组中取出数值,赋值给P1。for语句执行第一次循环的时候,“i=0;”,即“P1=table[0];”,对应数组是0x7f,换算为二级制是0111 1111,只有P1.7接口的LED点亮,其他熄灭。不断循环,直到i《16不成立而退出循环体。
  3.C语言基础知识
  数组
  数组,就是一组数据的集合,数组分为一维数组,二维数组,三位数组和多维数组。
  一维数组格式:
  数据类型说明数组名[数量]={数值1,数值2};
  [数量]一般不填,编译器自动计算
  举例 unsigned char table[ ]={0xfe,0xfd,0xfb};
  table是数字名0xfe,0xfd,0xfb是数值
  使用数组注意事项:
  ①大括号内数值之间用逗号。
  ②语句结束加上分号。
  ③table后面中括号里的数字是从0开始的,对应后面大括号里的第1个元素。
  以程序3.8.1为例
  P1=table[0];
  相当于P1=0x7f;
  4.查表法驱动LED
  for(i=0;i《16;i++)//查表可以简单的显示各种花样
  {
  delay(40000);
  P1=table[i];
  }

更多回帖

发帖
×
20
完善资料,
赚取积分