0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >LED应用 > 基于51单片机实现流水灯设计方案

基于51单片机实现流水灯设计方案

来源: elecfans
2022-07-28
类别:LED应用
eye 74
文章创建人 拍明芯城

原标题:基于单片机的流水灯设计方案

  51单片机流水灯原理

  下图为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

  1.jpg

  实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。

  1、通过改变赋值实现流水灯

  void main()

  { while(1) {

  P2=0xfe;

  delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb;

  delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf;

  delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f;

  delay1ms(500); } }

  2、通过公式运算实现流水灯

  void main() {

  while(1) {

  uinta,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++)

  P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } }

  3、通过操作符<<与“|”实现流水灯 (通过移位实现流水灯)

  void main() {

  uchara,i;

  while(1) {

  a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++)

  { P2=a;

  a=a<<1; //左移一位

  a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } }

  4、通过库函数_crol_(字符左移)实现流水灯

  void main()

  {

  uint a; a=0xfe; while(1) {

  P2=a;a=_crol_(a,1); delay_ms(500); } }

  5、采用数组实现流水灯

  uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  void main(void) {

  uchari;

  while (1) {

  for(i=0;i<8;i++) //循环点亮8只LED灯 {

  P2=table[i];

  delay_ms(500); //延时500毫秒 } } }



责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯