;左移 LOOP1:MOV R7,#8 MOV A ,#01 RL A MOV P1,A CALL DELAY DJNZ R7,LOOP1 ;全亮 MOV P1,#0FFH CALL DELAY ;右移 LOOP2:MOV R7,#8 MOV A ,#01 RR A MOV P1
流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。
/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*/ #include #include #define uchar unsigned char uchar a,b; uchar b=1; uchar a=0xfe; void main() { EA=1;IT1=1;ET0=1; T
双向循环 可以用左移右移指令 赋值 P1口 A=A<<1 循环左移一位 A=A>>1 循环右移一位
include
单片机流水灯实现3个LED同时亮 先左移动,向有移动.
1、那么把这个数,右移两位,得到 0011 1111,然后把左数第二位取反,得到 0111 1111,即“第一个灯亮”2、按上述循环方法,将结果右移两位得 0001 1111,然后左数第二位取反,得到 0101 1111,即“第三个灯
亮一个的初值为1,两个的为3三个的为7~~以此类推,然后循环左移或循环右移就可以了,
//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe; for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。 { led=_crol_(led,1);//左移1位 } led=0x00; } void shan2() { u8 i; led=
delay(300); //延时300毫秒 } P1=0xff;while(1);}
循环3圈,就是循环3*8=24次,可以用个 for循环24次。void main(){ uchar a;uchar i;a=0xfe;for(i=0;i<24;i++){ P1=a;delayms(500);a=_crol_(a,1);} while(1); //程序最后停在此死循环处,啥
while(1);}
单片机中怎么让循环流水灯第一个灯亮三次然后第二个灯亮三次依次下去?
流水控制器坏了,或状态未设定好。
你这样用移位的,只能一只只点亮。用查表法的试试。ORG00H AJMPMAIN ORG30H MAIN:MOVR1,#0 MOVDPTR,#TAB MOVA,R1 MAIN1:MOVCA,@A+DPTR MOVP1,A LCALLDLY INCR1 MOVA,R1 CJNE A,#8,MAIN1 AJMPMAIN DLY:MO
I0.2=ON 移位开始,I0.2=OFF 清零。2)方式 2 利用移位指令使流水灯从左至右依次亮 1S;当流水灯全亮后,再从右至左依次灭, 如此反复 3 次系统自动停止运行。I0.3=ON 移位开始,I0.3=OFF 清零。
转向开关故障。转向灯不亮,则可能是转向开关有故障,可用螺丝刀分别接通转向开关火线与左右灯线的接线柱 闪光器继电器损坏或转向灯熔断丝已熔断。前者可自行更换,后者需仔细检查转向灯线路是否有短路后,在更换转向灯熔断丝即可
三菱plc流水灯依次亮然后依次灭方法:1、用计数器,记录按钮X0按下的次数,6下为一个循环,计数器设定值为6。2、计数到了,将计数器复位清零,一个循环结束。3、按第一下灯1亮,直到按第六下,计数器复位,灯1结束亮
该操作步骤如下:1、创建一个PLC程序,并选择适合的PLC型号。2、定义输入和输出变量。例如,定义一个输入变量"Start"来启动流水灯的运行,定义八个输出变量"Light1"到"Light8"来控制每个灯的亮灭。3、在程序的主循环中,
我们将LED灯连接到微控制器的一个GPIO(GeneralPurposeInput/Output,通用输入输出)引脚上。接下来,我们需要编写一段代码来控制LED的亮度。这段代码会使用一种称为“for”的循环结构,会依次对每个LED进行操作。在这个例子中
流水灯显示依次一直亮
如下图所示:X0是启动信号;y0灯1;y1灯2;y2灯3 。
//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe; for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。 { led=_crol_(led,1);//左移1位 } led=0x00; } void shan2() { u8 i; led=
include
include
include
流水灯程序三个灯亮怎么设置
#include #include typedef unsigned int u16; typedef unsigned char u8; sbit led=P2;//这里填你LED连接的端口(引脚),不一定是P2,也有可能是P3、P0 void delay(u16 i) { while(i--); } void shan1() { u8 i; led=0x01;//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe; for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。 { led=_crol_(led,1);//左移1位 } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++)已经点亮两个个了,所以剩6个。 { led=_cror_(led,1);//右移一位 delay(1000); } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++) { led=_cror_(led,1); delay(1000); } led=0x00; } void main() { while(1) { shan1(); delay(1000); shan2(); } }随手写了一个飞思卡尔的,仅供参考,宏定义的有点多,这样方便你看,代码页很清晰明朗,没运行,不过应该没什么大问题,谢谢,希望采纳 #include "MC9s08aw60.h"//LED #define LED1_D PTBD_PTBD0 #define LED2_D PTBD_PTBD1 #define LED3_D PTBD_PTBD2 #define LED4_D PTBD_PTBD3 //数据寄存器 #define LED5_D PTDD_PTDD2 #define LED1_DD PTBDD_PTBDD0#define LED2_DD PTBDD_PTBDD1 #define LED3_DD PTBDD_PTBDD2 #define LED4_DD PTBDD_PTBDD3 //方向寄存器 #define LED5_DD PTDDD_PTDDD2 #define LED1_PE PTBPE_PTBPE0#define LED2_PE PTBPE_PTBPE1 #define LED3_PE PTBPE_PTBPE2 #define LED4_PE PTBPE_PTBPE3 //上拉使能 #define LED5_PE PTDPE_PTDPE2 #define LED1_ON {LED1_D=0;}#define LED2_ON {LED2_D=0;} #define LED3_ON {LED3_D=0;} #define LED4_ON {LED4_D=0;} #define LED5_ON {LED5_D=0;} #define LED1_OFF {LED1_D=1;} #define LED2_OFF {LED2_D=1;} #define LED3_OFF {LED3_D=1;} #define LED4_OFF {LED4_D=1;} void led_test(void) { int i = 0; int j = 0; while(1) { for(i=0;i<4;i++) { LED1_ON; Delay1ms(); LED1_OFF; LED2_ON; Delay1ms(); LED2_OFF; LED3_ON; Delay1ms(); LED3_OFF; LED4_ON; Delay1ms(); LED4_OFF; } for(j=0;j<3;j++) { LED4_ON; Delay1ms(); LED4_OFF; LED3_ON; Delay1ms(); LED3_OFF; LED2_ON; Delay1ms(); LED2_OFF; LED1_ON; Delay1ms(); LED1_OFF; } } } void InitLed(void) { LED1_DD = 1; LED2_DD = 1; LED3_DD = 1; LED4_DD = 1; //设置为输出 LED5_DD = 1; LED1_PE = 1; LED2_PE = 1; LED3_PE = 1; LED4_PE = 1; //上拉电阻使能 LED5_PE = 1; LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; //初始化为关 LED5_OFF; } int main() { InitLed(); led_test(); return 0; } 那个1m延迟,我没定义,自己可以写个延迟函数,差不多为500ms
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。 2、具体实现方法可以参考如下程序: 拓展资料: 1、单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 参考资料:百度百科:单片机
#include #include typedef unsigned int u16; typedef unsigned char u8; sbit led=P2;//这里填你LED连接的端口(引脚),不一定是P2,也有可能是P3、P0 void delay(u16 i) { while(i--); } void shan1() { u8 i; led=0x01;//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe; for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。 { led=_crol_(led,1);//左移1位 } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++)已经点亮两个个了,所以剩6个。 { led=_cror_(led,1);//右移一位 delay(1000); } led=0x00; } void shan2() { u8 i; led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况 for(i=0;i<6;i++) { led=_cror_(led,1); delay(1000); } led=0x00; } void main() { while(1) { shan1(); delay(1000); shan2(); } }