阿斯蒂芬高房价快乐

关键是你需要的是视觉效果,所以要有延时。单纯的一个个点亮是看不出效果的。把你需要的视觉效果分阶段,每个阶段实现后,可以延时0.5s左右。这样你要的效果就达到了。实现代码应该不需要把。

i = P1;(按键)switch(i){ case 0xfe:(K1)for(j = 0; j < 8; j ++){ P2 = 0xff & (1 << j);} break;case 0xfd:(K2)for(j = 0; j < 8; j ++){ P2 = 0xff & (1 << j);} break;c

void key(void) //按键设置程序 { if(!k1){ _delay_ms (10);while(!k1);if( keysign1==2) keysign1=0;} if(!k2){ _delay_ms (10);while(!k1);if( keysign2==3) keysign1=0;} } uchar ledsta

8个LED,三个按键k1、k2、k3,按k1键从左至右逐个亮,k2键从右至左逐个亮,k3键LED1357和2468交替闪烁

P2 = ~(0x80>>LEDIndex);if(LEDIndex==7) /*当一次循环结束时,把LEDDirection取反,下次循环时将以相反的顺序点亮*/ LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%8; /*LEDIndex+1对8取余,保证LED

include //通用89C52头文件 char LD[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED流水灯编码 int n,t;/***/ void main(void)//主函数 { TH0=(65536-1000)/256; TL0=(65536-1000

main:MOVtmod,#01h;设置定时器工作方式寄存器。MOVth0,#high(65536-10000);MOVtl0,#low(65536-10000);设10MS初始值。MOVie,#82h;设置中断允许寄存器 MOV30h,#10;MOV31h,#6;30H和31H是两个软件计数器。SETBtr0;启

for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次 { Delay(50000);P2<<=1;P2=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1 } P2=0xfe; //重新赋初始值

ORG 0000H ajmp start org 50 START: MOV A,#00H LOOP: MOV P2,A CALL DELAY1 CPL A MOV P2,A CALL DELAY2 CPL A JMP LOOP DELAY1:MOV R5,#10 D1:MOV R6,#200 D2:MOV R7,#250 D3:DJNZ R7,D3 DJ

单片机AT89C51的P2口接8个LED,让这8个LED显示闪烁功能即8个LED1s熄灭2s如此循环,求完整程序

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

我给你提供一个思路:1:按键处理部分,定义一个按键变量x,在按键按下后松手变量x加1,判断按键变量 if(x >= 3){ x = 0;处理8个LED灯的函数}

LED = LED|0x80;} else { P2 = LED;LED = LED << 1; // 左移 LED = LED | 0x01;} } void delay(unsigned int b){ unsigned char j;for(b; b > 0; b--) //机器在这里执行需要一段时间

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

很简单,用rand函数和srand函数,这样将得到的值对8取余数,即rand%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灯灭

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

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

} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

LOOP1:MOV P0,LED JNB FLAG,MOV A,LED RL A MOV LED,A CLR FLAG DJNZ R2,LOOP1 MOV LED,#0FEH MOV R2,#8 LOOP2:MOV P0,LED JNB FLAG,MOV A,LED RL A RL A MOV LED,A CLR FLAG DJNZ R2,LOOP2 MOV

KEY1 EQU P1.0 KEY2 EQU P1.1 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FEH MOV P2,A LOOP:JB KEY1,LOOP1 MOV P2,#0FFH LCALL DELAY RL A MOV P2,A LCALL DELAY SJMP LOOP LOOP1:JB KEY2,LOOP

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个

求汇编,八个led交替闪烁,汇编语言汇编语言 按下开关s1(开关是那种按下去不会弹回来的),led1.3.5.7和led2.4.6.8交替闪烁,按下s2,led1234和led5678交替闪烁,间隔都是0.5秒,按下s3全灭 --- 电路与程序

求汇编,八个led交替闪烁,汇编语言汇编语言

4 当计数变量等于5时,L1 L3 L5 L7亮过了,设置led,让L8亮,下次执行的时候就左移到L2了。当计数变量等于9,L2468也亮过了,led重置为初始值,L7。4 把值赋给端口 回main函数睡觉 不用中断也行,在while循环里等待

明白 ,1357 2468 那就叫鸳鸯灯。

最好还是自己写,有成就感啊。依次点亮的话可以用循环移位加延时的方法,同时亮只要相应位输出相应电平即可,闪亮的话只要同时亮与全灭间加个延时可以解决。当然也可以用定时中断来定时移位或闪亮,一定要自己想法写出来的才能

ORG 0000H ; 试试 SJMP MAIN ORG 0040H MIAN:MOV A,#11111110B MOV R2, #8 LOOP: MOV P2,A LCALL D_1s RL A DJNZ R2, LOOP MOV A,#01111111B MOV R2, #8 LOOP1: MOV P2,A LCALL D_

以51为例子,假如低电平灯亮#includesbitK1=P1^0//P^0接开关sbitLED=P1^1;//接LEDvoidmain(void){P1=oxff;//初始化P1while(1){LED=~K1;}}

在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。

void main() { while (1) { // 死循环 P1 = 0x55; // 将二进制01010101写入P1,点亮LED1、3、5、7 Delay(500); // 延迟0.5秒 P1 = 0xAA; // 将二进制10101010写入P1,点亮LED2、4、6、8 Delay(50

51单片机八个LED灯1357,2468交替点亮?

不会。。。。路过。。。。网络100分 专业人士也不会花那么多时间来 编这个题吧 应该把 手机 留下
/程序:ex1_1.c //功能:控制一个信号灯闪烁程序 #include //包含头文件REG51.H,定义了MCS-51单片机的特殊功能寄存器 sbit P1_0=P1^0; //定义位名称 void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P1_0=0; //点亮信号灯 delay(10); //调用延时函数,实际变量为10 P1_0=1; //熄灭信号灯 delay(10); //调用延时函数,实际变量为10 } } //函数名:delay //函数功能:实现软件延时 //形式参数:unsigned char i; // i控制空循环的外循环次数,共循环i*255次 //返回值:无 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数 { unsigned char j,k; //定义无符号字符型变量j和k for(k=0;k<i;k++) //双重for循环语句实现软件延时 for(j=0;j<255;j++); }
1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。 2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。 3、接着创建延迟函数,如下图所示,输入以下代码。 4、然后创建C语言主函数,如下图所示,输入以下代码。 5、接着输入对输出取反,最后调用延迟函数,如下图所示就完成了。
#include void Delay1ms(unsigned int count) /*延时函数,延迟时间为count×1ms)*/ { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } main() { unsigned char LEDIndex = 0; /*声明8位变量LEDIndex,用来指示8个LED中哪个被点亮,初始值为00000000*/ bit LEDDirection = 1; /*声明位变量LEDDirection,用来指示点亮的方向,初始值为1*/ while(1) /*一直循环执行大括号里面的语句*/ { if(LEDDirection) /*当LEDDirection=1时,0000 0001左移LEDIndex位,取反后送给P2端口,点亮一个LED*/ P2 = ~(0x01<<LEDIndex); else /*当LEDDirection=0时,1000 0000右移LEDIndex位,取反后送给P2端口,点亮一个LED*/ P2 = ~(0x80>>LEDIndex); if(LEDIndex==7) /*当一次循环结束时,把LEDDirection取反,下次循环时将以相反的顺序点亮*/ LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; /*LEDIndex+1对8取余,保证LEDIndex在0~7之间*/ Delay1ms(500); /*延时500ms,即LED的点亮间隔为0.5s*/ } }
间隔50MS的八个灯熄灭闪烁。
阿斯蒂芬高房价快乐
并联电路【汽车有问题,问汽车大师。4S店专业技师,10分钟解决。】