访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
嵌入式人机界面中的键盘及其接口设计
内容导读:

嵌入式人机界面中的键盘及其接口设计P24

具体程序如下:

SUBDESIGN keyboard

(      clk, reset, col[3..0]                           : INPUT;

       row[3..0], d[3..0], keypress        : OUTPUT; )

VARIABLE

       ring[3..0]               : JKFF ;

       kp                                : DFF ;

       adiv                             : TFF ;

       array[3..0]             : DFF ;

       clk/2                            : NODE ;

BEGIN

       adiv.t = VCC ;

       adiv.clk = clk ;

       clk/2 = adiv.q ;

       ring[].clk = clk/2 ;

       ring[2..0].clrn = reset ;

       ring3.prn = reset ;

       ring0.j     = ring3.q ;

       ring0.k    = !ring3.q ;

       ring1.j     = ring0.q ;

       ring1.k    = !ring0.q ;

       ring2.j     = ring1.q ;

       ring2.k    = !ring1.q ;

       ring3.j     = ring2.q ;

       ring3.k    = !ring2.q ;

       row[]      = !ring[].q ;

       TABLE

               ring[].q,  col[]  => array[].d,  kp.d;

               B"XXXX",B"1111" => B"XXXX",   0 ;

               B"0001",  B"1110" => B"0000",     1 ;

               B"0001",  B"1101" => B"0001",           1 ;

               B"0001",  B"1011" => B"0010",     1 ;

               B"0001",  B"0111" => B"0011",     1 ;

               B"0010",  B"1110" => B"0100",     1 ;

               B"0010",  B"1101" => B"0101",     1 ;

               B"0010",  B"1011" => B"0110",     1 ;

               B"0010",  B"0111" => B"0111",     1 ;

               B"0100",  B"1110" => B"1000",     1 ;

               B"0100",  B"1101" => B"1001",     1 ;

               B"0100",  B"1011" => B"1010",     1 ;

               B"0100",  B"0111" => B"1011",     1 ;

               B"1000",  B"1110" => B"1100",     1 ;

               B"1000",  B"1101" => B"1101",     1 ;

               B"1000",  B"1011" => B"1110",     1 ;

               B"1000",  B"0111" => B"1111",      1 ;

       END TABLE;

       array[].clk = clk ;

       d[]                 = array[].q ;

       kp.clk            = clk ;

       keypress  = kp.q ;

END

 

#include <m8c.h>      // 特定常量与宏的定义

#include "PSoCAPI.h"  // 用户模块API接口定义

void main()

{ BYTE t, m; WORD ttt;

 CSR_1_Start();                                // 启动CSR模块

 M8C_EnableGInt;

 CSR_1_SetDacCurrent(0x32,0); // 相关设置

 CSR_1_SetScanSpeed(255);

 CSR_1_StartScan(0,10,1);// 启动感测盘扫描

 PRT1DR = 0xf0;                      // 编码输出端口设置

 m = 0;

 while(1)

 {if (CSR_1_GetScanStatus() &

      CSR_1_SCAN_SET_COMPLETE)

  { m += 1;

   ttt = CSR_1_iUpdateBaseline(0,10); // 取值

   ttt >>= 2;

   switch(ttt)        // 按键识别

   {case 0x01: t = 0; break;

    case 0x02: t = 1; break;

    case 0x04: t = 2; break;

    case 0x08: t = 3; break;

    case 0x10: t = 4; break;

    case 0x20: t = 5; break;

    case 0x40: t = 6; break;

    case 0x80: t = 7; break;

    default:   t = 8; break;

   }

   if(t<8)              // 按键编码输出

   { if(m==1)                            // 编码输出

    { PRT1DR &= 0x8f;

     PRT1DR = (t<<4);

    }

else if(m==5) PRT1DR &= 0x7f;

                                      // 键动作中断信号输出

    else if(m>20)         // 结束一次键编码输出

    {PRT1DR = 0xf0;

     m = 0;

    }

   }

  }

 }

}

 

 

char KeyIdentify(void)

{ char ADC_result;

  ADC_result = ADCR; // 读取ADC转换结果

  if((ADC_result>0xe0)&&(ADC_result<0xe4))

              return(1);              //     按键0动作

  else if((ADC_result>0xe4)&&(ADC_result<0xec))

              return(1);              //     按键1动作

  else if((ADC_result>0xec)&&(ADC_result<0xf4))

              return(1);              //     按键2动作

  else if((ADC_result>0xf4)&&(ADC_result<0xfc))

              return(1);              //     按键3动作

  else if((ADC_result>0xfc)&&(ADC_result<0x04))

              return(1);              //     按键4动作

  else if((ADC_result>0x04)&&(ADC_result<0x0c))

              return(1);              //     按键5动作

  else if((ADC_result>0x0c)&&(ADC_result<0x14))

              return(1);              //     按键6动作

  else if((ADC_result>0x14)&&(ADC_result<0x1a))

              return(1);              //     按键7动作

}

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐