文章目录

  • 一、写在前面
  • 二、无中断控制数码管
  • 三、外部中断控制数码管

一、写在前面

关于数码管的控制与显示,在文章51单片机之数码管从点亮到动态时钟的实现【单片机开发初学者通俗易懂】已经有详细介绍了,所有此处就不细讲了。此处只是补充到了一个独立独立按键的控制。sbit key= P3^3; //独立按键第四个
同理,P3^0就是独立按键的第一个,依次类推,总共有4个独立按键。

二、无中断控制数码管

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint x);  //声明延时函数
void add_one();//锁存器
sbit M0= P2^6;   //十位
sbit M1= P2^7; //个位
sbit key= P3^3;  //独立按键第四个
//共阴数码管的码段(以高电平1为亮,0为不亮)
uchar leddata[]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7D, 0x07, 0x7F, 0x6F
};
//003F:0011 1111,abcdef亮,为0 void main()
{while(1){      if(key == 0){delay(100);  //稍微延时一下,消抖处理if(key==0) add_one();}        }
}void add_one()
{static j= 0;if(j<10){M1= 1;  //显示个位,低电平有效,所以0表示显示P0 = 0x7f;  //0111 1111M1= 0;M0= 1;P0= leddata[j++];M0= 0;delay(500);}elsej= 0;}void delay(uint x)  //延时x毫秒的函数
{uint i,j;for(i=x; i>0; i--){for(j=110; j>0; j--) ;}
}

此处实现的功能就是按一下独立按键的第四个,然后就会让数码管显示的数字加1,一直加到60,就会重新归零。

三、外部中断控制数码管

此文讲的是独立按键与数码管的控制,为何又说到外部中断?
那是因为外部中断的触发是可以由独立按键的触发来实现的,所以此文就用独立按键来触发外部中断,让单片机执行完外部服务函数后,再恢复正常执行。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint z);  //声明延时函数
void display();  //声明显示函数//锁存器
sbit wela= P2^7;  //位选锁存器的锁存端
sbit dula= P2^6;  //段选锁存器的锁存端
//0到9的段选信号
uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7D, 0x07, 0x7F, 0x6F
};void main()
{//主函数变量uint i;//初始化中断方式IT0= 0;  //低电平触发中断0//中断基础设置EA= 1;  //开总中断EX0= 1;  //允许外部中断0PX0= 1;  //外部中断0为高优先级while(1){for(i=0; i<=6; i++)  //main函数中循环显示0-6的数字 {wela= 1;P0= 0xbF;  //只显示第7位 wela= 0;dula= 1;P0= table[i];dula= 0;delayms(10000);}   }
}//外部中断服务函数
void display() interrupt 0
{uint i;uchar temp= P0;for(i=0; i<10; i++){wela= 1;P0= 0x7F;wela= 0;dula= 1;P0= table[i];dula= 0;delayms(10000);}P0= temp;
}void delayms(uint z)  //定义延时1毫秒的函数
{uint i, j;for(i=z; i>0; i--)for(j=0; j<110; j--)  ;
}

蓝桥杯51单片机之独立按键控制数码管【单片机开发初学者必学会】相关推荐

  1. 51单片机:独立按键控制数码管计数

    //按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...

  2. 51单片机实现独立按键控制LED灯

    本节博客主要实现以下效果: 3-1独立按键控制LED亮灭 本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭 #include <REGX51.H>void m ...

  3. 51单片机_7-1独立按键控制流水灯方向

    文章目录 要求 资源 效果 main函数 要求 1.使用单片机内部定时器做为延时函数 2.独立按键K1控制流水灯左移 3.独立按键K2控制流水灯右移 资源 工程文件压缩包 链接:https://pan ...

  4. (三)51单片机基础——独立按键与数码管

    从小就对电器元件比较感兴趣吧,经常拿坏的电器里面的芯片拆下来玩,甚至那些没坏的电器,比如我家的电视,也会希望它能坏掉,我好去看看里面是什么样子的,为什么能播放节目--,所以我第一眼看到51单片机的时候 ...

  5. 【51单片机】独立按键控制LED灯(四种形式)

  6. 51单片机proteus仿真 按键控制数码管数字显示

    功能描述: 1.两位数码管显示,数码管可以显示0-99两位数字.需要用数码管驱动芯片 2.按一下加按键,数字加1,按到99之后数字变0.按一下减按键,数字减1,按到0之后变数字99.初始化显示为学号后 ...

  7. 独立按键控制数码管c语言,各位大佬,独立按键控制数码管为什么按下的时候要加一呢?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "main.h" sbit S7=P3^0;//加 sbit S6=P3^1;//减 sbit S5=P3^2;// ...

  8. 蓝桥杯51单片机之利用中断同时控制流水灯、数码管、独立按键、蜂鸣器【单片机开发初学者有趣综合案例】

    文章目录 一.流水灯与数码管 二.独立按键.数码管.流水灯.蜂鸣器 一.流水灯与数码管 流水灯不断左移,通过外部中断0来控制数码管的显示. #include <reg52.h> #defi ...

  9. AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 根据测试,目 ...

最新文章

  1. 操作系统结构-外核结构
  2. Python3 集合set
  3. 树莓派基于 Linux 的 Windows XP 现已可用
  4. Android入门:实现一个File存储的辅助类
  5. python不能卸载原因_linux上python卸载不了是什么原因?
  6. FPGA转正总结(标准版)
  7. concurrentbag 删除指定元素_Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)
  8. CCF2015-9-2日期计算
  9. Openstack Swift 原理、架构与 API 介绍
  10. Python之list添加新元素
  11. STM32L051测试 (四、Flash和EEPROM的读写)
  12. mysql分区替换,MySQL交换分区的实例详解
  13. android 小说下载器 源码 分享
  14. Admob反馈利诱性质流量(无效流量)解决方案
  15. 2019年DevOps最新现状研究报告解读
  16. 数据分析报告怎么写(三)
  17. oracle去掉0x00,Oracle O001 / O00n 进程 100% CPU资源耗用
  18. python深度学习--jena温度预测
  19. 实现类似微信中查找“附近的人”的功能!
  20. 2017字节跳动秋招编程题-头条校招

热门文章

  1. java数组 js数组的长度_js中split()方法得到的数组长度问题
  2. c++中判断某个值在字典的value中_Python元组、字典、集合的简单介绍
  3. python mq_python测试rabbitmq的消息收发
  4. linux下性能测试mon,Linux性能评测工具之一:nmon篇
  5. oracle匿名代码块执行insert,MyBatis+Oracle在执行insert时空值报错之从源码寻找解决办法...
  6. 2016计算机知识点,2016年计算机一级考试知识点
  7. Android 旋转木马轮播,jQuery旋转木马式幻灯片轮播特效
  8. Android自定义控件学习(四)------创建一个视图类
  9. android去掉titlebar
  10. Java集合基础知识总结