久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1692|回復: 3
打印 上一主題 下一主題
收起左側

單片機4×4行列矩陣鍵程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:66287 發(fā)表于 2018-11-19 14:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
/*************************************************************************
工程名:4×4行列矩陣鍵盤
作  者:老芹

*************************************************************************/
#include"reg51.h"
#include"LCD1602.h"
#include"hardware.h"
#include"intrins.h"

#define  uchar unsigned char
#define  uint unsigned int
uchar code tab[4][4] = {       {'1','2','3','A'},    //0~9,A~D,*,#的鍵值
                                              {'4','5','6','B'},
                                              {'7','8','9','C'},
                                              {'*','0','#','D'}
                                                                       };      
extern LCD_int();                             //初始化LCD
void LCD_write_com(uchar com);   //寫一個字節(jié)數(shù)據(jù)到LCD

void delay(uchar a)
        {
        uint i,j;
        for(i=a;i>0;i--)
                for(j=110;j>0;j--);
        }

uchar keyscan()           //鍵盤掃描
        {         
        uchar key_H,key_L,key_temp,key,row,column;
        key_data = 0xf0;           //高四位做輸入
        if (key_data == 0xf0)     //沒有按鍵動作
            {
            key = 0;
            return(key);
            }
        while(1)
         {
        delay(5);
        if(key_data==0xf0)      //是干擾,退出
                 {
                 key = 0;
                 return(key);
                 }
        key_H = key_data;     
        key_data = 0x0f;         //低四位做輸入   
        _nop_();                      //STC等高速51單片機,在端口置"1",后,如果立即讀數(shù)據(jù),會讀出不確定值,所以加入短暫延時
        _nop_();
        key_L = key_data;
        while(key_data!=0x0f); //按鍵是否放開      
        key_temp = key_H|key_L;               
        switch(key_temp)   
            {
                  case 0x7e:row=3;column=0;break;  //顯示"*"
                  case 0x7b:row=3;column=2;break;  //顯示"#"
                  case 0xe7:row=0;column=3;break;  //顯示"A"
                  case 0xd7:row=1;column=3;break;  //顯示"B"
                  case 0xb7:row=2;column=3;break;  //顯示"C"
                  case 0x77:row=3;column=3;break;  //顯示"D"
                  case 0x7d:row=3;column=1;break;  //顯示"0"
                  case 0xee:row=0;column=0;break;  //顯示"1"
                  case 0xed:row=0;column=1;break;  //顯示"2"
                  case 0xeb:row=0;column=2;break;  //顯示"3"
                  case 0xde:row=1;column=0;break;  //顯示"4"
                  case 0xdd:row=1;column=1;break;  //顯示"5"
                  case 0xdb:row=1;column=2;break;  //顯示"6"
                  case 0xbe:row=2;column=0;break;  //顯示"7"
                  case 0xbd:row=2;column=1;break;  //顯示"8"
                  case 0xbb:row=2;column=2;break;  //顯示"9"
             }        
         key=tab[row][column];
         return (key);
         }
      }

void main()
        {
        uchar temp,i;
        LCD_int();                 //1602液晶模塊初始化
        LCD_prints("Welcome");
        P0=0xff;
        while(1)
                {
                temp=keyscan();
                if(temp!=0)
                        {
                        P0=temp;
                        LCD_set_position(0x40+i);   
                        LCD_printc(temp);
                        i++;
                        if(i==17)
                          {
                          i=0;
                          LCD_write_com(0x01);
                          LCD_prints("Welcome");
                          LCD_set_position(0x40+i);
                          LCD_printc(temp);
                          }
                        }               
                }
        }




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-11-19 17:06 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:66287 發(fā)表于 2018-11-20 08:28 | 只看該作者

回復

使用道具 舉報

地板
ID:66287 發(fā)表于 2018-11-20 08:30 | 只看該作者
hardware.H:
#include<STC15F2K60S2.h>
#ifndef __HARDWAR_H__
#define __HARDWAR_H__
/*---------------------------------------------------------
                   LCD數(shù)據(jù)、控制口定義
---------------------------------------------------------*/
#define LCD_DATA P1      //LCD的數(shù)據(jù)口
#define key_data P3      //矩陣鍵盤的數(shù)據(jù)口
sbit LCD_BUSY=LCD_DATA^7;  //LCD忙信號位

sbit LCD_RW=P2^0;          //LCD讀寫控制
sbit LCD_RS=P2^1;          //LCD寄存器選擇
sbit LCD_EN=P2^2;          //LCD使能信號*/

/*---------------------------------------------------------
                  I2C-EEROM接口定義
---------------------------------------------------------*/
sbit SDA=P2^4;                           //I2C總線數(shù)據(jù)
sbit SCL=P2^3;                            //I2C總線時鐘



/*---------------------------------------------------------
                  DS1302接口定義
---------------------------------------------------------*/
sbit reset=P2^7;
sbit sclk=P2^6;
sbit io=P2^5;

#endif
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情 亚洲 | 欧美精品一区二区免费 | 日韩在线观看 | 国产精品中文字幕一区二区三区 | 免费成人国产 | 中文字幕精品一区二区三区在线 | 天啪 | 国产精品福利视频 | www.欧美视频| 亚州精品天堂中文字幕 | 欧美日韩亚洲国产综合 | 久久精品二区 | 国产美女精品视频 | 视频在线亚洲 | 国产成人一区二区三区精 | 黄频免费 | 国产高清视频 | 在线免费黄色小视频 | 亚洲国产精品suv | 天天干天天操天天射 | 伊人色综合久久久天天蜜桃 | 免费一级毛片 | 日本精品一区二区 | 国产成人综合久久 | 成人午夜影院 | 成人小视频在线观看 | 精品福利在线视频 | 神马影院一区二区三区 | 九九热久久免费视频 | 精品自拍视频 | 欧美亚洲视频在线观看 | 国产精品网址 | 欧美日韩在线一区二区 | 久久中文字幕一区 | 91在线视频观看免费 | 99re热精品视频| 久久99精品久久久久子伦 | 狠狠狠 | 亚洲天堂一区 | 国产性色视频 | 操操日|