機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
點對點通信--發(fā)送機
點對點通信--發(fā)送機
 更新時間:2008-7-27 16:11:31  點擊數(shù):2
【字體: 字體顏色

;********WAVE-E6000/T**************************
;*MCU:          AT89C51                       *
;*MCU-crystal:  6M                            *
;*Version:      00                            *
;*Last Updata:                                *
;*Author:       www.picavr.com                *
;*Description: 將鍵盤獲取的字符由串口發(fā)送出去 *
;**********************************************  
#include <reg51.h>
unsigned char key;
unsigned int i,j;
unsigned char led[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                       0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
sbit bb=P3^7;

void delay(i)
{while(i--)
  {j=7650;while(j--);}
}

/* 鍵盤掃描碼轉換為字符顯示碼 */
unsigned char keyc(n)
unsigned char n;
{switch(n)
  {case 0x11:return(0);break;
   case 0x12:return(1);break;
   case 0x14:return(2);break;
   case 0x18:return(3);break;
   case 0x21:return(4);break;
   case 0x22:return(5);break;
   case 0x24:return(6);break;
   case 0x28:return(7);break;
   case 0x41:return(8);break;
   case 0x42:return(9);break;
   case 0x44:return(10);break;
   case 0x48:return(11);break;
   case 0x81:return(12);break;
   case 0x82:return(13);break;
   case 0x84:return(14);break;
   case 0x88:return(15);break;
  }
}

/* 延時 10ms */
void dlms(void)
{ unsigned int i;
  for(i=0;i<765;i++);}

/* 鍵盤掃描函數(shù) */
unsigned char kbscan(void)
{ unsigned char sccode,recode;
  P1=0xf0;
  if((P1&0xf0)!=0xf0)
   { dlms();
     if((P1&0xf0)!=0xf0)
      { sccode=0xfe;
        while((sccode&0x10)!=0)
         { P1=sccode;
           if((P1&0xf0)!=0xf0)
            { recode=(P1&0xf0)|0x0f;
              return((~sccode)+(~recode));
            }
           else
            sccode=(sccode<<1)|0x01;
         }
      }
   }
  return(0);
}


void main(void)
{P0=0xf9;P2=0x92;delay(10);P0=0xff;P2=0xff;
 TMOD=0x20;   /* 為串口設T/C1為定時方式2 */
 TH1=0xfd;TL1=0xfd;  /* 設定波特率9600,fosc=11.0592MHz */
 SCON=0x50;   /* 串行口工作方式1 */
 TR1=1;

 while(1)
  { key=kbscan();       /* 去鍵盤掃描碼 */
    if(key!=0)
     { key=keyc(key);           /* 或取鍵盤字符 */
       bb=0;delay(1);bb=1;
       P0=led[key>>4];  /* 顯示鍵盤字符 */
       P2=led[key&0x0f];
       SBUF=key;         /* 發(fā)送鍵盤字符 */
       while(TI==0);
       TI=0;
       delay(5);
     }
  }
}

  • 上一篇: PT2262的軟件解碼1
  • 下一篇: 第十三課 單片機指令(六)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

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

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

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