⑴ 请教高手单片机课程设计:先点亮奇数位灯再点亮偶数位灯``````
//流水灯 4 个按键 4种 亮法,自己修改 成自己要的 亮法,供参考
#include <REG51.h> //51头文件
#define DY_PORT P1 //设置LED连接的I/O组
#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
void delay (unsigned int a) // 1ms延时程序
{
unsigned int i;
while( --a != 0)
{
for(i = 0; i < 600; i++);
}
}
void main(void)
{
unsigned int i;
unsigned int temp;
while(1)
{
if(~k1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
}
if(~k2)
{
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
}
if(~k3)
{
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
}
if(~k4)
{
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
}
}
}
⑵ 如何在这个单片机流水灯程序里再加上控制奇数灯亮后偶数灯亮
#include <reg51.h>
#define LED P1
void delay(int);
main()
{
unsigned char i;
LED = 0xfe;
while (1)
{
for (i = 0; i < 7; i++)
{
delay(100);
LED = (LED << 1) | 0X01;
}
for (i = 0; i < 7; i++)
{
delay(100);
LED = (LED >> 1) | 0x80;
}
for (i = 1; i < 7; i += 2)
{
delay(100);
LED = (LED >> 1) | 0x80;
}
for (i = 0; i < 7; i += 2)
{
delay(100);
LED = (LED >> 1) | 0x80;
}
}
}
void delay(int x)
{
int i, j;
for (i = 0; i < x; i++)
for (j = 0; j <= 600; j++)
;
}
⑶ 如何让单片机的奇数和偶数流水灯轮流点亮
while(1)
{
P0=0x55;P1=0x01; //奇数亮
delay(500); //500ms
P0=0; P1=0; //全部熄灭
delay(200); //200ms
P0=~P0; P1=~P1; //偶数亮
delay(1000); //1000ms
P0=0; P1=0; //全部熄灭
delay(200); //200ms
}
⑷ 单片机控制8个LED灯,完成奇数灯亮偶数灯灭,然后偶数灯亮奇数灯灭,10次,用C语言编程
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchari,j;
for(i=0;i<10;i++)
{
P0=0xaa;
delay(200);
P0=0x55;
delay(200);
}
for(i=0;i<10;i++)
P0=0xfe;
{
for(j=0;j<8;j++){P0=_crol_(P0,1);delay(200);}
}
while(1);
}
⑸ 单片机c语言LED灯奇数亮灯。
//LED低电平点亮
//LED1-LED8分别接P2.0-P2.7
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
void delay(unsigned char a) //延时
{
unsigned char i;
while(a--)
for(i=100;i>0;i--);
}
void main(void)
{
uchar i;
P2=0XFF;
while(1)
{
for(i=0;i<8;i=i+2)
{
P2=~(1<<i);
}
}
}
⑹ 51单片机led灯怎么亮
要式连接51单片机的LED灯被点亮,拢共需要三步:
搭建好51单片机运行的最小系统,并连接好下载线。
LED灯的正极经过470Ω电阻连接在电源正极上,LED灯的负极连接在单片机的某个接口上,例如连接I/O口P1.0上。
编程使P1.0输出低电平,将编译好的程序下载到单片机里,在单片机再次上电后就可以看到LED灯发光亮起了。
⑺ (小白)单片机怎么接点亮LED谈硬件不是程序
LED正极接电源,负极接单片机的一个IO口(比如P1.0),中间要串联一个限流电阻,阻值在几百欧到1k之间。
⑻ 如何用单片机点亮LED灯
接好单片机的硬件电路,然后编写程序,再然后烧写程序,然后就可以程序了,没问题的话就可以按你的要求点亮了
⑼ 单片机C语言LED先奇数后偶数点亮
你这样运行的结果是,亮灯顺序编号是:(0.05S)3,(0.25s)5,(0.4s)7,(0.6s)1,(0.8s)4,(1.0s)6,(1.2s)8,(1.4s)2,(1.6s)3,(1.8s)5.............这是这个程序单步运行的结果。。
经试验查证,P0=0xfe;后要加个延迟,要不就一句程序运行时间太短,马上就运行底下的了,导致这句程序没反应出来。底下P0=0xfd,一样要加延迟。
循环只循环三次就够了,因为第一次你已经写出来了,入1已经写了,那就只要3、5、7就可以了。
所以程序可以是:
#include<reg52.h>
#include<intrins.h>
void delay()
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main()
{
unsigned char i,j;
while(1)
{
P0=0xfe;
delay();
for(i=0;i<3;i++)
{P0=_crol_(P0,2);
delay(); }
P0=0xfd;
delay();
for(j=0;j<3;j++)
{P0=_crol_(P0,2);
delay(); }
}}
⑽ 单片机高手给点拨下,led灯只让偶数闪烁,奇数不亮,程序如何写
很好实现的 就是让偶数led灯亮 延时一段时间后 让偶数led灯灭 再延时一段时间 循环不断地重复这2个过程。
整个过程中,奇数led灯不亮。 这样就会产生偶数led灯闪烁现象。即就是由亮、灭交替产生的。
LLL: MOV P1,#10101010B; 偶数led灯亮
LCALL YS ;延时
MOV P1,#11111111B ;偶数led灯灭
SJMP LLL
YS: MOV R5,#2
YSLL1: MOV R4,#200
YSLL2: MOV R3,#250
DJNZ R3,$
DJNZ R4,YSLL2
DJNZ R5,YSLL1
RET
呵呵 满意就选满意回答