找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1682|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)代碼下到板子上數(shù)碼管亮度低怎么辦?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1084057 發(fā)表于 2023-6-14 15:10 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)代碼下到板子上數(shù)碼管亮度低怎么辦

單片機(jī)源程序如下:
  1. #include <REGX52.H>
  2. #define smg P0
  3. typedef unsigned int U16;
  4. sbit S18=P2^0;
  5. sbit S19=P2^1;
  6. sbit S20=P2^2;
  7. void delay(U16 i)
  8. {
  9. while(i--);
  10. }
  11. int i;
  12. void an()
  13. {
  14.         if(S18==0)
  15.         {
  16.         delay(5);
  17.         if(S18==0)
  18.         {
  19.                 i++;
  20.                 if(i==9999)
  21.         {
  22.         i=0;
  23.         }
  24.         }
  25.         while(!S18);
  26.         }        
  27. if(S19==0)
  28.         {
  29.         delay(5);
  30.         if(S19==0)
  31.         {
  32.                 i--;
  33.                 if(i==0)
  34.         {
  35.         i=9999;
  36.         }
  37.         }
  38.         while(!S19);
  39.         }
  40.         if(S20==0)
  41.         {
  42.         delay(5);
  43.         if(S20==0)
  44.         {
  45.                 i=0;
  46.         }
  47.         while(!S20);
  48.         }
  49. }
  50. void main()
  51. {
  52.         
  53.         int q,b,s,g;
  54.         int sz[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  55.         i=0;
  56. while(1)
  57. {

  58.   an();
  59.   q=i/1000;
  60.   b=i%1000/100;
  61.   s=i%100/10;
  62.   g=i%10;
  63.         delay(5);
  64.         P0_0=1;
  65.         P0_1=1;
  66.   P0_2=1;
  67.         P0_3=1;
  68.         
  69.         
  70.         P0_0=0;
  71.         P1=sz[q];
  72.         P0_0=1;
  73.         P1=0xff;
  74.         delay(5);
  75.         
  76.         P0_1=0;
  77.         P1=sz[b];
  78.         P0_1=1;
  79.         P1=0xff;
  80.         delay(5);
  81.         
  82.         P0_2=0;
  83.         P1=sz[s];
  84.         P0_2=1;
  85.         P1=0xff;
  86.         delay(5);
  87.         
  88.         P0_3=0;
  89.         P1=sz[g];
  90.         P0_3=1;
  91.         P1=0xff;
  92.         delay(5);        
  93. }
  94. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:712097 發(fā)表于 2023-6-14 16:46 | 只看該作者
單片機(jī)IO驅(qū)動能力不足,加三極管或MOS管驅(qū)動。
回復(fù)

使用道具 舉報(bào)

板凳
ID:332444 發(fā)表于 2023-6-14 16:48 | 只看該作者
調(diào)節(jié)數(shù)碼段顯示時(shí)間到合適
回復(fù)

使用道具 舉報(bào)

地板
ID:883242 發(fā)表于 2023-6-14 17:06 | 只看該作者
74行消隱和75行延遲顯然搞反了,下面一大堆類似錯(cuò)誤。

正常流程是:
顯示
延遲
消隱(防止本段顯示數(shù)據(jù)漏到下一段,關(guān)閉顯示)
顯示下一個(gè)
延遲
消隱
…………

你剛剛顯示就關(guān)閉了,然后延遲,反復(fù)循環(huán),到底是幾個(gè)意思???
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2023-6-14 20:46 | 只看該作者
數(shù)碼管顯示時(shí)間太短,消隱時(shí)間太長。改一下。
  1. #include <REG52.H>
  2. #define smg P0
  3. typedef unsigned int U16;

  4. sbit S18=P2^0;
  5. sbit S19=P2^1;
  6. sbit S20=P2^2;

  7. unsigned char sz[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  8. unsigned char qbsg[4];
  9. unsigned char i;
  10. int num;

  11. void delay(U16 i)
  12. {
  13.         while(i--);
  14. }

  15. void an()
  16. {
  17.         static unsigned char count=0;
  18.         static bit sign=0;
  19.         if(!S18||!S19||!S20)
  20.         {
  21.                 if(++count>=20 && sign==0)
  22.                 {
  23.                         sign=1;
  24.                         if(!S18)
  25.                         {
  26.                                 num++;
  27.                                 if(num>9999)num=0;
  28.                         }
  29.                         if(!S19)
  30.                         {
  31.                                 num--;
  32.                                 if(num<0)num=9999;
  33.                         }
  34.                         if(!S20)
  35.                         {
  36.                                 num=0;
  37.                         }
  38.                 }
  39.         }
  40.         else
  41.         {
  42.                 count=0;
  43.                 sign=0;
  44.         }
  45. }
  46. void main()
  47. {        
  48.         while(1)
  49.         {
  50.                 an();
  51.                 qbsg[0]=sz[num/1000%10];
  52.                 qbsg[1]=sz[num/100%10];
  53.                 qbsg[2]=sz[num/10%10];
  54.                 qbsg[3]=sz[num%10];

  55.                 P1=0xff;
  56.                 P0=0x01<<i;
  57.                 P1=qbsg[i];
  58.                 i=++i%4;
  59.                 delay(100);
  60.         }
  61. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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