单片机控制8个led灯闪烁 左移 右移程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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