聚美优品网站建设,外链代发软件,刷单平台网站建设,赣州管理中心网站流水灯是一种简单的单片机控制电路#xff0c;由许多LED组成#xff0c;电路工作时LED会按顺序点亮#xff0c;类似于流水的效果。
下面是运行在keil上的代码#xff0c;分别使用了数组#xff0c;移位符和库函数来表示。
//数组法
#include reg52.h //头文…流水灯是一种简单的单片机控制电路由许多LED组成电路工作时LED会按顺序点亮类似于流水的效果。
下面是运行在keil上的代码分别使用了数组移位符和库函数来表示。
//数组法
#include reg52.h //头文件
#define uchar unsigned char
uchar tab[16]{ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe };
//因为采用了共阳极接法所以要点亮哪个灯就给哪一位赋0
//8个灯对应两个十六进制数的八个数位
//从右到左再从左到右奇偶位内外位修改数字顺序即可
void delay( )
{ uchar i,j;for(i0; i255; i)//为了让人眼看清灯的闪烁而延时for(j0; j255; j);
}void main( ) //主函数
{ uchar i;P1 0xff; //熄灭所有LED避免上电亮灯while (1) //永真{ for(i0;i16; i){ P1tab[i]; //改变P1口的电位delay( ); //延时函数}}
}//移位符
#include reg52.h //包含reg52.h头文件
#define uchar unsigned char
void Delay()
{uchar i, j;for (i0;i255;i)for (j0;j255;j);
}
void main()
{ uchar i, temp;P1 0xff; //在移位符中会舍弃数位所以必须赋初值while(1){temp 0x01; //为了赋值方便取反码给要点亮的灯赋1for (i0;i8;i) //奇偶位i改42{P1 ~ temp; //temp值取反送P1口temp temp 1 ; //左移一位Delay()}temp 0x80; for (i0;i8;i) //奇偶位i改42{P1 ~ temp; //temp值取反送P1口temp temp 1 ; //右移一位Delay();}}}//库函数
#include reg52.h
#include intrins.h //调用函数库
#define uchar unsigned charvoid delay()
{uchar i,j;for (i0;i255;i)for (j0;j255;j);
}
void main()
{ uchar i,temp;P1 0xff; while (1){ temp0x7f; for(i0; i8; i) //奇偶项i改成4temp后改成2{ P1temp; delay( ); temp_cror_( temp,1) ;//r代表right右移 }temp0xfe;for(i0; i8; i) //奇偶项i改成4temp后改成2{ P1temp; delay( ); temp_crol_( temp,1) ; //l代表left左移 }}
}编译时要注意修改晶振频率并创建hex文件。 点亮效果呈现在proteus上大家也可以根据仿真电路图去挑选自己需要的元器件组建不同功能的电路。 流水灯演示 谢谢大家。