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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

各位大神幫幫忙解釋一下這個簡單的程序4*4矩陣鍵盤數碼管顯示帶音的 麻煩越詳細越好

[復制鏈接]
跳轉到指定樓層
樓主
ID:217769 發表于 2017-7-8 22:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define SCANPORT P1
sbit spk=P3^0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
                                         0x6d,0x7d,0x07,0x7f,0x6f,
                                         0x77,0x7c,0x39,0x5e,0x79,
                                         0x71};
uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
uchar ucKeyScan()
{
        uchar Temp=0;                                 
        uchar ucRow=0,ucLine=0;            

        for(ucLine=0;ucLine<4;ucLine++)       
                {
                        SCANPORT=uca_LineScan[ucLine];                          
                        Temp=SCANPORT & 0x0F;                                         
                        if(Temp!=0x0F)                 
                                {                                                                         
                                switch(Temp)
                                        {
                                        case 0x0E: ucRow=10;break;                 
                                        case 0x0D: ucRow=20;break;
                                        case 0x0B: ucRow=30;break;
                                        case 0x07: ucRow=40;break;
                                        default:   ucRow=50;break;
                                        }
                                break;
                                }
                }

        SCANPORT=0x0F;                                         
        return ucRow+ucLine+1;                         
}
void vKeyProcess(unsigned char ucKeyCode)
{
               
        switch(ucKeyCode)
                {
                case 11:P0=table[0];spk=1;break;                                                          //'7'
                case 12:P0=table[1];spk=1;break;                                                          //'8'
                case 13:P0=table[2];spk=1;break;
                case 14:P0=table[3];spk=1;break;
                                                          
                case 21:P0=table[4];spk=1;break;                                                          //'4'
                case 22:P0=table[5];spk=1;break;                                                          //'5'
                case 23:P0=table[6];spk=1;break;
                case 24:P0=table[7];spk=1;break;
                                                  
                case 31:P0=table[8];spk=1;break;                                                          //'1'
                case 32:P0=table[9];spk=1;break;                                                          //'2'
                case 33:P0=table[10];spk=1;break;
                case 34:P0=table[11];spk=1;break;

                case 41:P0=table[12];spk=1;break;                                  //'3'
                case 42:P0=table[13];spk=1;break;
                case 43:P0=table[14];spk=1;break;                                                  //'0'
                case 44:P0=table[15];spk=1;break;                                                          //'+'

                default:break;
                }
}
void main()
{
        spk=0;
        P0=0;
       
        while(1)
        {
                vKeyProcess(ucKeyScan());
                spk=0;
        }
}


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

使用道具 舉報

沙發
ID:218207 發表于 2017-7-8 23:40 | 只看該作者
這是一個按鍵掃描,然后按鍵讀取顯示的程序,在ucKeyScan()中先四次循環的行掃描取出行的值再 進行第四位的ROW判斷返回 ROW和 LINE ,再在vKeyProcess這個API程序中調用 進行Switch函數中選擇 按下了哪個按鍵SPK應該是蜂鳴器的使能IO口吧! P1定義的是按鍵輸入的IO 口,好久沒用51 了大概的思想是這樣的!
回復

使用道具 舉報

板凳
ID:217769 發表于 2017-7-9 12:00 | 只看該作者
羅正男 發表于 2017-7-8 23:40
這是一個按鍵掃描,然后按鍵讀取顯示的程序,在ucKeyScan()中先四次循環的行掃描取出行的值再 進行第四位的 ...

多謝大神
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久免费 | 国产精品美女久久久久aⅴ国产馆 | 成人免费视频观看视频 | 欧美一二三区 | 中文字幕日本一区二区 | 精品一区二区三区在线播放 | 久久国产精品视频 | 中文字幕一区二区不卡 | 国产成人久久精品 | 欧美一区二区三区在线观看 | 性视频一区 | 国产精品免费一区二区三区四区 | 精品国产乱码一区二区三区a | 日韩中文字幕一区 | 欧美日韩亚洲在线 | 日韩专区中文字幕 | 狠狠操狠狠操 | 美女一级毛片 | a级片www| 欧美日韩综合视频 | 在线成人免费视频 | 日日操视频 | 免费视频二区 | 九九热视频这里只有精品 | 成人黄视频在线观看 | 久久精品国产一区 | 国产国拍亚洲精品av | 欧美日韩国产综合在线 | 久久福利网站 | 亚洲精品久久久久久久不卡四虎 | 国产精品久久久久久久久久久免费看 | 日韩欧美中文 | 天天天操 | 亚洲国产欧美精品 | 真人女人一级毛片免费播放 | 精品国产乱码久久久久久蜜柚 | 亚洲经典一区 | 欧美国产免费 | www.久久久久久久久 | 久久亚洲一区二区三区四区 | 成人午夜激情 |