历史上的今天
今天是: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); } }
上一篇:单只按键控制单只数码管滚动显示
下一篇:单片机控制蜂鸣器唱生日快乐歌曲
史海拾趣
|
现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...… 查看全部问答> |
|
有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436… 查看全部问答> |
|
我用ta做pwm输出,设置如下: void init_timer_a(void) { TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许 TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE TACCR0 = 1 ...… 查看全部问答> |
|
刚开始接触电源模块,想要自己做一个输出12V/25W的电源,给功放供电,初步方案是220V交流经过24V/30W变压器,然后通过桥堆和一大一小2个滤波电容,再经过LM2576-ADJ开关稳压芯片,最终输出12V,25w的电源,可我看到上大部分线性稳压电源的稳压芯片 ...… 查看全部问答> |




