| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2764 人关注过本帖
标题:显示时分秒,最后两个数码管一直显示0,不知道是不是time函数写错了,改了几 ...
取消只看楼主 加入收藏
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
结帖率:100%
收藏
 问题点数:0 回复次数:1 
显示时分秒,最后两个数码管一直显示0,不知道是不是time函数写错了,改了几次了,最后两个一直是0
程序代码:
#include<reg51.h>
void display();
void time();



void delay10ms(unsigned char i)             //延迟函数(for循环需要时间) 当第二层for函数为p=100时(经过测量),i为多少,延迟时间就是i*10ms
{                                         //目的是在两次灯亮之间空出时间
    int n,p;
       for(n=0;n<i;n++)
           for(p=0;p<200;p++);
}

unsigned int i;
unsigned int duanma[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xbf};
unsigned int weima[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned int s1=0,s=0,m=0,h=0,number=0;
unsigned int num[8]={0,0,10,0,0,10,0,0};

void main()
{
    
  //以下两行为片选语句,不可以删除。否则无法操作LED
    P2 = 0xa0;P0 = 0x00;P2 = 0;    //选中蜂鸣器,关闭蜂鸣器
    P2 = 0xC0;P0 = 0xFF;P2 = 0; //位选全部选中
    P2 = 0xE0;        //选中数码管              打开Y7
      while(1)
      {      
        time();
        display();       
      }
}
void display()
{
  for(i=0;i<8;i++)
  {
    number=num[i]; 
    P2=0xC0;P0=weima[i];P2=0;
    P2=0xE0;P0=duanma[number];P2=0;
    delay10ms(1);
    P0=0xFF;   
  }
}

void time()
{
  s1++;
  if(s1>=10)
  {    
    s1=0;
    num[7]=s%10;
    num[6]=s/10;
    ++s;
    if(s==60);
    {
      s=0;
      num[4]=m%10;
      num[3]=m/10;
      ++m;
      if(m==60)
      {
        m=0;
        num[1]=h%10;
        num[0]=h/10;
        ++h;
        if(h==24)
        {
          h=0;
        } 
      }
     }
    }
}  

搜索更多相关主题的帖子: int unsigned void 显示 num 
2020-04-08 18:49
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
收藏
得分:0 
已经好了,谢谢大家


程序代码:
#include<reg51.h>
void display();
void time();



void delay10ms(unsigned char i)             //延迟函数(for循环需要时间) 当第二层for函数为p=100时(经过测量),i为多少,延迟时间就是i*10ms
{                                         //目的是在两次灯亮之间空出时间
    int n,p;
       for(n=0;n<i;n++)
           for(p=0;p<200;p++);
}

unsigned int i;
unsigned int duanma[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xbf};
unsigned int weima[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned int s1=0,s=0,m=0,h=0,number=0;
unsigned int num[8]={0,0,10,0,0,10,0,0};

void main()
{
    
  //以下两行为片选语句,不可以删除。否则无法操作LED
    P2 = 0xa0;P0 = 0x00;P2 = 0;    //选中蜂鸣器,关闭蜂鸣器
    P2 = 0xC0;P0 = 0xFF;P2 = 0; //位选全部选中
    P2 = 0xE0;        //选中数码管              打开Y7
      while(1)
      {      
        time();
        display();       
      }
}
void display()
{
  for(i=0;i<8;i++)
  {
    number=num[i]; 
    P2=0xC0;P0=weima[i];P2=0;
    P2=0xE0;P0=duanma[number];P2=0;
    delay10ms(1);
    P0=0xFF;   
  }
}

void time()
{
  s1++;
  if(s1>=10)
  {    
    s1=0;
    num[7]=s%10;
    num[6]=s/10;
    ++s;
    if(s==60)
    {
      s=0;
      ++m;
      num[4]=m%10;
      num[3]=m/10;
      
      if(m==60)
      {    
        ++h;
        m=0;
        num[1]=h%10;
        num[0]=h/10;
        
        if(h==24)
        {
          h=0;
        } 
      }
     }
    }
}  

长风吹过
2020-04-08 19:46
快速回复:显示时分秒,最后两个数码管一直显示0,不知道是不是time函数写错了, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022352 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved