您的位置 首页 ADAS

用ARM编写的4*4键盘

//功能:用四乘四键盘,#includeconfig.h#defineKEY_COL1112#defineKEY_COL2113#defineKEY_COL3114#defineKEY_COL…

//功用:用四乘四键盘,

#include “config.h”
#define KEY_COL1 1<<12
#define KEY_COL2 1<<13
#define KEY_COL3 1<<14
#define KEY_COL4 1<<15

#define KEY_ROW1 1<<8
#define KEY_ROW2 1<<9
#define KEY_ROW3 1<<10
#define KEY_ROW4 1<<11
#define KEYO KEY_ROW1|KEY_ROW2|KEY_ROW3|KEY_ROW4 //行,设置为输出口
#define KEYI KEY_COL1|KEY_COL2|KEY_COL3|KEY_COL4 //列,设置为输进口
//按键抬起,则将相应的键值回来
uint16 get_key(void)
{
uint16 scc,re;
IO0SET=KEYI;
IO0CLR=KEYO;
while((IO0PIN&0xf000)==0xf000);
delay(10);
if((IO0PIN&0xf000)!=0xf000)
{
scc=0xfe00;
while((scc&0x1000)!=0)
{
IO0SET=scc;
IO0CLR=((~scc)&0xff00);
if((IO0PIN&0xf000)!=0xf000)
{
re=((IO0PIN&0xf000)|0x0fff);
while((IO0PIN&0xf000)!=0xf000);//等候按键抬起,回来键值
return (~(scc|0x00ff)|(~re));
}
else scc=(scc<<1)|0x0100;
}

}

return 0;
}
//按键在LCD上显现相应的字符

#include “config.h”
#define KEY_COL1 1<<12
#define KEY_COL2 1<<13
#define KEY_COL3 1<<14
#define KEY_COL4 1<<15

#define KEY_ROW1 1<<8
#define KEY_ROW2 1<<9
#define KEY_ROW3 1<<10
#define KEY_ROW4 1<<11
#define KEYO KEY_ROW1|KEY_ROW2|KEY_ROW3|KEY_ROW4 //行,设置为输出口
#define KEYI KEY_COL1|KEY_COL2|KEY_COL3|KEY_COL4
#define uchar unsigned char
#define UART0_BPS 115200
uchar keynum;
void uart0_int(void)
{
uint16 FDIV;
U0LCR=0x83;
FDIV=(Fpclk/16)/UART0_BPS;
U0DLM=FDIV/256;
U0DLL=FDIV%256;
U0LCR=0x03;

}
void uart0(uchar keynum)
{
PINSEL0=0x05;
uart0_int();

U0THR=keynum;
while(!(U0LSR&0x40));

}
int main()
{

extern uint16 get_key();
uint16 key;
IO0DIR|=KEYO;
int_lcd();

while(1)
{ PINSEL0=0;
PINSEL1=0;
key=get_key();
delay(10);
switch(key)
{
case 0x1100:clear();send_str(“0”);keynum=0; break;
case 0x2100:clear();send_str(“1”);keynum=1; break;
case 0x4100:clear();send_str(“2”);keynum=2; break;
case 0x8100:clear();send_str(“3”);keynum=3; break;

case 0x1200:clear();send_str(“4”);keynum=4; break;
case 0x2200:clear();send_str(“5”);keynum=5; break;
case 0x4200:clear();send_str(“6”);keynum=6; break;
case 0x8200:clear();send_str(“7”);keynum=7; break;

case 0x1400:clear();send_str(“8”);keynum=8; break;
case 0x2400:clear();send_str(“9”);keynum=9; break;
case 0x4400:clear();send_str(“A”);keynum=A; break;
case 0x8400:clear();send_str(“B”);keynum=B; break;

case 0x1800:clear();send_str(“C”);keynum=C; break;
case 0x2800:clear();send_str(“D”);keynum=D; break;
case 0x4800:clear();send_str(“传输”);uart0(keynum); break;
case 0x8800:clear();send_str(“转化”); break;
default:break;

}

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/274725.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部