c语言键盘控制数码管显示,3*4矩阵键盘控制4位数码管显示的C程序

这是一个C语言程序,展示了如何使用3*4矩阵键盘来控制4位数码管显示按键值。程序中定义了键盘和数码管的接口,并包含按键扫描、蜂鸣器响一声的子程序以及显示键值的子程序。
摘要由CSDN通过智能技术生成

这个很简单

;********************************************************************************

;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - 矩阵键盘数码管显示键值        *

;*  文件:  WL031.asm                                                            *

;*  日期:  2005-3-20                                                            *

;*  版本:  1.0                                                                  *

;*  作者:  gguoqing                                                             *

;*  邮箱:  gguoqing.com                                                  *

;*  网站: http://www.willar.com                                                *

;********************************************************************************

;*  描述:                                                                       *

;*         矩阵键盘数码管显示键值                                               *

;* 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你使用的是4x4的矩阵键盘和4共阳数码管,下面是一份示例代码,可以通过矩阵键盘输入数字并在数码管显示出来: ```c #include <reg51.h> // 8051单片机头文件 #define uchar unsigned char // 定义uchar为unsigned char类型 uchar code table[] = { // 数码管显示数字表 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; uchar key_scan(void); // 矩阵键盘扫描函数 void display(uchar num); // 数码管显示函数 void main() { uchar num = 0; // 初始值为0 while(1) { uchar key = key_scan(); // 检测键盘输入 if(key != 0xff) // 如果有按键按下 { num = key; // 将按键值赋给num } display(num); // 在数码管显示num } } uchar key_scan(void) { uchar row, col; P1 = 0x0f; // 将P1的低4清零 col = P1; // 读取P1的低4 if(col != 0x0f) // 如果有按键按下 { delay(10); // 延时10ms if(col != 0x0f) // 如果仍然有按键按下 { P1 = 0xf0; // 将P1的高4清零 row = P1; // 读取P1的高4 col |= 0xf0; // 将列值与0xf0做或运算 return (row | col); // 返回键值 } } return 0xff; // 没有按键按下,返回0xff } void display(uchar num) { uchar thousand, hundred, ten, unit; thousand = num / 1000; // 计算千数字 P2 = table[thousand]; // 在数码管显示数字 P0 = 0xfe; // 打开第一数码管 delay(5); // 延时5ms P0 = 0xff; // 关闭数码管 hundred = num % 1000 / 100; // 计算百数字 P2 = table[hundred]; // 在数码管显示数字 P0 = 0xfd; // 打开第二数码管 delay(5); // 延时5ms P0 = 0xff; // 关闭数码管 ten = num % 100 / 10; // 计算十数字 P2 = table[ten]; // 在数码管显示数字 P0 = 0xfb; // 打开第三数码管 delay(5); // 延时5ms P0 = 0xff; // 关闭数码管 unit = num % 10; // 计算个数字 P2 = table[unit]; // 在数码管显示数字 P0 = 0xf7; // 打开第四数码管 delay(5); // 延时5ms P0 = 0xff; // 关闭数码管 } void delay(uchar i) // 延时函数 { uchar j, k; for(j = i; j > 0; j--) { for(k = 110; k > 0; k--); } } ``` 在该代码中,`key_scan()`函数用于扫描矩阵键盘是否有按键按下,并返回按键对应的数字值。`display()`函数用于将一个4数字在数码管显示出来。`delay()`函数用于延时。 在`main()`函数中,循环不断地检测键盘输入并在数码管显示数字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值