找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)驅(qū)動數(shù)碼管有一段微亮,如何修改程序?

[復(fù)制鏈接]
ID:585817 發(fā)表于 2022-11-8 21:40 | 顯示全部樓層 |閱讀模式
共陰極數(shù)碼管做數(shù)字時(shí)鐘有一段微亮。仿真沒有問題,實(shí)物出現(xiàn)這樣現(xiàn)象,單片機(jī)程序如下:

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. sbit P0_0 = P0^0;
  4. sbit P0_1 = P0^1;
  5. sbit P0_2 = P0^2;
  6. sbit P0_3 = P0^3;
  7. sbit P0_4 = P0^4;
  8. sbit P0_5 = P0^5;

  9. sbit key_hour=P3^2;//s1
  10. sbit key_min=P3^3;//s2
  11. sbit key_sec=P3^4;//s3
  12. sbit key_rst=P3^5;//s4
  13. static unsigned char second,minute,hour;
  14. unsigned int tcount;
  15. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  16. void delay(uchar i)
  17. {
  18.   uchar j,k;
  19.   for(j=i;j>0;j--)
  20.     for(k=125;k>0;k--);
  21. }

  22. void display()
  23. {

  24.    P1=table[hour/10];
  25.    P0_0 = 0;
  26.    delay(5);
  27.    P0_0 = 1;

  28.    P1=(table[hour%10]|0x80);
  29.    P0_1 = 0;
  30.    delay(5);
  31.    P0_1 = 1;

  32.    P1=table[minute/10];
  33.    P0_2 = 0;
  34.    delay(5);
  35.    P0_2 = 1;

  36.    P1=(table[minute%10]|0x80);
  37.    P0_3 = 0;
  38.    delay(5);
  39.    P0_3 = 1;
  40.         
  41.          P1=table[second/10];
  42.    P0_4 = 0;
  43.    delay(5);
  44.    P0_4 = 1;

  45.    P1=table[second%10];
  46.    P0_5 = 0;
  47.    delay(5);
  48.    P0_5 = 1;

  49. }
  50. void main(void)
  51. {
  52.         
  53.                 TMOD=0x02;
  54.     TH0=0x06;
  55.     TL0=0x06;
  56.     TR0=1;
  57.     ET0=1;
  58.     EA=1;
  59. //hour=16,minute=48,second=0;        
  60. while(1)
  61. {
  62.         display();
  63.          
  64.                                          if(key_hour==0)
  65.                 {
  66.                         delay(10);
  67.                         if(key_hour==0)
  68.                         {
  69.                                 hour++;
  70.                                 if(hour==24)        hour=0;
  71.                         }
  72.                         while(!key_hour);
  73.                 }
  74.                                 if(key_min==0)
  75.                 {
  76.                         delay(10);
  77.                         if(key_min==0)
  78.                         {
  79.                                 minute++;
  80.                                 if(minute==60)        minute=0;
  81.                         }
  82.                         while(!key_min);
  83.                 }
  84.                                 if(key_sec==0)
  85.                 {
  86.                         delay(10);
  87.                         if(key_sec==0)
  88.                         {
  89.                                 second++;
  90.                                 if(second==24)        second=0;
  91.                         }
  92.                         while(!key_sec);
  93.                 }
  94.                         if(key_rst==0)
  95.                 {
  96.                         delay(10);
  97.                         if(key_rst==0)
  98.                         {
  99.                                 hour=0;
  100.                                 minute=0;
  101.                                 second=0;
  102.                         }
  103.                         while(!key_rst);
  104.                 }
  105. }
  106. }

  107. void t0(void) interrupt 1 using 0
  108.   {        
  109.                   tcount++;
  110.                            if(tcount==5000)
  111.           {
  112.                         tcount=0;
  113.             second++;
  114.                  if(second==60)
  115.                   {
  116.                                 second=0;
  117.                     minute++;
  118.                     if(minute==60)
  119.                          {
  120.                                  minute=0;
  121.                            hour++;
  122.                           if(hour==24)
  123.                            {
  124.                                  hour=0;minute=0;second=0;
  125.                            }
  126.                          }
  127.                   }
  128.           }
  129.         }
復(fù)制代碼

        

52f355ebcbe0952933359fef078141a.jpg
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2022-11-8 22:20 | 顯示全部樓層
消隱時(shí)間不夠
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-11-8 22:20 | 顯示全部樓層
不太像是軟件問題,不做顯示代碼,看這個(gè)段是否還是微亮???
回復(fù)

使用道具 舉報(bào)

ID:965189 發(fā)表于 2022-11-8 22:31 | 顯示全部樓層
用萬用表檢查一下硬件電路可以知道是不是硬件問題。
回復(fù)

使用道具 舉報(bào)

ID:585817 發(fā)表于 2022-11-8 23:22 | 顯示全部樓層
這是讓它顯示全8的實(shí)物圖,還是這一段有問題,電路問題還是數(shù)碼管問題?
15e7375b4eaa72a8cdddf3528d0f51a.jpg
回復(fù)

使用道具 舉報(bào)

ID:585817 發(fā)表于 2022-11-8 23:38 | 顯示全部樓層
讓它顯示全8還是有問題
15e7375b4eaa72a8cdddf3528d0f51a.jpg
回復(fù)

使用道具 舉報(bào)

ID:1005692 發(fā)表于 2022-11-9 08:11 | 顯示全部樓層
389156621 發(fā)表于 2022-11-8 23:38
讓它顯示全8還是有問題

有問題數(shù)碼管和其他位置的互換一下,確認(rèn)下是不是排除一下是不是硬件問題
回復(fù)

使用道具 舉報(bào)

ID:1050867 發(fā)表于 2022-11-9 08:15 | 顯示全部樓層
軟件應(yīng)該是沒有太大問題,萬用表查一下硬件是否出現(xiàn)問題
回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-11-9 09:49 | 顯示全部樓層
第一,沒有消隱處理。第二,延時(shí)函數(shù)放錯了地方,應(yīng)該放在鎖存之后。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2022-11-9 11:15 | 顯示全部樓層
多為硬件不良。
回復(fù)

使用道具 舉報(bào)

ID:220661 發(fā)表于 2022-11-9 13:17 | 顯示全部樓層
很大可能性是焊接時(shí)間過長,對應(yīng)引腳內(nèi)LED燈芯損壞了。
回復(fù)

使用道具 舉報(bào)

ID:585817 發(fā)表于 2022-11-9 16:32 | 顯示全部樓層
我再試試,感謝各位大佬。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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