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

1、

程序实现功能:让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方向流动亮

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭