您现在的位置: 主页 > MCU > 单片机技术应用 > C51单片机发光二极管实例程序集 -
本文所属标签:
为本文创立个标签吧:

C51单片机发光二极管实例程序集 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]1、程序实现功能:让8个排列的LED来回流动着亮1—》...——》8 1《——...《——8 箭头代表LED流动方向,先从1-8然后从8到1依次循环。程序已经测试过,运行正常//大家如果用此代码测试的话注意你的LED接在单片机的那

1、

本文引用地址: http://www.21ic.com/app/mcu/201807/782560.htm

程序实现功能:让8个排列的LED来回流动着亮1—》...——》8 1《——...《——8 箭头代表LED流动方向,先从1-8然后从8到1依次循环。程序已经测试过,运行正常//大家如果用此代码测试的话注意你的LED接在单片机的那个端口,本代码用的是P2口

#include

#define uint unsigned int

#define uchar unsigned char

uchar a,b;

uchar code led_array[]={

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f

}; //led显示编码数组,从0xfe——0x7f为从第一个led管到第8个led管一次亮一个格式为0fff fffff0ff ffffff0f ffff...ffff fff0 led从1开始亮,到第8个LED时开始反向以次流动着亮ffff fff0ffff ff0fffff f0ff...0fff ffff(注:0代表亮;1代表不亮)不知道大家看懂我写的意思了没....

void delay(uint x)

{

uint z,y;

for(z=x;z>0;z--)

for(y=110;y>0;y--);

}//延时函数

void sumup_ini()

{

P2=0xfe;//

}//总初始化函数,本人喜欢模块化写程序,不过这个模块一太小了..咳咳咳!!!

void main()

{

sumup_ini();//调用总初始化函数

while(1)这个不用说了吧!

{


for(a=0;a<8;a++)

{

P2=led_array[a];

if(P2!=led_array[7]) //这里用if判断LED是否亮到了最后一个,如果已经是最后一个,则不执行延时函数,否则LED每移动一位都要执行以下延时

/*(这里解释以下为什么判断LED是否亮到最后一个,因为如果LED已经是最后一个亮了还执行延时的话,就会与反向流动函数的初始值相同led_array[7]是LED反向流动亮的第一位是LED反向流动的最后一位,所以如果不用if判断的话就相当于在led_array[7]是延时了2倍的其它LED亮的时间...为了让每个LED亮的时间长短相等所以我就用if判断了以下)*/

delay(500);

} //LED正向流动亮

for(b=7;b>0;b--)

{

P2=led_array[b];

delay(500);

} //LED方向流动亮

}

}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > C51单片机发光二极管实例程序集 -
 

"C51单片机发光二极管实例程序集 -"的相关文章

网站地图

围观()