1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }

8个LED流水灯依次循环亮的C语言程序,问题详细内容为:我用的是PROTUSE做的仿真程序,想让这8个流水灯依次亮从P0到P7口要它的C语言程序可以在KEILC51里面运行的,希望在每句C语言后面有个解释不用WHILE和for语句i高分悬赏我

P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }

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

keil软件用单片机控制8个LED流水灯来回点亮(C语言程序)

8个LED流水灯依次循环亮的C语言程序,问题详细内容为:我用的是PROTUSE做的仿真程序,想让这8个流水灯依次亮从P0到P7口要它的C语言程序可以在KEILC51里面运行的,希望在每句C语言后面有个解释不用WHILE和for语句i高分悬赏我

define uchar unsigned char uchar led[]={0xfe,0xfa,0xea,0xaa,0xfd,0xf5,0xd5,0x55};void delay(unsigned char a){ while(a--);} main(){ uchar i;while(1){ for(i=0;i<8;i++){ P1=led[i];del

//点亮八位共阳 unsigned char led=0xfe;//8个bit位的数 unsigned int counter=0;void time_init(){ TMOD=0x01;//定时器0,工作模式1,16位定时器 TH0=0xb4;TL0=0x00; //定时器初始值46080,定时50ms;EA=1;/

while(1)P1=0xff; //8个led灯为共阳接法 } void time0() interrupt 1 { TH0=(65535-50000)/256;//设定50ms计时初值 TL0=(65535-50000)%256;a++;}

while (1) //主循环,程序无限循环执行该循环体语句 { P0 = ~(0x01 << cnt); //P0等于1左移cnt位,控制8个LED for (i=0; i<20000; i++); //软件延时 cnt++; //移位计数变量自加1 if (cnt

keil 8个led灯间隔点亮的程序

假如说,第一个灯肯定比第二个灯亮的话,可以直接把8个LED灯的限流电阻弄成不同阻值的。就像楼上说的那样。但如果想随便变换不同的灯都能有不同的亮度话,硬件电路可以不变,限流电阻都一样。可以在程序里这样写:首先

P2=led_data;//默认第一位亮 if(key==0)Delay_ms(10);if(key==0){ while(!key);Delay_ms(500); //延时0.5s led_data=_crol_(led_data,1);//移位函数,使led_date向左循环移动1位 } } } 已通过

include#include //头文件中的循环移动函数void SoftDelay(unsigned int us);void main(void){unsigned char temp;temp=0x3f; //先点亮1,2 while(1) { P1=temp; SoftDelay(

while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六

单片机中只用一个开关控制8个LED轮流亮灭,这很容易实现,也是最简单的控制方法,只要识别了按键按下了,就可以控制。轮流点亮更容易,用移位函数_crol_或_cror_就行了。是要仿真吗,给你个仿真图。

for (i=0;i<8;i++){ P1=w; //循环点亮LED w<<=1; //点亮灯的位置移动,最低位补0 w=w|0x01; //将最低位置1 delay(500); //延时 } } } 或:include "reg51.h"//程序中使用_crol_

void delay(unsigned char a){ while(a--);} main(){ uchar i;while(1){ for(i=0;i<8;i++){ P1=led[i];delay(50000);} } }

用keil4弄一个流水灯,要求,8个灯,第一次,1号亮,第二次,1号3号亮

while(1){ P1=0xff; //P1全部高电平,点亮LED Delay(200);//延时 P1=0; //P1全部低电平,LED灭 Delay(200);//延时 }

用74hc595芯片做输出,即可实现三个端口控制多输出的问题。对于超过八输出,再增加一个595芯片即可实现。

急求单片机流水灯程序及详解 100 第一步:8个发光二极管同时亮并且闪烁2次,闪烁间隔为0.3秒。第二步:8个发光二极管一个一个亮,间隔时间为0.5秒。第三步:开始时,8个发光二极管全部熄灭,0.3秒后一个被点亮,间隔0 第一步:8个

CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭

请设计一个8个led同时全部闪烁的程序 include main (){int i;while (1){for (i=0;i<=30000;i++);P1=~P1;} }

很简单,用rand函数和srand函数,这样将得到的值对8取余数,即rand%8,就可以点亮随机的灯了,至于其他如何点亮环节还有延时的你可以自己编写,想学单片机的人是必须学的,我也就不提示了,这只是个思路,要是全给你完整代

方法:1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void de

单片机 8个LED灯随机闪烁怎么做?

题目不清楚,假设8个灯,整体循环一次的时间是80s,后一个灯亮了3s后前一个灯才允许熄灭。那么可以用定时器,定时器中采用一个变量aaa进行计数累加,比如设定一个1s的定时器,每次进入定时器变量aaa加1,aaa加到80就清零重新累加。 定时器中点亮程序:if(aaa<10){把1号灯点亮};else if(aaa<20){把2号灯点亮};else if(aaa<30){把3号灯点亮};else if(aaa<40){把4号灯点亮};else if(aaa<50){把5号灯点亮};else if(aaa<60){把6号灯点亮};else if(aaa<70){把7号灯点亮};else if(aaa<80){把8号灯点亮}; 定时器中熄灭程序:if(aaa>73){把7号灯熄灭};else if(aaa>63){把6号灯熄灭};else if(aaa>53){把5号灯熄灭};else if(aaa>43){把4号灯熄灭};else if(aaa>33){把3号灯熄灭};else if(aaa>23){把2号灯熄灭};else if(aaa>13){把1号灯熄灭};else if(aaa>3){把8号灯熄灭}; 这样就可以实现。方法有很多,这只是举个简单例子。
先把P1口全部接低电平。 ORG 0000H。AJMP START。ORG 0040H。AA:MOV P1,#55H。 ACALL DELAY。MOV P1,#0AAH。ACALL DELAY。MOV P1,#00H。 ACALL DELAY。AJMP AA。DELAY:MOV R5,#256。LOOP2:MOV R4,#256。LOOP1:NOP。NOP。 DJNZ R4,LOOP1。DJNZ R5,LOOP2。RET。 单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。 在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。 它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
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的位置循环左移一位 } }
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。 2、#include "reg51.h"首先写出单片机的头函数。 3、#include "intrins.h"输入位移函数。 4、unsigned int count=0,led;定义函数。 5、输入主函数,定义单片机的端口,写入延时函数。 6、中断跳转,使流水灯运行起来。
自己现成想的汇编的要不要啊哈哈 MOV A,#0011111 LOOP: MOV P0,A CALL DELAY RR A JMP LOOP DELAY: ;延时程序 MOV R3,#20 D1:MOV R4,#20 D2:R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R2,D1 RET 这只是2个灯右移程序,如果达到你想要的效果还有计数8次然后进入计数左移动8次,懂基本原理什么都好办哎!纠结!!!!!!!!!