Keil uVision4实例 51单片机控制LED灯闪烁,关键看C语言的编程细节。建立项目:LED灯闪烁。新建C文件:LED灯闪烁 引用51头文件。将所有的灯都点亮。让所有的灯全部灭了。添加循环语句。添加一个变量。使用循环语句创造延迟。
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进
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
在上述示例程序中,我们将LED连接到Arduino的13号引脚,并使用digitalWrite()函数控制该引脚的电平。HIGH表示将引脚设置为高电平(点亮LED),LOW表示将引脚设置为低电平(熄灭LED)。通过delay()函数设置LED灯亮灭的时间间隔。
初步判断,LZ 的程序 是:LED 亮;延时5秒;LED 灭;延时10秒;数码管 +1;循环以上内容;这节课 的重点是 定时器,而不是 用延时 函数。
你只要先定义 sbit P0^0=LED0;一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key;代码里写 123456789while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}
两种方法,一种是给驱动16和灯的口每次变化赋和显示值,这种最好理解,32次变化写32行输出然后每个输出后面再加一个延时就可以了。另一种是用位移指令for循环 也要写两个for 一个渐亮的一个渐灭的
// 51单片机控制八个发光二极管 左右循环。include
KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进
电平状态输出相应的信号来控制LED的亮灭。将按键与某个IO口相连。当按下按钮时,IO口会被拉低(变为低电平),未按下按钮时为高电平。在程序中通过循环检测IO口的状态,检测到低电平表示按钮被按下,可以执行相应操作。
51单片机控制led灯点亮与熄灭
include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;sbit led=P2^0;//把所要控制的led灯定义为p2.0这个口sbit k1=P2^1;sbit k2=P2^2;void delay(u16 i){while(i--);}//一个延时程序void
如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:O
当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键
//这里想实现当某灯被点亮后,如果一定时间 //没有其他灯被点亮,就自动熄灭,while (1) { if (P1 != 255) { //有按键?yanshi(10); //延时消抖 if (P1 != 255) return P1;//返回键盘的状态 }
单片机独立键盘控制LED灯,程序问题
一个简单的开关控制一盏灯的c程序如下:include
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
int0中断 程序我先试试 include
LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循 环,LED取反得到LED = 0,灯亮。
51单片机的按键控制小灯亮灭的问题(程序类型:c语言)
51单片机只有2个外中断是P3.2 和 P3.3 可以用计数器再实现2个外中断(计数器0, P3.4和计数器1, P3.5)4个按键分别接到P3.2--P3.5 4个LED随便接其它IO口
TX-1单片机开发板 独立键盘开关接在P3.4到P3.7口#include
include
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
if(key1 == 0) //如果高电平按下按键就==1 { delay(200); //按键防抖 if(key1 == 0){ led1=1; //如果低电平亮就=0 led2=0;led3=0;led4=0;} } if(key2 == 0){ delay(200); //按键防
include
求解读51单片机用四个按键独立控制四个led的c程序
这个找TB,很多的!如果是C语言的实物,可以搜:C语言 数码管 单片机 实物。如果是汇编语言的仿真,可以搜:汇编语言 数码管 单片机 仿真。根据类似的方式,很好找的!要控制LED灯的亮度,应采用PWM方式,对实物控制可以实现,仿真效果出不来。
#include #define uint unsigned int sbit LED = P1^0; sbit KEY1 = P1^2; void delay(uint); void main(void) { LED = 1; //初始化LED熄灭 KEY1 = 1; //赋值KEY1高电平 while(1) { if(!KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循 环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/ } } } void delay(uint z) //延时函数 { uint x, y; for(x=85; x>0; x--) for(y=z; y>0; y--); } 可下载到单片机验证。
#include #define uint unsigned int sbit LED = P1^0; sbit KEY1 = P1^2; void delay(uint); void main(void) { LED = 1; //初始化LED熄灭 KEY1 = 1; //赋值KEY1高电平 while(1) { if(!KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循 环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/ } } } void delay(uint z) //延时函数 { uint x, y; for(x=85; x>0; x--) for(y=z; y>0; y--); } 可下载到单片机验证。
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
LED=~LED; 取反的速度太快 按键按下 实际是led高频闪烁 按键松开后 跳出while(1)松手检测 然后在main的while(1)里面一直等待按键再次按下,同时led=1,也就是说是亮 因此 你的函数的功能基本上可以是 按键按下 led高频闪烁 按键松开 led常亮 所以你要改逻辑结构才行
两种方法,一种是给驱动16和灯的口每次变化赋和显示值,这种最好理解,32次变化写32行输出然后每个输出后面再加一个延时就可以了。另一种是用位移指令for循环 也要写两个for 一个渐亮的一个渐灭的
要实现51单片机按下按钮LED灯亮1秒后熄灭,这很简单,检测到按下按钮后点亮LED灯并开始计时,1秒到就灭灯。用定时器定时并用中断方式,计中断次数,定时×次数=1秒即可。
#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; } }