找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1564|回复: 11
打印 上一主题 下一主题
收起左侧

单片机驱动数码管有一段微亮,如何修改程序?

[复制链接]
跳转到指定楼层
楼主
共阴极数码管做数字时钟有一段微亮。仿真没有问题,实物出现这样现象,单片机程序如下:

单片机源程序如下:
  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.         }
复制代码

        

52f355ebcbe0952933359fef078141a.jpg (339.58 KB, 下载次数: 67)

52f355ebcbe0952933359fef078141a.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:384109 发表于 2022-11-8 22:20 | 只看该作者
消隐时间不够
回复

使用道具 举报

板凳
ID:883242 发表于 2022-11-8 22:20 | 只看该作者
不太像是软件问题,不做显示代码,看这个段是否还是微亮???
回复

使用道具 举报

地板
ID:965189 发表于 2022-11-8 22:31 | 只看该作者
用万用表检查一下硬件电路可以知道是不是硬件问题。
回复

使用道具 举报

5#
ID:585817 发表于 2022-11-8 23:22 | 只看该作者
这是让它显示全8的实物图,还是这一段有问题,电路问题还是数码管问题?

15e7375b4eaa72a8cdddf3528d0f51a.jpg (4.87 MB, 下载次数: 67)

15e7375b4eaa72a8cdddf3528d0f51a.jpg
回复

使用道具 举报

6#
ID:585817 发表于 2022-11-8 23:38 | 只看该作者
让它显示全8还是有问题

15e7375b4eaa72a8cdddf3528d0f51a.jpg (4.87 MB, 下载次数: 63)

15e7375b4eaa72a8cdddf3528d0f51a.jpg
回复

使用道具 举报

7#
ID:1005692 发表于 2022-11-9 08:11 | 只看该作者
389156621 发表于 2022-11-8 23:38
让它显示全8还是有问题

有问题数码管和其他位置的互换一下,确认下是不是排除一下是不是硬件问题
回复

使用道具 举报

8#
ID:1050867 发表于 2022-11-9 08:15 | 只看该作者
软件应该是没有太大问题,万用表查一下硬件是否出现问题
回复

使用道具 举报

9#
ID:121859 发表于 2022-11-9 09:49 | 只看该作者
第一,没有消隐处理。第二,延时函数放错了地方,应该放在锁存之后。
回复

使用道具 举报

10#
ID:123289 发表于 2022-11-9 11:15 | 只看该作者
多为硬件不良。
回复

使用道具 举报

11#
ID:220661 发表于 2022-11-9 13:17 | 只看该作者
很大可能性是焊接时间过长,对应引脚内LED灯芯损坏了。
回复

使用道具 举报

12#
ID:585817 发表于 2022-11-9 16:32 | 只看该作者
我再试试,感谢各位大佬。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表