找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2306|回复: 9
收起左侧

为什么数码管显示不出来,换别的单片机程序验证硬件连接没问题

[复制链接]
ID:66679 发表于 2020-4-18 21:13 | 显示全部楼层 |阅读模式
为什么数码管显示不出来,换别的程序验证硬件连接没问题。
简易电子时钟.png



#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         
uchar code table2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void display();
void delay(uint t);
void time_init();
void time_pro();
uint miao=0;                //秒
uint fen=0;                        //分
uint shi=0;                    //时
uint n=0;                        //计数
/***********************************
延时函数                                                                  
***********************************/
void  delay(uint t)                                
{
        uchar i;
        while(t--)
        { for(i=0;i<125;i++); }
}


/***********************************
显示函数                                                                  
***********************************/
void display()
{                  
      P2=0x01;
      P0=table1[shi/10];
      delay(4);
          P0=0x00;
          P2=0x02;
      P0=table2[shi%10];
      delay(4);
          P0=0x00;

           P2=0x04;
      P0=table1[fen/10];
      delay(4);
          P0=0x00;
      P2=0x08;
      P0=table2[fen%10];
      delay(4);
          P0=0x00;

          P2=0x10;
      P0=table1[miao/10];
      delay(4);
          P0=0x00;
      P2=0x20;
      P0=table1[miao%10];
      delay(4);
          P0=0x00;
          }         
/***********************************
定时器初始化函数                                                                  
***********************************/         
void time_init()                                                   
{
    TMOD=0x01;                                                          //选择方式1
        TH0=(65536-50000)/256;                                                         
        TL0=(65536-50000)%256;                                                         
        EA=1;                                                                  //开总中断
        ET0=1;                                                                  //开定时器0中断
        TR0=1;                                                                  //开定时器0
}         
/***********************************
计时处理函数                                                                  
***********************************/
void time_pro()
{
if(miao==60)
  {
        miao=0;
        fen++;
        if(fen==60)
        {
                fen=0;
                shi++;
                if(shi==24)
                {
                        shi=0;
                         }
    }
  }
}
/***********************************
定时器中断函数                                                                  
***********************************/     
void timer() interrupt 1                                          //定时器0中断
{

         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
     n++;
         if(n==20)                                                                 //当n=20时,表示1s到了
         {         
             n=0;
             miao++;
                                  }
}
/***********************************
主函数                                                                  
***********************************/
void main()
{
   time_init();
   while(1)
   {
   time_pro();
   display();
   }
}

回复

使用道具 举报

ID:342451 发表于 2020-4-18 22:31 | 显示全部楼层
检查下数码管在仿真里的共阴共阳
回复

使用道具 举报

ID:732506 发表于 2020-4-19 09:44 | 显示全部楼层
51的p0口和别的口不一样,很多时候要加5v上拉。可以换到p1口试试,如果正常,就是上拉的问题。
回复

使用道具 举报

ID:66679 发表于 2020-4-19 13:31 | 显示全部楼层
hotpet 发表于 2020-4-19 09:44
51的p0口和别的口不一样,很多时候要加5v上拉。可以换到p1口试试,如果正常,就是上拉的问题。

换了也还是不行,没有显示。
回复

使用道具 举报

ID:66679 发表于 2020-4-19 13:32 | 显示全部楼层
之一知足 发表于 2020-4-18 22:31
检查下数码管在仿真里的共阴共阳

仿真里是共阳极的,我用其它程序验证了。
回复

使用道具 举报

ID:66679 发表于 2020-4-19 13:33 | 显示全部楼层
恳请高手指点
回复

使用道具 举报

ID:213173 发表于 2020-4-19 16:46 | 显示全部楼层

楼主消隐码用错了,共阳应该P0=0xff;。 无标题.jpg



回复

使用道具 举报

ID:220661 发表于 2020-4-19 16:54 | 显示全部楼层
Q1-Q6接法不对,现在是射随器接法,不是饱和截止的开关接法。
回复

使用道具 举报

ID:66679 发表于 2020-4-20 11:04 | 显示全部楼层
wulin 发表于 2020-4-19 16:46
楼主消隐码用错了,共阳应该P0=0xff;。

不知道怎么消隐写成0了,看了好久没发现。谢谢指出,可以了。
回复

使用道具 举报

ID:733430 发表于 2020-4-20 12:35 | 显示全部楼层
检查一下程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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