当前位置:首页 > 单片机 > 单片机
[导读]#include #include #include "key.h"#include "1602.h"#include "delay.h"unsigned char display[3]={0,0,0};//显示数据void main(void){ unsigned char Key;LCD_init();delay_nms(50);while(1){Key = keyboard_Scan

#include

#include

#include "key.h"

#include "1602.h"

#include "delay.h"


unsigned char display[3]={0,0,0};//显示数据

void main(void)


{ unsigned char Key;

LCD_init();

delay_nms(50);

while(1)

{

Key = keyboard_Scan(); // 键盘扫描

display[1]=Key/100%10+0x30;

display[2]=Key/10%10+0x30;

display[3]=Key%10+0x30;

LCD_write_char(5,0,display[1]);

LCD_write_char(6,0,display[2]);

LCD_write_char(7,0,display[3]);

delay_nms(50);

//switch(Key)

// {

// case 0:

// break;


// default:

// break;

//}

}

}


//key.h


#ifndef _4X4_H_

#define _4X4_H_


#define No_key 255


#define key_port PORTB

#define key_port_ddr DDRB

#define key_port_pin PINB



unsigned char keyboard_Scan(void);


#endif


//key.c


#include

#include

#include "key.h"


const unsigned char key_table[16] =

{

1, 2, 3,12,

4, 5, 6,13,

7, 8, 9,14,

10,0,11,15,

};



//4x4矩阵键盘扫描函数


unsigned char keyboard_Scan(void)

{

unsigned char temp,key,row,Column;


key_port_ddr = 0b00001111;// 高四位输入行线/低四位输出列线

key_port = 0b11110000;// 高四位打开上拉电阻/低四位输出低电平

delay_nus(5);// 延时5us

if((key_port_pin & 0xF0)!= 0xF0) // 作初检查有否键按下,没有,就返回

{ // 如果行线不全为1,可能有键按下

delay_nms(5);// 延时去抖动


//设置列线初始值3~0=1110

for(Column=0,key_port=0b11111110;Column<4;Column++)

{

for(row=0,temp=0b11101111;row<4;row++)// 设置行线初始值7~4=1110

{

while((key_port_pin & 0xF0)==(temp & 0xF0))// 输入行线,查看这行有否键按下

{

key=4*row+Column;// 键编码=4*行输入值+列扫描值

key=key_table[key];// 键盘编码转换键值

return (key);

}

temp<<=1;// 行线左移1位

}

key_port=((key_port<<1)|0x01);// 列线扫描值左移1位,扫描下一行

}

}

return (No_key);

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对鼠标的认识,本文将对鼠标左键单击变双击的维修方法以及鼠标单击异常的解决方法予以介绍。

关键字: 鼠标 指数 驱动

以下内容中,小编将对显卡驱动的相关内容进行着重介绍和阐述,希望本文能帮您增进对显卡驱动的了解,和小编一起来看看吧。

关键字: 显卡 驱动 显卡驱动

电动汽车电机是电动汽车的核心部件,负责驱动汽车的行驶。本文将详细介绍电动汽车电机的类型及其工作原理,以帮助用户更好地了解和应用电动汽车电机。

关键字: 电动汽车 驱动

近年来,中国的电机驱动芯片市场规模不断增长。根据灵动核心的数据,2021年中国电机驱动芯片市场规模达到129.81亿元,同比增长1.85%。这一增长趋势主要得益于中国机械机电与电子信息行业的发展,以及5G通信、物联网、智...

关键字: 直流电机 驱动 芯片

汽油汽车和电动汽车的主要区别在于动力来源和传动方式。汽油汽车使用内燃机燃烧汽油产生动力,通过变速箱和传动轴驱动车轮。电动汽车使用电池储存电能,通过电动机直接驱动车轮。

关键字: 电动汽车 燃油汽车 驱动

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制...

关键字: AVR 单片机 计算机

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通...

关键字: AVR 单片机 计算机

AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以...

关键字: AVR 单片机 硬件

在这篇文章中,小编将为大家带来AVR单片机的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: AVR 单片机

在下述的内容中,小编将会对AVR单片机的相关消息予以报道,如果AVR单片机是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: AVR 单片机
关闭
关闭