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

標題: 請問為什么我這個仿真圖的數碼管無論按哪個按鍵,都只顯示初始值呢 [打印本頁]

作者: 蕉111    時間: 2025-5-15 21:55
標題: 請問為什么我這個仿真圖的數碼管無論按哪個按鍵,都只顯示初始值呢
#include <reg52.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

// ???????(P3.0-P3.2)
sbit WEI1 = P3^0;  // ?1?
sbit WEI2 = P3^1;  // ?2?
sbit WEI3 = P3^2;  // ?3?

// ????????(0-9)
uchar code seg_table[] = {
    0x3F, 0x06, 0x5B, 0x4F, 0x66,  // 0-4
    0x6D, 0x7D, 0x07, 0x7F, 0x6F   // 5-9
};

uint key, key_num;  // ?????

/*********************** ??????? ************************/
void delay_1ms(uint x)
{
    TMOD = 0x01;    // ???0??1
    TR0 = 1;        // ?????
    while(x--)
    {
        TH0 = 0xFC; // 1ms????
        TL0 = 0x18;
        while(!TF0); // ????
        TF0 = 0;
    }
    TR0 = 0;        // ?????
}

/*********************** ????????? ********************/
void display(uint num)
{
    static uchar pos = 0; // ??????
    uchar digits[3];      // ?????????

    // ?????
    digits[0] = num / 100;         // ??
    digits[1] = (num / 10) % 10;   // ??
    digits[2] = num % 10;           // ??

    // ??????
    WEI1 = WEI2 = WEI3 = 1;

    // ??????
    switch(pos)
    {
        case 0:
            P2 = seg_table[digits[0]];
            WEI1 = 0;
            break;
        case 1:
            P2 = seg_table[digits[1]];
            WEI2 = 0;
            break;
        case 2:
            P2 = seg_table[digits[2]];
            WEI3 = 0;
            break;
    }

    pos = (pos+1) % 3;  // ????
    delay_1ms(2);       // ?????2ms
}

/*********************** ?????? *************************/
uchar keyscan()
{
    uchar i, j, key_value = 0xFF;
    P1 = 0xF0; // ?4???0,?4???1
    if(P1 != 0xF0) { // ?????????
        delay_1ms(10); // ??
        if(P1 != 0xF0) {
            // ???
            for(i = 0; i < 4; i++) {
                P1 = ~(0x01 << i); // ???????
                for(j = 0; j < 4; j++) {
                    if(!(P1 & (0x10 << j))) { // ???
                        key_value = i * 4 + j; // ????
                        while(P1 != 0xF0); // ??????
                        return key_value;
                    }
                }
            }
        }
    }
    return key_value;
}

/*********************** ?????? *************************/
void keynum()
{
    uchar i, j;
    uchar code tab[4][4] = {
        {'7', '8', '9', '/'},
        {'4', '5', '6', '*'},
        {'1', '2', '3', '-'},
        {'C', '0', '=', '+'}
    };

    key = keyscan();
    if(key != 0xFF)
    {
        i = key / 4;  // ??
        j = key % 4;  // ??
        key_num = tab[i][j] - '0'; // ???????0-9
    }
}

/************************ ??? ****************************/
void main()
{
    uint square_value = 0;
    P3 = 0xFF;  // ?????

    while(1)
    {
        keynum();  // ????
        if(key != 0xFF)
        {
            if(key_num >= 0 && key_num <= 9) {
                square_value = key_num * key_num;  // ?????
            }
        }
        display(square_value);  // ??????
    }
}

屏幕截圖 2025-05-15 215332.png (76.24 KB, 下載次數: 0)

仿真圖

仿真圖

作者: chxelc    時間: 2025-5-16 15:03
硬件電路不對,MCU端口不足以驅動4位數碼。需要加三極管/MOS/反相器/緩沖器/專用數碼管驅動IC等。
作者: hi等你    時間: 2025-5-16 15:32
位選1234要用四個三極管擴流供電,52的單片機io口上拉電流很弱,樓主的模電很弱所以不理解,還得多修煉
作者: xiaobendan001    時間: 2025-5-16 15:44
數碼管驅動是可以的,前提是把IO設置推挽模式,另外段碼腳要加個限流電阻的。但是你這標準C51可能不行。
矩陣按鍵不是有個反轉法嗎?論壇里搜一下
作者: 蕉111    時間: 2025-5-17 10:21
chxelc 發表于 2025-5-16 15:03
硬件電路不對,MCU端口不足以驅動4位數碼。需要加三極管/MOS/反相器/緩沖器/專用數碼管驅動IC等。

好的,謝謝

作者: 蕉111    時間: 2025-5-17 10:22
hi等你 發表于 2025-5-16 15:32
位選1234要用四個三極管擴流供電,52的單片機io口上拉電流很弱,樓主的模電很弱所以不理解,還得多修煉

好的,謝謝

作者: 蕉111    時間: 2025-5-17 10:22
xiaobendan001 發表于 2025-5-16 15:44
數碼管驅動是可以的,前提是把IO設置推挽模式,另外段碼腳要加個限流電阻的。但是你這標準C51可能不行。
...

好的,謝謝




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人av电影 | 成人欧美一区二区三区 | 黄色成人在线网站 | 欧美色综合一区二区三区 | 久久久久久亚洲精品 | 超碰在线97国产 | 天天射视频 | 欧美99久久精品乱码影视 | 亚洲精品在线免费播放 | 亚洲精品99久久久久久 | 国产精品三级 | 黄色在线免费网站 | 日日干干 | 成人在线精品 | 韩日精品一区 | 日韩欧美国产一区二区 | 美女网站视频免费黄 | 国产片侵犯亲女视频播放 | 国产一区二区三区色淫影院 | 欧美一区二区免费视频 | 亚洲精品久久久久久一区二区 | aaaaaa大片免费看最大的 | 一区二区中文 | 日韩小视频在线 | 国产伦精品一区二区三区在线 | 午夜影院在线观看 | 刘亦菲国产毛片bd | 精品亚洲一区二区三区 | 伊人网99 | 亚洲精品久久久一区二区三区 | 日本在线视频一区二区 | 日韩欧美在线观看视频 | 久夜精品 | 国产精品视频一区二区三区四区国 | 中文字幕一级毛片 | 日韩成人一区 | 国产一区二区三区四区 | 日本中文字幕一区 | 亚洲第1页| 国产精品久久久久久久久久免费看 | 久久精品国产99国产精品亚洲 |