2608|5

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

一个简单电子钟调试 [复制链接]

#include
#define uchar unsigned char
#define uint  unsigned int

uchar code table[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   //位选,控制那个数码管亮。
uchar code table1[12]={0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09,0x00,0xfd}; //共阴极0~9,“灭”,“-”
uchar data timedata[3]={0x00,0x00,0x00};             //时间缓冲区,分别为:秒,时,分。
uchar data   dis[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};//时间缓冲区,初始化显示00-00-00。
uchar  data  tt=0,con=0,con1=0,con2=0;
//**************延时函数*********************************
void delay(uint del)
{
        uchar i, j;
        for(i=0; i         for(j=0; j<=148; j++);

}
//****************数码管显示******************************
void scan()
{
  uchar         k;
  dis[0]=timedata[0]%10; dis[1]=timedata[0]/10;
  dis[3]=timedata[1]%10; dis[4]=timedata[1]/10;
  dis[6]=timedata[2]%10; dis[7]=timedata[2]/10;

  for (k=0;k<8;k++)
       {
                     P0=table1[dis[k]];
                  P2=table[k];
                  delay(1);
                  P2=0x00;
           }

}
//***************主函数****************************
void main()
{
  TMOD=0x01;
  ET0=1;
  TR0=1;
  TH0=0x40;
  TL0=0x00;
  EA=1;
       
  while(1)
  {
                 scan();
  }
}


//***************定时器函数***************************
void timer0() interrupt 1
{
   
   TH0=0x40;
   TL0=0x00;
   tt++;
   if(tt==20)
   {
            tt=0;
         timedata[0]++;
         if(timedata[0]==60)   
            {
                   timedata[0]=0;
                   timedata[1]++;
                   if(timedata[1]==60)
                      {
                                  timedata[1]=0;
                                timedata[2]++;
                                if(timedata[2]==24)
                                   {
                                            timedata[2]=0 ;
                                  
                                   }
                          }
               
               
                }

  }
   
       
   
}



为什么我的程序出现的是00 00 00.
我想要的是00-00-00.没有中间的“-”。
我觉得for (k=0;k<8;k++)
       {
                     P0=table1[dis[k]];
                  P2=table[k];
                  delay(1);
                  P2=0x00;
           }
这个里面包括了呀。

最新回复

显示函数没有显示— 加上试试   详情 回复 发表于 2010-3-14 22:17
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
P0=table1[dis[k]];
这个table1一共才12个,dis[k]的值是否在0-11呢?
dis[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};//
0xfd是否该改为0x0b?
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
dis[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};//
还有你这个数组里的值都只能在0-11之类,才能正确指向table1里的值,照你这样的定义,若不是在scan函数开头有数值刷新,你得到的将是33 33 33.
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
dis的值只能在0-11之内,就是table1的index,呵呵,改个错别字.
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
路过,学习,楼主不错不错
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
显示函数没有显示— 加上试试
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表