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;dela

led;while(1) { led=0xfe; for(i=0;i<8;i++) { P1=led; delay(200); led=_crol_(led,1); } led=0x7f; for(

for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);} } }

用汇编写这个容易点 main: mov a,#0feh mov r0,#8 loop: mov p1,a acall delay rl a djnz r0,loop delay:mov r6,#0ffh loop1: mov r7,#01h djnz r7,djnz r6,loop1 ret end 好像是这样,延迟时间可能不太准,也是P1口接8个LED灯

} 很容易理解就是让0X01一直左移赋值给P0口然后循环

单片机中要求从左到右依次点亮LED灯用C程序怎么写

KeyReadyFlag=TRUE;//按键准备标志 置位 } else KeyDownFlag=FALSE;//若按键Key1 无按下,则清空 按键按下标志 if(!KeyDownFlag && KeyReadyFlag)//若 按键已准备,且按键无按下(即 松手状态){ DutyNume++;//占空比分子 加1 if(DutyNume==DutyDeno) DutyNume=1;//若 占空比分子=分母,则

你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!

当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/ } }}v

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数{ while(1) //无限循环 {led=0x1f; //点亮前面三个灯。这里

单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

最简单的,就是直接延时,如下图,实现灯1亮;然后灯1灭;再然后灯2亮;再灭掉:第二种是用定时器,如下图,先是灯1亮半秒,再全熄半秒;再灯2亮半秒,再全熄半秒:

sbit led3=P1^2;main(){while(1){if(s1==0){while(s1==0);led1=0;led2=1;led3=1;}if(s2==0){while(s2==0);led1=1;led2=0;led3=1;}if(s3==0){while(s3==0);led1=1;led2=1;led3=0;}if(s4==0){while(s4==0);led1=0;led2=0;led3=0;}}}

;按键触发 外部中断0 LEDA EQU P1.0 LEDB EQU P1.1 ORG 0000H START ORG 0003H INT_X0 ORG 0030H ;初始化 START:CLR EA ;关总中断 SETB LEDA ;A灯亮(灭)CLR LEDB ;B灯灭(亮)SETB IT0 ;沿触发 SETB EX0 ;开外部中断0中断 SETB EA ;开总中断 ;主函数 MAIN:

先设置一个位变量,表征现在是启动还是停止。再设置一个位变量,表征应该是LED1亮还是LED2亮。然后在检测到按键的同时,启动定时器,取反第一个变量,计时五秒后取反第二个变量。

如果想实现无限循环那就采用死循环方式,可以无限的循环如while(1){};然后设定定时器定时时间为1s(此值需要根据单片机确定是否可以设定这么大),其次,设定一个变量对时间进行计数,根据计数情况做出相应的改变,程序可以这样设定:unsigned char gucLEDStatus = 0x00; //全局变量,表示灯当前的状态

a++;if(a==288000)//合计14400秒 { a=0;led1=!led1; led2=!led2;}}

求51单片机控制两个LED灯轮流亮灭程序,亮灭时间间隔两个小时,也就是说单片机的P2.0和2.1口

   //主循环 { LED0=0;      //将P1.0口赋值 0,对外输出低电平 Delay(10000);   //调用延时程序;更改延时数字可以更改延时长度; /*--- //用于改变闪烁频率 ---*/ LED0=1;      /

1:设置一个变量zhidaoi,它可以从0循环到3 2:检测一个已取消缓冲的键。按“+1”3:当I值为每个值时,执行相应的模式。水量灯参考程序 #include #include #定义uchar无符号字符 Ucharj,温度;无效延迟(无符号整型ms){ Uchart;(女士)对于(t = 0;T < 123;T + +);} Voidmain(

单片机流水灯1到8依次亮,是通过编程控制单片机的I/O端口实现的。通常使用循环结构和延时函数,依次将每个LED灯对应的I/O端口置为高电平,使其亮起,然后延时一段时间,再将其置为低电平,使其熄灭。通过不断循环这个过程,就可以实现流水灯的效果。单片机流水灯是一种常见的电子制作项目,它通过单片机

include include define uchar unsigned char define uint unsigned int sbit P0_0=P0^0;sbit P0_1=P0^1;sbit P0_2=P0^2;sbit P0_3=P0^3;void delay(uint z)//延时2ms程序 {uint x,y;for(x=z;x

单片机实验 :实现LED灯的循环依次闪烁

500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 SJMP MAIN ;延时250ms子程序 DLY_250MS:MOV R5,#5 DLY1:MOV R6,#100 DLY0:MOV R7,#250 DLY:DJNZ R7,DLY DJNZ R6,DLY0 DJNZ R5,DLY1 RET ;延时500ms子程序 DLY_500MS:MOV R4,#2 DLY2:LCALL DLY_250MS DJNZ R4,DLY2 RET END

一、硬件接线 首先,电路接线是最重要的环节,需要将外部组件与单片机核心引脚相连接,如接线正确,接地和电源,以及led灯和信号脚之间的接法、灯丝与中断脚的线路等,全部调整正确才能正常工作。二、编程操作 接着,编写程序,设置数字输出端口,将接线好的八盏灯分别设定为1-8口,编写时序程序,循环点亮

P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();}

在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具体来说,使用for循环来控制LED灯的亮灭顺序。在每次循环中,通过给P1端口赋值来控制LED灯的亮灭状态。例如,给P

把各个花样写在子函数,中断中对变量加1,在判断是否大于5,大于5就对变量清零。因为你要5种花样。主函数判断变量的值,1时执行从左到右依次点亮,2时执行从左到右逐个依次熄灭。依次下去 include "reg51.h" // 包含头文件 define uchar unsigned char void delay02s(void) // 延时0.2s

电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣?下面是c语言程序源码 include void delay100ms(); //如果函数是在主函数后面定义

实现单片机信号灯1-8依次循环点亮的程序怎么写

0 0 1 1 1 0 0 1 是这样的四种状态吗? 这样很简单的,, 主要还是检测按键, 按键按下 你把一个变量+1, 比如 if(Key == 0) { delay(); //延时10ms,延时函数 自己写吧 if(Key == 0) { num++; if(num >= 4) num = 0; while(!Key); } } 然后根据num 的值 对Led进行状态刷新就好了。 switch(num) { case 0: Led1 = 1; Led2 = 0; break; case 1: Led1 = 0; Led2 = 1; break; case 2: Led1 = 0; Led2 = 0; break; case 3: Led1 = 1; Led2 = 1; break; default : break; } 就可以了,,,顺序的话 可以按照具体要求更换下位置就可以了。
#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:在此处写入主函数的内容 } }
#include "reg51.h" #define uchar unsigned char sbit LED1=P2^0; sbit LED1=P2^1; unsigned int CNT1,CNT2; void main() { TMOD=0x01;//00000001设置定时器0工作方式1 TH0=(65536-50000*110592/120000)/256; TL0=(65536-50000*110592/120000)%256; ET0=1; EA=1; TR0=1; while(1) { ; } } void time0() interrupt 1 { TH0=(65536-1000*110592/120000)/256;// 111111111+1 TL0=(65536-1000*110592/120000)%256; CNT1++; if(CNT==3600) { CNT2++; if(CNT2<1000) { LED1=0;LED2=1; } else { LED1=1;LED2=0; } } }
你有什么教材吗?我用的郭天祥的教材的第74页就有一个控制一秒闪烁的。你这个问题是超简单的问题。 你要程序的话我可以给你
bit flash;//闪烁标志位 sbit led=P0^0; sbit P01=P0^1; sbit P02=P0^2; void main() { P01=P02=0; flash=0; led=0; while(1) { scankey(); ledflash(); } } void scankey()//键盘扫描 { P01=1;//行线给1 if(P02)//如果P02也是1则说明接通 { delay(10);//去抖动10MS if(P02)//再次确定按键按下 { while(P02){flash=flash}//按住按键的动作 flash=~flash;//按键按下后执行动作 } } } void ledflash() { if(flash) { led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0; } void delay(unsigned int i) {自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
这个很简单啊~~ 写一个嵌套判断~ if(key==0) { delay(100); //假设这是1s的延时,嵌套10个就是10秒的~~ if(key==0) { delay(100); if(key==0) { flag=1; //标志位改变 } } } if(flag==1) { led=1; //灯点亮 } if(key==1) { flag=0; //标志位还原 } if(flag==0) { led=0; //灯熄灭 }
#include voiddelay(void) { unsignedinti,j; for(i=0;i<200;i++) for(j=0;j<1000;j++) ; } voidmain(void) { while(1) { P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay(); P3=0xfb;//第三个灯亮 delay(); P3=0xf7;//第四个灯亮 delay(); P3=0xef;//第五个灯亮 delay(); P3=0xdf;//第六个灯亮 delay(); P3=0xbf;//第七个灯亮 delay(); P3=0x7f;//第八个灯亮 delay(); } } 扩展资料 单片机C语言16种方式流水灯 voidmain() { while(1) { P1=0xfe;//点亮第一个发光管 Delay(5000); P1=0xfd;//点亮第二个发光管 Delay(5000); P1=0xfb; Delay(5000); P1=0xf7; Delay(5000); P1=0xef; Delay(5000); P1=0xdf; Delay(5000); P1=0xbf; Delay(5000); P1=0x7f;//点亮第八个发光管 } }
#include unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} void delay(unsigned char a) { unsigned char i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { unsigned char i; while(1) { for(i=0;i<8;i++){P0=ledtab[i];delay(100);} for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);} } }