機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
PS2電腦鍵盤控制單片機程序
PS2電腦鍵盤控制單片機程序
 更新時間:2008-7-27 15:57:57  點擊數:4
【字體: 字體顏色

實驗源程序

#include <reg51.h>
#include <INTRINS.H>
 unsigned char KeyCode;  //鍵盤鍵值
#define WAITFORKEYBOARDPULSE  while(!scl); while(scl);
bit KeyBoardConnectFlag = 0;
sbit scl=P1^4;
sbit sda=P1^3;
sbit P2_1=P2^1;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;


/*********************************************************/
//函數:Delay()
//功能:延時
//輸入:延時時間設定值
//輸出:?
//描述:
/*********************************************************/
void Delay(unsigned char Times)
{
 unsigned char n;
 n = 120;
 for(;Times>0;Times--)
 {
  for(;n>0;n--);

 }
}
/*********************************************************/
//函數:ReadPS2()
//功能:掃描鍵盤
//輸入:
//輸出:鍵值
//描述:
/*********************************************************/\
unsigned char ReadPS2()
{
 //unsigned char KeyCode;  //鍵盤鍵值
 unsigned char bitCount; //位數
 while(scl);   // 等待鍵盤把時鐘第一次拉低

   for(bitCount = 8; bitCount != 0; bitCount --)   // 把起始位算入
   {
    WAITFORKEYBOARDPULSE;     // 等待一個有效的下跳沿
    KeyCode  >>= 1;      // 按照PS2格式,數據低位在前
    scl  = 1;
    sda  = 1;
    if(sda == 1)
  {
      KeyCode |= 0x80; // 得到有效的數據位
     }
   }
   WAITFORKEYBOARDPULSE;     // 等待按鍵發(fā)送效驗位
   WAITFORKEYBOARDPULSE;     // 等待按鍵發(fā)送終止位
   while(!scl);         // 等待鍵盤把時鐘線拉高

   // return(KeyCode);         // 返回按鍵掃描
}

/*****************************************************************************/
//main.c
//功能:從PS/2口接受鍵盤信息控制led燈
//修改:
//時間:2006-10-19
//作者:
/*****************************************************************************/

void main()
{
  P0=0xff;   //初始化P0口
      //  P2_1=0;   //屏蔽LCD

  while(1){
            ReadPS2();
switch(KeyCode)
         {
         case 0x05:   //f1
               LED1=0;
               break;
         case 0x06:
               LED2=0;
               break;
         case 0x04:
           LED3=0;
               break;
         case 0x0c:
     LED4=0;
               break;
         case 0x03:
              LED5= 0;
               break;
         case 0x0b:
              LED6=0;
              break;
        case 0x83:
               LED7= 0;
               break;
        case 0x0a:
               LED8= 0;
               break;      
        case 0x76:
      P0=0xff;
                break;
        default:
  break;
            }
 }
}

  
  • 上一篇: 4×4鍵盤及8位數碼管顯示構成的電子密碼鎖
  • 下一篇: 24C0X存儲器計數程序
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

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

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

    網站經營許可證:浙B2-20080178-1