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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機矩陣鍵盤程序語句調試問題

[復制鏈接]
跳轉到指定樓層
樓主
這個矩陣鍵盤的,怎么改變剛打開單片機還沒有按鍵時數碼管顯示的符號,加上圖二這三句 沒有改變顯示的字符,求大佬指教


QQ圖片20190224115743.jpg (117.49 KB, 下載次數: 30)

QQ圖片20190224115743.jpg

QQ圖片20190224115804.jpg (169 KB, 下載次數: 30)

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

使用道具 舉報

沙發
ID:213173 發表于 2019-2-24 16:28 | 只看該作者


/*************        IO口定義        **************/
sbit        P_HC595_SER   = P2^5;        //SER                data input
sbit        P_HC595_RCLK  = P2^6;        //RCLk        store (latch) clock
sbit        P_HC595_SRCLK = P2^7;        //SRCLK        Shift data clock

unsigned char code t_display[]={                                                //段碼標準字庫
//         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//  不顯   -   H    J         K          L           N        o    P           U   t    G    Q    r    M    y
        0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
//    0.  1.   2.   3.   4.   5.   6.   7.   8.   9.   -1
        0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};

unsigned char code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                //位碼

/**************** 向HC595發送一個字節函數 ******************/

void Send_595(u8 dat)
{               
        u8        i;
        for(i=0; i<8; i++)
        {
                dat <<= 1;
                P_HC595_SER   = CY;
                P_HC595_SRCLK = 1;
                P_HC595_SRCLK = 0;
        }
}
/********************** 顯示掃描函數 ************************/

void DisplayScan(void)
{       
        Send_595(~LED_TYPE ^ T_COM[display_index]);        //輸出位碼
        Send_595( LED_TYPE ^ t_display[LED8[display_index]]);        //輸出段碼

        P_HC595_RCLK = 1;
        P_HC595_RCLK = 0;                                                        //鎖存輸出數據
        if(++display_index >= 8)       
                display_index = 0;        //8位結束回0
}




回復

使用道具 舉報

板凳
ID:213173 發表于 2019-2-24 20:05 | 只看該作者


初始顯示字母示例程序
#include <reg52.h>
#define uint unsigned int                 //宏定義無符號整型數據
#define uchar unsigned char         //宏定義無符號字符型數據

sbit        P_HC595_SER   = P2^0;
sbit        P_HC595_SRCLK = P2^1;
sbit        P_HC595_RCLK  = P2^2;

uchar  code table[]={//共陰數碼管段碼"0~H"
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
// A    B    C    D    E    F    G    H
   0x77,0x7C,0x39,0x5E,0x79,0x71,0x3d,0x76};

uchar code dis_buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位碼
uchar buf[8];

uchar key=0;                                        //定義鍵值全局變量

void keyscan()                                        //按鍵掃描程序
{
        static bit sign=0;                        //按鍵有效標志
        static uint count=0;                //消抖計數變量                       
        uchar num=0;                                //臨時變量
        P3=0xf0;                                        //賦值P3 1111 0000
        if(P3!=0xf0)                                //檢測有按鍵按下
        {
                count++;                                //消抖計數
                if((count>=500)&&(sign==0))//100~1000,根據主循環周期調整約10~20ms
                {                       
                        sign=1;                                //按鍵有效標志置1
                        num=P3;                                //保存P3值xxxx 0000,x為0或1
                        num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
                        P3=num;                                //賦值P3 xxxx 1111
                        num=P3;                                //保存P3值xxxx xxxx
                        switch(num)
                        {
                                case 0xee: key= 1; break;
                                case 0xde: key= 2; break;
                                case 0xbe: key= 3; break;
                                case 0x7e: key= 4; break;
                                case 0xed: key= 5; break;
                                case 0xdd: key= 6; break;
                                case 0xbd: key= 7; break;
                                case 0x7d: key= 8; break;
                                case 0xeb: key= 9; break;
                                case 0xdb: key=10; break;
                                case 0xbb: key=11; break;
                                case 0x7b: key=12; break;
                                case 0xe7: key=13; break;
                                case 0xd7: key=14; break;
                                case 0xb7: key=15; break;
                                case 0x77: key=16; break;
                        }
                }
        }
        else                                                //鍵抬起
        {
                sign=0;                                        //按鍵有效標志清0
                count=0;                                //消抖計數清0
        }
}
/**************** 向HC595發送一個字節函數 ******************/
void Send_595(uchar dat)
{               
        uchar i;
        for(i=0;i<8;i++)
        {
                dat <<= 1;
                P_HC595_SER  = CY; //溢出位賦值數據輸出端
                P_HC595_SRCLK = 1; //移位時鐘
                P_HC595_SRCLK = 0;
        }
}
/**************** 向HC595發送2個字節函數 ******************/
void DisplayScan()
{       
        static uchar j;
        Send_595(dis_buf[j]);//向HC595發送位碼
        Send_595(table[buf[j]]);//向HC595發送段碼
        P_HC595_RCLK = 1;//鎖存輸出數據
        P_HC595_RCLK = 0;
        if(++j==8)
                j=0;
}

void main()                                                //主函數
{
        uchar i;
        P_HC595_SRCLK = 0;//初始化移位時鐘端
        P_HC595_RCLK  = 0;//初始化鎖存輸出端
        while(1)
        {
                keyscan();                                //按鍵掃描程序
                if(key==0)
                {
                        buf[0]=10;
                        buf[1]=11;
                        buf[2]=12;
                        buf[3]=13;
                        buf[4]=14;
                        buf[5]=15;
                        buf[6]=16;
                        buf[7]=17;
                }
                else
                {
                        buf[0]=0;
                        buf[1]=0;
                        buf[2]=0;
                        buf[3]=0;
                        buf[4]=0;
                        buf[5]=0;
                        buf[6]=key/10;
                        buf[7]=key%10;
                }
                if(++i>=100)
                {
                        i=0;
                        DisplayScan();                //發送2個字節
                }
        }
}



無標題1.jpg (228.24 KB, 下載次數: 45)

無標題1.jpg
回復

使用道具 舉報

地板
ID:213173 發表于 2019-2-25 07:50 | 只看該作者

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人精品久久 | 久久国 | 亚洲精品欧美一区二区三区 | 91成人在线 | av片在线观看 | 男女国产视频 | 伊人伊人| 亚洲精品成人网 | 日韩久久久久 | www.奇米| 91资源在线| 国产精品一区三区 | 91精品入口蜜桃 | 国产精品国产馆在线真实露脸 | 久久专区 | 亚洲大片 | 欧美456| 久热久草| 国产成人免费视频网站高清观看视频 | 在线日韩中文字幕 | 亚洲男人天堂av | 国产精品一区久久久 | 国产精品激情 | 免费观看黄网站 | 99精品久久99久久久久 | 欧美一级大黄 | 色橹橹欧美在线观看视频高清 | 国产一区二区在线免费观看 | 97国产精品 | 精品国产免费一区二区三区五区 | 精品无码久久久久久国产 | 欧美视频 | 国产激情一区二区三区 | 国产精品久久久久久久久久尿 | 草草草网站 | 一区二区三区在线免费观看 | 亚洲黄色一级毛片 | 久热精品视频 | 伊人免费观看视频 | 精品在线播放 | 99爱视频 |