JP3接P0,VCC接+5V,矩阵键盘的左边八个引脚接在P1上面。想要的结果是按第0个按键,数码管显示0,以此类推。注意,这里的数码管是共阳极的。
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0,
0x99, 0x92, 0x82, 0xf8,
0x80, 0x90, 0x88, 0x83,
0xc6, 0xa1, 0x86, 0x8e};
uchar code table_scan[] = {0xfe, 0xfd, 0xfb, 0xf7};
void init();
uchar temp;
void main()
{
uint i_row;
init();
while(1)
{
for(i_row=0; i_row<4; i_row++)
{
P1 = table_scan[i_row];
temp = P1;
temp = P1 & 0xf0;
switch(temp)
{
case 0xe0:
if(i_row==0) P0 = table[0];
else if(i_row==1) P0 = table[4];
else if(i_row==2) P0 = table[8];
else P0 = table[12];
break;
case 0xd0:
if(i_row==0) P0 = table[1];
else if(i_row==1) P0 = table[5];
else if(i_row==2) P0 = table[9];
else P0 = table[13];
break;
case 0xb0:
if(i_row==0) P0 = table[2];
else if(i_row==1) P0 = table[6];
else if(i_row==2) P0 = table[10];
else P0 = table[14];
break;
case 0x70:
if(i_row==0) P0 = table[3];
else if(i_row==1) P0 = table[7];
else if(i_row==2) P0 = table[11];
else P0 = table[15];
break;
}
}
}
}
void init()
{
P0 = 0xff;
}
注意,代码中没有进行消抖操作,是因为这个不消抖不会影响实验结果。
关键字:单片机 矩阵键盘扫描
引用地址:
单片机第8课:矩阵键盘扫描
推荐阅读最新更新时间:2024-03-16 15:35
51单片机使用点滴
8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。 一、硬件部分 1、一定要记得接晶振和复位电路。很多学生在Proteus上仿真成功后,焊板子的时候总是不记得把晶振和复位电路接上,这样板子是不会工作的。 2、一般没有特殊要求的话,选用11.0592MHZ的晶振。这样有利于得到没有误差的波特率。特别是当与PC机进行通信的话,选用这种晶振比较好。 3、复位电路的电容可以选择10uF或者22uF。如果是10uF的话,充电电阻R的值要高于4K欧姆,如果你的单片机工作速度很慢,可以选择8.2K欧姆。 4、每个大规模的数字IC旁边都
[单片机]
如何使用AVR单片机进行数字PID调节器的设计
数字PID调节器具有操作简单,控制精度准确,安全可靠性高等优点,广泛应用于工业生产过程中。提出一种以AVR单片机ATmega16为核心的数字PID调节器,该调节器充分利用了高性能AVR单片机的片内资源及外围扩展电路,能够接收多种类型的测量信号,具有较强的在线修改和丰富的控制功能,并且采取硬件和软件双重抗干扰措施提高了调节器的可靠性。 在连续生产过程控制中,按偏差的比例(P)、积分(I)、微分(D)进行控制的PID调节器是应用最为广泛的一种自动控制器。 它具有原理简单、易于实现、适用面广等优点。在计算机用于生产过程控制之前,模拟PID控制器一直占主导地位。单片机的出现,使以单片机为核心的数字PID调节器迅速成为应用最广泛的自
[单片机]
透析物联网背后 全面备战工业4.0
互联网的不断发展促生了物联网和工业4.0,整个世界仿佛在顷刻之间变得互通互联。数万亿的感应器被装配在数十亿的控制器和数百万的网关之上,通过互联网将数据传送至地球的各个角落。 这样的趋势凸显了传统工业系统的不便携性和不灵活性,通过物联网连接网络与高效率数据运算处理来提升工业系统作业效率以及增加工业生产的附加价值是势在必行。而这种转型依赖于一系列技术,从低功率无线协议到高性能微控制器,不一而足。 低功率的无线链路和微控制器
在这些技术中,低功率的无线链路和微控制器将作为整个链路的核心,起到至关重要的作用。举例来说,Silicon Labs最新推出了一款Gecko微控制器,采用的便是这种低功耗模式——在接收感应器发出的信号之后,控制
[嵌入式]
爱特梅尔推出业界最强大的6引脚微控制器
爱特梅尔公司 (Atmel Corporation) 日前宣布推出全新AVR picoPower 器件ATtiny10,带有1k bytes可编程闪存和32 bytes内部SARM,提供高达12 MIPS的处理能力,并具有 8位A/C转换器、模拟比较器以及带有PWM的16位定时器。这款6引脚器件是在尺寸和成本上受限的大批量消费应用的完美解决方案。
ATtiny10使用性能卓越的AVR CPU,运作速度较市场上任何其它相若尺寸的微控制器快6倍,此一处理效率能够大幅缩短器件在工作模式的时间,而增加处于节能睡眠模式的时间;结合爱特梅尔的picoPower技术,能够确保达到业界领先的功耗数值。
爱特梅尔公司 tinyA
[单片机]
技术科:你知道51单片机如何存储程序吗
MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 好,说回MCS-51。 对于程序存储器,有片内和片外两部分。而且无论片内程序存储器,还是片外程序存储器,他们的地址是共享的。如果片内4k ROM的话,地址就是0x0000-0x0FFF,从0x1000-0xFFFF就是外部ROM的地址空间。可外部ROM的0x0
[单片机]
一种智能人体心率检测装置的设计
0 引 言 心率是人体中一个非常重要的生命信息,而传统的脉诊由于其定性化和主观性影响了心率测试的精度,成为中医脉诊应用、发展和交流中的制约因素。为了提高对此类生物医学信号的测试精度,必须结合现代科学技术。目前用于检测心率的仪器很多,常见的有基于压力传感器、光电传感器、电容传感器和电声传感器等类型的测试装置,但是对脉搏测试部位的选择没有太大区别,对于能在指端进行脉搏精确测量的仪器还是比较少。这里介绍的智能人体心率检测装置可以实现人体指端的无创测量,测试过程简单,能精确测量出心跳次数,实现数据显示和上、下限报警功能。 1 装置组成及工作原理 系统组成如图1所示。此设计以单片机AT89C2051为核心,由光电传感器采集脉搏信号,经
[单片机]
单片机驱动DM9000网卡芯片详细调试过程
和其它网卡芯片不同,DM9000系列网卡芯片在嵌入式开发板上很常见,尤其是有关ARM-Linux的开发板上的网络连接部分几乎都是采用该芯片完成的。当然,其它网卡芯片,如RTL8019的应用也很常见,在很多开发板上得到应用然而RTL8019的介绍在网上可以找到非常详细的介绍,尤其是用单片机对其做底层驱动的介绍非常丰富。下面的网站就介绍了用AVR驱动RTL8019网卡芯片的非常详细的过程,有兴趣的朋友可以参考一下。 http://members.home.nl/bzijlstra/software/examples/RTL8019as.htm AVR驱动RTL8019网卡芯片的详细介绍。 言归正传。在网上也能找到许多关于DM90
[单片机]
使用STM32单片机点亮LED
有一人,登场于金庸先生的《神雕侠侣》,以大理段氏“一阳指”自成一派,武学修为登峰造极,“天下五绝”之一,号称“南帝”,他就是“一灯大师”。如今,武林中逐渐被遗忘的“一灯大师”,却活跃在另一个行业——嵌入式开发中。 传说,每一个成功的MCU(俗称单片机)开发组中,都有一名“一灯大师”,他精通所有开发板的点灯方法,对于企业引入的新开发板,总是勤学苦练,从点灯开始,快速掌握新开发板的编程要点,带领团队走向胜利。 成为“一灯大师”,离不开持续的修行,离不开对一招一式的勤学苦练。本文将讲解如何通过编程来控制STM32点亮一个LED。 学习环境: 1.软件:Keil5 2.硬件:STM32开发板(笔者使用信盈达公司的M4开发板,芯片型
[单片机]