历史上的今天
今天是:2025年03月25日(星期二)
2021年03月25日 | MSP430矩阵式按钮驱动程序
2021-03-25 来源:eefocus
#include "msp430x14x.h"
unsigned char LineScan[4]={0xef,0xdf,0xbf,0x7f}; //列值列举
void ADD()
{
P4OUT+=1;
}
void SUB()
{
P4OUT-=1;
}
unsigned int key_check(void) //检测是否有按键按下
{
unsigned char temp;
P1DIR=0xf0; //定义P1.4~P1.7为输出
temp=P1IN & 0x0f;
if(temp!=0x0f)
return 1;
else
return 0;
}
unsigned char scan_key(void) //扫描对应按键的键号
{
P1DIR=0xf0;
unsigned char count;
unsigned char i,temp,m,n; //m为列的值,n为行的值
unsigned int flag=0;
for(i=0;i<4;i++) //列扫描
{
P1OUT=LineScan[i]; //获取扫描的列
temp=P1IN&0x0f;
if(temp==0x07) //为第一行
{n=0; //记录按下按钮的行
flag=1; //标志检测出来
break;}
else if(temp==0x0b) //为第二行
{n=1;
flag=1;
break;}
else if(temp==0x0d) //为第三行
{n=2;
flag=1;
break;}
else if(temp==0x0e) //为第四行
{n=3;
flag=1;
break;}
}
if(flag==1)
{m=i;
flag=0;
count=n*4+m;
switch(count)
{
case 0: {;break;}
case 1: {;break;}
case 2: {;break;}
case 3: {;break;}
case 4: {;break;}
case 5: {;break;}
case 6: {;break;}
case 7: {;break;}
case 8: {;break;}
case 9: {;break;}
case 10:{;break;}
case 11:{SUB();break;}
case 12:{;break;}
case 13:{;break;}
case 14:{;break;}
case 15:{ADD();break;}
}
return;
}
else
return;
}
void Delay(char wDelay) //延时子程序
{
while(wDelay!=0)
wDelay--;
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P4DIR =0xff;
P4OUT=0X00;
while(1)
{
if(key_check())
{Delay(10000);
if(key_check())
{
scan_key();
while(key_check());
P1OUT=0x0f;
}
}
}
}
上一篇:MSP430矩阵式按钮驱动程序
史海拾趣
|
LCD1602,大概介绍下 1602采用标准的16脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通 ...… 查看全部问答> |
|
来活跃下气氛 ,HOHO 本文针对超高频无源RFID 标签芯片的设计,给出了一些关键电路的设计考虑。文章从UHF RFID标签的基本组成结构入手,先介绍了四种电源恢复电路结构,以及在标准CMOS 工艺下制作肖特基二极管来组成倍压电路的解决方案。然后针对 ...… 查看全部问答> |
|
请问如何实现将抓取的图片通过GPRS模块(mc39i)进行无线传输 拨号上网的功能已经实现了 操作系统是linux,最后要移植到arm-linux上去 不知怎么编程能才能实现两端的文件发送和接受这种功能 哪位做过该方面的麻烦不吝赐教下,说一下思路或流程 最好详细点,谢谢… 查看全部问答> |
|
Visual studio 2005上的wince5.0嵌入式开发,高手们进来看看啊 Visual studio 2005上的wince5.0嵌入式开发,就是在PDA上播放个语音文件, [System.Runtime.InteropServices.DllImport(\"winmm.dll\")] public static extern long PlaySound(String lpszNam ...… 查看全部问答> |
|
手头有一块S3C2410的开发板 我想移植UCOS系统 现在已完成的工作: 板子的VIVI已烧写好 UCOS系统代码也已用ADS编译通过 那么接下来该怎么做呢? 该如何把UCOS移植到板子上? 我编写了一个LED的测试实验,该如何一上 ...… 查看全部问答> |




