P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
i;while(1) { led=0xfe; for(i=0;i<8;i++) //左到右点亮 { P0=led; led=(led<<1)
P2=LED; 点亮发光管,即先点亮右边的第一个 Delay10ms(50); 延时一段时间 LED=LED<<1; 点亮的发光管,向左移动一位 if (P2==0x00) 判断是否8个全部点亮了 { LED=0xff; 如果全部点亮,则将全部
P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和第四个LED delay(
51单片机的八个LED循环点亮,如何写代码?
1:设置一个变量zhidaoi,它可以从0循环到3 2:检测一个已取消缓冲的键。按“+1”3:当I值为每个值时,执行相应的模式。水量灯参考程序 #include #include #定义uchar无符号字符 Ucharj,温度;无效延迟(无符号整型
include
没有具体的电路图,就只以P1口作为基本输驱动口进行说明。主程序需要一个delay函数进行led亮灭的延时。当然你首先要先进行P1口和开关按键的预定义,这个要看你板子的原理图。void delay(int l){ int a,b;for(a=0;a
用汇编编程如下:ORG 0000H LJMP MAIN MAIN:ORG 0100H MOV A ,#80H ; 高电平亮灯。如低电平亮灯,改成#7FH ;;正向循环 ZXH :MOV P0 , A RR A LCALL S50MS ; 延时50MS
单片机每秒采集一次开关状态,断开设变量F为0,否则为1。用P0口联8个LED,置P0为11111110,循环每秒检测"F"的值,如为1,循环左移一位;如为0,置P0为0。
include "intrins.h"define uchar unsigned char define uint unsigned int sbit Led=P1;void delay(void);void main(void){ unsigned char tmp,i;P1=0x00;//全熄灭 while(1){ for(i=0;i<8;i++)//左移 {
闪烁5次再移位,可以用循环来实现。程序如下:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FCH ;LED灯初值,两个灯点亮 LOOP:MOV R2,#5 ;5次闪烁循环次数 LOOP1:MOV P0,A ;P0口送控制值 LCALL DELAY
在p0口接上8个led灯,每次亮两个灯的流水灯,如何实现led灯各闪烁5次再实现移位功能(汇编)
JMP MAIN ORG 30H MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP1,A;输出到P1 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP1,A;
//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况
while(1)//死循环,不停的点亮和熄灭LED { for(t=0;t<8;t++){ LED=~LED;//按位取反,点亮一个LED delay_ms(100);//延时0.1s LED=~LED;//按位取反 LED<<=1;//左移一位,点亮不同的LED } LED=0X80
P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和第四个LED delay(
//启动T0 while(1) { //显示 P1=LED; }}//T0 中断函数void Int_T0() interrupt 1{ //另外,因为在模式1中,每次定时器溢出后,单片机不会自动对TH0和TL0重新赋值 //所以每当定时器中断,我们都要首先对TH
编程实现:通过P1口依次逐个点亮8个发光二极管,频率为5HZ,并循环
{ P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和第四个LED dela
1:设置一个变量zhidaoi,它可以从0循环到3 2:检测一个已取消缓冲的键。按“+1”3:当I值为每个值时,执行相应的模式。水量灯参考程序 #include #include #定义uchar无符号字符 Ucharj,温度;无效延迟(无符号整型
led8=0;delay(100000);//大约延时900ms //从右到左依次点亮 led8=1;delay(50000);//大约延时450ms led7=1;delay(50000);//大约延时450ms led6=1;delay(50000);//大约延时450ms led5=1;delay(50000);//大约
y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void main(){int i=0;while(i<5) { P1=0x00; P2=0x00; P3=0x00;
8个led灯亮一秒灭一秒循环五次程序咋写
ORG 30H MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP1,A;输出到P1 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP1,A;输出到P1
// 51单片机控制八个发光二极管 左右循环。include
delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
1:设置一个变量zhidaoi,它可以从0循环到3 2:检测一个已取消缓冲的键。按“+1”3:当I值为每个值时,执行相应的模式。水量灯参考程序 #include #include #定义uchar无符号字符 Ucharj,温度;无效延迟(无符号整型
8个LED指示灯循环闪烁的程序(单片机)
方法: 1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。 流水灯参考程序 #include #include #define uchar unsigned char uchar j,temp; void delay(unsigned int ms) { uchar t; while(ms--) for(t=0;t<123;t++); } void main() { P1=0xff; delay(500); temp=0xfe; //有点怪,led接在P2.3~P2.6 for(j=0;j<4;j++) { P1=temp; delay(500); temp=_crol_(temp,1); } P1=0xff; while(1); }请设计一个8个led同时全部闪烁的程序 #include main () {int i; while (1) {for (i=0;i<=30000;i++); P1=~P1; } }
只需一个通电延断的时间继电器设定8秒即可。在传统的顺序控制器的基础上引入了微电子技术、计算机技术、自动控制技术和通讯技术而形成的一代新型工业控制装置。 目的是用来取代继电器、执行逻辑、记时、计数等顺序控制功能,建立柔性的远程控制系统。具有通用性强、使用方便、适应面广、可靠性高、抗干扰能力强、编程简单等特点。 扩展资料电源组件用于提供PLC运行所需的电源,可将外部电源转换为供PLC内部与案件适用的电源。微处理器CPU是PLC的核心器件,CPU因生产厂商各有不同,有采用市场销售的标准芯片,也有采用可编程序控制器专用芯片。存储器组件有两种:ROM和RAM。 输入和输出组件是PLC与工业生产现场交换数据的界面,与普通计算机不同,PLC的工作环境比较差,需要较强抗干扰能力,输入和输出组件既是为此设计。 参考资料来源:百度百科-PLC控制
#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:在此处写入主函数的内容 } }
首先搞清LED管是高电平导通还是低电平导通。 如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭。 具体程序: #define uint unsigned int #define uchar unsigned char void delay(uint time_out) { uint i,j; for(i=0;i<time_out;i++) { for(j=0;j<110;j++) {;} } } void main(){ while(1) { P1=0xfe; //第1个管亮 delay(500); P1=0xfd; //第2个管亮 delay(500); P1=0xfb; //依次类推 delay(500); P1=0xf7; delay(500); P1=0xef; delay(500); P1=0xdf; delay(500); P1=0xbf; delay(500); P1=0x7f; delay(500); } } 程序大致如此,delay函数负责延迟500ms.有问题自己再调试调试
#include #define LED P1 //宏定义,使用LED代替P1口(相当于LED=P1) #define uchar unsigned char //用uchar代替unsigned char方便操作 #define uint unsigned int /*------------------time ms延时函数-----------------*/ void delay_ms(uint time) { uchar tres; for(;time>0;time--) { tres=; while(tres--); } void in() { uchar t; LED=0X01;//P1=B while(1)//ˀѭ»·,²»ͣµĵぁº͏¨ðLED { for(t=0;t
LED灯简单,设置P0为推挽输出,根据按键不同,使P0输出不同的值,根据以下代码修改以下吧。 //============================================================================ //按键测试程序.按下S1-S3,在LCD上分别显示1-3 //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- #include // SFR declarations #include #include sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; unsigned long q; unsigned char led; //-------------------------------- void YJ_Init(void); void SPI0_Init (void); void Write_CHAR(unsigned char yjchar); unsigned char key_in(void); //----------------------------------------------------- void delay(void) { int a=1000; while(a!=0) { a--; } } /*----------------------------------------------------*/ //按键连接到p2.0、p2.1、p2.2、P2.3,均为开漏输出 unsigned char key_in(void) { XBR0 =0X00; P2=0xff; if(key1==0) { key1=1; delay();//延时 if(key1==0) { while(key1==0); XBR0 =0X02; return(0x32);//返回字符"1"表示按键SW1按下 } } if(key2==0) { key2=1; delay();//延时 if(key2==0) { while(key2==0); XBR0 =0X02; return(0x33);//返回字符"3"表示按键SW1按下 } } if(key3==0) { key3=1; delay();//延时 if(key3==0) { while(key3==0); XBR0 =0X02; return(0x34);//返回字符"3"表示按键SW1按下 } } if(key4==0) { key4=1; delay();//延时 if(key4==0) { while(key4==0); XBR0 =0X02; return(0x31);//返回字符"4"表示按键SW1按下 } } XBR0 =0X02; return(0);//返回0,表示没有按键按下 } //--------------------------------------------- void main(void) { unsigned char data1; value =1; PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit) OSCICN |= 0x03; // Set internal oscillator to highest // setting (24500000) /* XBR0 = 0x00; // XBAR0: Initial Reset value XBR1 = 0x40; // XBAR1: Initial Reset value P2MDOUT = 0xf0; // Output configuration for P2 P3MDOUT = 0x1f; // Output configuration for P3 */ P0SKIP = 0xFE; P1SKIP = 0x7F; XBR0 = 0x02; // Enable SMBus pins XBR1 = 0x40; // Enable crossbar and weak pull-ups P0MDOUT = 0xFF; // All P0 pins open-drain output P0 = value; P2MDOUT = 0xFF; P3MDOUT |= 0x04; // P3.3 push-pull output P2 |=0X01; SPI0_Init (); YJ_Init(); while(1) { data1=key_in(); //读按键 if(data1!=0x32) //根据按键返回值 { for(q=0;q<1000;q++); P0 = value<<1; //控制LED从右向左点亮 for(q=0;q<1000;q++); } if(data1!=0x33) //有按键按下,显示对应的按键 { YJ_Init(); //LCD初始化 for(q=0;q<1000;q++); P0 = value>>1; //控制LED从左向右点亮 for(q=0;q<1000;q++); } } }
MIN: MOV R0,#00H MOV DPTR,#TABDD1: MOV A, R0 MOVC A,@A+DPTR MOV P1, A ACALL DELAY1 INC R0 CJNE R0, #10H, DD1 JMP MIN 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, 74H DB 0E2H,0D2H,0B2H, 72H,0E1H,0D1H,0B1H, 71H END
#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的位置循环左移一位 } }
首先,你的电路图没有给出来,管脚是什么? 其次,我建议还是自己尝试写一写,这个不难,我给你个思路 首先定义变量类似于P1_2 = P1^2这种,先把这八个管脚全部定义好,之后给个for循环,让P1(假设的你LED灯连接的是P1口)口的P1^0~P1^7相关标