本项目是采用STC89C52RC单片机控制P1口连接的8个LED灯顺序点亮的流水灯控制系统设计与制作。源文连接:基于STC89C52RC的流水灯设计。
流水灯控制系统设计电路:
设计要求:首先点亮连接P1.7引脚的LED灯,延时一段时间后熄灭,再点亮连接到P1.6引脚连接的LED灯,延时一段时间后熄灭,如此一次按照这个顺序点亮每个LED灯,直到点亮最后一个连接到P1.0引脚的发光LED等,再从P1.7引脚的LED灯开始点亮,循环不止,产生一种动态显示的流水控制效果。
流水灯控制系统的源程序如下:
//程序功能:采用库函数实现的流水灯控制程序
#include<reg51.h>//包含头文件reg51.h,定义了51单片机的专用寄存器
#include <intrins.h> //包含内部函数库,提供移位和延时操作函数
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符 整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i) //定义延时函数
{ unsigned int k;
for (k=0;k<i;k++) ;
}
void main() //主函数
{ //主程序开始
P1 = 0x7F; //P1端口输出0x7F
while(1) //无限循环
{ //循环体语句组开始
P1 = _cror_(P1,1); //调用内部函数_cror_(),将P1的二进制数值循环右移
delay(5000); //延时
} //循环体语句组结束
} //结束控制程序
程序通过向P1口写入一个8位二进制数来改变每个引脚的输出状态,从而控制8个发光二极管的亮灭。其中,P1=0x7F,将P1口的8位设置为01111111输出,点亮P1.7引脚连接的发光二极管。可以通过内部函数_cror_()实现循环右移功能,使P1端口在01111111、10111111…11111110之间变化,并且通过while循环语句重复执行,实现状态循环右移和延时,从而实现流水灯效果。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!