欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3587|回復: 15
收起左側

stc單片機程序的段碼表哪里有問題?

[復制鏈接]
ID:72649 發表于 2020-9-16 13:46 | 顯示全部樓層 |閱讀模式
const code LED_TAB[] =
        {
        LED_A + LED_B +LED_C + LED_D +LED_E + LED_F,   //0
        LED_A+LED_B,                           //1
        LED_A+LED_C+LED_D+LED_F+LED_G+LED_DP,  //2
        LED_A+LED_B+LED_C+LED_F+LED_G,         //3
        LED_A+LED_B+LED_E+LED_G,               //4
        LED_B+LED_C+LED_E+LED_F+LED_G,         //5
        LED_B+LED_C+LED_D+LED_E+LED_F+LED_G,   //6
        LED_A+LED_B+LED_F,   //7
        LED_A+LED_B+LED_C+LED_D+LED_E+LED_F+LED_G,   //8
        LED_A+LED_B+LED_C+LED_E+LED_F+LED_G,         //9
        LED_DP,
        };
        #undef LED_A
        #undef LED_B
        #undef LED_C
        #undef LED_D
        #undef LED_E
        #undef LED_F
        #undef LED_G
        #undef LED_DP

回復

使用道具 舉報

ID:72649 發表于 2020-9-16 16:38 | 顯示全部樓層
沒有人回答嗎?
回復

使用道具 舉報

ID:147710 發表于 2020-9-16 19:38 | 顯示全部樓層
看你這個是數碼管的段碼表,這么個寫法不知有何目的,半截子代碼實在難以判斷問題所在
給你個數碼管段碼生成器
888.jpg

數碼管段碼顯示.zip (18.58 KB, 下載次數: 13)

回復

使用道具 舉報

ID:819912 發表于 2020-9-16 20:18 | 顯示全部樓層
額,沒見過這么加的。LED_A/B/C/D/E/F/G/DP是對應輸出的數據吧,那應該是“|”的關系,而且還得對應到bit
回復

使用道具 舉報

ID:819912 發表于 2020-9-16 20:21 | 顯示全部樓層
沒見過你這么加的
你的LED_A/B/C/D/E/F/G/DP是對應的端口輸出,應該對應到bit,用 “|” 的關系,不是加的關系,或者移位再加
回復

使用道具 舉報

ID:213173 發表于 2020-9-17 06:37 | 顯示全部樓層
hjx5548 發表于 2020-9-16 16:38
沒有人回答嗎?

C語言中#undef的語法定義是:#undef 標識符,用來將前面定義的宏標識符取消定義。
而且除了“0”和“.”其它段碼都寫錯了。

//順序共陰極數碼管段碼表,段碼a-h順序接PX0-PX7
unsigned char code table[]={//共陰數碼管段碼"0~f-."
                0x3f,0x06,0x5b,0x4f,
                0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,
                0x39,0x5e,0x79,0x71,0x40,0x80};

//反序共陰極數碼管段碼表,段碼a-h順序接PX7-PX0
unsigned char code Table[]={//共陰數碼管段碼"0~f-."
                0xFC,0x60,0xDA,0xF2,
                0x66,0xB6,0xBE,0xE0,
                0xFE,0xF6,0xEE,0x3E,
                0x9C,0x7A,0x9E,0x8E,0x02,0x01};

//順序共陽極數碼管段碼表,段碼a-h順序接PX0-PX7
unsigned char code table[]={//共陽數碼管段碼"0~f-."
                0xc0,0xf9,0xa4,0xb0,
                0x99,0x92,0x82,0xf8,
                0x80,0x90,0x88,0x83,
                0xc6,0xa1,0x86,0x8e,0xbf,0x7f};

//反序共陽極數碼管段碼表,段碼a-h順序接PX7-PX0
unsigned char code Table[]={//共陰數碼管段碼"0~f-."
                0x03,0x9f,0x25,0x0d,
                0x99,0x49,0x41,0x1f,
                0x01,0x09,0x11,0xc1,
                0x63,0x85,0x61,0x71,0xfd,0xfe};

回復

使用道具 舉報

ID:72649 發表于 2020-9-17 09:34 | 顯示全部樓層
應該這樣表達:驅動數碼管段總線的引腳不在同一個端口下。
回復

使用道具 舉報

ID:582903 發表于 2020-9-17 10:47 | 顯示全部樓層
相加是多少直接賦值就可以了
回復

使用道具 舉報

ID:147710 發表于 2020-9-17 10:59 | 顯示全部樓層
hjx5548 發表于 2020-9-17 09:34
應該這樣表達:驅動數碼管段總線的引腳不在同一個端口下。

段驅動不在同一端口下我是這么干的:
dm.jpg

回復

使用道具 舉報

ID:213173 發表于 2020-9-17 12:01 | 顯示全部樓層
hjx5548 發表于 2020-9-17 09:34
應該這樣表達:驅動數碼管段總線的引腳不在同一個端口下。

這是一個實用中的異組端口驅動函數,P2.4,P2.2,P3.5~3.0從高到低組成一個字節,標準段碼數組直接帶入參數x

void PX(uchar x)
{
        P3&=0xc0;                //低6位清0,P36、37不變
        P3|=(x&0x3f);        //P3低6位賦值
        P2&=0xeb;                //P24、22清0,其它位不變
        P2|=((x>>3&0x10)|(x>>4&0x04));//P24、22賦值
}
回復

使用道具 舉報

ID:553941 發表于 2020-9-17 13:52 | 顯示全部樓層
思路是可以實現的,但是不是加法這么簡單,單片機中以一個十六進制數表示段碼,以全滅來說,是0x00,當需要第一個亮的時候要或上0x01,這樣變成0x01,但是讓點亮的燈熄滅的話需要與上0x00,還要加判斷當前狀態。你的表述是有問題的,如果是同一組IO,這樣做完全沒意義,所以猜測你應該是不同組的IO組成數碼管的八位數據
回復

使用道具 舉報

ID:235954 發表于 2020-9-17 15:54 | 顯示全部樓層
你這個加號比較優秀,應該用 |
回復

使用道具 舉報

ID:123289 發表于 2020-9-18 16:27 | 顯示全部樓層
這樣做很好,很容易讀懂。
但只適用于正邏輯,即1=亮。
要注意各段的定義只能在下列數據中選擇:128,64,32,16,8,4,2,1。
如果是負邏輯,需要取反碼,自己考慮吧。
另外:
“2”的編碼沒有小數點,去掉LED_DP。
回復

使用道具 舉報

ID:72649 發表于 2020-9-19 19:55 來自觸屏版 | 顯示全部樓層
XTXB 發表于 2020-9-17 10:59
段驅動不在同一端口下我是這么干的:

如果要顯示1234數,應該怎么寫?
回復

使用道具 舉報

ID:72649 發表于 2020-9-19 19:56 來自觸屏版 | 顯示全部樓層
wulin 發表于 2020-9-17 06:37
C語言中#undef的語法定義是:#undef 標識符,用來將前面定義的宏標識符取消定義。
而且除了“0”和“.” ...

段碼寫錯不是主要問題,關鍵是四路?
回復

使用道具 舉報

ID:72649 發表于 2020-9-19 21:06 | 顯示全部樓層
sbit WEI1        = P3^5;   //ǧλ
sbit WEI2        = P3^6;   //°ùλ
sbit WEI3        = P3^7;   //ê®Î»
sbit WEI4        = P4^1;   //¸öλ

sbit  LED_A  =  P4^2;
sbit  LED_B  =  P4^4;
sbit  LED_C  =  P2^1;
sbit  LED_D  =  P2^3;
sbit  LED_E  =  P1^3;
sbit  LED_F  =  P4^3;
sbit  LED_G  =  P2^0;
sbit  LED_DP =  P2^2;

        LED_A + LED_B +LED_C + LED_D +LED_E + LED_F,   //0    //μ1×°
        LED_E+LED_F,                           //1
        LED_D+LED_E+LED_G+LED_A+LED_B,  //2
        LED_D+LED_E+LED_F+LED_A+LED_G,         //3
        LED_E+LED_C+LED_F+LED_G,               //4
        LED_D+LED_C+LED_G+LED_F+LED_A,         //5
        LED_D+LED_C+LED_G+LED_A+LED_B+LED_F,   //6
        LED_D+LED_E+LED_F,   //7
        LED_A+LED_B+LED_C+LED_D+LED_E+LED_F+LED_G,   //8
        LED_A+LED_E+LED_C+LED_D+LED_F+LED_G,         //9
以上四位數碼管顯示6789,程序怎么寫?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表