单片机控制8个led灯闪烁 左移 右移程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机控制8个led灯闪烁+左移+右移程

我这次单片机考试的最后一个题目:

(1)开关没有闭合时,8个LED灯以0.5秒同时闪烁。

(2)开关K1闭合时,D1,D2。。。D8以1秒的速度实现左移,右移。

(3)开关K2闭合时,先D8,D6,D4,D2 点亮,

D7,D5,D3,D1 点亮,重复上述过程5次。

答:程序如下

#include"reg51.h"

#define uchar unsigned char

unsigned char temp;

unsigned char a,b;

unsigned char i;

sbit K1=P1^0;

sbit K2=P1^1;

void delay10ms( )

{

unsigned char i,j,k;

for(i=1;i>;0;i--)

for(j=200;j>;0;j--)

for(k=248;k>;0;k--);

}

void delay05s( )

{

unsigned char i,j,k;

for(i=5;i>;0;i--)

for(j=200;j>;0;j--)

for(k=248;k>;0;k--);

}

void delay1s( )

{

unsigned char i,j,k;

for(i=10;i>;0;i--)

for(j=200;j>;0;j--)

for(k=248;k>;0;k--);

}

void calcShanShuo( ) //8个LED 0.5秒同时闪烁

{

P2=0x00;delay05s( );

P2=0xff;delay05s( );

}

void calcZuoYiYouYi( ) //延迟1秒左移右移 {

temp=0xfe;

P2=temp;

delay1s( );

for(i=1;i;>;(8-i);

P2=a|b;

delay1s( );

}

for(i=2;i;>;i;

b=temp

相关文档
最新文档