历史上的今天
返回首页

历史上的今天

今天是:2024年12月22日(星期日)

2021年12月22日 | 数码管显示4X4键盘矩阵按键

2021-12-22 来源:eefocus

功能:数码管显示4X4键盘矩阵按键 PROTEUS 和51单片机教程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序源代码如下:


/*

数码管显示4X4键盘矩阵按键

*/

#include

typedef unsigned char uint8;

typedef unsigned int uint16;


#define BUZZER() P3 ^= 0x01


code uint8 LED_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};


void delay(uint16 x)

{

uint16 i,j;

for(i = x; i > 0; i --)

for(j = 114; j > 0; j --);

}


uint8 Pre_KeyNO = 16,KeyNO = 16;


void Keys_Scan()

{

uint8 Tmp;

P1 = 0x0f;

delay(1);

Tmp = P1 ^ 0x0f;//高4位输出,低4位输入

switch(Tmp)

{

case 1: KeyNO = 0; break;

case 2: KeyNO = 1; break;

case 4: KeyNO = 2; break;

case 8: KeyNO = 3; break;

default: KeyNO = 16;

}

P1 = 0xf0;

delay(1);

Tmp = P1 >> 4 ^ 0x0f;//高4位输入,低4位输出

switch(Tmp)

{

case 1: KeyNO += 0; break;

case 2: KeyNO += 4; break;

case 4: KeyNO += 8; break;

case 8: KeyNO += 12;

}

}


void Beep()

{

uint8 i;

for(i=0;i<100;i++)

{

delay(1);BUZZER();

}

}


void main()

{

P0 = 0x00;

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0)

Keys_Scan();

if(Pre_KeyNO != KeyNO)

{

P0 = LED_CODE[KeyNO];

Beep();

Pre_KeyNO = KeyNO;

}

delay(10);

}

}


推荐阅读

史海拾趣

Chenmoun Enterprise Ltd公司的发展小趣事

Chenmoun Enterprise Ltd深知技术创新是企业发展的核心动力。因此,公司每年都会投入大量的资金用于研发新的电子产品和技术。通过不断的技术创新和产品升级,Chenmoun在行业内保持了领先地位,并实现了持续稳健的发展。

CANOPUS公司的发展小趣事

面对激烈的市场竞争,CANOPUS始终保持着创新的精神。公司不断推出新产品、新技术,以满足不同消费者的需求。同时,CANOPUS也注重品牌形象的塑造和提升,通过赞助音乐活动、举办音乐会等方式,提升品牌知名度和影响力。

这些故事只是CANOPUS公司在电子行业中发展的冰山一角。实际上,公司的发展过程充满了挑战和机遇,每一个阶段都离不开创始人的智慧和团队的努力。未来,随着科技的进步和市场的变化,CANOPUS将继续保持创新精神,为音乐爱好者带来更多优质的产品和服务。

ASC Capacitors公司的发展小趣事

ASC Capacitors一直注重技术研发和创新。在XXXX年,公司成功研发出了一种新型薄膜电容器,该电容器不仅具有优异的性能,而且寿命长达100,000小时以上。这一技术突破使得ASC Capacitors在电容器市场上取得了重大突破,也奠定了公司在行业内的领先地位。

谷峰(GOFORD)公司的发展小趣事

为了进一步提升市场竞争力,GStek积极寻求与产业链上下游企业的战略合作。公司与知名功率元件供应商NIKO-SEM微电子集团建立了长期稳定的合作关系,共同推动电源管理技术的创新与发展。此外,GStek还积极整合产业链资源,优化供应链管理,确保产品质量的稳定性和供货的及时性。这些措施不仅提升了GStek的综合竞争力,也为其未来的发展奠定了坚实的基础。

ABB Group公司的发展小趣事

面对电子行业快速变化的市场环境和日益激烈的竞争态势,GStek始终保持清醒的头脑和敏锐的洞察力。公司密切关注行业动态和技术发展趋势,及时调整战略方向和产品布局。同时,GStek还注重内部管理和团队建设,不断提升员工的综合素质和专业技能。这些努力使得GStek能够在复杂多变的市场环境中保持稳健的发展态势,为实现其成为全球主要电源管理IC设计公司的愿景而不断努力。

ABL Aluminum Components公司的发展小趣事

随着业务规模的不断扩大,ABL公司开始面临供应链管理的挑战。为了应对这一挑战,公司引入了先进的供应链管理系统,实现了从原材料采购、生产制造到产品销售的全程监控。同时,ABL公司还与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和成本控制。通过优化供应链管理,ABL公司提高了生产效率和市场响应速度,进一步巩固了市场地位。

问答坊 | AI 解惑

msp430串口收发程序

现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...…

查看全部问答>

wince下读写IC卡速度问题

在pc下测试,串口读写只要3s 在wince下测试,居然10s啊,怎么解决?? 怎么办 ?? 救命 …

查看全部问答>

有一套串口通信协议需要分析破解,寻求达人帮助

有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436…

查看全部问答>

为什么RTC计数器有时会清零?

                                 请教:用STM32F101的RTC作时历时钟时,在有后备电池的情况下,发现偶尔时钟会清零,好像发生在断电或加电后,有办法 ...…

查看全部问答>

【原创】:关于42x0TA问题

我用ta做pwm输出,设置如下: void init_timer_a(void) { TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许 TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE TACCR0 = 1 ...…

查看全部问答>

stm32F101死机,手动复位无效,只能上电复位

stm32F101死机,手动复位无效,只能上电复位,我应该检查什么地方?…

查看全部问答>

新手求解答 AD软件中 DB9的原理图后面怎么会有两条线

AD软件中 DB9的原理图后面怎么会有两条线 如图所示正常DB9不是没有吗 怎么去掉??新手求解答…

查看全部问答>

稳压电源中的芯片可以选择LM2576吗?

刚开始接触电源模块,想要自己做一个输出12V/25W的电源,给功放供电,初步方案是220V交流经过24V/30W变压器,然后通过桥堆和一大一小2个滤波电容,再经过LM2576-ADJ开关稳压芯片,最终输出12V,25w的电源,可我看到上大部分线性稳压电源的稳压芯片 ...…

查看全部问答>