52单片机独立键盘控制数码管计数

前言

使用52单片机实现独立键盘控制数码管计数

代码

c 复制代码
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit key2 = P3^4;
sbit key3 = P3^5;
sbit key4 = P3^6;
sbit key5 = P3^7;

char code smg[] = {0x3f,0x06,0x5b,0x4f,
				  0x66,0x6d,0x7d,0x07,
				  0x7f,0x6f,0x77,0x7c,
				  0x39,0x5e,0x79,0x71};
sbit wei = P2^7;
sbit duan = P2^6;

void delayms(uint nms);
void display();
void keyCheck();

uint num = 0;
void main()
{
	while(1)
	{
		display();
		keyCheck();	
	}
}

void delayms(uint nms)
{
	uint i,j;
	for(i=nms;i>0;i--)
		for(j=110;j>0;j--);
}

void display()
{
	uint shi,ge;
	shi = num/10;
	ge = num%10;
	
	wei = 1;
	P0 = 0xFD;
	wei = 0;
	P0 = 0xFF;
	duan = 1;
	P0 = smg[ge];
	duan = 0;
	delayms(5);
	P0 = 0xFF;

	wei = 1;
	P0 = 0xFE;
	wei = 0;
	P0 = 0xFF;
	duan = 1;
	P0 = smg[shi];
	duan = 0;
	delayms(5);
	P0 = 0xFF;		
}

void keyCheck()
{
	if(key2 == 0)
	{
		delayms(10);
		if(key2 == 0)
		{
			num++;
			if(num >= 60)
				num = 0;
		}
		while(!key2);
	}
	
	if(key3 == 0)
	{
		delayms(10);
		if(key3 == 0)
		{
			num--;
			if(num == 0)
				num = 60;
		}
		while(!key3);
	}
	if(key4 == 0)
	{
		delayms(10);
		if(key4 == 0)
		{
			num = 0;
		}
		while(!key4);
	}
}

结论

key2按下:数码管增加计数

key3按下:数码管减小计数

key4按下:数码管清零

相关推荐
zcmodeltech42 分钟前
智慧城市沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的园区-城市-数字孪生联动方案
服务器·数据库·人工智能·stm32·嵌入式硬件·信息可视化·智慧城市
Run_Teenage1 小时前
嵌入式:认识STM32命名方法和引脚定义,认识仿真器
stm32·单片机·嵌入式硬件
lhbweilai1 小时前
STM32 时钟源&时钟树(hal库)
stm32·单片机·嵌入式硬件
凉茶钱1 小时前
【数据结构】C语言实现队列
c语言·数据结构
lhbweilai14 小时前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
坏柠14 小时前
通信协议入门:单片机怎样把一个数字发送出去?
单片机·嵌入式硬件
上海安当技术14 小时前
C/S 桌面软件怎么接 UKey 强认证?C# SDK 与 C 动态库集成 WinForms/Qt/工控实战
c语言·qt·c#
小僧景贤15 小时前
STM32 工程文件深度解析(Keil‑MDK + STM32CubeIDE)
stm32·单片机·stm32cubeide
(Charon)16 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
国科安芯16 小时前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构