精华内容
下载资源
问答
  • 下文为51单片机控制led灯闪烁程序。
  • 51单片机控制LED灯

    2021-10-05 13:07:55
    控制单个LED灯 基础知识 C-51的数据类型扩充定义 sfr:特殊功能寄存器声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98; sbit OV = PSW^2; LED灯常亮: 上面程序是让P2.0连接的LED灯常量 LED灯...

    个人网站:Geek交流圈

    控制单个LED灯

    基础知识

    C-51的数据类型扩充定义
       sfr:特殊功能寄存器声明
       sbit:特殊功能位声明
       bit:位变量声明
    例:sfr SCON = 0X98;
       sbit OV = PSW^2;
    

    LED灯常亮:
    在这里插入图片描述
    上面程序是让P2.0连接的LED灯常量

    LED灯闪烁:
    在这里插入图片描述
    延时函数的原理及作用
    在上例中,delay函数里面只是while循环,让i不断递减,因为i自减一次,消耗一定的时间,所以在调用delay函数时,传入50000的数值,让延时函数内部i自减50000次,达到延时的作用。
    其实就是根据i自减的次数,来控制循环消耗的时间,达到延时目的。

    多个LED灯
    位操作(繁琐,不建议)
    控制多个LED灯,可以利用位操作,也就是利用 sbit 定义多个引脚,然后控制对应的位就行。
    例如下面这样定义:
    在这里插入图片描述
    总线操作(建议)
    用到总线操作,就得理解二进制与I/O口的关系。
    例如P2口,有P2.0,P2.1P2.7 八个引脚,每个二进制数也是八个位
    单片机上电默认给所有引脚高电平(为1),这就说明
    P2.0 = P2.1 = … = P2.7 = 1;
    当我们写成 P2 = 00000001;
    P2口对应的八个位数据为
    P2.0 = 0
    P2.1 = 0

    P2.6 = 0
    P2.7 = 1

    如果是低电平有效,那么就是P2.0 – P2.6接的LED灯都会亮。
    但是P2 = 00000001; 这样的写法太麻烦,也容易错
    所有所以我们一般用十六进制来表示二进制
    在这里插入图片描述
    所以P2 = 00000001;可以写成 P2 = 0x010x是十六进制的前缀。 再例如 P2 = 0xF0; 这就是低四位的LED灯亮,高四位的灯灭。

    流水灯设计

    延时函数定义在这里插入图片描述
    1、用移位指令实现流水灯 << >>
    在这里插入图片描述
    程序分析:
    在for循环中
    1、 Temp取反后赋值给P2,P2 = 11111110 第一个灯亮
    注意:虽然Temp取反后赋值给P2了,但是temp原变量的值未发生改变,temp 还是等于 0000 0001
    2、 temp = temp << 1;
    0000 0001 --> 0000 0010
    这里才是将temp的值改变,左移后右边自动补0
    3、 i++ 进入第二次for循环
    temp取反后赋值给P2,P2 = 11111101 第二个灯亮
    4、 temp = temp << 1;
    0000 0010 --> 0000 0100
    依次类推,就实现了流水灯

    2、用移位函数实现流水灯 _crol
    在这里插入图片描述
    在这里插入图片描述

    总结

    建议利用系统板进行测试,因为测试可以发现自己很多问题,也能验证自己的想法。控制LED灯其实就是控制硬件的高低电平,形成电势差让LED灯亮起来。

    展开全文
  • 本文主要为51单片机串口通信点亮led灯程序,下面一起来学习下
  • 51单片机实现按键控制LED灯亮灭

    千次阅读 多人点赞 2021-05-12 18:18:09
    51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void delay()//延时函数 { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<...

    用51单片机实现按键控制LED灯亮灭

    #include<reg51.h>//头文件
    sbit LED=P2^0;//位定义LED灯
    sbit k1=P3^1;//位定义按键
    void delay()//延时函数
    {
        unsigned char a,b;
    	for(a=0;a<200;a++)
    	for(b=0;b<200;b++);
    }
    void key()//按键处理函数
    {
    	if(k1==0)//判断按键是否按下(按键按下时k=0)
    	{
    		delay();//如果按下按键延时消抖
    		if(k1==0)//如果按键仍然按下
    		{
    			LED=~LED;//对LED取反,原来亮则灭,原来灭则亮
    		}
    		while(!k1);//等待按键松开(松开时k=1,!k=0,跳出循环,
    		           //未松开时,k=0,!k=1,执行while的分号空语句,一直等待)
    	}
    }
    void main()//主函数
    {
    	while(1)
    	{
    		key();//调用按键处理函数
    	}
    }
    
    

    注:

    1. 该单片机开发板按键K1接单片机P3口的1端口。
    2. LED灯接单片机的P2口
    展开全文
  • 汇编语言程序,适用于Proteus仿真的初学者,可以稍加修改用开关控制,很实用。
  • 介绍了一种新型的LED彩灯控制系统的设计方法,以AT-89C51单片机作为主控核心,与按键、显示器等较少的辅助硬件电路相结合,利用软件实现对LED彩灯进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点...
  • 使用C语言编程。功能为:通过开关实现LED灯工作方式即时控制,完成LED开关控制显示LED灯左循环、右循环、间隔闪烁功能。
  • 51单片机按键控制LED灯的亮灭

    万次阅读 2020-06-30 22:54:32
    通过两个按键来控制2个lded的灭亮 按一下亮在按一下灭 #include <reg52.h> //位绑定操作 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit LED1 ...

    通过两个按键来控制2个lded的灭亮
    按一下灯亮在按一下灯灭

    #include <reg52.h>
    
    //位绑定操作
    sbit ADDR0 = P1^0;
    sbit ADDR1 = P1^1;
    sbit ADDR2 = P1^2;
    sbit ADDR3 = P1^3;
    sbit ENLED = P1^4;
    
    sbit LED1 = P0^0;
    sbit LED2 = P0^1;
    
    //按键绑定
    sbit KEY1 = P2^4;
    sbit KEY2 = P2^5;
    sbit KEYOUT1 = P2^3;
    
    //主函数
    void main()
    {
        ENLED = 0;
        ADDR3 =1;
        ADDR2 =1;
        ADDR1 =1;
        ADDR0 =0;
    
        //要把KEYOUT1设为底电平
        KEYOUT1 = 0;
        while (1)
        {
          LED1 = KEY1;
          LED2 = KEY2;
        }
        
    
    
    }
    
    
    展开全文
  • 51单片机中断控制LED灯亮灭

    千次阅读 2021-05-14 19:59:24
    51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void delay()//延时函数 { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<200;...

    用51单片机中断控制LED灯亮灭

    #include<reg51.h>//头文件
    sbit LED=P2^0;//位定义LED灯
    sbit k3=P3^2;//位定义按键
    void delay()//延时函数
    {
        unsigned char a,b;
    	for(a=0;a<200;a++)
    	for(b=0;b<200;b++);
    }
    void Int0()//使用中断所做的处理函数
    {
    	IT0=1;//外部中断0下降沿触发
    	EX0=1;//打开外部中断0
    	EA=1;//打开总中断	
    }
    void main()//主函数
    {
    	Int0();//调用函数
    	while(1);
    }
    void ledxs() interrupt 0//中断执行内容函数,
                            //用外部中断0
    {
    	delay();//延时
    	if(k3==0)
    	{
    		delay();//延时消抖
    		if(k3==0)
    		{
    		LED=~LED;//LED取反
    		}
    	}
    }
    
    
    

    注:

    1. LED灯接于单片机P2口
    2. 该程序为外部中断0,对应的P3口的2端接k3
    展开全文
  • 51单片机的P2口控制两个LED灯分别以不同的循环时间闪烁
  • 单片机c51控制led闪烁

    2018-12-08 15:03:53
    stc89c52控制发光二极管闪烁 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit led=P2^0; //将单片机的P2.0...
  • 开关控制LED灯

    2021-01-19 19:22:19
     51单片机-AT89C51电容-CAP电解电容-CAP-ELEC12M晶振-CRYSTAL黄色LED-LED-YELLOW电阻-RES开关-SWITCH  左侧为51单片机的系统,分别为晶振电路和复位电路,这个系统的设计可以在数据手册获取,我们暂且不必
  • 用P1.0、P1.1作输入接两个拨动开关(有上下两个位置),P1.2、P1.3...程序读取开关状态,并在发光二极管上显示出来。用导线分别连接单片机最小应用系统的 P1.0、P1.1连接两个按键开关,P1.2、P1.3连接两个发光二极管。
  • 51单片机之按键控制LED

    千次阅读 多人点赞 2019-05-15 11:00:36
    独立的按键使用较为简单,一般需特别注意按键的抖动;因为按键的开关都有抖动,而如果在抖动时间内检测按键状态就会不准确,所以一般延时10ms~20ms检测,具体时间具体判断。...程序现象:按键控制LED亮灭
  • 流水灯 用51单片机实现点亮1个2个3个……8个流水灯。我们选择P1口作为控制端口,输出0时LED灯点亮。流水灯实现步骤如下:点亮第一个LED灯,对P1口赋值为“ 1111 1110“;点亮第二个LED灯,对P1口赋值为“ 1111 1100...
  • #include "reg52.h" sbit K1 = P1^4;//按键 sbit K2=P1^5;//按键 sbit K3=P1^6;//按键 sbit K4=P1^7;...bit k1=0,k2=0,k3=0,k4=0,k=0;...unsigned char code LedBiao[] = {0,15,240,85,170};... unsigned cha
  • 51单片机串口通信实现led灯开关

    万次阅读 多人点赞 2019-09-29 18:47:15
    工作原理大致就是将一组引脚的通过开关控制高低电平,利用TXD引脚将数据发送给另一块芯片,芯片通过接收到的数据来控制led的状态。 发送方电路: 接收方电路: 两块芯片分别用TXD引脚/RXD引脚进行发送数据和接收...
  • 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版) 一、思路及相关问题 1、逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用while,用if语句,当松开时,用while(!key1) ,函数调用。 先在脑海...
  • 51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接收探头的红外通信实验 红外通信51...
  • 单片机串口通信控制LED灯亮灭,串口输入数字1,灯亮,输入其他,灯灭,里面有相关安装软件,可供下载,不会操作的,里面附有经典文章一篇,看完秒懂。
  • C#上位机控制51单片机LED灯开关

    千次阅读 2020-10-16 09:53:39
    C#上位机控制51单片机LED灯开关 下面展示一些 内联代码片。 // A code block var foo = 'bar'; // An highlighted block var foo = 'bar'; 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准...
  • 用户通过发送短信给GSM模块,GSM模块将收到的信息传送给单片机单片机根据收到的信息来判断LED灯是开还是关,并作出相关的控制信息
  • 89C51单片机——按钮控制LED

    千次阅读 2020-03-16 21:44:53
    89C51单片机——按钮控制LED 1.proteus仿真图 2.keli代码 #include <reg51.h> sbit led1=P0^0; sbit key1=P0^1; sbit led2=P1^0; sbit key2=P1^1; void delay(int ms) { int i,j; for(i = 0; i<ms; ++...
  • 具体功能: (1)至少10个发光管4种花样自动变换,循环往复; (2)彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次;自动控制方式每15秒变换一次,1分钟循环...(3)系统复位清零开关
  • 51单片机独立按键控制LED

    千次阅读 2020-11-18 21:34:08
    } } 独立按键控制LED显示二进制 #include void Delay1ms(int shijian) { while(shijian) { unsigned char i, j; i = 2; j = 239; do { while (--j); } while (--i); shijian--; } } void main() { unsigned char ...
  • 基于51单片机的wifi智能led灯的毕业设计

    万次阅读 多人点赞 2020-02-13 11:28:09
    基于51单片机的wifi智能led灯的毕业设计 摘要 系统基于STC89C52RC单片机设计,拥有自动与手动两种模式,自动模式下可以过热释红外传感器检测是否有人,采用光敏电阻构成的电路检测环境光的强度,从而自动实现灯的...
  • 利用单片机I/O口接8只开关,代表1-8层楼层按键,若某一楼层的按键按下,点阵屏显示从当前位置向上或向下平滑滚动显示到指定楼层的位置,到达指定位置后由蜂鸣器发出声音led灯闪烁,后数字继续滚动显示
  • 基于51单片机用按键控制流水样式的变化以及蜂鸣器,按键可切换流水的样式变化,并且检测按键按下时,蜂鸣器会响一声,可根据不同的代码添加显示出各种流水的样式,如需添加,可自行声明LED函数并添加到main...
  • 51单片机之独立按键控制LED

    万次阅读 多人点赞 2018-03-17 23:41:45
    1.独立按键的原理(1703A)1.独立按键一共有四个针脚,两个短针脚之间默认不导通,两个长针脚之间默认导通2....2.对于p1,p2,p3而言,上拉电阻是为了更好的控制高低电平,所以,p0口有外加的上拉电阻...
  • 单片机P2端口输入对应的低电平,使对应的LED发光。 LED流水显示代码 ;利用定时器定时一秒,产生中断来时LED流水显示 ;定时一秒,时钟频率为11.0592,每0.01s产生一次溢出中断 ;利用r2来对定时器0中断计数,r2为100...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,281
精华内容 912
关键字:

51单片机开关控制led灯