当前位置:首页 > 单片机 > 单片机
[导读] //按键跟按键的扫描结果满足如下关系://按键扫描结果(result)按键扫描结果//K100XE7K180XB7//K110XEBK190XBB//K120XEDK200XBD//K130XEEK210XBE//K140XD7K220X77//K150XDBK230X7B//K160XDDK240X7D//K

//按键跟按键的扫描结果满足如下关系:
//按键扫描结果(result)按键扫描结果

//K100XE7K180XB7
//K110XEBK190XBB
//K120XEDK200XBD
//K130XEEK210XBE
//K140XD7K220X77
//K150XDBK230X7B
//K160XDDK240X7D
//K170XDEK250X7E


#include//包含单片机内部资源预定义
__CONFIG(0x1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

intresult;
voiddelay();//delay函数申明
voidinit();//I/O口初始化函数申明
voidsCAN();//按键扫描程序申明
voiddisplay(intx);//显示函数申明
//---------------------------------------------------
//主程序
voidmain()
{
while(1)//循环工作
{
init();//调用初始化子程序
scan();//调用按键扫描子程序
display(result);//调用结果显示子程序
}
}

//---------------------------------------------------
//初始化函数
voidinit()
{
ADCON1=0X07;//设置A口为普通I/O口
TRISA=0X0f;//设置A口高2位为输出,低4位为输入
TRISC=0XF0;//设置C口高4位为输入,低4位为输出
TRISD=0X00;//设置D口为输出
PORTA=0XFF;
PORTD=0XFF;//先清除所有显示
}

//---------------------------------------------------
//按键扫描程序
voidscan()
{
PORTC=0XF7;//C3输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)?
{
result=result|0x07;//否,加上低4位0x07,做为按键扫描的结果
}
else//是,改变低4位输出,重新判断是否有按键按下
{
PORTC=0XFb;//C2输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)
{
result=result|0x0b;//否,加上低4位0xb,做为按键扫描的结果
}
else//是,改变低4位输出,重新扫描
{
PORTC=0XFd;//C1输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)
{
result=result|0x0d;//否,加上低4位0x0d,做为按键扫描的结果
}
else//是,改变低4位的输出,重新扫描
{
PORTC=0XFe;//C0输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高四位是否为全1(全1代表没有按键按下)
{
result=result|0x0e;//否,加上低4位0x0e,做为按键扫描的结果
}
else//是,全部按键扫描结束,没有按键按下,置无按键按下标志位
{
result=0xff;//扫描结果为0xff,做为没有按键按下的标志
}
}
}
}
}

//----------------------------------------------------------
//显示程序
voiddisplay(intx)
{
switch(result)
{
case0xe7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xc0;PORTA=0X1F;delay();break;//K10
case0xeb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;//K11
case0xed:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break;//K12
case0xee:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;//K13
case0xd7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;//K14
case0xdb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;//K15
case0xdd:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X82;PORTA=0X1F;delay();break;//K16
case0xde:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0XF8;PORTA=0X1F;delay();break;//K17
case0xb7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X80;PORTA=0X1F;delay();break;//K18
case0xbb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X90;PORTA=0X1F;delay();break;//K19
case0xbd:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xc0;PORTA=0X1F;delay();break;//K20
case0xbe:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;//K21
case0x77:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break;//K22
case0x7b:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;//K23
case0x7d:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;//K24
case0x7e:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;//K25
case0xff:
PORTD=0x8e;PORTA=0X2F;delay();PORTD=0x8e;PORTA=0X1F;delay();//无按键按下
}
}

//------------------------------------------------------------------
//延时程序
voiddelay()//延时程序
{
inti;//定义整形变量
for(i=0x100;i--;);//延时
}

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

随着电脑科技的飞速发展,作为电脑输入设备的重要组成部分,键盘的种类和功能也在不断演变。其中,机械键盘以其出色的手感、长久的使用寿命和高度个性化的特点,深受众多电脑用户的喜爱。而机械键盘的核心——键盘轴,更是决定键盘使用体...

关键字: 电脑 键盘 机械

上海2023年9月15日 /美通社/ -- 9月15日,距离第六届中国国际进口博览会(以下简称进博会)正式开幕倒计时50天。作为全球知名的制造型企业,Brother将在11月...

关键字: IDE 矩阵 通信 SI

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序

珠海2023年3月3日 /美通社/ -- 2023年3月3日,珠海金智维信息科技有限公司(简称"金智维")在珠海成功举办以"新生产力·再谱新章"为主题的金智维C轮融资...

关键字: 人工智能 数字化 矩阵 数字经济

步进电动机是将电脉冲激励信号转换成相应的角位移或线位移的离散值控制电动机,这种电动机每当输入一个电脉冲就动一步,所以又称脉冲电动机。

关键字: 步进电机 正反转 程序

北京2023年2月3日 /美通社/ -- 近期,雀巢在中国的首款冷链鲜牛奶 -- 雀巢A2 β-酪蛋白鲜牛奶重磅上市,为消费者带来高品质珍稀鲜奶的全新体验。 作为全球知名食品饮料企业,雀巢在不断提升产品品质的同时响应着...

关键字: ARM 矩阵 研讨会 INSTITUTE

KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写...

关键字: 程序 编译 链接

键盘包括编码键盘和非编码键盘两种。编码键盘带有能够自动识别按键的硬件电路,当按键被按下闭合时,硬件可以提供按键的编号(也被称“键值”),这种键盘使用方便,但是硬件复杂,价格相对较高。非编码键盘不附带按键识别电路,需要利用...

关键字: 键盘 人机交互 编码键盘 非编码键盘

双方各执一词,谁也不退让,吴雄昂的身份成为薛定谔的猫:在Arm公司眼中,他已经被罢免一切职位;在安谋中国声明里,吴仍然一切照常。这种叠加态或许还会持续一段时间,但叠加态应该很快就会塌缩成一个确定结果。同样,安谋中国董事会...

关键字: ARM 中国董事会 程序

11月20日,上海慧新辰实业有限公司在上海举办与深创投投资签约仪式暨新品发布会,发布了由其自主研发的第一颗LCOS芯片,并宣布获得国内知名投资机构深创投数千万元投资。“今天(11月20日)是深创投和慧新辰(上海慧新辰实业...

关键字: LCOS芯片 投资 矩阵
关闭
关闭