4836|9

30

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

51做的数码管时钟。(第一次发帖 心情比较激动!) [复制链接]

本人是单片机初学者,菜鸟级别的。。。O(∩_∩)O~~~      初次发帖!请大家多多指教。  
  这是我做的数码管时钟程序,写的不是很好,反正我感觉很烂,刚开始学习 。 希望各位高人指点一二!  附上代码:


#include
#include
#define uchar unsigned char
#define uint unsigned int
void KEYSCAN();
uchar TEMP,S1,S2,M1,M2,H1,H2;
uchar flag,a,b,NUM;
sbit LED=P3^3;
sbit K1=P3^7;
sbit K2=P3^6;
sbit K3=P3^5;
sbit K4=P3^4;
/********共阳极数码管编码表********************/
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar SECOND,MINUTE,HOUR;

/******初始化子程序*****************************/
void init()
{
        TMOD=0x01;                                  //定时器工作方式
        TH0=(65535-50000)/256;
        TL0=(65535-50000)%256;         //装初值
        EA=1;                                         //开总中断
        ET0=1;                                         //开定时器0中断
        TR0=1;                                         //启动定时器0
        SECOND=0;
        MINUTE=34;
        HOUR=12;
        LED=1;
}

/**********延时子程序****************************/
void delay_ms(uchar z)
{
        uchar x,y;
        for(y=z;y>0;y--)
                for(x=110;x>0;x--);

}
/**********显示子函数***************************/
void display(uchar M1,M2,H1,H2)
{
        P2=0xfb;
        P0=table[M1];
        delay_ms(5);
       
        P2=0xf7;
        P0=table[M2];                                                                                                                                   
        delay_ms(5);

        P2=0xfe;
        P0=table[H1];
        delay_ms(5);

        P2=0xfd;
        P0=table[H2];
        delay_ms(5);
}          
/**********定时器中断子程序********************/
void timer0() interrupt 1
{
        TH0=(65535-50000)/256;
        TL0=(65535-50000)%256;
        TEMP++;
        if(TEMP==10)
        {
                LED=~LED;
        }
        if(TEMP==20)
        {
                TEMP=0;
                flag=1;
                LED=~LED;
                SECOND++;
                if(SECOND==60)
                {
                        SECOND=0;
                        MINUTE++;
                        if(MINUTE==60)
                        {       
                                MINUTE=0;
                                HOUR++;
                                if(HOUR==24)
                                {
                                        HOUR=0;
                                }
                        }                                                                         
                }
        }

          
}
/*********主函数*************************/
void main()
{
        init();
                P1=0xff;
                a=0xfe;

        while(1)
        {        
       
                H1=HOUR/10;
                H2=HOUR%10;
                M1=MINUTE/10;
                M2=MINUTE%10;
                S1=SECOND/10;
                S2=SECOND%10;
                display(M1,M2,H1,H2);
                KEYSCAN();
                if(flag==1)
                {
                        flag=0;
                        P1=a;
                        a=_cror_(a,1);
                }
        }
}
/******键盘扫描函数********************/
void KEYSCAN()
{       
        uint i;

        if(K1==0)
                {
                        delay_ms(5);
                        if(K1==0)
                                {
       

                                        NUM++;
                                        if(NUM==3)
                                                NUM=0;

                                 }

                                switch(NUM)
                                        {
                                                case 1 :
                                                                                 b=1;
                                                                                while(b)
                                                                                        {               
                                                                                                               
                                                                                                        H1=HOUR/10;
                                                                                                        H2=HOUR%10;
                                                                                                        M1=MINUTE/10;
                                                                                                        M2=MINUTE%10;               
                                                                                                for(i=100;i>0;i--)
                                                                                                        {
                                                                                                                P2=0xfb;
                                                                                                                P0=table[M1];
                                                                                                                delay_ms(5);
                                                                                                                               
                                                                                                                P2=0xf7;
                                                                                                                P0=table[M2];                                                                                                                                   
                                                                                                                delay_ms(5);
                                                                                                               
                                                                                                                P2=0xfe;
                                                                                                                P0=table[H1];
                                                                                                                delay_ms(5);
                                                                                                                       
                                                                                                                P2=0xfd;
                                                                                                                P0=table[H2];
                                                                                                                delay_ms(5);
                                                                                                        }
                                                                                                for(i=100;i>0;i--)
                                                                                                        {
                                                                                                                P2=0xff;
                                                                                                                P0=table[M1];
                                                                                                                delay_ms(5);
                                                                                                                               
                                                                                                                P2=0xff;
                                                                                                                P0=table[M2];                                                                                                                                   
                                                                                                                delay_ms(5);
                                                                                                               
                                                                                                                P2=0xfe;
                                                                                                                P0=table[H1];
                                                                                                                delay_ms(5);
                                                                                                                       
                                                                                                                P2=0xfd;
                                                                                                                P0=table[H2];
                                                                                                                delay_ms(5);
                                                                                                        }
                                                                                        if(K1==0)
                                                                                                {
                                                                                                       
                                                                                                        delay_ms(5);
                                                                                                        if(K1==0)
                                                                                                          {
                                                                                                          
                                                                                                                NUM++;
                                                                                                                break;
                                                                                                           }
                                                                                                }
                                                                                        if(K2==0)
                                                                                                {
                                                                                                       
                                                                                                        delay_ms(5);
                                                                                                        if(K2==0)
                                                                                                          {
                                                                                                          
                                                                                                                MINUTE++;
                                                                                                                if(MINUTE==60)
                                                                                                                        MINUTE=0;
                                                                                                           }
                                                                                                }
                                                                                        if(K3==0)
                                                                                                {
                                                                                                        delay_ms(5);
                                                                                                        if(K3==0)
                                                                                                          {
                                                                                                          
                                                                                                                MINUTE--;
                                                                                                                if(MINUTE<0)
                                                                                                                        MINUTE=59;
                                                                                                           }
                                                                                                }
                                                                                        if(K4==0)
                                                                                                {
                                                                                                        delay_ms(5);
                                                                                                        if(K4==0)
                                                                                                                {
                                                                                                                b=0;
                                                                                                                }
                                                                                                }
                               
                                                                                };  break;               
                                                       
                                                                                       
                                       
                                                   case 2:
                                                                                                                                    b=1;
                                                                                                                                while(b)
                                                                                                                                        {               
                                                                                                                                                               
                                                                                                                                                        H1=HOUR/10;
                                                                                                                                                        H2=HOUR%10;
                                                                                                                                                        M1=MINUTE/10;
                                                                                                                                                        M2=MINUTE%10;               
                                                                                                                                                for(i=100;i>0;i--)
                                                                                                                                                        {
                                                                                                                                                                P2=0xfb;
                                                                                                                                                                P0=table[M1];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                               
                                                                                                                                                                P2=0xf7;
                                                                                                                                                                P0=table[M2];                                                                                                                                   
                                                                                                                                                                delay_ms(5);
                                                                                                                                                               
                                                                                                                                                                P2=0xfe;
                                                                                                                                                                P0=table[H1];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                       
                                                                                                                                                                P2=0xfd;
                                                                                                                                                                P0=table[H2];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                        }
                                                                                                                                                for(i=100;i>0;i--)
                                                                                                                                                        {
                                                                                                                                                                P2=0xfb;
                                                                                                                                                                P0=table[M1];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                               
                                                                                                                                                                P2=0xf7;
                                                                                                                                                                P0=table[M2];                                                                                                                                   
                                                                                                                                                                delay_ms(5);
                                                                                                                                                               
                                                                                                                                                                P2=0xff;
                                                                                                                                                                P0=table[H1];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                       
                                                                                                                                                                P2=0xff;
                                                                                                                                                                P0=table[H2];
                                                                                                                                                                delay_ms(5);
                                                                                                                                                        }
                                                                                                                                                if(K2==0)
                                                                                                                                                        {
                                                                                                                                                               
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                if(K2==0)
                                                                                                                                                                  {
                                                                                                                                                                  
                                                                                                                                                                        HOUR++;
                                                                                                                                                                        if(HOUR==24)
                                                                                                                                                                                HOUR=0;
                                                                                                                                                                   }
                                                                                                                                                        }
                                                                                                                                                if(K3==0)
                                                                                                                                                        {
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                if(K3==0)
                                                                                                                                                                  {
                                                                                                                                                                  
                                                                                                                                                                        HOUR--;
                                                                                                                                                                        if(HOUR<0)
                                                                                                                                                                                HOUR=24;
                                                                                                                                                                   }
                                                                                                                                                        }
                                                                                                                                                if(K4==0)
                                                                                                                                                        {
                                                                                                                                                                delay_ms(5);
                                                                                                                                                                if(K4==0)
                                                                                                                                                                        {
                                                                                                                                                                                b=0;
                                                                                                                                                                        }
                                                                                                                                                        }

                                                                                                                                        } ;   break;

                                        case 3: NUM=0   ;       
                                                       
                                                       
                                                                                       
                                }
                        }
                                          
                                       
                                
}
此帖出自51单片机论坛

最新回复

  详情 回复 发表于 2015-12-17 16:05
点赞 关注(1)
 

回复
举报

10

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
赞一个
此帖出自51单片机论坛
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢楼上!
此帖出自51单片机论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

4
 
新手还不错啦,继续努力加油啊
此帖出自51单片机论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

5
 
我也是初学者,可以的话,大家交流一下,试一下用时钟芯片ds1302,谭后来个可以修改的,看看行不行哦
此帖出自51单片机论坛
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 4楼 林夕_26 的帖子

谢谢!
此帖出自51单片机论坛
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 5楼 林发扬 的帖子

很希望和你交流!!   
  我手上正好有数码管,就自己接了一个!  我手头没有ds1302芯片,所以没用时钟芯片。
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

8
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

9
 
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

10
 
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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