方法有很多,以下是用最基础的方法写的。LOOP:MOV P1, #0FEH;//点亮P1口第一个灯;LCALL DELAY;MOV P1, #0FDH;LCALL DELAY;MOV P1, #0FBH;LCALL DELAY;MOV P1, #0F7H;LCALL DELAY;MOV
RET ;子程序返回 END ;程序结束 来说,想要让流水灯变慢点的话,就增加延时。这里将第二行指令D1: MOV R1,#20中的20改大,但是要小于256.比如D1: MOV R1,#200 如果想要流水灯快点的话,就是要减少延时时间。这里
delayms(1000);LED = LED<<1; //循环右移1位,点亮下一个LED if(LED==0x00){ LED=0xff;} P0 = LED;} }
/ void int0(void) interrupt 0 using 0 //用于减小流水灯速度 { if(flag<9)flag++;} / 函数功能:外中断T0的中断服务程序 / void int1(void) interrupt 2 using 0 //用于增加流水灯速度 { if(flag>1)flag--
05 LED模拟交通灯 /* 名称:LED模拟交通灯 说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。 */ #include
求16个流水灯程序,有模式还可以调节快慢的,急求,谢谢。
mov P0,a ;查表结果(dw的后字节)送入P0口 inc dptr ;数据指针加1 lcall delay100ms ;延时100ms djnz 30h,lop ;未到16次继续查表取值 ajmp start ;到了则重新循环 delay100ms: mov r5
LOOP:MOV P1, #0FEH;//点亮P1口第一个灯;LCALL DELAY;MOV P1, #0FDH;LCALL DELAY;MOV P1, #0FBH;LCALL DELAY;MOV P1, #0F7H;LCALL DELAY;MOV P1, #0EFH;LCALL DELAY;MOV P1,
嘉定单片机是STC89C52RC这款常用51单片机,推荐用两个74HC573,输入全接P0;输出接16个LED负极(573有一定驱动能力,实际应用可以接LED正极,但是习惯上仍采用灌电流的驱动方式)然后LED另一极接正极,设573的所存分别用P3.7
DELAY1: MOV R5,#2 ; 可以改时间 D1: MOV R6,#255 D2: MOV R7,#255 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET TAB: DB 0E8H,0D8H,0B8H, 78H,0E4H,0D4H,0B4H, 74
8051单片机P0口接有16个LED,编程实现流水灯,每次亮一个亮1s后熄灭再亮第二个,再亮1s然后熄灭,以此类推
while(1);}
单片机C51编程问题:要实现一个开关控制两个灯,按要求两个灯有3种状态,就要声明一个变量,每按一下开关,变量加一,且变量取值为1,2,3,大于3再回1,又重复控制两个灯亮灭变化。变量加一后,就根据变量的三个值,
#0FFH MOV R2,#16LOOP: MOV P1,A MOV P2,B LCALL DELAY CLR C RLC A XCH A,B RLC A XCH A,B DJNZ R2,LOOP MOV R2
流水灯程序是keil的自带例子,你直接跑就是。void wait (void) { /* wait function */ ; /* only to delay for LED flashes */ } void main (void) { unsigned int i; /* Delay var */ unsigned
61单片机用C语言做一个程序 要求:16个灯从右到左依次点亮,全亮后闪烁三次, 然后从左到右依次熄灭 急求
流水控制器坏了,或状态未设定好。
你这样用移位的,只能一只只点亮。用查表法的试试。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进行操作。在这个例子中
流水灯显示依次一直亮
你可以使用 第一:全局变量,如果P1工作,P0 停止,或者:定义P0口的同时,定义P1口,比方说原来是P0=255;delay();P0=128;delay();改成P0 =255;P1=255;delay();P0=128:P1=255;delay();我没有51的开发
你说是按键没效果,先用万用表测试一下你的引脚的电平,是否被拉低了 如果按键没问题,你就检查_crol_(P0,1);这句,查一下头文件是否被包含,我个人建议自己作个移位函数 虽然程序中还有别的问题,但不会造成你一在
P1=P1>>1; //每次循环P1的各二进位右移1位,高位补0 delay(); //调用延时函数 } } }
if(temp!=0x8000)temp<<=1; //temp左移一位 else temp=1;} }
用P0,P2做输出口,高电平亮P0。0为最低位 MOV 30H,#00H;MOV 31H,#01H LP:MOV P0,30H MOV P2 31H LCALL d_250 LCALL d_250 CLR C MOV A,30H RL A JC LP1 MOV A,31H JC LP2 JMP LP LP1:MOV 31
用51单片机控制16个流水灯,依次左移点亮,。高分
用P0,P2做输出口,高电平亮P0。0为最低位 MOV 30H,#00H;MOV 31H,#01H LP:MOV P0,30H MOV P2 31H LCALL d_250 LCALL d_250 CLR C MOV A,30H RL A JC LP1 MOV A,31H JC LP2 JMP LP LP1:MOV 31
DELAY1: MOV R5,#2 ; 可以改时间 D1: MOV R6,#255 D2: MOV R7,#255 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET TAB: DB 0E8H,0D8H,0B8H, 78H,0E4H,0D4H,0B4H, 74
方法有很多,以下是用最基础的方法写的。LOOP:MOV P1, #0FEH;//点亮P1口第一个灯;LCALL DELAY;MOV P1, #0FDH;LCALL DELAY;MOV P1, #0FBH;LCALL DELAY;MOV P1, #0F7H;LCALL DELAY;MOV
start: mov dptr,#table ;数据表地址送入dptr mov 30h,#16 ;30单元作为循环计数器 lop: mov a,#0 ;acc清零 movc a,@a+dptr ;查数据表中的值并送入a mov p2,a ;查表结果(dw
8051单片机16个显示灯实现顺序点亮和循环点亮!
ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV B,#0FFH MOV R2,#16LOOP: MOV P1,A MOV P2,B LCALL DELAY CLR C RLC A XCH A,B RLC A XCH A,B DJNZ R2,LOOP MOV R2,#3LOOP1: MOV P1,#00H MOV P2,#00H LCALL DELAY MOV P1,#0FFH MOV P2,#0FFH LCALL DELAY DJNZ R2,LOOP1 SJMP $DELAY: MOV R3,#200DLY: MOV R4,#250 DJNZ R4,$ DJNZ R3,DLY RET END电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣? 下面是c语言程序源码 #include void delay100ms(); //如果函数是在主函数后面定义,那么一定要在主函数前面声明 void main() { int i; i=0xfe; while(1) {P1=i; i--; delay100ms(); if(i==0) i=0xfe; } } void delay100ms(void)// { unsigned char a,b,c; for(c=19;c>0;c--) for(b=20;b>0;b--) for(a=230;a>0;a--)
http://zhidao.baidu.com/q?ct=24&cm=16&tn=ikusercenter&item=uscore#doc有个你看看,不用下载 能 看的到
#include void delay(long int t) { long int i,j,k; for(i=0;i<t;i++) { for(j=0;j<10;j++) { for(k=0;k<100;k++) { ; } } } } void main() //假设低电平有效 { int i=0,temp; while(1) { temp=0xFF; for(i=0;i<9;i++) { delay(500); //延时500ms P0=temp; temp<<=1; } } } OK了,楼主这个没问题了
#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;//对数据类型进行声明定义 typedef unsigned char u8; //LED灯命名 sbit leda=P0; sbit led1=P0^0; sbit led2=P0^1; sbit led3=P0^2; sbit led4=P0^3; sbit led5=P0^4; sbit led6=P0^5; sbit led7=P0^6; sbit led8=P0^7; void delay(u16 i) { while(i--); } void main() { while(1) { leda=1;//全部灯亮 //从左到右依次熄灭 led1=0; delay(50000);//大约延时450ms led2=0; delay(50000);//大约延时450ms led3=0; delay(50000);//大约延时450ms led4=0; delay(50000);//大约延时450ms led5=0; delay(50000);//大约延时450ms led6=0; delay(50000);//大约延时450ms led7=0; delay(50000);//大约延时450ms led8=0; delay(100000);//大约延时900ms //从右到左依次点亮 led8=1; delay(50000);//大约延时450ms led7=1; delay(50000);//大约延时450ms led6=1; delay(50000);//大约延时450ms led5=1; delay(50000);//大约延时450ms led4=1; delay(50000);//大约延时450ms led3=1; delay(50000);//大约延时450ms led2=1; delay(50000);//大约延时450ms led1=1; delay(50000);//大约延时450ms leda=1;//全部灯亮 } } 扩展资料:main()应用: 1、C++中的main函数 C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统, 但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。 虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。 2、Java中的main函数 Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。 首先,返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。 其次,Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。 第三,由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。 第四,main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因) Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行) public class MainDemo{ public static void main(String[]args){ //TODO:在此处写入主函数的内容 } } Java Applet的运行机制与Java Application完全不同,因此不需要main函数 3、C#中的main函数 C#中的main函数与Java大同小异,同样必须是类成员,同样使用字符串数组作唯一参数,同样是静态函数,同样的void main, 与之不同的是:main的首字母变成了大写,即"Main函数“,且是否限定为public级别已经无所谓了(默认没有public,但某些场合可能还是需要public) 另外,需要注意的是,C#中不再有”类名必须与主文件名同名“的限制,即使类名不和主文件名相同,程序照样可以运行。 C#应用程序中的main函数默认是这样的(注意main的首字母已是大写) C#和C/C++、java不同的是C#不在拘泥于必须从main()函数开始执行,C#是属于事件触发。 class Program{ static void Main(string[]args){ //TODO:在此处写入主函数的内容 } }
假设P1接8 个LED,高电平时LED点亮,主程序如下: void main(void) { uchar i; while(1) { for(i=0;i<7;i++) { P1=1<<i; delay_ms(500); } for(i=0;i<7;i++) { P1=0x80>>i; delay_ms(500); } } }
用一个P0口,接32个灯,要么用4片并行芯片扩展,如4片74HC573,这样,需要12个I/O脚来扩展。 要么用4片74HC595,只需要3个I/O脚就够了。
#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;//对数据类型进行声明定义 typedef unsigned char u8; //LED灯命名 sbit leda=P0; sbit led1=P0^0; sbit led2=P0^1; sbit led3=P0^2; sbit led4=P0^3; sbit led5=P0^4; sbit led6=P0^5; sbit led7=P0^6; sbit led8=P0^7; void delay(u16 i) { while(i--); } void main() { while(1) { leda=1;//全部灯亮 //从左到右依次熄灭 led1=0; delay(50000);//大约延时450ms led2=0; delay(50000);//大约延时450ms led3=0; delay(50000);//大约延时450ms led4=0; delay(50000);//大约延时450ms led5=0; delay(50000);//大约延时450ms led6=0; delay(50000);//大约延时450ms led7=0; delay(50000);//大约延时450ms led8=0; delay(100000);//大约延时900ms //从右到左依次点亮 led8=1; delay(50000);//大约延时450ms led7=1; delay(50000);//大约延时450ms led6=1; delay(50000);//大约延时450ms led5=1; delay(50000);//大约延时450ms led4=1; delay(50000);//大约延时450ms led3=1; delay(50000);//大约延时450ms led2=1; delay(50000);//大约延时450ms led1=1; delay(50000);//大约延时450ms leda=1;//全部灯亮 } } 扩展资料:main()应用: 1、C++中的main函数 C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统, 但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。 虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。 2、Java中的main函数 Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。 首先,返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。 其次,Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。 第三,由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。 第四,main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因) Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行) public class MainDemo{ public static void main(String[]args){ //TODO:在此处写入主函数的内容 } } Java Applet的运行机制与Java Application完全不同,因此不需要main函数 3、C#中的main函数 C#中的main函数与Java大同小异,同样必须是类成员,同样使用字符串数组作唯一参数,同样是静态函数,同样的void main, 与之不同的是:main的首字母变成了大写,即"Main函数“,且是否限定为public级别已经无所谓了(默认没有public,但某些场合可能还是需要public) 另外,需要注意的是,C#中不再有”类名必须与主文件名同名“的限制,即使类名不和主文件名相同,程序照样可以运行。 C#应用程序中的main函数默认是这样的(注意main的首字母已是大写) C#和C/C++、java不同的是C#不在拘泥于必须从main()函数开始执行,C#是属于事件触发。 class Program{ static void Main(string[]args){ //TODO:在此处写入主函数的内容 } }
看到程序脑壳疼
proteus文件发给我 就可以写了