找回密码
 立即注册

QQ登录

只需一步,快速开始

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

带定时功能时钟问题,望各位指教一番

[复制链接]
跳转到指定楼层
楼主
ID:51589 发表于 2013-7-8 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


问题描述:烧入程序之后,LED显示如图所示,望各位指教




#include<AT89X51.h>
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99
,0x92,0x82,0xf8,0x80,0x90};//共阳数码管
uchar time,hour_now,min_now,sec_now,hour_a1,min_a1,sec_a1,key;
sbit beep=P3^7;
void delayms(uchar i)
{
while(i--);
}
void write(uchar num,chose)
{
uchar i;

for(i=0;i<2;i++)
    {
  P0=0xff;
     P2=~chose;//位选

     if(i==0)
       {
        P0=table[num%10];//段选
       }
     else
        P0=table[num/10];//段选
     
  chose=chose<<1;
     delayms(5000);
    }
}
void show()
{
P0=0xff;
P2=0xdb;
P0=0xbf;
delayms(5000);
}//-隔开时,分,秒显示
void init()
{
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar hour_now,uchar min_now,uchar sec_now)
{
  write(sec_now,0x01);
  write(min_now,0x08);
  write(hour_now,0x40);
  show();
}
void jianpanjiance()
{
uchar temp;
P1=0xfe;
temp=P1;
if(temp!=temp&0xf0)
   {  
    delayms(10000);
temp=P1;
if(temp!=temp&0xf0)
   {
    temp=P1;
    switch(temp)
    {
     case 0xee:
             key=1;
         break;
  case 0xde:
         key=2;
      break;
  case 0xbe:
         key=3;
      break;
  case 0x7e:
         key=4;
      break;
       }         
   }        
   }
while(temp!=0xf0)
        {
   temp=P1;
         temp=temp&0xf0;
        }

P1=0xfd;
temp=P1;
if(temp!=temp&0xf0)
   {  
    delayms(10000);
temp=P1;
if(temp!=temp&0xf0)
   {
    temp=P1;
    switch(temp)
    {
     case 0xed:
             key=5;
         break;
  case 0xdd:
         key=6;
      break;
  case 0xbd:
         key=7;
      break;
  case 0x7d:
         key=8;
      break;
       }         
   }        
   }
while(temp!=0xf0)
        {
   temp=P1;
         temp=temp&0xf0;
  }
P1=0xfb;
temp=P1;
if(temp!=temp&0xf0)
   {  
    delayms(10000);
temp=P1;
if(temp!=temp&0xf0)
   {
    temp=P1;
    switch(temp)
    {
     case 0xeb:
             key=9;
         break;
  case 0xdb:
         key=10;
      break;
  case 0xbb:
         key=11;
      break;
  case 0x7b:
         key=12;
      break;
       }         
   }        
   }
while(temp!=0xf0)
        {
   temp=P1;
         temp=temp&0xf0;
  }
P1=0xf7;
temp=P1;
if(temp!=temp&0xf0)
   {  
    delayms(10000);
temp=P1;
if(temp!=temp&0xf0)
   {
    temp=P1;
    switch(temp)
    {
     case 0xe7:
             key=13;
         break;
  case 0xd7:
         key=14;
      break;
  case 0xb7:
         key=15;
      break;
  case 0x77:
         key=16;
      break;
       }         
   }        
   }
while(temp!=0xf0)
        {
   temp=P1;
         temp=temp&0xf0;
  }
}


void display_key(uchar hour,uchar min,uchar sec,tkey)
{
uchar i=0,take_key;
uchar data timenum[]={0,0,0,0,0,0};
jianpanjiance();
if(key==tkey)
   {
    take_key=1;
    timenum[0]=hour/10;
timenum[1]=hour%10;
timenum[2]=min/10;
timenum[3]=min%10;
while(take_key==1)
{
  jianpanjiance();
  if(key<11)
    {
     i++;
  timenum[i-1]=key;
  key=17;
    }
  if(key==12)
    take_key=0;
  if(i==6)
    take_key=0;
  hour=timenum[0]*10+timenum[1];
  min=timenum[2]*10+timenum[3];
  sec=timenum[4]*10+timenum[5];
  display(hour,min,sec);
}
    if(sec>59)
   sec=0;
if(min>59)
   min=0;
if(hour>23)
   hour=0;
if(key==11)
   {
    sec_now=sec;
    min_now=min;
    hour_now=hour;
   }
if(key==13)
   {
    sec_a1=sec;
    min_a1=min;
    hour_a1=hour;
   }   
   }
}
void main()
{
hour_now=23;
min_now=37;
sec_now=50;
display(hour_now,min_now,sec_now);
init();
while(1)
{
   display(hour_now,min_now,sec_now);
   
   display_key(hour_now,min_now,sec_now,11);
  
   display_key(hour_a1,min_a1,sec_a1,13);
}
}
void T0_Time() interrupt 1
{
TH0=0x4c;
TL0=0x00;
time++;
if(time==20)
      {  
    time=0;
      if(hour_now==hour_a1&min_now==min_a1)
      beep=0;
    else
      beep=1;
   
       sec_now++;
    if(sec_now==60)
      {  
       sec_now=0;
       min_now++;
        if(min_now==60)
         {
          min_now=0;
          hour_now++;
          if(hour_now==24)
            {
             hour_now=0;
           }
        }
      }
   }
}

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

使用道具 举报

沙发
ID:1 发表于 2013-7-8 23:00 | 只看该作者
工程文件上传上来 我看看
回复

使用道具 举报

板凳
ID:51589 发表于 2013-7-10 00:21 | 只看该作者
admin 发表于 2013-7-8 23:00
工程文件上传上来 我看看

Desktop.zip (22.71 KB, 下载次数: 3)


回复

使用道具 举报

地板
ID:51589 发表于 2013-7-10 00:23 | 只看该作者
admin 发表于 2013-7-8 23:00
工程文件上传上来 我看看

工程文件 Desktop.zip (22.71 KB, 下载次数: 5)



回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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