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

標題: 串口助手實現流水燈和數碼管 [打印本頁]

作者: zjw莊    時間: 2023-12-24 12:34
標題: 串口助手實現流水燈和數碼管
有人能幫我改一下程序嗎,真不會
要求如下:利用串口助手,通過串口助手發送0,則流水燈左移,同時數碼管顯示管顯示0。發送1,則流水燈右移,同時數碼管顯示管顯示1。發送2,則流水燈中間向兩端發散,同時數碼管顯示管顯示2。發送3,則流水燈全滅,同時數碼管顯示管顯示3。發送4,則流水燈全亮,同時數碼管顯示管顯示4。

#include <reg52.h>

sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

unsigned char code LedChar[] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[7] =
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
unsigned char T0RH = 0;  
unsigned char T0RL = 0;
unsigned char RxdByte = 0;
unsigned char flag200ms = 0;  
unsigned char flagLight = 1;  

void ConfigTimer0(unsigned int ms);
void ConfigUART(unsigned int baud);
void FlowingLight();

void main()
{
    EA = 1;      
    ENLED = 0;  
    ADDR3 = 1;
    ConfigTimer0(1);  
    ConfigUART(9600);

    while (1)
    {
        if (flagLight == 0)
        {
            LedBuff[6] = 0xFF;
        }
        else
        {
            if (flag200ms != 0)
            {
                flag200ms = 0;
                FlowingLight();
            }
        }        LedBuff[0] = LedChar[RxdByte & 0x0F];
        LedBuff[1] = LedChar[RxdByte >> 4];
    }
}void FlowingLight()
{
    static unsigned char dir = 0;   
    static unsigned char shift = 0x01;

    LedBuff[6] = ~shift;   
    if (dir == 0)            
    {
        shift = shift << 1;
        if (shift == 0x80)  
        {
            dir = 1;
        }
    }
    else                    
    {
        shift = shift >> 1;  
        if (shift == 0x01)
        {
            dir = 0;
        }
    }
}void ConfigTimer0(unsigned int ms)
{
    unsigned long tmp;

    tmp = 11059200 / 12;   
    tmp = (tmp * ms) / 1000;
    tmp = 65536 - tmp;
    tmp = tmp + 13;      
    T0RH = (unsigned char)(tmp>>8);
    T0RL = (unsigned char)tmp;
    TMOD &= 0xF0;  
    TMOD |= 0x01;
    TH0 = T0RH;  
    TL0 = T0RL;
    ET0 = 1;      
    TR0 = 1;      
}
void ConfigUART(unsigned int baud)
{
    SCON  = 0x50;  
    TMOD &= 0x0F;
    TMOD |= 0x20;
    TH1 = 256 - (11059200/12/32)/baud;
    TL1 = TH1;  
    ET1 = 0;   
    ES  = 1;      
    TR1 = 1;   
}void LedScan()
{
    static unsigned char i = 0;

    P0 = 0xFF;         
    P1 = (P1 & 0xF8) | i;
    P0 = LedBuff[i];      
    if (i < 6)            
        i++;
    else
        i = 0;
}void InterruptTimer0() interrupt 1
{
    static unsigned char tmr200ms = 0;

    TH0 = T0RH;
    TL0 = T0RL;
    LedScan();  
    tmr200ms++;
    if (tmr200ms >= 200)
    {
        tmr200ms = 0;
        flag200ms = 1;
    }
}void InterruptUART() interrupt 4
{
    if (RI)
    {
        RI = 0;
        RxdByte = SBUF;
        SBUF = RxdByte;

        flagLight = !flagLight;
    }
    if (TI)
    {
        TI = 0;
    }
}



作者: csmyldl    時間: 2023-12-24 14:06
LedBuff[7] = 這一行都少了一個"{"   串口中斷服務程序要把按收到的數據進行分類選擇相應流水燈的控制,同時設置顯示緩沖區的數據,顯示程序由定時計數器負責顯示緩 沖區的內容即可
作者: zjw莊    時間: 2023-12-24 16:05
csmyldl 發表于 2023-12-24 14:06
LedBuff[7] = 這一行都少了一個"{"   串口中斷服務程序要把按收到的數據進行分類選擇相應流水燈的控制,同 ...

那個{是我復制時不小心刪掉的,我是不知道怎么把上面那段程序改為要求那種的
作者: lkc8210    時間: 2023-12-25 22:41
電路圖呢?沒有電路圖改不了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一区二区在线观看 | 视频在线日韩 | 日韩中文在线视频 | 成人av免费 | 精品久久久久久久久久久久久久 | 国产成人一区二区三区 | 色网在线观看 | 久久精品久久久久久 | 久久久久久久久久久蜜桃 | av资源在线看 | 韩国av电影网| 国产精品视频久久久久久 | 欧美日韩a| 做a视频| 久久精品a级毛片 | 情侣av| 久久久久久久久久久久久91 | 欧美精品1区2区 | 欧美激情在线精品一区二区三区 | 欧美一级在线观看 | 人人澡视频 | 久久精品 | 久久免费视频2 | 毛片网在线观看 | 一区日韩 | 国产精品麻 | 久久精品国产久精国产 | 亚洲精品欧美 | 一区二区影院 | 欧美精品一区在线 | 韩国av网站在线观看 | 日韩有码一区 | 一级免费毛片 | 欧美福利视频 | 精品国产高清一区二区三区 | 一区二区在线免费播放 | 日韩中文字幕免费在线 | 欧美极品一区二区 | 不卡的av在线 | 亚洲国产一区二区三区 | 精品久久香蕉国产线看观看亚洲 |