Count = LEDx * 36; //最小0,最大 7 * 36 = 252,char型最大不能超过255; Count = Count + 1; // 加1的目的是针对LED0不亮 if(x <= Count) // <= 是针对LED0不亮 PORTA |= (1 <<
LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
ORG 0000H ;程序从000H地址开始运行 AJMP MAIN ;跳转到 MAIN程序 ORG 030H ;MAIN程序从030H开始运行 MAIN:MOV P2,#0FEH ACALL DEL ;调用延时子程序 MOV P2,#0FCH ACALL DEL ;调用延时子程序 MOV P2,#0
这个程序的关键点是要在显示子程序执行的过程中,多对按键进行检测。检测到有按键按下时,即退出子程序,返回到主函数的按键检测,对num 加一。include
while(1) { for(j = 0; j < 8; j++) { P1 = 255; //全灭, P1外接LED, 是低电平发光.delay_ms(500); //稍等片刻.for(i = 0; i < 8; i++) { P1 <<= 1;delay_ms(900 - 100 * j
单片机的跑马灯C程序如何编写八个LED灯依次点亮而且速度渐变的代码
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:
~(1<
void main(){ uchar led_data=0xfe;while(1){ 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);//移位
#8LOOP: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R2,LOOP MOV P0,#0FFH SJMP $DELAY: MOV R3,#10DLY1: MOV R4,#100DLY2:
*/ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→
++i;if(i>=8)i=0;} } 灯接在P0口,低电平点亮。
8个Led灯依次亮,第一个亮0.5秒,灭,第二个亮,灭,依次类推,用c51编程,编程程序
unsigned int i, j;for(i = 0; i < time; i++) for (j = 0; j < 500; j++);} main(){ unsigned char i, j;while(1) { j = 0xfe; for(i = 0; i < 4; i++) { P0 = j; j =
LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETB ET0 SETB EA MOV R2,#5 MOV A,#0F8H MOV P0,A SJMP T0ISR:CLR TR
8;j++){ P1 = 255;//全灭,P1外接LED,低电平发光.delay_ms(500);//稍等片刻.for(i = 0;i < 8;i++){ P1 <<= 1;delay_ms(900 - 100 j);//延 渐短 } } } } //---
} } //主程序 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);
*/ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
include
急求!!!单片机程序,要求8个LED灯依次亮,相隔0.25秒,找来的程序可以使用但是不知道具体意思
写单片机P0循环点亮八盏灯的程序并不复杂,只需要实现一个循环点亮的过程,就可以实现了。一、硬件接线 首先,电路接线是最重要的环节,需要将外部组件与单片机核心引脚相连接,如接线正确,接地和电源,以及led灯和信号脚之间
单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件。define uchar unsigned char //定义无符号字符。define uint unsigned int //定义无符号整数。void delay(uint); //声明延时函数。硬件特征 1、单片机
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
下面是c语言程序源码 include
把各个花样写在子函数,中断中对变量加1,在判断是否大于5,大于5就对变量清零。因为你要5种花样。主函数判断变量的值,1时执行从左到右依次点亮,2时执行从左到右逐个依次熄灭。依次下去 include "reg51.h" // 包
实现单片机信号灯1-8依次循环点亮的程序怎么写
LED0=1;就可以看到闪烁了.利用单片机控制8个发光二极管,设计8个灯同时闪烁的控制程序? - 方法:1:设定一个变量i,可以从0到3循环的变化2:检测一个经过消抖处理的按键,按一下,i+13:当i值为各个值时,执行相应的
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣?下面是c语言程序源码
因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时
可以实现,首先随便连接一个I/O口,P1/P2/P0均可,然后赋予一初值,然后使用本征函数_cror_(循环变量,循环次数)循环右移,或者循环左移实现。左移只需改掉本征函数,同时亮灭可以先给全1,然后给全0,中间加延时,自
int i=10000; //这个值调整亮灯灭等快慢,越小越快越大越慢 while(i--)return;} //从上到下亮灯 void LED_a(void){ LED_IO1 = 0;delay();LED_IO2 = 0;delay();LED_IO3 = 0;delay();LED_IO4 = 0
MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况
uchar i,j;j=0x01;//假如高电平灯亮 while(1){ j=0x01;//假如高电平灯亮 for(i=0;i<8;i++){ P0=j;delay(1000);//逐个循环点亮 j<<=1;} j=0xfe;for(i=0;i<8;i++){ P0=j;delay(1000); //
设计8个LED灯从上到下依次点亮,然后从下到上依次点亮,
假如:P0口接8个LED,程序可以这样:include
假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }
P1=b;//P1口接8个LED灯 delay(200);b=_crol_ (b,1);} } void delay(unsigned int z){ unsigned int i;for(;z>0;z--) //延迟时间自己算吧 for(i=110;i>0;i--);} 用汇编写这个容易点 main: mo
ORG 0000HLJMP MAINORG 0030HMAIN; MOV R2,#3LOOP: MOV A,#0FEH MOV R3,#8LOOP1: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R3,LOOP1 MOV P0,#00H LCALL DELAY MOV P0,
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
unsigned LED,i;LED = 0xfe;EA = 0;while(1){ for(i=0;i<7;i++){delay(100);LED = (LED<<1)|0x01;P3 = LED;} for(i=0;i<7;i++){delay(100);LED = (LED>>1)|0x80;P3 = LED;} } } 汇
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);
单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程
如何以零成本制作LED灯用单片机的编程也可以啊。。间隔时间用延迟程序做。需要程序吗?
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的加
氙气灯是高压气体放电式灯应用于照明的前大灯,由于其亮度的节数高、节能而被现在汽车所采用。LED是发光二极管,应用于提示的作用大些,所以在车的尾灯、仪表灯等广泛使用。都属新型灯。都是迎合节能、安全等方面而研发的。
ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV R2,#8LOOP: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R2,LOOP MOV P0,#0FFH SJMP $DELAY: MOV R3,#10DLY1: MOV R4,#100DLY2: MOV R5,#250 DJNZ R5,$ DJNZ R4,DLY2 DJNZ R3,DLY1 RET END