最完整的矩阵键盘-数码管显示1-16数字

news/2024/11/8 21:28:24/

完整的电路仿真图:

两个数码管,一个4*4的矩阵键盘,还有一个排阻,由于其中一个数码管接的是P0端口,需要接上拉电阻,用排阻更加方便,所以就用了这个,如果觉得不错的话可以点赞收藏!

#include <reg51.h>
#define  KEY_PORT P2 //定义P2端口
#define	 DIG_PORT_1  P0  //定义P0端口,作为个位数显示
#define  DIG_PORT_2  P1	 //定义P1端口,作为十位数显示
#define u8 unsigned charu8 code gDuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};	//数码管的段码值void KeyValueDisplay(u8 val);  //进行函数声明
void Delay10ms(void);
u8 KeyScan(void);/**************************************
*函数名:Delay
*函数功能:延时函数
*函数参数: 无
*函数返回值:无*************************************/
void Delay()
{unsigned char t,j;for(t=20;t>0;t--)for(j=2;j>0;j--);
}/**************************************
*函数名:KeyScan
*函数功能:矩阵键盘扫描
*函数参数: 无
*函数返回值:val*************************************/
u8 KeyScan(void){u8 val = 0;KEY_PORT = 0x0f;	//设置P2口的低四位为高电平if(KEY_PORT!=0x0f){	//如果发现P2口的电平有变化,则进行下一步Delay();		//加延时函数,确认按键有被按下if(KEY_PORT != 0x0f){  //证明按键被按下switch(KEY_PORT){    //确认哪一列 case 0x07:val = 1;break;case 0x0b:val = 2;break;case 0x0d:val = 3;break;case 0x0e:val = 4;break;default: break;}KEY_PORT = 0xf0;switch(KEY_PORT){ //确认哪一行case 0x70:val = val+0;break;case 0xb0:val = val+4 ;break;case 0xd0:val = val+8;break;case 0xe0:val = val+12;break;default:break;}return val;	 //返回计算好的值}}return 0;
}
/**************************************
*函数名:KeyValueDisplay
*函数功能:数码管显示val的值
*函数参数: val
*函数返回值:无*************************************/void KeyValueDisplay(u8 val){if(val<10){	 //判断返回值,小于10,只显示个位数DIG_PORT_1  = gDuanMa[val%10];DIG_PORT_2  = 0x00;Delay();DIG_PORT_1 = 0x00;//消隐DIG_PORT_2 = 0x00;}else{	//如果val值大于10,则P0口显示个位,P1口显示十位数DIG_PORT_1  = gDuanMa[val%10];		DIG_PORT_2  = gDuanMa[val/10];Delay();DIG_PORT_1 = 0x00;DIG_PORT_2 = 0x00;}}
/***********************************************
*函数名:main
*函数功能:主程序
*函数参数:无
*函数返回值:无
************************************************/
void main(void){u8 key = 0;u8 key1=0;while(1){key = KeyScan();//矩阵键盘扫描函数if(key!=0){key1 = key;}KeyValueDisplay(key1); //数码管显示函数}
}

效果展示:

 


http://www.ppmy.cn/news/317829.html

相关文章

怎么制作电子相册视频?简单几步,快速制作精美的高清效果

现在随手拍照记录生活&#xff0c;已经是见惯不怪的分享方式。当拍了许多值得纪念的照片时&#xff0c;如果把照片做成电子相册视频&#xff0c;不仅可以永久保留新鲜的回忆&#xff0c;还能直接分享到社交平台。 怎么制作电子相册视频&#xff1f;有什么快速又简单的方法能做…

如何制作数码管显示程序

数码管英文名“display” 硬件 数码管位选电路图&#xff1a; 74HC245 数码管片选电路图&#xff1a; 74LS138 74LC245芯片介绍 74CS138芯片介绍 百度&#xff1a;译码器管脚 软件 管脚定义&#xff1a; sbit LSAP2^2; sbit LSBP2^3; sbit LSCP2^4; 38译码器管脚 74…

怎样在php中制作电子相册,电子相册制作 如何制作电子相册带音乐和文字

随着数码产品的不断升级与普级&#xff0c;现在几乎任意一部手机都可以拍照&#xff0c;走到哪里拍到哪里&#xff0c;拍的照片是越来越多&#xff0c;但光放在那里又没啥作用&#xff0c;洗成照片也没必要。这么纠结&#xff0c;那不如把这些照片都做成电子相册吧&#xff0c;…

电子相册如何用c语言制作,电子相册怎样制作?

收集了一大堆明星的照片&#xff0c;现在想要将它制作成电子相册&#xff0c;这样就可以很轻松地浏览保存咯。下面是我用狸(liwo)窝照片制作视频软件来制作的电子相册的过程&#xff0c;操作挺简单的。 打开powerpoin2010&#xff0c;使用菜单栏“插入”按钮&#xff0c;选择“…

Java制作电子相册新技能

图片 Image可以用来加载多种渠道的图片。 支持bmp、jpg、gif、png图片格式。 定义Image&#xff1a; Image image new Image(URL); 其中&#xff0c;URL可以指向网络图片、资源图片或本地图片。示例&#xff1a; 网络图片 网络图片是指存储在服务器上&#xff0c;可通过网络…

数字电子时钟的设计与实现

摘 要 钟表的数字化给人们生产生活带来了极大的方便&#xff0c;大大的扩展了原先钟表的报时。诸如&#xff0c;定时报警、按时自动打铃、时间程序自动控制等&#xff0c;这些&#xff0c;都是以钟表数字化为基础的。功能数字钟是一种用数字电路实现时、分、秒、计时的装置&…

stm32f103+FFT+OLED的音乐频谱制作(只需三步即可)

效果演示&#xff1a;FFT音乐频谱DIY STM32OLED_哔哩哔哩_bilibili 制作过程&#xff1a; 1.准备材料&#xff1a; stm32f103核心板 1块 OLED12864显示屏 1块&#xff08;SPI接口&#xff09; 声音检测传感器 1块 &#xff08;咪头放大电路 可以网上买现成的模块&#xff…

python电子相册制作软件下载_艾奇KTV电子相册制作软件

艾奇KTV电子相册制作是一款功能超强的电子相册和卡拉ok视频制作软件。可以把您的照片和视频配上音乐和歌词字幕&#xff0c;制作成各种格式的视频电子相册。 功能介绍 只需简单的3步操作&#xff0c;就能输出DVD、VCD、MP4、AVI、FLV、ipad、IPhone等十余种高清画质的视频格式。…