作为计算机系统开发的主流编程语言之一,C语言以其简洁紧凑、灵活方便、运算符丰富、数据类型丰富等诸多优点,而作为了高校理工科教育基础课程。
首先简单分析流水灯工作原理:只需要控制每个时间间隔内只有一盏灯亮即可,其余灯均处于灭状态。学习过汇编语言的,是否联想起寄存器循环移位操作符。如下所示即为LED灯电路原理图,分为共阴极与共阳极接法:
我们知道,在ASM(汇编语言)中,有循环左移、循环右移指令,但是在ANSI C标准中并没有循环移位操作运算符,所以接下来将介绍如何在C语言中实现循环移位操作运算。
功能: 循环移位 1111 1110 b(二进制),点亮LED灯实现流水灯效果。思路: 循环左移时,将移出的位填在右端示例: 实现循环左移1位uint8 a,b;uint8 counter = 0;while(1){a = status>>7;b = status<<1;status = a|b;P1OUT = status; //MSP430G2553单片机输出引脚,外接共阳极的LED 0 - 7for(i=0;i<40000;i++){;//delay function}counter ++ ;if(counter == 7){status = 0xfe;}}
如下所示,为简易的LED阵列,只需要按顺序点亮LED即可实现流水灯控制,需要注意的是,要控制好灯亮持续时间。