日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
AVR單片機(jī)定時(shí)器按鍵掃描程序
AVR單片機(jī)定時(shí)器按鍵掃描程序
 更新時(shí)間:2008-7-26 19:21:35  點(diǎn)擊數(shù):3
【字體: 字體顏色
/*******************************************************************************
*程序共定義了6個(gè)鍵的功能:K1、K2、K3、K4以及K5、K8組成的一對(duì)復(fù)合鍵,其中K2,K3為
*連擊鍵,K5為上檔鍵。在正常工作模式下按K1則切換至狀態(tài),在設(shè)定模式下按K1鍵循環(huán)選
*擇4個(gè)數(shù)碼管中的某個(gè),被選中的數(shù)碼管閃爍,此時(shí)單按K2鍵顯示數(shù)值加1;常按K2顯示數(shù)
*值以一定速度遞增,同時(shí)數(shù)碼管停止閃爍,當(dāng)K2松開(kāi),數(shù)碼管恢復(fù)閃爍,顯示數(shù)值停留在
*K2松開(kāi)前的值上。K3完成的功能和K2類似。其完成減操作。這2個(gè)鍵只有在設(shè)定狀態(tài)才有
*效,可以有效防止誤操作。K4為確認(rèn)鍵,按下該鍵回到正常顯示狀態(tài),所有指示燈熄滅,
*數(shù)碼管顯示剛剛設(shè)定的數(shù)值。K5+K8這對(duì)復(fù)合鍵執(zhí)行復(fù)位操作,任何情況下同時(shí)按下K5和K8
*或先按下K5再按下K8,所有數(shù)碼管的顯示全為0,指示燈全滅,進(jìn)入正常顯示狀態(tài)。同時(shí)程
*序還對(duì)如下幾個(gè)異常操作進(jìn)行了處理:
* 2個(gè)或多個(gè)功能鍵同時(shí)按下
* 一個(gè)功能鍵按下未釋放,又按另一個(gè)功能鍵,然后再松開(kāi)其中一個(gè)功能鍵
* 先按下功能鍵再按下上檔鍵
* 多個(gè)上檔鍵和一個(gè)功能鍵同時(shí)按下,此時(shí)不做處理。等到松開(kāi)其他上檔鍵,只剩下一個(gè)上
* 檔鍵和一個(gè)功能鍵時(shí)才執(zhí)行這對(duì)復(fù)合鍵;或松開(kāi)所有上檔鍵,處理單一功能鍵。
*******************************************************************************/
#include <iom8v.h>
#include <macros.h>

#define uchar unsigned char
#define uint unsigned int


#define RCtrl  0x20              //定義上擋鍵 第5鍵
#define RConti 0xfe              //定義連擊鍵 第6鍵

#define N 2                      //去抖年齡下限

#define MaxRate 50               //重復(fù)前的延遲值 600ms
#define MinRate 20               //重復(fù)速度 240ms

#define leddark 83               //閃爍時(shí)滅時(shí)間1s
#define ledshow 83               //閃爍時(shí)亮?xí)r間1s

#define decimal 0x80             //小數(shù)點(diǎn)的段數(shù)


#define KEY_DDR    DDRC 
#define KEY_PORTO  PORTC
#define KEY_PORTI  PINC 
#define OUT        0x3f
#define IN         0xc0     
#define KeyValue   0x3f

#define LEDD_DDR   DDRB
#define LEDD_PORTO PORTB

#define LEDS_DDR   DDRD
#define LEDS_PORTO PORTD
#define LEDS_MASK  0xfc
#define LEDS_NUM   0x06

#define TRUE       1
#define FALSE      0  


/*定義鍵盤掃描程序返回?cái)?shù)據(jù)類型*/
typedef struct
{
  uchar shiftcnt; //上檔鍵的個(gè)數(shù)值
  uchar funcnt; //功能鍵的個(gè)數(shù)值
  uchar shiftval; //最后掃描到的上檔鍵的值
  uchar funval; //最后掃描到的功能鍵的值
} keyret;

/*定義顯示字符段碼*/
uchar const led_stroke[19] = 
{
  //0,1,2,3,4,5,6,7,8,9
  0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 

  //a,b,C,d,e,F,P,
  0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x73, 
  //all on all off
  0xff, 0x00
};

/*定義位選碼*/
uchar const led_cs[LEDS_NUM] = 
{
  0xfb,  //11111011
  0xf7,  //11110111
  0xef,  //11101111
  0xdf,  //11011111
  0xbf,  //10111111
  0x7f   //01111111
};

uchar led_buf[LEDS_NUM] = 
{
  0x73, 0x81, 0x82, 0x83, 0x84,0x85
};
uchar *pb = &led_buf[1]; //定義指向數(shù)碼管數(shù)據(jù)緩沖區(qū)的指針


/*定義全局變量*/

uchar task, state; //task:按鍵狀態(tài),0:去抖 1,重復(fù)的延遲 2,重復(fù)
//state:顯示位置變量

uchar keydone, keyprocess; //keydone: 按鍵任務(wù)完成標(biāo)志,為1表示已完成
//keyprocess: 按鍵有效標(biāo)志,為1時(shí)表示對(duì)按鍵執(zhí)行

uchar keypre[2] = 
{
  0x00, 0x00
}; //存放上次功能鍵和上檔鍵的鍵值
//keypre0存放功能鍵

uchar blink, ledtime; //blink:閃爍控制寄存器,某位為1時(shí)閃爍
                      //d7d6d5d4d3d2d1d0
                      //xxxx1111
                      //ledtime:累計(jì)閃爍時(shí)已點(diǎn)亮和已熄滅的時(shí)間
uchar ledtask; //ledtask: 當(dāng)前的閃爍狀態(tài),0代表亮

uchar keymark; //keymark:只是當(dāng)前工作狀態(tài),為1時(shí)處于設(shè)定狀態(tài),為0時(shí)正常工作
uchar enflash; //enflash:閃爍使能標(biāo)志,1閃爍

#define shut_dis() LEDS_PORTO|=LEDS_MASK;  //shut display

/*******************************************************************************
 *函數(shù)原型: uchar _crol_(uchar data,uchar shiftbit);
 *功能:字節(jié)左移shiftbit
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
uchar _crol_(uchar data,uchar shiftbit)
{
    data &=0xff;
    if(shiftbit>8)return 0;
 return ((~data)<<shiftbit);
}
/*******************************************************************************
 *函數(shù)原型: uchar _cror_(uchar data,uchar shiftbit);
 *功能:字節(jié)右移shiftbit
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
uchar _cror_(uchar data,uchar shiftbit)
{
    data &=0xff;
    if(shiftbit>8)return 0;
 return ((~data)>>shiftbit);
}

/*******************************************************************************
 *函數(shù)原型: void send_shift(uchar d);
 *功能:     將顯示數(shù)據(jù)由B口送出
 *******************************************************************************/
void send_shift(uchar data)
{
  LEDD_PORTO = data;
}
/*******************************************************************************
 *函數(shù)原型: void lflash();
 *功能:閃爍處理。ledtask指示當(dāng)前的顯示狀態(tài):亮或滅,ledtask為0時(shí)亮
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
void lflash()
{
  if (enflash && (blink &0x3f))
  {
    if (ledtime-- == 0)
    {
      if (!ledtask)
        ledtime = leddark;
      else
        ledtime = ledshow;
      ledtask = ~ledtask; //顯示狀態(tài)翻轉(zhuǎn)
    }
  }
  else
    ledtask = 0;
}

/*******************************************************************************
 *函數(shù)原型: void display(uchar pos);
 *功能:將pos對(duì)應(yīng)的顯示緩沖區(qū)的內(nèi)容顯示在第pos位數(shù)碼管上
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
void display(uchar pos)
{
  uchar sflag;
  shut_dis(); //關(guān)顯示
  sflag = (blink >> (6-pos)) &0x01;      //取出pos對(duì)應(yīng)的數(shù)碼管的閃爍控制位
  if (pos == 0)
    send_shift(led_buf[0]);              //指示燈顯示時(shí)直接將顯示內(nèi)容送顯示端口
  else if (!sflag || (sflag &!ledtask))  //不閃爍或正處于閃爍的亮階段
    if ((led_buf[pos] &0x80) == 0)       //不顯示小數(shù)點(diǎn),查表得到段碼送顯示端口

    send_shift(led_stroke[led_buf[pos] &0x7f] |decimal); //顯示小數(shù)點(diǎn),把查表得到段碼與小數(shù)點(diǎn)的段碼與的結(jié)果送顯示端口
    else
    send_shift(led_stroke[led_buf[pos] &0x7f]);  
  else
    send_shift(0xff);                    //pos位數(shù)碼管不顯示
  LEDS_PORTO &= led_cs[pos];             //送出位選碼
}

/*******************************************************************************
 *函數(shù)原型: void scankey(keyret *kpd);
 *功能:鍵盤掃描,返回上檔鍵個(gè)數(shù),上檔鍵值,功能鍵個(gè)數(shù),功能鍵值
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
void scankey(keyret *kpd)
{
  uchar i,j;
  shut_dis();                //關(guān)顯示
  KEY_DDR    = OUT;          //定義數(shù)據(jù)端口為輸出
  KEY_PORTO |= KeyValue;     //輸出數(shù)據(jù)(輸出檢測(cè)碼)
  KEY_DDR    = IN;           //定義數(shù)據(jù)端口為輸入
  i = (KEY_PORTI &KeyValue); //取出鍵盤位
  if (i != KeyValue)         
                             //檢測(cè)是否有鍵按下
  {
    i |= ~KeyValue;          //組成完整的字節(jié)
    if (~i &RCtrl)
                             //該鍵是上檔鍵
    {
      kpd->shiftcnt++;       //上檔鍵個(gè)數(shù)加1   ??
      //這里不對(duì)
      for(j=0;j<6;j++)
      {
          if((0x01<<j)==RCtrl)
          {
              kpd->shiftval = j+1;     //上檔鍵值存入上檔鍵值緩沖  ??
          }
      }
    }
    else
    {
      for(j=0;j<6;j++)
      {
          if((0x01<<j)==~i)
          {
              kpd->funcnt++;           //功能鍵個(gè)數(shù)加1   ??
            kpd->funval =j+1;        //上檔鍵值存入上檔鍵值緩沖  ??
          }
      }
    }
  }
  KEY_DDR = OUT;             //數(shù)據(jù)端口還原為輸出  
}

/*******************************************************************************
 *函數(shù)原型: void key();
 *功能:鍵盤掃描,返回上檔鍵個(gè)數(shù),上檔鍵值,功能鍵個(gè)數(shù),功能鍵值
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
void key()
{
  uchar krpt = RConti;
  static uchar keycnt;
  static uchar keyesc;
  keyret keytemp = 
  {
    0x00, 0x00, 0x00, 0x00
  };
  if (keydone)                                   //上次按鍵任務(wù)已完成
  {
    scankey(&keytemp);                           //掃描鍵盤
    if (!keytemp.funcnt || keytemp.shiftcnt > 1) //功能鍵計(jì)數(shù)器為0或上檔鍵個(gè)數(shù)多于1
    {
      enflash = 1;                               //允許閃爍
     // USART0_TransmitString("shiftcnt!\r\n");
      keypre[0] = 0x00;                          //清零上次功能鍵和上檔鍵緩沖
      keypre[1] = 0x00;
      //清零
      keyesc = 0x00;                             //鍵釋放標(biāo)志 清零
      task   = 0x00;                             //按鍵狀態(tài) 標(biāo)志為去抖階段
      keycnt = 0x00;                             //年齡計(jì)數(shù)器 清零
    }
    else if (!keyesc)                            //鍵已釋放 按下上擋鍵后按鍵釋放標(biāo)志請(qǐng)零
    {
        // USART0_TransmitString("keyesc!\r\n");
      if (keytemp.funcnt > 1)                    //有多于一個(gè)的功能鍵按下
        keyesc = 1;                              //置位按鍵釋放標(biāo)志 
        //本次功能鍵值和上次不同或本次上檔鍵值和上次不同且上次有上檔鍵
      else if (keytemp.funval != keypre[0] || keytemp.shiftval != keypre[1] &&keypre[1])
      {
        keypre[0] = keytemp.funval;              //用本次鍵值更新上次鍵值
        keypre[1] = keytemp.shiftval;

        keycnt = 0x00;                           //年齡計(jì)數(shù)器復(fù)位
      }
      else if (!keypre[1] && keytemp.shiftval)   //2次功能鍵相同,上次無(wú)上檔鍵本次有
        keyesc = 1;//置位keyesc,屏蔽先按下功能鍵,再按下上檔鍵這種按鍵組合
      else
      {
        keycnt++; //2次功能鍵和上檔鍵都相同
        switch (task)
        {
          case 0:
            if (keycnt == N)
            {
              enflash = 1;
              keyprocess = 1; //鍵值處理
              if ((keytemp.shiftcnt == 1) || !(krpt >> (keytemp.funval - 1)
                  &0x01))
                keyesc = 1;//是一對(duì)復(fù)合鍵或該鍵不允許連擊
              else
              {
                task++; //按鍵狀態(tài)轉(zhuǎn)入重復(fù)的延緩階段
                keycnt = 0; //按鍵年齡清0
              }
            }
            break;
          case 1://重復(fù)的延緩階段
            if (keycnt == MaxRate)//按鍵年齡等于重復(fù)的延緩階段
            {
              enflash = 0; //不允許閃爍

              keyprocess = 1; //進(jìn)行鍵值處理
              keycnt = 0; //按鍵年齡清0
              task++; //按鍵轉(zhuǎn)入重復(fù)狀態(tài)
            }
            break;
          case 2://重復(fù)階段
            if (keycnt == MinRate)//重復(fù)時(shí)間到
            {
              enflash = 0; //不允許閃爍

              keyprocess = 1; //進(jìn)行鍵值處理
              keycnt = 0; //按鍵年齡清0
            }
            break;
        }
      }
    }
  }
}

/*******************************************************************************
 *函數(shù)原型: void key1_handler();
 *功能:按鍵1處理
 *參數(shù):
 *說(shuō)明:正常工作模式下,按下按鍵1即進(jìn)入設(shè)定狀態(tài),此時(shí)第一個(gè)數(shù)碼管閃爍,同時(shí)對(duì)應(yīng)led1
 *     的指示燈亮。設(shè)定模式下,按下按鍵1,在led1和led4之間循環(huán)切換選擇被選中的數(shù)碼
 *     管閃爍,相應(yīng)的指示燈亮
 *******************************************************************************/
void key1_handler()
{
  if (!keymark)        //進(jìn)入設(shè)定狀態(tài)
  {
    led_buf[0] = 0xfe; //點(diǎn)亮第一個(gè)led
    pb = &led_buf[1];  //pb指向第一個(gè)數(shù)碼管
    //blink = 0x80;      //第一個(gè)數(shù)碼管閃爍
     blink = 0x20;      //第一個(gè)數(shù)碼管閃爍
    keymark = 1;
    enflash = 1;       //允許閃爍
  }
  else
  {
    pb++;              //pb指向下一個(gè)數(shù)碼管
    blink >>= 1;       //該數(shù)碼管閃爍
   // led_buf[0] = _crol_(led_buf[0], 2); //調(diào)整指示燈
    if (pb >= (uchar*)(led_buf + 6))    //pb指針越限,重新初始化
    {
      pb = &led_buf[1];
      //blink = 0x80;                     //第一個(gè)數(shù)碼管閃爍
       blink = 0x20;      //第一個(gè)數(shù)碼管閃爍
    }
  }
}


/*******************************************************************************
 *函數(shù)原型: void key2_handler();
 *功能:按鍵2處理
 *參數(shù):
 *說(shuō)明:正常工作模式下,按下按鍵2無(wú)效。設(shè)定模式下,按下按鍵2,每執(zhí)行一次選中的數(shù)碼
 *     管值加一,常按,數(shù)值以一定速度連續(xù)遞增,但數(shù)值大于9時(shí)又回到0,
 *******************************************************************************/
void key2_handler()
{
  if (keymark)
  {
    *pb += 1;
    if (*pb >= 10)
      *pb = 0;

  }
}

/*******************************************************************************
 *函數(shù)原型: void key3_handler();
 *功能:按鍵3處理
 *參數(shù):
 *說(shuō)明:正常工作模式下,按下按鍵3無(wú)效。設(shè)定模式下,按下按鍵2,每執(zhí)行一次選中的數(shù)碼
 *     管值減一,常按,數(shù)值以一定速度連續(xù)遞減,但數(shù)值大于0時(shí)又回到9,
 *******************************************************************************/
void key3_handler()
{
  if (keymark)
  {
    if (*pb <= 0)
      *pb = 9;
    else
      *pb -= 1;
  }
}

/*******************************************************************************
 *函數(shù)原型: void key4_handler();
 *功能:按鍵4處理
 *參數(shù):
 *說(shuō)明:此鍵為確認(rèn)鍵,按下后熄滅指示燈,不閃爍,進(jìn)入工作狀態(tài)
 *******************************************************************************/
void key4_handler()
{
  blink = 0x00;
  led_buf[0] = 0x73;
  keymark = 0;
}

/*******************************************************************************
 *函數(shù)原型: void keymix_handler();
 *功能:復(fù)合按鍵(上檔鍵5和功能鍵8)處理
 *參數(shù):
 *說(shuō)明:執(zhí)行復(fù)位功能,4個(gè)數(shù)碼管全顯示0,不閃爍。8個(gè)指示燈全滅,進(jìn)入正常工作狀態(tài)
 *******************************************************************************/
void keymix_handler()
{
  led_buf[0] = 0x73;
  led_buf[1] = 0;
  led_buf[2] = 0;
  led_buf[3] = 0;
  led_buf[4] = 0;
  led_buf[5] = 0;
  keymark = 0;
  blink = 0;
}

/*******************************************************************************
 *函數(shù)原型: void key_processing();
 *功能:鍵值處理
 *參數(shù):keyprocess,keypre[1],keypre[0],
 *說(shuō)明:根據(jù)鍵值執(zhí)行相應(yīng)的按鍵功能
 *******************************************************************************/
void key_processing()
{
  if (keyprocess)
  {
    keydone = 0;
    keyprocess = 0;
    switch (keypre[1])
    {
      case 0x00:
        switch (keypre[0])
        {
        case 0x01:
          key1_handler();
          break;
        case 0x02:
          key2_handler();
          break;
        case 0x03:
          key3_handler();
          break;
        case 0x04:
          key4_handler();
          break;
        }
        break;
      case 0x05:
        if (keypre[0] == 8)
          keymix_handler();
        break;
    }
    keydone = 1;
  }
}


//TIMER0 initialize - prescale:256
// desired value: 2mSec
// actual value:  1.991mSec (0.5%)
void timer0_init(void)
{
  TCCR0 = 0x00; //stop
  TCNT0 = 0xAA; //set count
  TCCR0 = 0x04; //start timer
}

/*******************************************************************************
 *函數(shù)原型: void timer0_ovf_isr(void);
 *功能:定時(shí)器0中斷服務(wù)程序
 *參數(shù):
 *說(shuō)明:鍵盤和led一起構(gòu)成1/6掃描,每6次中斷進(jìn)行一次鍵盤處理
 *******************************************************************************/
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{

  TCNT0 = 0xAA; //set count
  if (state <= 5)
  {
    lflash();
    display(state);
    state++;

  }
  else
  {
    key();
    state = 0;
  }
}

void USART0_Init(void)
{
 UCSRB = 0x00; //disable while setting baud rate
 UCSRA = 0x00;
 UCSRC = BIT(URSEL) | 0x06;
 UBRRL = 0x47; //set baud rate lo
 UBRRH = 0x00; //set baud rate hi
 UCSRB = 0x18;
}

//-------------------------------------------------------------------------

void USART0_Transmit(unsigned char data)
{
  while (!(UCSRA &(1 << UDRE)))
    ;
  UDR = data;
}

//-------------------------------------------------------------------------

void USART0_TransmitString(char *data)
{
  while (*data)
    USART0_Transmit(*data++);
}

//-------------------------------------------------------------------------

unsigned char USART0_Receive(void)
{
  while (!(UCSRA &(1 << RXC)))
    ;
  return UDR;
}



/*******************************************************************************
 *函數(shù)原型: void port_init(void);
 *功能:端口初始化
 *參數(shù):
 *說(shuō)明: 
 *******************************************************************************/
void port_init(void) //端口初始化
{
  DDRB = 0xff; //led數(shù)據(jù)口    11111111
  DDRC = 0xff; //鍵盤      00111111
  DDRD = 0xfc; //段碼選擇  11111100

  PORTD = 0xff;
  PORTB = 0xff;
  PORTC = 0xff;
}
/*******************************************************************************
 *函數(shù)原型: void init_devices(void);
 *功能:m8初始化
 *參數(shù):
 *說(shuō)明: 
 *******************************************************************************/
//call this routine to initialize all peripherals
void init_devices(void)
{
  //stop errant interrupts until set up
  CLI(); //disable all interrupts
  port_init();
  timer0_init();
  USART0_Init();
  MCUCR = 0x00;
  GICR = 0x00;
  TIMSK = 0x01; //timer interrupt sources
  SEI(); //re-enable interrupts
  //all peripherals are now initialized
}

/*******************************************************************************
 *函數(shù)原型: void main() ;
 *功能:主程序,執(zhí)行初始化操作,循環(huán)等待案件事件 
 *參數(shù):
 *說(shuō)明:
 *******************************************************************************/
void main()
{
  init_devices();
  //標(biāo)志和常量初始化
  task = 0x00;       //按鍵狀態(tài)
  state = 0x00;      //顯示位置變量
  keyprocess = 0;    //按鍵有效標(biāo)志
  keydone = 1;       //按鍵任務(wù)完成標(biāo)志
  ledtime = ledshow; //累計(jì)閃爍時(shí)已點(diǎn)亮或已熄滅時(shí)間
  ledtask = 0;       //當(dāng)前的閃爍狀態(tài) 0 代表亮
  keymark = 0;       //指示當(dāng)前工作狀態(tài)為正常工作狀態(tài)
  USART0_TransmitString("OK!\r\n");
  while (1)
  {
    key_processing();
  }
}
  • 上一篇: AVR單片機(jī)定時(shí)/計(jì)數(shù)器PWM設(shè)計(jì)要點(diǎn)
  • 下一篇: AVR單片機(jī)讀寫EEPROM子程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1