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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請問為什么我這個仿真圖的數碼管無論按哪個按鍵,都只顯示初始值呢

[復制鏈接]
跳轉到指定樓層
樓主
#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)

仿真圖

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

使用道具 舉報

沙發
ID:712097 發表于 2025-5-16 15:03 | 只看該作者
硬件電路不對,MCU端口不足以驅動4位數碼。需要加三極管/MOS/反相器/緩沖器/專用數碼管驅動IC等。
回復

使用道具 舉報

板凳
ID:996773 發表于 2025-5-16 15:32 | 只看該作者
位選1234要用四個三極管擴流供電,52的單片機io口上拉電流很弱,樓主的模電很弱所以不理解,還得多修煉
回復

使用道具 舉報

地板
ID:1109793 發表于 2025-5-16 15:44 | 只看該作者
數碼管驅動是可以的,前提是把IO設置推挽模式,另外段碼腳要加個限流電阻的。但是你這標準C51可能不行。
矩陣按鍵不是有個反轉法嗎?論壇里搜一下
回復

使用道具 舉報

5#
ID:1150590 發表于 2025-5-17 10:21 | 只看該作者
chxelc 發表于 2025-5-16 15:03
硬件電路不對,MCU端口不足以驅動4位數碼。需要加三極管/MOS/反相器/緩沖器/專用數碼管驅動IC等。

好的,謝謝
回復

使用道具 舉報

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

好的,謝謝
回復

使用道具 舉報

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

好的,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线一区二区三区 | 一级黄色毛片a | 欧美一级黄色免费看 | 91视视频在线观看入口直接观看 | 亚洲精品欧美 | 久色网 | 福利视频网站 | 天天插天天搞 | 国产精品a久久久久 | 影音先锋中文字幕在线观看 | 国产综合久久 | 色视频在线观看 | 中文字幕高清av | 日韩无| 亚洲国产精品区 | 大学生a级毛片免费视频 | 精品国产一区二区 | 欧美一区二区在线 | 日韩欧美在线视频观看 | 国产清纯白嫩初高生在线播放视频 | 男人的天堂久久 | 中文字幕在线一区二区三区 | 国产成人黄色 | 黄网站涩免费蜜桃网站 | 久久久久国产精品一区 | 福利片在线观看 | av小说在线| 九九热精品视频 | 欧美日韩一 | 亚洲综合色丁香婷婷六月图片 | 欧美一区二区免费 | 午夜小视频免费观看 | 久久久美女 | 亚洲视频在线观看一区二区三区 | 玖玖玖av| 精品一区二区三区在线视频 | 日韩久久综合网 | 国产精品久久久久久久久久久新郎 | 精品一区二区三区日本 | www国产亚洲精品 | 国产在线视频一区 |