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

QQ登錄

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

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
共陰極數(shù)碼管做數(shù)字時(shí)鐘有一段微亮。仿真沒(méi)有問(wèn)題,實(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 (339.58 KB, 下載次數(shù): 102)

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

使用道具 舉報(bào)

沙發(fā)
ID:384109 發(fā)表于 2022-11-8 22:20 | 只看該作者
消隱時(shí)間不夠
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-11-8 22:20 | 只看該作者
不太像是軟件問(wèn)題,不做顯示代碼,看這個(gè)段是否還是微亮???
回復(fù)

使用道具 舉報(bào)

地板
ID:965189 發(fā)表于 2022-11-8 22:31 | 只看該作者
用萬(wàn)用表檢查一下硬件電路可以知道是不是硬件問(wèn)題。
回復(fù)

使用道具 舉報(bào)

5#
ID:585817 發(fā)表于 2022-11-8 23:22 | 只看該作者
這是讓它顯示全8的實(shí)物圖,還是這一段有問(wèn)題,電路問(wèn)題還是數(shù)碼管問(wèn)題?

15e7375b4eaa72a8cdddf3528d0f51a.jpg (4.87 MB, 下載次數(shù): 98)

15e7375b4eaa72a8cdddf3528d0f51a.jpg
回復(fù)

使用道具 舉報(bào)

6#
ID:585817 發(fā)表于 2022-11-8 23:38 | 只看該作者
讓它顯示全8還是有問(wèn)題

15e7375b4eaa72a8cdddf3528d0f51a.jpg (4.87 MB, 下載次數(shù): 94)

15e7375b4eaa72a8cdddf3528d0f51a.jpg
回復(fù)

使用道具 舉報(bào)

7#
ID:1005692 發(fā)表于 2022-11-9 08:11 | 只看該作者
389156621 發(fā)表于 2022-11-8 23:38
讓它顯示全8還是有問(wèn)題

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

使用道具 舉報(bào)

8#
ID:1050867 發(fā)表于 2022-11-9 08:15 | 只看該作者
軟件應(yīng)該是沒(méi)有太大問(wèn)題,萬(wàn)用表查一下硬件是否出現(xiàn)問(wèn)題
回復(fù)

使用道具 舉報(bào)

9#
ID:121859 發(fā)表于 2022-11-9 09:49 | 只看該作者
第一,沒(méi)有消隱處理。第二,延時(shí)函數(shù)放錯(cuò)了地方,應(yīng)該放在鎖存之后。
回復(fù)

使用道具 舉報(bào)

10#
ID:123289 發(fā)表于 2022-11-9 11:15 | 只看該作者
多為硬件不良。
回復(fù)

使用道具 舉報(bào)

11#
ID:220661 發(fā)表于 2022-11-9 13:17 | 只看該作者
很大可能性是焊接時(shí)間過(guò)長(zhǎng),對(duì)應(yīng)引腳內(nèi)LED燈芯損壞了。
回復(fù)

使用道具 舉報(bào)

12#
ID:585817 發(fā)表于 2022-11-9 16:32 | 只看該作者
我再試試,感謝各位大佬。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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