電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

51單片機4*4掃描C程序

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-3-31
;******************************************************
;*標題:    東哥   51單片機4*4掃描C程序  
;*文件:                            
;*版本:    1.0 
;*作者:    東哥    
;*郵箱:    picavr@163.com     QQ: 279068079

;*******************************************************   

#include "reg52.h"
#include<intrins.h>
#define  uchar unsigned char  
#define  uint  unsigned int
bit FLAG0=0;
uchar ptr;
static const char tab[16]={0x01,0x02,0x03,0x0c, /*鍵盤碼00,01,02,03,*/
                           0x04,0x05,0x06,0x0d, /*鍵盤碼04,05,06,07,*/
                           0x07,0x08,0x09,0x0e, /*鍵盤碼08,09,0a,0b,*/
                           0x0a,0x00,0x0b,0x0f};/*鍵盤碼0c,0d,0e,0f*/
void delay (unsigned int value)  /*延時副程式*/
 {
      while (value!=0) value--;  /*10US延時*/
 }

void scan(void)    /*掃描鍵盤副程式*/
{
 uchar a1=0xef,i,m;         /*A1=0XF7列掃描初值,I行*/
 FLAG0=0;                 /*設按鍵回應旗號為0,鍵盤掃描計數指標為0*/
     for(i=0;i<4;i++)  /*鍵盤4個掃描列*/
      {
               P2=a1;   /*列掃描輸出,讀入P1存入M,以便偵測行與偵測按鍵是否放開*/
                m=P2;
                switch(m&0x0f)  /*取行的高4位元,偵測那一行被按*/
            {
             case 0x07: ptr=i*4; /*第一行被按否?是則掃描指標=列X4*/
                           FLAG0=1; /*是則設FLAG0=1表有按鍵輸入*/
                           break; /*跳出此循環*/
                case 0x0b: ptr=i*4+1; /*第二行被按否?是則掃描指標=列X4+1*/
                           FLAG0=1; /*是則設FLAG0=1表有按鍵輸入*/
                           break; /*跳出此循環*/ 
                case 0x0d: ptr=i*4+2; /*第三行被按否?是則掃描指標=列X4+2*/
                           FLAG0=1; /*是則設FLAG0=1表有按鍵輸入*/
                           break; /*跳出此循環*/
                case 0x0e: ptr=i*4+3; /*第四行被按否?是則掃描指標=列X4+3*/
                           FLAG0=1; /*是則設FLAG0=1表有按鍵輸入*/
                 default:  break; /*跳出此循環*/
            }
         if(FLAG0==1)break;  /*不為1,則掃描列右移,掃描下一列*/
         a1=a1<<1|0x01;   /*高位補1,由于P1.7~P1.4未接+5V,而是由指令加載高電平*/
       }
 } 
void main(void)
{
 TMOD=0x20;                            //T1工作方式2
 TH1=0xfd;                             //串口波特率為9600
 TCON=0x40;                           //啟動T1
 SCON=0x40;                           //串口工作與方式1并禁止接受
 IE=0x00;                             //無中斷
 while(1)
 {
   scan();                           //啟動鍵盤掃描
   if(FLAG0)                         //當FLAG0=1時,有鍵輸入
   {
    SBUF=tab[ptr];                     
    while(TI==0);TI=0;               //將鍵值送串口
    FLAG0=0;                         //將標識位清零 
    delay(30000);                    //延時
    } 
  } 
 }    
Tags:51單片機,4*4掃描,C程序  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章:
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    国产精品真实对白精彩久久| 四虎影永久在线观看精品| 菠萝蜜视频入口| 国产成人无码区免费内射一片色欲 | 国产视频中文字幕| 91精品国产自产在线观看永久∴ | 无码精品日韩中文字幕| 久久久久夜夜夜精品国产| 成人免费视频网站www| 中文字幕乱码人妻综合二区三区 | 亚洲熟妇少妇任你躁在线观看 | 免费黄色一级毛片| 波多野结衣xfplay在线观看| 亚洲网址在线观看| 欧美一级视频在线| 亚洲av无码专区在线观看下载| 日韩av无码成人精品国产| 久久发布国产伦子伦精品| 成人18免费网站在线观看| 一区二区在线观看视频| 在公车上忘穿内裤嗯啊色h文| 999国产精品| 国产成人麻豆亚洲综合无码精品| 菠萝蜜视频在线观看入口| 国产SM主人调教女M视频| 男女真实无遮挡xx00动态图120秒 男女肉粗暴进来120秒动态图 | 九色国产在视频线精品视频| 无码国产精品一区二区免费模式| 中文字幕在线观看亚洲日韩| 大美香蕉伊在看欧美| 97久久精品人人澡人人爽| 国产成视频在线观看| 老师那里好大又粗h男男| 可以免费观看一级毛片黄a| 波多野结衣在线影院| 亚洲成av人片在线观看无码不卡 | 交换交换乱杂烩系列yy| 欧洲吸奶大片在线看| 久久精品亚洲视频| 尤物久久99热国产综合| av狼最新网址|