找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 280|回復(fù): 6
收起左側(cè)

如何在虛擬終端同步顯示數(shù)碼管的一位數(shù)字?

[復(fù)制鏈接]
ID:1153086 發(fā)表于 2025-6-7 18:59 | 顯示全部樓層 |閱讀模式
#include <reg51.h>

// 函數(shù)聲明
void Timer0_Init(void);
void UART_Init(void);
void Send_Current_Number(void);  // 專門用于發(fā)送當(dāng)前數(shù)字的函數(shù)

// 數(shù)碼管編碼
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

unsigned char currentNum = 0;
unsigned char timer50ms = 0;

// 定時(shí)器初始化
void Timer0_Init() {
    TMOD = 0x21;    // 定時(shí)器0模式1,定時(shí)器1模式2
    TH0 = 0x3C;     // 50ms定時(shí)值(12MHz)
    TL0 = 0xB0;
    ET0 = 1;        // 允許定時(shí)器0中斷
    EA = 1;         // 總中斷允許
    TR0 = 1;        // 啟動(dòng)定時(shí)器0
}

// 串口初始化
void UART_Init() {
    SCON = 0x50;    // 模式1,允許接收
    TH1 = 0xFD;     // 9600波特率(12MHz)
    TL1 = 0xFD;
    TR1 = 1;        // 啟動(dòng)定時(shí)器1
}

// 專用數(shù)字發(fā)送函數(shù)
void Send_Current_Number(void) {
         
    SBUF = currentNum + '0';  
    while(!TI);     // 等待發(fā)送完成
    TI = 0;         // 清除發(fā)送標(biāo)志
}

// 定時(shí)器中斷
void Timer0_ISR() interrupt 1 {
    TH0 = 0x3C;     // 重裝定時(shí)值
    TL0 = 0xB0;

    if(++timer50ms >= 10) {  // 0.5秒到達(dá)
        timer50ms = 0;

        // 更新顯示
                       
        P1 = LED7Code[currentNum];

        // 發(fā)送當(dāng)前數(shù)字
        Send_Current_Number();

        // 數(shù)字循環(huán)
        currentNum++;
        if(currentNum > 9) currentNum = 0;
    }
}

void main() {
    P1 = LED7Code[0];  // 初始顯示0
    currentNum = 0;    // 顯式初始化

    UART_Init();      // 初始化串口
    Timer0_Init();    // 初始化定時(shí)器

    // 初始發(fā)送數(shù)字0
    Send_Current_Number();

    while(1);         // 主循環(huán)
}





屏幕截圖 2025-06-07 185835.png
回復(fù)

使用道具 舉報(bào)

ID:275826 發(fā)表于 2025-6-8 18:27 | 顯示全部樓層
單片機(jī)晶振設(shè)置錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:1153086 發(fā)表于 2025-6-8 23:14 | 顯示全部樓層
tyrl800 發(fā)表于 2025-6-8 18:27
單片機(jī)晶振設(shè)置錯(cuò)誤

編輯屬性里是12MHz的,代碼里設(shè)置的也是12MHz的
回復(fù)

使用道具 舉報(bào)

ID:275826 發(fā)表于 2025-6-9 06:52 | 顯示全部樓層
高富師 發(fā)表于 2025-6-8 23:14
編輯屬性里是12MHz的,代碼里設(shè)置的也是12MHz的

修改成11.0592Mhz吧
回復(fù)

使用道具 舉報(bào)

ID:1153086 發(fā)表于 2025-6-9 14:33 | 顯示全部樓層

只改頻率后,虛擬終端循環(huán)顯示00 F8 00 F8 06 F8 18 F8 1E F8 60 F8 66 F8 78 F8
7E F8 80 F8 86 F8 ,數(shù)碼管正常顯示0到9
回復(fù)

使用道具 舉報(bào)

ID:1153248 發(fā)表于 2025-6-9 21:35 | 顯示全部樓層
emm,設(shè)置GPIO模式,定義數(shù)碼管相對(duì)應(yīng)的編碼應(yīng)該是這樣
回復(fù)

使用道具 舉報(bào)

ID:1153086 發(fā)表于 2025-6-10 08:32 | 顯示全部樓層
去碼頭整薯?xiàng)l 發(fā)表于 2025-6-9 21:35
emm,設(shè)置GPIO模式,定義數(shù)碼管相對(duì)應(yīng)的編碼應(yīng)該是這樣

還是從90循環(huán)顯示到99捏
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表