电灯的c语言
A. 用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)
#include<reg51.h>
voiddelay(void)
{
unsignedinti,j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++)
;
}
voidmain(void)
{
while(1)
{
P3=0xfe;//第一个灯亮
delay();//延时
P3=0xfd;//第二个灯亮
delay();
P3=0xfb;//第三个灯亮
delay();
P3=0xf7;//第四个灯亮
delay();
P3=0xef;//第五个灯亮
delay();
P3=0xdf;//第六个灯亮
delay();
P3=0xbf;//第七个灯亮
delay();
P3=0x7f;//第八个灯亮
delay();
}
}
(1)电灯的c语言扩展阅读
单片机C语言16种方式流水灯
voidmain()
{
while(1)
{
P1=0xfe;//点亮第一个发光管
Delay(5000);
P1=0xfd;//点亮第二个发光管
Delay(5000);
P1=0xfb;
Delay(5000);
P1=0xf7;
Delay(5000);
P1=0xef;
Delay(5000);
P1=0xdf;
Delay(5000);
P1=0xbf;
Delay(5000);
P1=0x7f;//点亮第八个发光管
}
}
B. c语言关灯问题 怎样表示灯的开关呢 最好写出代码~
#include<stdio.h>
void main()
{ int n,b,s; //n总灯数,b开始数的灯号,s间隔
int a[256],i,k,m,p; //a存放灯号,k当前数到位置,m当前数到亮灯计数,p熄灭灯数
scanf("%d%d%d",&n,&b,&s); if ( n>256 ) n=256; //约数最多256盏灯
for ( i=0;i<n;i++ ) a[i]=i; //灯号赋值
k=b; m=s; p=0;
while ( p<n ) //当还有灯祥握没有熄灭时循环
{ if ( m==s ) { printf("%d ",a[k]); a[k]=(-1); p++; m=0; } //数到了,谨拿庆输出位置,标记熄灭
else { do { k++; k%=n; } while ( a[k]<0 ); m++; } //向敏扮后数并折返,只有亮的灯m才计数
}
printf("\n");
}
C. 写出点亮2盏LED灯的c语言程序
单片机的话,如端口上电默认高电平,那直接led一头接电源一头接端口,一个led对应一个端口。
一、简单讲:想要灯亮,就将对应端口置0。反之就是灯灭。
二、详细讲:假设用keil编写,新建工程->选择单片机型号->新建源文件->设置output(点魔术棒图标勾选create hex file)。
我们用P2^0端口连接一个led(led另一端连电源)。先给端口起别名sbit led1=P2^0;之后代码中需要灯亮就写led1=0;即可。(头文件自行导入)。
程序写好,编译后将生成的hex(路径在之前的设置中)写入单片机或加载到仿真电路中运行。
D. C语言:开关灯
#include"stdio.h"
intmain(intargc,char*argv[]){
charlmp[5001];
inti,j,N,M;
printf("PleaseenterN&M(int0<N<5001,0<M<=N)... ");
if(scanf("%d%d",&N,&M)!=2||N<1||N>5000||M<1||M>N){//保证输入的N,M符合要求,否则退出
printf("Inputerror,exit... ");
return0;
}
for(i=1;i<=N;lmp[i++]=1);//N盏灯全开启(原始状态)
for(i=1;i<=M;i++)//遍历M个人
for(j=1;j<=N;lmp[j++]^=!(j%i));//每个人把与自己编号成整数倍的灯作相反操作
for(j=0,i=1;i<=N;i++)//输出,从编号小至大遍历所有灯
if(!lmp[i])//输出已被关闭的灯的编号
printf(j++?",%d":"%d",i);
printf(" ");
return0;
}
运行样例: