KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进
keil按键控制led灯的亮灭如下:1、单片机一个按键控制一个LED灯怎么处理,求程序,用keil软件的,谢谢.2、单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环3、按键点灯程序,按一下按键灯亮
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
led2;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;void delay(int a){uchar i;while(a--)for(i=0;i<120;i++);}main(){unsigned int i;
Keil编程:51单片机键盘控制LED
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面
sbit k = P1^0; //P1.0作为按键输入 int led=0xff;void main(){ P2 = led; //led初始赋给P2口 while(1){ if(k==0) //如果按键按下 { while(k==0); //判断按键松开 led=~led;P2 = le
比如你的8个灯连在 P0口,如果是阴极的 你只要先定义 sbit P0^0=LED0;一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key;代码里写 while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的
你按一下按钮,给对应LED灯的口赋值#0FEH(1111 1110)第一个灯亮,松开给(1111 1111)都灭,再按一下给(1111 1101),依次这样循环就行了。
首先要知道你控制led灯的芯片是,然后要知道你的led灯是接在哪些io口上的,这样你就可以,还要查看电路图,是低电位有效还是高电位有效,知道这些,你就可以对某一个io口进行置零或置1,进行对led灯进行控制
利用一个按键,控制8个LED流水灯的开始和停止,起始状态为8个LED全亮。用C语言编写
你可以简单地认为单片机只能输出5V或者0V的电压 分别对应1和0,那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 ,那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。时间
i<120;i++);}main(){led=0xfe;led1=0x55;while(1) { switch(keyval) { case 0:P1=led;led=_crol_(led,1);delay(200);break; case 1:P1=led;led=_cror_(led,1),delay(200);break;
开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数。有不懂的地方随时回复我。希望我的回答能帮助到你。
控制流水灯亮度需要使用pwm控制,按键控制pwm值就可以了
//控制引脚定义 sbit LED1 = PX.X; //P0.0-P3.7任意引脚 sbit LED12 = PX.X;//宏定义灯亮灯灭 define LED1_ON( ) LED1 =0 //阳极接电源 define LED1_OFF( ) LED1
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
include "reg51.h"unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据 void delay(unsigned char time){ //延时函数 unsigned int j=15000;for(;time>0;time--)for(;j>0;j--);} void m
C51单片机编程,按键控制流水灯
Flag1 = keyscan();if(Flag1==1)(Flag2=~Flag2); //如果一旦检测到一次按键扫描就把标志位2 打开;再次就关闭;if(Flag2==1)// 如果标志位打开就开始流水灯 { temp=0x01;for(i=0;i<8;i++) //8个流水
LED_AllOff LED_Port1=LED_Port2=LED_Port3=LED_Port4=0xff define LED_AllOn LED_Port1=LED_Port2=LED_Port3=LED_Port4=0 define LED_Status 43//1步全亮+32步单亮+10步闪烁 define LED_Marquee 32 bit T
假设灯接P0口,低电平点亮 主程序 void main(){ unsigned char a=0, i=0;TMOD=0X01;TH0=(65536-50000)/256;/定时50ms TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P0=0XFF ;while(1);} 中断程序 void ti
if(Start_flag)//如果启动流水灯 { DispFlashLED();//流水灯 } else {
求大神一个关于89c52单片机用S0键来启动和停止流水灯的程序,在这里先感谢各位大佬帮帮忙。
令clk为led流水灯的驱动时钟,rst为上升沿复位信号(异步)。则所实现的Verilog HDL代码部分如下:module led_run(clk,led,rst);input clk;//clk with low frequency like 1Hz input rst;//system reset signal output [
给你一个例子 , 5个led灯,通过开关来选择显示模式:led是 1为亮,0为灭 sel是 1为选中,0为不选 led默认状态是 全亮 5'b10000:从左到右每两个LED逐渐点亮 5'b01000:从右到左每两个LED逐渐点亮5'b00100:
流水灯的程序我已经写出来了,就是不知道怎么加按键,打算用p3.0作为按键输入口,要求是先是灯全灭,然后按一下按键流水灯就开始工作,然后再按下灯就灭了,再按下再工作的那种,最好加点解释,这是流水灯的程序:ORG
:前面的两篇文章,其中按键模块采用的是延时消抖的方式,本篇文章采用状态机实现按键功能,只需要一个按键模块,即可使用多个按键,当点击一个按键后,流水灯左移
module ledwater(clk,led,s)input clk;input[1:0]s;output[7:0]led;reg [7:0] led=0;reg [1:0] olds=0;always@(posedge clk) olds<=s;always@(posedge clk)if (olds^s)case (s)2'b00: led<=1;
按键低电平有效,led灯低电平时亮。按键按下亮,松开灭。程序较简单,为组合逻辑电路,没有按键防抖功能。module led(led,key);input key;output led;reg led_out;always@(key)if(!key)led_out=1'b0;else led_out=
按键低电平有效,led灯低电平时亮。按键按下亮,松开灭。程序较简单,为组合逻辑电路,没有按键防抖功能。module led(led,key);input key;output led;reg led_out;always@(key)if(!key)led_out=1'b0;else led_out=
在Verilog语言中如何通过按键控制五种流水灯的方式的程序
按键低电平有效,led灯低电平时亮。按键按下亮,松开灭。程序较简单,为组合逻辑电路,没有按键防抖功能。 module led(led,key); input key; output led; reg led_out; always@(key) if(!key) led_out=1'b0; else led_out=1'b1; assign led=led_...怎么没输出口啊 其实很简单的 把P0口做输出口 ORG 0000H AJMP MIAN ORG 0030H MIAN:MOV SP,60H JB P1.2,L0 ;判断 LJMP LK0 L0:JB P1.3,L1 ;判断 LJMP LK1 L1:JB P1.4,L2 ;判断 LJMP LK2 L2:JB P1.5,L3 ;判断 LJMP LK3 L3:AJMP MIAN ;没有按下 程序循环 LK0:MOV P0,#FFH ;亮 LCALL DAY ;延时闪烁时间自己写 MOV P0,#00H LCALL DAY CLR CY MOV P0,01H RRL RLR ;运用左或右移动指令 ;然后运用判断指令 LK1: LK2: LK3:
是我想的这个意思? #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(); } }
焊接的挺漂亮,用心了,祝你成功!!
while(1) { P1=aa; delayms(1000); aa=_crol_(aa,1); } 这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了 if(key1==0) { P1=0x7e;
while(1) { P1=aa; delayms(1000); aa=_crol_(aa,1); } 这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了 if(key1==0) { P1=0x7e;
你按一下按钮,给对应LED灯的口赋值#0FEH(1111 1110)第一个灯亮,松开给(1111 1111)都灭, 再按一下给(1111 1101),依次这样循环就行了。
51汇编程序如下: KEY EQU P3.2 LED EQU P1 ORG 0000H LJMP MAIN ORG 0030H MAIN: CLR 00H MOV A,#0FEH LOOP: JB P3.2,LOOP1 JNB P3.2,$ CPL 00H LOOP1: JB 00H,LOOP2 MOV LED,#0FFH SJMP LOOP LOOP2: MOV P1,A RL A LCALL DELAY SJMP LOOP DELAY: MOV R2,#200 DLY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY1 RET END
#include sbit key=P1^0; sfr LED=P0; main() { while(1) if(key==0)P0=0xc0; else P0=0xff; }
#include sbit key = P1^0;//按键 void delay(unsigned int time) { unsigned int i,j; for(i=0; i<time; i++) for(j=0; j<1000; j++) {;} } void mian() { unsigned int temp =0x00; while(1) { if(key == 0) { delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间 if(key == 0) temp = ~temp; } P2 = temp; } }