51单片机应用开发(进阶)---外部中断(按键+数码管显示0-F)

实现目标

1、巩固数码管、外部中断知识

2、具体实现:按键K4(INT1)每按一次,数码管从0依次递增显示至F,再按则循环显示。


一、共阳数码管

1.1 共阳数码管结构

1.2 共阳数码管码表

共阳不带小数点0-F段码为: {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

效果如下:

二、原理图设计

器件: 数码管(共阳)7SEG-MPX1-CA、按键BUTTON

三、程序设计

cpp 复制代码
#include <REGX52.H>
 
sbit  K4   = P3^3;
unsigned int num = 0;
unsigned char seg_code[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; 
 
void Delay10ms()		//@11.0592MHz
{
	unsigned char i, j;
	i = 18;
	j = 235;
	do
	{
		while (--j);
	} while (--i);
}
 
void INT1_Init(void)    //外部中断函数初始化  子程序                  
{   
	
	EA = 1;			//打开总中断开关
	EX1 = 1;		//打开外部中断1 
	IT1 = 1;		//外部中断1设为低电平触发 // 1则为下降沿触发
}
 
void main()     //主程序  
{
	
	INT1_Init();	  //调用外部中断初始化程序,让它等待条件触发
	
	while(1)	
	{
		P2 = seg_code[num];
	}
}				       
 
 
void INT1_int() interrupt 2	   //当按键按下,下降沿触发,满足触发条件进来执行该中断程序
{
		if(K4 == 0)
		{
				Delay10ms();
				// 按下消抖
				if(K4 == 0)
				{
			        num++;
					if(num >15)
					{
				   	num  = 0;
				}
		    }
	  }
}

四、仿真实现


总结

相关推荐
fox08153 小时前
栈空间带来的大问题
单片机·嵌入式硬件
wuyk5554 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
恒锐丰小瑞5 小时前
率能SS6285L 18V/5A/单通道直流电机驱动IC,超低导通电阻(58mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人
天空'之城6 小时前
单片机基础核心知识点汇总(二十)
单片机·嵌入式硬件
笨笨饿6 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
送外卖的工程师7 小时前
STM32智能鞋柜(机智云)
stm32·单片机·嵌入式硬件
Romantic_love_9 小时前
USART串口初始化源码解析
stm32·单片机·嵌入式硬件·学习
oshan20129 小时前
零基础STM32入门教程--11-USART/UART 串行通迅
stm32·单片机·嵌入式硬件
BW.SU9 小时前
RUI Studio--嵌入式 UI 开发新范式
单片机·ui·嵌入式开发
集芯微电科技有限公司10 小时前
700V/17A高频开关低导通阻GaN HEMT驱动器适用于快充,LLC,PFC功率校正
人工智能·嵌入式硬件·深度学习·神经网络·机器学习·生成对抗网络·计算机外设