地下车库需要长久点亮,耗电量确实很大。选用LED日光灯来做节能改造确实是一个最佳的选择。因为:1、现在的技术已经趋于成熟,LED日光灯无论从节能,使用时间上来讲都是有保障了 2、随着技术的进步,原材料价格下降,成品LED日光灯的价格也已经可以接受了。比如现在质保2年的T8,18W,1.2M的LED日光灯只
4.4.6. 如果校正结束后显示E01、E02、E03或E04符号,可能是校正不正确引起仪器程序混乱产生的现象,可按P14第5.8.条,将参数设置P8设定为“ON”(恢复仪器出厂设置状态),再重新校正一遍。如果还是出现以上E01~E04符号,说明电极或校正溶液有问题,请按照P16第7.1.2.~7.1.5.条要求进行处理。4.4.7. 由于B1、B2和
int runlinght(){int i,j;j=1;for(i=0;i<8;i++){P[i]=(j<
P1口共有P1.0~P1.7这8 个IO 口,对应也是一个字节的8 位输出 。MOV P1,#01111111B;最下面的LED点亮 是P1.7为低电平 ,其它7 个口为高电平,这样就是最下面那个LED亮。如果是MOV P1,#10111111B,就是下面第2 个LED亮。。。由此类推,你就知道道理了。
START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)LCALL DELAY LCALL DELAY
include
急求!!!单片机程序,要求8个LED灯依次亮,相隔0.25秒,找来的程序可以使用但是不知道具体意思
你调用了_crol_函数,但是没有添加它的头文件,系统就报错,你将申明了_crol_函数的头文件“intrins”加进去就可以了,类似#include
程序写的不对,你主函数里面 void main(){ aa=0xde;while(1){ P1=aa;delayms(500);aa=aa<<1; //右移一位,移8次出去,还在往右移动,都移动出界了哈哈!} } 在程序里面写个判断语句移动完成后,在从新开始移动程序如下:int main(void){ aa=0xde;while(1){ P1=aa;delayms(500);a
主要用于位操作,用于移位,一般用于串行ad,da,时钟,存储器等数据处理,还有简单的流水灯,也可以用 a=a<<1 来完成
crol()是循环左移,在汇编相当于多个 RL A,的组合。比如0xc3,循环左右2位,结果是0x0f;这里temp=0xc3,count=2;a=temp<<2=0x0c;b=temp>>(8-2)=0x03;a|b=0x0f;现在你明白了吗?这相当于corl()函数的执行结果。
delay(200);a=_crol_(a,1); //左移一位 } //以上单个LED发光,移位8、7、6次 //--- a = _crol_(a, j); //左移,第一次,移动0位,以后渐多 //前面的内循环,移位次数逐减,这里逐增,合到一起,仍然是移动8位 P1 = 0xff; //关闭显示 a = a << 1;
,故点亮的是p1.0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。
51单片机。用C语言的_crol_()函数实现LED灯循环左移。为什么我的程序只亮一盏灯啊。。。没有循环啊
LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,sbit 定义了四个位于 P2 口的 LED 灯,而 delay 函数则是一个延时函数,可以用来控制 LED 灯亮起和灭掉的时间。注意
在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。下面是一个简单的示例程序,仅供参考:include
KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保
在上述示例程序中,我们将LED连接到Arduino的13号引脚,并使用digitalWrite()函数控制该引脚的电平。HIGH表示将引脚设置为高电平(点亮LED),LOW表示将引脚设置为低电平(熄灭LED)。通过delay()函数设置LED灯亮灭的时间间隔。4.上传程序:将编写好的程序上传到单片机中。将单片机通过USB线连接到计算机,选
在上述代码中,我们首先将P1口设置为全灭状态,然后使用一个循环将P1口设置为全亮状态,并延时1秒钟。接着,我们将P1口设置为全灭状态,并再次延时1秒钟。这样,LED灯就会一亮一灭间隔1秒。需要注意的是,上述代码中的延时时间可以根据实际情况进行调整,以获得更精确的间隔时间。此外,如果使用的是STM
在执行第二条指令后,将转去执行第6条指令,而在执行完6,7,8,9条指令后将遇到第10条令:RET,执行该条指令后,程序将回来执行第三条指令,即将P10清零,使灯亮,然后又是第四条指令,执行第四条指令就是转去执行第6,7,8,9,10条指令,然后回来执行第5条指令,第5条指令就是让程序回到
求控制led灯亮灭的例程和详解
1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。3、接着创建延迟函数,如下图所示,输入以下代码。4、然后创建C语言主函数,如下图所示,输入以下代码。5、接着输入对输出取反,最后调用延迟函数,如下图所示就
假如:P0口接8个LED,程序可以这样:include
define uint unsigned int sbit Led=P1;void delay(void);void main(void){ unsigned char tmp,i;P1=0x00;//全熄灭 while(1){ for(i=0;i<8;i++)//左移 { tmp=0x01;tmp=(tmp<>
1、实验板上的8个发光二极管,今天就为大家介绍一下点亮第一个发光管具体程序。2、首先,打开keil先建立一个工程Project->Newproject。3、然后输入这个程序,不要搞错输入。4、#include。5、sbitD1=P1^0;。6、voidmain()。7、{。8、D1=0;。9、}。10、点击全部编译快捷按钮,此时会进入编译后的
while(1){ P1=0xfe; //点亮第一个LED for(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LED for(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LED for(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xf7; //点亮第四个
while(1)P1=0xff; //8个led灯为共阳接法 } void time0() interrupt 1 { TH0=(65535-50000)/256;//设定50ms计时初值 TL0=(65535-50000)%256;a++;}
把延时改一下就行了,数值不要大于50000,想多延时更长时间,在下面再复制出一行。include
keil 8个led灯间隔点亮的程序
while(1) { for(i=0;I<8;I++) { P0=1<<i; delay_ms(1000); } }#include "reg51.h" main() { unsigned int i,j; while(1) { P1=0xfe; //点亮第一个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfd; //点亮第二个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfb; //点亮第三个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xf7; //点亮第四个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xef; //点亮第五个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xdf; //点亮第六个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xbf; //点亮第七个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0x7f; //点亮第八个LED for(i=200;i>0;i--) for(j=500;j>0;j--); } } 或: #include "reg51.h" void delay(unsigned int t) { unsigned inti,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char w,i; while(1) { w=0xfe; for (i=0;i<8;i++) { P1=w; //循环点亮LED w<<=1; //点亮灯的位置移动,最低位补0 w=w|0x01; //将最低位置1 delay(500); //延时 } } } 或: #include "reg51.h" //程序中使用_crol_函数,所以要包含头文件"intrins.h" #include "intrins.h" void delay(unsigned int t) { unsigned int i,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char temp; temp=0xfe; while(1) { P1=temp; delay(500); //延时 temp=_crol_(temp,1); //点亮LED的位置循环左移一位 } }
题意没说的太清楚,随便写一个吧。#includesbit led=P1^0;main(){unsigned char dat;TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SCON=0x50;while(1) { if(RI) { RI=0; dat=SBUF; if(dat==0x5a)led=0; if(dat==0xa5)led=1; } }}
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
你首先赋值P0=0xfe,就是p0^1亮,其他全灭,而你的zuoyi()函数在执行完后才给P0赋值,而zuoyi()执行完后,返回值是0;
#include #define uchar unsigned char sbit c10=P1^0; sbit c11=P1^1; sbit c12=P1^2; sbit c13=P1^3; uchar led1,led3; void delay(uchar a) { uchar i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { uchar keyval=0xff; led1=0xfe; led3=0xf8; while(1) { if(c10==0) { delay(10); if(c10==0) { while(c10==0); keyval=0; } } if(c11==0) { delay(10); if(c11==0) { while(c11==0); keyval=1; } } if(c12==0) { delay(10); if(c12==0) { while(c12==0); keyval=2; } } if(c13==0) { delay(10); if(c13==0) { while(c13==0); keyval=3; } } switch(keyval) { case 0: P0=led1; led1=(led1<<1)|0x01; if(led1==0xff)led1=0xfe; delay(100); case 1: P0=led1; led1=(led1>>1)|0x80; if(led1==0xff)led1=0x7f; delay(100); case 2: P0=led3; led3=(led3<<1)|0x01; if((led3&0xf0)==0x30)led3=0x3e; if((led3&0xf0)==0x70)led3=0x7c; if((led3&0xf0)==0xf0)led3=0xf8; break; case 3: P0=led3; led3=(led3>>1)|0x80; if((led3&0x0f)==0x0c)led3=0x7c; if((led3&0x0f)==0x0e)led3=0x3e; if((led3&0x0f)==0x0f)led3=0x1f; break; default:break; } } }
void main() { P1=0XFF; /*定义初始状态为全灭*/while(1) { delay(2000); P1=0X7e; delay(2000); P1=0Xbd; delay(2000);P1=0Xdb;delay(2000); P1=0Xe7; delay(2000); P1=0Xdb;delay(2000); P1=0Xbd;delay(2000); P1=0X7e; delay(2000); P1=0XFF; /********此循环使得发光二极管按照07,16,25,34,43,52,61,70的顺序循环交替两两点亮*******/} /*end while*/}/*end main*/
解释如下 #include "reg52.h" //调用52内码 void delay(void); //声明延迟 void main() //主函数 { unsigned char i; //定义i为无符号字符型,即8位长度 while(1) // 一直循环下面{}内的内容 { for(i=0;i<8;i++) //8次 { P0 = ~(1<<i); //将1向左边移动i位,并取反,PS:这里与你选用的数码管的类型有关,这里他用的是共阴级的 P2 |= 0xE0; //P2的前3位置位,即P2.5~P2.7都为1 P2 &= 0x9F; //P2的内容与1001 1111进行位的与运算,并赋值给P2 delay(); //调用延迟子程序 } } } //软件延时程序 void delay(void) { unsigned char i,j,k; //定义i,j,k为无符号数 for(i=20;i>0;i--) //空操作20次 for(j=20;j>0;j--)//空操作20次 for(k=248;k>0;k--);//空操作248次 } 个人认为写程序的人有点糊涂,char可以设置到255,不用20,20的加