模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

680查看 | 3回复

[DIY交流] 请教个数码管时钟问题

[复制链接]
发表于 2017-1-19 21:00:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这些源码只是循环计算24小时的时间,
请教各位大神  这样的时钟可行吗?

实验性质,暂时没添加其他功能,


  1. #include <STC12C5A60S2.H>


  2. sbit DA=P0^0;                        //数码管各引脚定义
  3. sbit DB=P0^1;
  4. sbit DC=P0^2;
  5. sbit DD=P0^3;
  6. sbit DE=P0^4;
  7. sbit DF=P0^5;
  8. sbit DG=P0^6;
  9. sbit DP=P0^7;

  10. sbit B1=P2^4;                        //
  11. sbit B2=P2^7;
  12. sbit B3=P2^6;
  13. sbit B4=P2^5;


  14. unsigned char display_time;        //

  15. unsigned char Data1;        //小时十位
  16. unsigned char Data2;        //小时个位
  17. unsigned char Data3;        //分钟十位
  18. unsigned char Data4;        //分钟个位
  19. unsigned int count;

  20. void Delay1ms()                //@12.000MHz
  21. {
  22.         unsigned char i, j;

  23.         i = 12;
  24.         j = 169;
  25.         do
  26.         {
  27.                 while (--j);
  28.         } while (--i);
  29. }

  30. void delay_n_ms(unsigned int n) //
  31. {
  32.         while(n)         
  33.         {
  34.                 Delay1ms();
  35.                 n=n-1;//
  36.         }   
  37. }


  38.    void display(unsigned char x)//共阳极数码管
  39. {
  40.         if(x==0){DA=DB=DC=DD=DE=DF=0;DG=DP=1;}//显示0
  41.         if(x==1){DB=DC=0;DA=DD=DE=DF=DG=DP=1;}//显示1
  42.         if(x==2){DA=DB=DG=DE=DD=0;DC=DF=DP=1;}//。。。
  43.         if(x==3){DA=DB=DC=DD=DG=0;DE=DF=DP=1;}//。。。
  44.         if(x==4){DB=DC=DF=DG=0;DA=DD=DE=DP=1;}//
  45.         if(x==5){DA=DC=DD=DF=DG=0;DB=DE=DP=1;}
  46.         if(x==6){DA=DC=DD=DE=DF=DG=0;DB=DP=1;}
  47.         if(x==7){DA=DB=DC=0;DD=DE=DF=DG=DP=1;}
  48.         if(x==8){DA=DB=DC=DD=DE=DF=DG=0;DP=1;}
  49.         if(x==9){DA=DB=DC=DD=DF=DG=0;DE=DP=1;}
  50. }

  51. main()
  52. {
  53.       P2M0=0XF0;
  54.         Data1=Data2=Data3=Data4=0;//初始化
  55.         while(1)
  56.         {
  57.                 delay_n_ms(4);//周期为4ms
  58.             count++;
  59.                                         if(count>15000)//一秒计数
  60.                                         {
  61.                                                 count=0;
  62.                                                                         Data4++;
  63.                                                if(Data4>9)
  64.                                                                  {
  65.                                                                          Data4=0;
  66.                                                                
  67.                                                                          Data3++;
  68.                                                                          
  69.                                                                        
  70.                                                                  
  71.                                                                  if(Data3>5)
  72.                                                                  {
  73.                                                                          Data3=0;
  74.                                                                          Data2++;
  75.                                                                          if(Data1<2)
  76.                                                                          {
  77.                                                                                  if(Data2>9)
  78.                                                                                  {
  79.                                                                                          Data1++;
  80.                                                                                          Data2=0;
  81.                                                                                  }
  82.                                                                          }
  83.                                                                          if(Data1==2)
  84.                                                                          {
  85.                                                                                  if(Data2>3)
  86.                                                                                  {
  87.                                                                                          Data1=0;
  88.                                                                                          Data2=0;
  89.                                                                                  }
  90.                                                                          }
  91.                                                                        
  92.                                                                  }
  93.                                                          }

  94.                                                          }
  95.                                                  
  96.                                        
  97.                                                                        
  98.                                                                        
  99.             
  100.                
  101.                 ///////////////////////////////////////////////////////
  102.                 //  萝丽数码管教程模块化显示程序
  103.                
  104.                 display_time=display_time+1;
  105.                 if(display_time>3)
  106.                 {
  107.                         display_time=0;  //0?1?2?3 ????
  108.                 }
  109.                
  110.                 if(display_time==0)//?0?????????
  111.                 {
  112.                         B1=1;B2=0;B3=0;B4=0;        
  113.                         display(Data1);                //???1???
  114.                 }
  115.                
  116.                 if(display_time==1)//?1?????????
  117.                 {
  118.                         B1=0;B2=1;B3=0;B4=0;        
  119.                         display(Data2);                //???2???
  120.                 }
  121.                
  122.                 if(display_time==2)//?2?????????
  123.                 {
  124.                         B1=0;B2=0;B3=1;B4=0;        
  125.                         display(Data3);                //???3???
  126.                 }
  127.                
  128.                 if(display_time==3)//?3?????????
  129.                 {
  130.                         B1=0;B2=0;B3=0;B4=1;        
  131.                         display(Data4);                //???4???
  132.                 }
  133.                         
  134.                
  135.         }
  136.                         }
复制代码




发表于 2017-1-19 21:37:44 | 显示全部楼层
看不懂
发表于 2017-1-19 21:38:59 | 显示全部楼层
我有个自己写的闹钟程序,需要可以给你
发表于 2018-6-4 10:50:38 | 显示全部楼层
楼主可有电路图以及固件啊???想做一个无法下手
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!