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

QQ登錄

只需一步,快速開(kāi)始

搜索

單片機(jī)+數(shù)碼管為什么不亮?

查看數(shù): 881 | 評(píng)論數(shù): 14 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2025-4-17 11:52

正文摘要:

用STC15W408AS搭建的電路,P2接數(shù)碼管+,P3接—,一共8個(gè)數(shù)碼管,全部都是a段亮。請(qǐng)大神幫忙看看哪里出了問(wèn)題。 #include <STC15F2K60S2.H> void main() {            &n ...

回復(fù)

ID:1152098 發(fā)表于 2025-5-29 11:05
沒(méi)有段碼嗎和位碼嗎
ID:1152021 發(fā)表于 2025-5-28 19:06
路過(guò)。
ID:1137639 發(fā)表于 2025-4-18 20:54
是這個(gè)意思?本意是讓所有數(shù)碼管點(diǎn)亮,P2輸出高電平,P3低電平,后來(lái)試了一下,給每個(gè)數(shù)碼管單獨(dú)賦值0、1就可以。

現(xiàn)在把代碼優(yōu)化了一下,可以了。謝謝!
  1. #include <STC15F2K60S2.H>

  2. unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  3.       
  4. void Nixie(unsigned char Location,Number)
  5. {
  6.         switch(Location)
  7.         {
  8.                 case 1:P30=0; break;
  9.                 case 2:P31=0; break;               
  10.                 case 3:P32=0; break;
  11.                 case 4:P33=0; break;               
  12.                 case 5:P34=0; break;
  13.                 case 6:P35=0; break;               
  14.                 case 7:P36=0; break;
  15.                 case 8:P37=0; break;                       
  16.         }
  17.                 P2=NixieTable[Number];               
  18. }

  19. void main()
  20. {
  21.       
  22. Nixie(2,6);
  23.       
  24.                 while(1)
  25.                 {
  26.                        
  27.                 }
  28. }      
復(fù)制代碼
ID:1144680 發(fā)表于 2025-4-18 10:31
xayh000 發(fā)表于 2025-4-18 08:01
我也剛學(xué),要配置輸出模式,端口要寫明白,P2是指對(duì)一字節(jié)8位給1嗎,不是寫0XFF嗎

沒(méi)錯(cuò)。應(yīng)該寫為0xFF,想當(dāng)然地認(rèn)為P2=1就是對(duì)所有端口操作。慚愧慚愧。
ID:1144680 發(fā)表于 2025-4-18 10:25
hi等你 發(fā)表于 2025-4-17 15:08
過(guò)來(lái)人告訴樓主,新手學(xué)習(xí)單片機(jī)盡可能從標(biāo)準(zhǔn)的51開(kāi)始,io口輸出只是標(biāo)準(zhǔn)的弱上拉和強(qiáng)拉低
比較容易理解, ...

說(shuō)的極是。
想著一邊學(xué)習(xí)一邊實(shí)踐,增加自己的學(xué)習(xí)興趣,這咱芯片也便宜,先做個(gè)小東東出來(lái)。
ID:402677 發(fā)表于 2025-4-18 10:20
WL0123 發(fā)表于 2025-4-17 14:13
P2=1當(dāng)然只亮1個(gè)a點(diǎn),電路圖也有毛病,給你改了。下面是測(cè)試程序。

好好學(xué)習(xí),謝謝熱心的朋友
ID:60178 發(fā)表于 2025-4-18 08:01
我也剛學(xué),要配置輸出模式,端口要寫明白,P2是指對(duì)一字節(jié)8位給1嗎,不是寫0XFF嗎
ID:996773 發(fā)表于 2025-4-17 15:08
過(guò)來(lái)人告訴樓主,新手學(xué)習(xí)單片機(jī)盡可能從標(biāo)準(zhǔn)的51開(kāi)始,io口輸出只是標(biāo)準(zhǔn)的弱上拉和強(qiáng)拉低
比較容易理解,15w408雖然先進(jìn)些,io口有多種配置,有強(qiáng)拉高,懸空等多種狀態(tài)需要定義相關(guān)
的寄存器,對(duì)新手不友好,循序漸進(jìn)才是最好最省力的
ID:1144680 發(fā)表于 2025-4-17 14:28
WL0123 發(fā)表于 2025-4-17 14:13
P2=1當(dāng)然只亮1個(gè)a點(diǎn),電路圖也有毛病,給你改了。下面是測(cè)試程序。

多謝!運(yùn)行正常。已經(jīng)超出了我的學(xué)習(xí)進(jìn)度,下一節(jié)正好要學(xué)習(xí)這個(gè)。

ID:1144680 發(fā)表于 2025-4-17 14:22
cyi8 發(fā)表于 2025-4-17 13:38
P2=1??所以P2=01H,P2=0000,0001,那不是一個(gè)段亮嗎??

是這個(gè)意思?本意是讓所有數(shù)碼管點(diǎn)亮,P2輸出高電平,P3低電平,后來(lái)試了一下,給每個(gè)數(shù)碼管單獨(dú)賦值0、1就可以。

現(xiàn)在把代碼優(yōu)化了一下,可以了。謝謝!
  1. #include <STC15F2K60S2.H>

  2. unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  3.        
  4. void Nixie(unsigned char Location,Number)
  5. {
  6.         switch(Location)
  7.         {
  8.                 case 1:P30=0; break;
  9.                 case 2:P31=0; break;               
  10.                 case 3:P32=0; break;
  11.                 case 4:P33=0; break;               
  12.                 case 5:P34=0; break;
  13.                 case 6:P35=0; break;               
  14.                 case 7:P36=0; break;
  15.                 case 8:P37=0; break;                       
  16.         }
  17.                 P2=NixieTable[Number];               
  18. }

  19. void main()
  20. {
  21.        
  22. Nixie(2,6);
  23.        
  24.                 while(1)
  25.                 {
  26.                        
  27.                 }
  28. }       
復(fù)制代碼



ID:1133081 發(fā)表于 2025-4-17 14:13
dcc60 發(fā)表于 2025-4-17 13:29
如下圖,把無(wú)關(guān)的電路刪了

P2=1當(dāng)然只亮1個(gè)a點(diǎn),電路圖也有毛病,給你改了。下面是測(cè)試程序。


  1. #include <STC15F2K60S2.H>

  2. unsigned char code table[]={
  3.         0x3f,0x06,0x5b,0x4f,
  4.         0x66,0x6d,0x7d,0x07,
  5.         0x7f,0x6f,0x77,0x7c,
  6.         0x39,0x5e,0x79,0x71};

  7. void Delay(unsigned int t)//1T@11.0592MHz
  8. {
  9.     unsigned int x;
  10.     while (t--)
  11.     {
  12.         x = 5000;
  13.         while (x--);
  14.     }
  15. }


  16. void main()
  17. {               
  18.         unsigned char i;
  19.         while(1)
  20.         {
  21.                 P2=0x00;
  22.                 P3=~(0x01<<i);
  23.                 P2=table[i];
  24.                 Delay(1);       
  25.                 i=++i%8;
  26.         }
  27. }
復(fù)制代碼



ID:1121801 發(fā)表于 2025-4-17 13:38
P2=1??所以P2=01H,P2=0000,0001,那不是一個(gè)段亮嗎??
ID:1109793 發(fā)表于 2025-4-17 12:16
電路圖呢?

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

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

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