51单片机四位数码管4个LED灯4个按键实现多种功能?

发布者:Serendipity22最新更新时间:2025-09-24 来源: bilibili关键字:51单片机  四位数码管  LED灯  按键 手机看文章 扫描二维码
随时随地手机看文章
  • 任务描述:用89C51单片机实现如下功能:<初始状态为数码管显示2020,四个灯灭。 1、电路有四个控制按键,四个灯,四个数码管; 2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮; 3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮); 4、按键3,按下,第三个数码管从0-9显示奇数,同时四个灯的奇数灯亮(即1、3个灯亮); 5、按键4,按下,恢复到初始状态;

  • 元件清单


#include<reg51.h>

unsigned char tube1[]={0x5b,0x3f,0x5b,0x3f};//数码管初始状态2020 字符码

unsigned char tube2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极字符码

sbit key1=P2^0;

sbit key2=P2^1;

sbit key3=P2^2;

sbit key4=P2^3;

sbit led1=P3^0;

sbit led2=P3^1;

sbit led3=P3^2;

sbit led4=P3^3;

void delay(unsigned int time);

void main()

{

   unsigned char i,W;

   while(1)

  {

    if(key1==1&key2==1&key3==1)   //初始状态

{

W=0x01;

P3=0X00;

    for(i=0;i<4;i++)

{

     P1 =W;

W<<=1;

      P0=tube1[i];

     delay(10);

      P1 =0x00;

  }

  }

  if(key1==0)    //  按键1按下

  {

  delay(10);

  if(key1==0)

  {

  led1=1;

  led2=0;

  led3=0;

  led4=0;

   W=0x08;

  for(i=0;i<10;i++)

  {

  if(key2==0|key3==0|key4==0)

  break;

      P1 =W;

      P0=tube2[i];

      delay(1000);

      P1 =0x00;

  }

  }

     while(!key1);

       delay(10);

while(!key1);

}

  if(key2==0)    //按键2按下

  {

  delay(10);

  if(key2==0)

  {

   led1=0;

   led3=0;

   led2=1;

   led4=1;

   W=0x04;

  for(i=0;i<10;i=i+2)

  {

   if(key1==0|key3==0|key4==0)

  break;

      P1 =W;

      P0=tube2[i];

      delay(1000);

      P1 =0x00;

  }

  }

     while(!key2);

delay(10);

while(!key2);

}

    if(key3==0)    //按键3按下

  {

  delay(10);

  if(key3==0)

  {

   led1=1;

   led3=1;

   led2=0;

   led4=0;

   W=0x02;

  for(i=1;i<10;i=i+2)

  {

   if(key2==0|key1==0|key4==0)

  break;

      P1 =W;

      P0=tube2[i];

      delay(1000);

      P1 =0x00;

  }

  }

     while(!key3);

delay(10);

while(!key3);

}

}

}

void delay(unsigned int time)

{

   unsigned int j;

   for(;time> 0;time--)

   for(j=0;j<125;j++);

}


关键字:51单片机  四位数码管  LED灯  按键 引用地址:51单片机四位数码管4个LED灯4个按键实现多种功能?

上一篇:基于51单片机的简易“视频播放器”
下一篇:51单片机汇编学习-04 单片机指令

推荐阅读最新更新时间:2026-03-25 11:37

51单片机四位数码管4个LED灯4个按键实现多种功能
任务描述:用89C51单片机实现如下功能: 初始状态为数码管显示2020,四个灯灭。 1、电路有四个控制按键,四个灯,四个数码管; 2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮; 3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮); 4、按键3,按下,第三个数码管从0-9显示奇数,同时四个灯的奇数灯亮(即1、3个灯亮); 5、按键4,按下,恢复到初始状态 硬件电路图 元件清单 C语言程序 #include reg51.h unsigned char tube1 ={0x5b,0x3f,0x5b,0x3f};//数码管初始状态2020 字符码 unsigned
[单片机]
<font color='red'>51单片机</font><font color='red'>四位数码管</font>4个<font color='red'>LED灯</font>4个<font color='red'>按键</font>实现多种功能
51单片机矩形按键控制16个LED灯亮灭和数码管显示?
电路原理图 程序 #include reg51.h #define uint unsigned int #define uchar unsigned char //函数声明 void delay(uint time); //延时函数 void display(uchar k); //数码管显示0-F以及LED灯的亮灭 uchar getKey(); //读取键盘的数值 //主程序 void main(){ uchar keyValue; while(1){ keyValue = getKey(); //读取键盘值 display(keyValue); //数码管显示 LED亮灭 } } void d
[单片机]
51单片机按键控制8个LED灯,初始状态全亮,按下按键,亮点从第1个灯向第8个灯移动
电路原理图 元件清单 程序(C语言) #include reg51.h sbit p3_0=P3^0; void delay(unsigned char i); void main() { unsigned char i,w; while(1) { if(p3_0==1) { P1=0xff; } if(p3_0==0) { delay(200); if(p3_0==0) { w=0x01; i=0; while(i 8) { P1=w; delay(200); w =1; i++; }
[单片机]
51单片机实现4个按键控制8个LED灯四种状态
电路图 元件清单 程序(C语言) #include reg51.h sbit p3_0=P3^0; sbit p3_1=P3^1; sbit p3_2=P3^2; sbit p3_3=P3^3; void delay(unsigned char i); void main() { unsigned char ledctr; P3=0xff; while(1) { ledctr=P3; switch(ledctr) { case 0xff:P1=0x00;break; case 0xfe:P1=0xff;break; case 0xfd:P1=0x55;delay(
[单片机]
<font color='red'>51单片机</font>实现4个<font color='red'>按键</font>控制8个<font color='red'>LED灯</font>四种状态
51单片机-独立按键控制LED灯
1.硬件设计 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开;原理图如下: 2.软件设计 2.1.独立按键控制LED闪烁 功能需求:按下按键,LED点亮;松开按键,LED熄灭;可单个按键控制,也可多个按键控制 程序设计:分析原理图,确定要通过控制哪个按键去决定LED亮灭;单个按键K1,控制LED亮灭的程序如下: #include REGX52.H void main() { while(1) { if(P3_1==0)//通过控制K1按键,去控制LED闪烁 //P3_0==0,即是控制K2 { P2_0=
[单片机]
<font color='red'>51单片机</font>-独立<font color='red'>按键</font>控制<font color='red'>LED灯</font>
C51单片机四位数码管动态显示2020
电路原理图 元件清单 程序(C语言) #include reg51.h unsigned char smg ={0x5b,0x3f,0x5b,0x3f};//2020字形码(共阳极) void delay(unsigned int time); void main() { unsigned char i,W; while(1) { W=0x01; for(i=0;i 4;i++) { P1=W; W =1; P0=smg ; delay(10); } } } void delay(unsigned int time) {
[单片机]
C<font color='red'>51单片机</font><font color='red'>四位数码管</font>动态显示2020
51单片机DS18B20温度传感四位数码管显示报警
仿真原理图如下 全部资料分享,可设置温度报警的上下限,5641四位共阳数码管显示温度,自己曾经做的设计,实测可行,提供给有需要的人 单片机源程序如下: #include AT89X52.h #define uint unsigned int #define uchar unsigned char //宏定义 #define SET P3_1 //定义调整键 #define DEC P3_2 //定义减少键 #define ADD P3_3 //定义增加键 #define BEEP P3_6 //定义蜂
[单片机]
<font color='red'>51单片机</font>DS18B20温度传感<font color='red'>四位数码管</font>显示报警
基于51单片机DS1302四位数码管可调时钟
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit sda=P1^0; //ds1302的数据线 sbit clk=P1^1; //ds1302的时钟线 sbit rst=P1^2; //ds1302的复位线 sbit k1=P1^5; //设置/确定 sbit k2=P1^6; //加 sbit k3=P1^7; //切换 uchar code duan_code ={ 0xc0,0xf9,0xa4,0xb0,0
[单片机]
基于<font color='red'>51单片机</font>DS1302<font color='red'>四位数码管</font>可调时钟
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved