当前位置: 首页 > article >正文

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

三、程序设计

#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;
				}
		    }
	  }
}



四、仿真实现


总结


http://www.kler.cn/a/369133.html

相关文章:

  • 分布式日志有哪些?
  • 【Anaconda】Anaconda3 下载与安装教程(Windows 11)
  • 桌面运维SOP
  • HarmonyOS Next API12最新版 端云一体化开发-云函数篇
  • hcia复习篇
  • JCSA-Journal of Consumer Affairs
  • 名城优企游学活动走进思腾合力:解析人工智能先行者的数字化之路
  • 记一次Esxi掉盘处理使用命令
  • [0152].第3节:IDEA中工程与模块
  • Python金色流星雨
  • 部署RocketMQ, 其实很简单 (带图, 附启动命令)
  • 视频智能分析平台LiteAIServer摄像机视频分析软件下载检测裸土
  • 易基因:Nat Commun:ATAC-seq等揭示恒河猴大脑高分辨率解剖区域的转录组和开放染色质图谱
  • 装饰器模式的适用场景示例
  • Django+Vue全栈开发项目入门(一)
  • 可以为服务器配置动态IP吗?
  • Redis 单机、主从、哨兵和集群架构详解和搭建
  • 口碑最好的开放式耳机有哪些?开放式蓝牙耳机排行榜盘点!
  • 【MySQL】视图与用户管理——MySQL
  • 华为交换机堆叠
  • 情感咨询小程序的市场需求大吗?
  • 公域电商云分账系统:资金流转的智慧
  • Linux: Shell编程中的应用之基于sh脚本生成网页
  • windows查端口是哪个进程开的
  • 关于SpringMVC项目
  • vue 解决:npm ERR! code ERESOLVE 及 npm ERR! ERESOLVE could not resolve 的方案