矩阵按键控制数码管显示0-F-protues仿真图.zip

  • 浏览量:1702
  • 下载量:2
  • 资料大小:18.67 KB
  • 日期:2014-04-24
  • 上传者:ww4160
  • 分享
  • 评论
  • 举报
  • 收藏

资料描述

    分析思路:


    行列扫描法:


    第一步:先把第一行值0,(p3=0xfe)


    第二步:把p3赋值给temp,(temp= p3)


    第三步:temp和0xf0与后再赋值给temp,(temp=temp&0xf0)


    第四步:判断temp是否等于0xf0,(if(temp!=0xf0))


    第五步:如果temp!=0xf0说明 p3口高4位有按键按下,具体是哪个用switch case语句来判断


    第六步:延时10ms


    第七步:重复第二步,第三步和第四步操作,确认有按键按下


    第八步:把新的p3赋值给temp


    第九步:switch语句,判断出是哪个按键按下


    switch (temp)


    {


    case 0x7e: key1=0;break; 第1个按键按下  (最左上角为第一个按键)


    case 0xbe: key2=0;break; 第2个按键按下


    case 0xde: key3=0;break; 第3个按键按下


    case 0xee: key4=0;break; 第4个按键按下


    }


    第十步:检测按键释放


    while(temp!=0xf0)


    {


    temp=p3;


    temp=temp&0xf0;


    }


    只要有按键按下 temp不等于0xf0为真,就不断读取p3口的值,然后与0xf0做与运算,再赋值给temp,只要有结果不等于0xf0,说明按键没有释放,只有按键释放后,p3高四位全部为1111,然后temp=temp&0xf0的结果为0xf0 , 然后while语句判断0xf0!=0xf0为假,程序才推出while语句


    第十一步:执行相应的代码





    第二行 第三行 第四行也是完全一样的操作,第一行写出来以后,后面三行都是复制,稍微改一些数值就可以。








    原理图:





    程序如下:


    #include


    #define uint unsigned int


    #define uchar unsigned char


    uchar code smg_dm;break;


    default: break;


    }


    while(temp!=0xf0)


    {


    t
评论(0)

登录后可评论,请 登录注册

   
相关资料
换一换