【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯

这篇具有很好参考价值的文章主要介绍了【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验内容:
利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输入电平。

        1.选中 8 位数码管的其中 1 位数码管,当独立按键 1 每按下一次,数码管加一(按下期间加 1),范围为 0—F;
        2.选中 8 位数码管的另 1 位数码管,当独立按键 2 每按下一次,数码管减一(松手之后减 1),范围为 F—0;
        3.按下独立按键 3 期间,流水灯以 600ms 的速度流动;
        4.按下独立按键 4,松手之后,8 个 LED 灯作一次花样循环。

按键一效果图:

51单片机按键控制数码管加减,蓝桥杯,c语言,单片机,51单片机,嵌入式硬件

按键二效果图

 51单片机按键控制数码管加减,蓝桥杯,c语言,单片机,51单片机,嵌入式硬件

 按键三效果图:

51单片机按键控制数码管加减,蓝桥杯,c语言,单片机,51单片机,嵌入式硬件

按键四效果图:

 51单片机按键控制数码管加减,蓝桥杯,c语言,单片机,51单片机,嵌入式硬件

 代码如下:文章来源地址https://www.toymoban.com/news/detail-737076.html

#include <REGX51.H>
#include <intrins.h>
int table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管编码
int num=0;		//全局变量 ,代表当前数码管显示的段码
void Delay(unsigned int xms){
	unsigned char i, j;
	while(xms--){
		i = 2;
		j = 239;
		do{
			while (--j);
		} while (--i);
	}
}

void xianshi(int p){
	P2_2=1;P2_3=1;P2_4=1; //位选选中第第一位
	
	P0=table[p];            //段选,输出段码
}
 
void leddemo1(){//流水灯模式1
	int i;
   P0=0x00;//关闭数码管段选
	for(i=0;i<8;i++){		
		P2=_crol_(0xfe,i);
		Delay(600);
		}
	P2=0xff;
}

void leddemo2(){	//流水灯模式2
     P0=0x00;//关闭数码管段选
     P2=0x7e;Delay(600); 
     P2=0xbd;Delay(600);
     P2=0xdb;Delay(600);
     P2=0xe7; Delay(600);
     P2=0xc3; Delay(600);
     P2=0xb1; Delay(600);
     P2=0x00; Delay(600);
     P2=0x18; Delay(600);
     P2=0x3c; Delay(600);
     P2=0x7e; Delay(600);
     P2=0x00; Delay(600);
     P2=0x00; Delay(600);
     P2=0xff; Delay(600);
     P2=0x00; Delay(600);
     P2=0xff; Delay(600);
     P2=0x00; Delay(600);
     P2=0x81; Delay(600);
     P2=0xc3; Delay(600);
     P2=0xe7; Delay(600);
     P2=0xff; Delay(600);		
}
void key()
{//独立按键扫描  
		if(P3_1==0){
            Delay(20);
            if(P3_1==0){               
                while(P3_1==0){//按下不松手  累加
                     num++;
                        if(num>15)//判断数码是否超出显示范围
                            num=0; 
                    Delay(300);
                    xianshi(num);
                }
            }
        }

        if(P3_0==0){
            Delay(20);
            if(P3_0==0){
                num--;
                while(P3_0==0);
                Delay(20);
                if(num<0)//判断数码是否超出显示范围
                    num=15;
                xianshi(num);
            }
        }
        if(P3_2==0){
            Delay(20);
            if(P3_2==0){
                while(P3_2==0);
                leddemo1();
                Delay(20);
            }
        }
        if(P3_3==0){
            Delay(20);
            if(P3_3==0){
                while(P3_3==0);
                leddemo2();
                Delay(20);
            }
        }		   
} 
void main(){
    P0=0x00;
	while(1)
		key();         	
}

到了这里,关于【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机——独立按键实验,小白讲解,相互学习

    按键介绍:         按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开。开发板上使用的按键及内部简易图如下图:         按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态变为断

    2024年02月04日
    浏览(55)
  • 【51单片机】LED与独立按键(学习笔记)

    LED:发光二极管 补:电阻读数 102 = 10 00 = 1k 473 = 47 000 1、新建工程:Project = New Project Ctrl + Shift + N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx提示?选否 4、Source Group = 右键 = Add New Item … = C文件\\\"main.c\\\" 5、设置勾选创建HEX File文件 6、编译 CPU通过对寄存器的控制,寄存器通过驱

    2024年02月06日
    浏览(46)
  • 51单片机——一个独立按键控制LED的闪烁和熄灭

    目录 一、要求 二、实现 三、总结 消除按键的机械抖动         当按下按键,LED灯闪烁,再按下,LED熄灭。。。。循环操作。         编译环境:keil4         单片机:STC89c516RD 消除按键的机械抖动         按键的机械抖动会影响单片机对按键按下次数的判断。消除抖动的

    2024年02月07日
    浏览(47)
  • 51单片机——秒表(定时器扫描独立按键和数码管)

            这次实验主要是用定时器来定时扫描独立按键和数码管,代替两个模块函数中的延时函数。用定时器定时扫描的好处就是,主函数中的延时并不会影响按键的检测和数码管的扫描,只会影响响应速度。因为定时器是溢出就会执行中断程序,是定时的扫描。 改进的

    2024年02月10日
    浏览(64)
  • 在51单片机中使用一个独立按键控制流水灯方向

    用独立按键控制流水灯转向,按下独立按键流水灯向右移动,再按下独立按键流水灯向左移动 此代码用到 逻辑左移:_crol_(移动对象,移动的位数) 逻辑右移:_cror_(移动对象,移动的位数)

    2024年02月07日
    浏览(40)
  • 51单片机“独立按键”控制静态数码管———显示数字0-9

    (1).独立按键模块电路图可以清楚的看到,所有从引脚JP1出来的电流都会接到GND,且当所有按键按下时被执行链接GND。所以,当JP1引脚各端口----识别----到“电流为低电平为0时”,说明按键被按下,否则为高电平按键没有被按下。 ( 2).按键的原理其是需要我们单片机有检

    2024年02月11日
    浏览(49)
  • C51单片机的电子时钟(数码管显示+独立按键模块修改及暂停时间)

    IMG_1120 通过查看这三个原理图我们可以得知控制K1、K2、K3及K4是通过P31、P30、P32及P33来实现的,控制8个数码管是P22、P23及P24来实现, 控制发光二极管则由P00-P07来实现。 代码分为三部分分别为main.c、key.h、key.c scankey()函数的主要代码,通过软件入手提高系统的可靠性,防止外

    2024年02月05日
    浏览(55)
  • 单片机原理及应用:独立式键盘控制LED与多功能按键识别

    今天来介绍另一个外设——按键与LED的配合工作,与开关不同,按键需要注意消除抖动带来的影响,代码逻辑也会更复杂一写,下面先为大家介绍独立式键盘的相关知识。 单片机的独立式键盘指的是一种不依赖于计算机或其他外部设备的键盘输入方式,由若干按键按照一定的

    2024年01月21日
    浏览(43)
  • 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯

    2024年02月01日
    浏览(104)
  • 51单片机实现按键、键盘的功能,五面拿下阿里飞猪offer

    } /******************************************************************************* 函 数 名 : main 函数功能 : 主函数 输 入 : 无 输 出 : 无 *******************************************************************************/ void main() { led=0; while(1) { keypros(); //按键处理函数 } } 矩阵键盘代码 /************************************

    2024年04月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包