找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8x32点阵上翻页时钟制作源码

[复制链接]
跳转到指定楼层
楼主
ID:168911 发表于 2018-4-18 07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

去年的硬件,这次趁空重新改了程序,改为向上翻页,由于自己是业余瞎弄的,不足之处请告诉,

单片机源程序如下:
  1. #include <REGX51.H>
  2. unsigned char min=0,hou=12,timecount=0,oldP1=0xff,setting=0,day=0;
  3. bit point=1,K1_old,K2_old;
  4. char sec=0,err=0,j,l=-1;


  5. unsigned char code dis_code[]=
  6. {
  7.         0x3E,0x41,0x41,0x3E,0x21,0x7F,0x01,0x00,//0与1   
  8.           0x23,0x45,0x49,0x31,0x22,0x41,0x49,0x36, //2与3  
  9.           0x1E,0x22,0x7F,0x02,0x72,0x51,0x51,0x4E, //4与5
  10.           0x3E,0x49,0x49,0x26,0x60,0x40,0x4F,0x70,  //6与7
  11.           0x36,0x49,0x49,0x36,0x32,0x49,0x49,0x3E,  //8与9
  12.         0x3E,0x49,0x49,0x00,0x3F,0x4C,0x4A,0x31,0x00,0x00,0x18,0x18,0x7E,0x7E,0x18,0x18,//err+
  13.         0x3E,0x49,0x49,0x00,0x3F,0x4C,0x4A,0x31,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,//err-
  14.         0x7F,0x08,0x08,0x7F,0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x7E,0x01,0x01,0x01,0x7E,//hou
  15.          0x3F,0x40,0x7C,0x40,0x3F,0x00,0x41,0x7F,0x41,0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,//min
  16.         0x31,0x49,0x49,0x49,0x46,0x00,0x3E,0x49,0x49,0x49,0x00,0x3E,0x41,0x41,0x41,0x22, //sec
  17.          0x00,0x18,0x18,0x7E,0x7E,0x18,0x18,0x00,//+
  18.          0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00,//-

  19. };                        
  20. unsigned char code dis_code1[]=
  21. {  
  22. 0x3E,0x41,0x41,0x3E,
  23. 0x7C,0x82,0x82,0x7C,0xF8,0x04,0x05,0xF8,
  24. 0xF0,0x09,0x0B,0xF0,0xE0,0x12,0x17,0xE0,         //0-1
  25. 0xC0,0x24,0x2F,0xC0,0x80,0x48,0x5F,0x80,
  26. 0x00,0x90,0xBF,0x00,0x00,0x21,0x7F,0x01,

  27. 0x00,0x42,0xFE,0x02,0x00,0x85,0xFD,0x04,
  28. 0x01,0x0A,0xFA,0x09,0x02,0x14,0xF4,0x13,         //1-2
  29. 0x04,0x28,0xE9,0x26,0x08,0x51,0xD2,0x4C,
  30. 0x11,0xA2,0xA4,0x98,0x23,0x45,0x49,0x31,

  31. 0x46,0x8A,0x92,0x62,0x8C,0x15,0x25,0xC4,
  32. 0x19,0x2A,0x4A,0x89,0x32,0x54,0x94,0x13,
  33. 0x64,0xA8,0x29,0x26,0xC8,0x50,0x52,0x4D,         //2-3
  34. 0x91,0xA0,0xA4,0x9B,0x22,0x41,0x49,0x36,
  35.                                             
  36. 0x44,0x82,0x92,0x6C,0x88,0x04,0x25,0xD8,
  37. 0x10,0x09,0x4B,0xB0,0x21,0x12,0x97,0x60,
  38. 0x43,0x24,0x2F,0xC0,0x87,0x48,0x5F,0x80,         //3-4
  39. 0x0F,0x91,0xBF,0x01,0x1E,0x22,0x7F,0x02,

  40. 0x3C,0x44,0xFE,0x04,0x79,0x89,0xFD,0x09,
  41. 0xF3,0x12,0xFA,0x12,0xE7,0x25,0xF5,0x24,
  42. 0xCE,0x4A,0xEA,0x49,0x9C,0x94,0xD4,0x93,        //4-5
  43. 0x39,0x28,0xA8,0x27,0x72,0x51,0x51,0x4E,

  44. 0xE4,0xA2,0xA2,0x9C,0xC8,0x45,0x45,0x38,
  45. 0x91,0x8A,0x8A,0x71,0x23,0x14,0x14,0xE2,
  46. 0x47,0x29,0x29,0xC4,0x8F,0x52,0x52,0x89,         //5-6
  47. 0x1F,0xA4,0xA4,0x13,0x3E,0x49,0x49,0x26,

  48. 0x7C,0x92,0x92,0x4C,0xF9,0x25,0x25,0x99,
  49. 0xF3,0x4A,0x4A,0x33,0xE6,0x94,0x94,0x67,
  50. 0xCC,0x28,0x29,0xCE,0x98,0x50,0x53,0x9C,        //6-7
  51. 0x30,0xA0,0xA7,0x38,0x60,0x40,0x4F,0x70,

  52. 0xC0,0x80,0x9E,0xE0,0x80,0x01,0x3D,0xC0,
  53. 0x01,0x02,0x7A,0x81,0x03,0x04,0xF4,0x03,
  54. 0x06,0x09,0xE9,0x06,0x0D,0x12,0xD2,0x0D,  //7-8
  55. 0x1B,0x24,0xA4,0x1B,0x36,0x49,0x49,0x36,

  56. 0x6C,0x92,0x92,0x6C,0xD8,0x25,0x25,0xD8,
  57. 0xB1,0x4A,0x4A,0xB1,0x63,0x94,0x94,0x63,
  58. 0xC6,0x29,0x29,0xC6,0x8C,0x52,0x52,0x8F,        //8-9
  59. 0x19,0xA4,0xA4,0x1F,0x32,0x49,0x49,0x3E,

  60. 0x64,0x92,0x92,0x7C,0xC8,0x25,0x25,0xF8,
  61. 0x91,0x4A,0x4A,0xF1,0x23,0x94,0x94,0xE3,
  62. 0x47,0x28,0x28,0xC7,0x8F,0x50,0x50,0x8F,        //9-0
  63. 0x1F,0xA0,0xA0,0x1F,0x3E,0x41,0x41,0x3E,

  64. 0x7C,0x82,0x82,0x7C,0xF8,0x04,0x05,0xF8,
  65. 0xF0,0x09,0x0B,0xF0,0xE0,0x12,0x17,0xE0,         //0-1
  66. 0xC0,0x24,0x2F,0xC0,0x80,0x48,0x5F,0x80,
  67. 0x00,0x90,0xBF,0x00,0x00,0x21,0x7F,0x01,

  68. 0x00,0x42,0xFE,0x02,0x00,0x85,0xFD,0x04,
  69. 0x01,0x0A,0xFA,0x09,0x02,0x14,0xF4,0x13,         //1-2
  70. 0x04,0x28,0xE9,0x26,0x08,0x51,0xD2,0x4C,
  71. 0x11,0xA2,0xA4,0x98,0x23,0x45,0x49,0x31,

  72. 0x46,0x8A,0x92,0x62,0x8C,0x14,0x25,0xC4,
  73. 0x18,0x29,0x4B,0x88,0x30,0x52,0x97,0x10,
  74. 0x60,0xA4,0x2F,0x20,0xC0,0x48,0x5F,0x40,
  75. 0x80,0x90,0xBF,0x80,0x00,0x21,0x7F,0x01,//2-1

  76. };        

  77. unsigned char code dis_code2[]=

  78. {  
  79. 0x3E,0x41,0x41,0x3E,
  80. 0x7C,0x82,0x82,0x7C,0xF8,0x04,0x05,0xF8,
  81. 0xF0,0x09,0x0B,0xF0,0xE0,0x12,0x17,0xE0,         //0-1
  82. 0xC0,0x24,0x2F,0xC0,0x80,0x48,0x5F,0x80,
  83. 0x00,0x90,0xBF,0x00,0x00,0x21,0x7F,0x01,

  84. 0x00,0x42,0xFE,0x02,0x00,0x85,0xFD,0x04,
  85. 0x01,0x0A,0xFA,0x09,0x02,0x14,0xF4,0x13,         //1-2
  86. 0x04,0x28,0xE9,0x26,0x08,0x51,0xD2,0x4C,
  87. 0x11,0xA2,0xA4,0x98,0x23,0x45,0x49,0x31,

  88. 0x46,0x8A,0x92,0x62,0x8C,0x15,0x25,0xC4,
  89. 0x19,0x2A,0x4A,0x89,0x32,0x54,0x94,0x13,
  90. 0x64,0xA8,0x29,0x26,0xC8,0x50,0x52,0x4D,         //2-3
  91. 0x91,0xA0,0xA4,0x9B,0x22,0x41,0x49,0x36,
  92.                                             
  93. 0x44,0x82,0x92,0x6C,0x88,0x04,0x25,0xD8,
  94. 0x10,0x09,0x4B,0xB0,0x21,0x12,0x97,0x60,
  95. 0x43,0x24,0x2F,0xC0,0x87,0x48,0x5F,0x80,         //3-4
  96. 0x0F,0x91,0xBF,0x01,0x1E,0x22,0x7F,0x02,

  97. 0x3C,0x44,0xFE,0x04,0x79,0x89,0xFD,0x09,
  98. 0xF3,0x12,0xFA,0x12,0xE7,0x25,0xF5,0x24,
  99. 0xCE,0x4A,0xEA,0x49,0x9C,0x94,0xD4,0x93,        //4-5
  100. 0x39,0x28,0xA8,0x27,0x72,0x51,0x51,0x4E,

  101. 0xE4,0xA2,0xA2,0x9C,0xC8,0x45,0x45,0x38,
  102. 0x91,0x8A,0x8A,0x71,0x23,0x14,0x14,0xE3,
  103. 0x47,0x28,0x28,0xC7,0x8F,0x50,0x50,0x8F,  //5-0
  104. 0x1F,0xA0,0xA0,0x1F,0x3E,0x41,0x41,0x3E,

  105. };        

  106. unsigned char code dis_code3[]=
  107. {
  108. 0x00,0x00,0x00,0x00,
  109. 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
  110. 0x00,0x01,0x03,0x00,0x00,0x02,0x07,0x00,
  111. 0x00,0x04,0x0F,0x00,0x00,0x08,0x1F,0x00,
  112. 0x00,0x10,0x3F,0x00,0x00,0x21,0x7F,0x01,//1进入


  113. 0x00,0x42,0xFE,0x02,0x00,0x84,0xFC,0x04,
  114. 0x00,0x08,0xF8,0x08,0x00,0x10,0xF0,0x10,
  115. 0x00,0x20,0xE0,0x20,0x00,0x40,0xC0,0x40,          //1退出
  116. 0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,
  117.                                                 
  118. };


  119. sbit  K1=P1^7;   
  120. sbit  K2=P1^6;

  121. void delay_ms(void);
  122. void timedeal(void);

  123. /*******************************************************************/
  124. void main(void)
  125. {  
  126.         char i,q,disnum;        
  127.         unsigned char num,x,y,offset=0,dis_p,scantimes=0;
  128.         IE=0x82;     //允许定时器0工作  
  129.         TMOD=0x01;   //timer0为模式1  
  130.         TR0=1;       //定时器0可以工作  
  131.         TH0 = 0x4c;
  132.         TL0 = 0x1e;

  133.         do  
  134.           {                    
  135.                 q=sec;
  136.                 if(setting==0)         
  137.                 {
  138.                         if(j<q)
  139.                         {         
  140.                                 for(i=0;i<8;i++)
  141.                                 {        
  142.                                         unsigned char a;
  143.                                         a=3;
  144.                                         while(a--)
  145.                                            {
  146.                                                    for(x=0;x<16;x++)  
  147.                                                 {         
  148.                                                         dis_p=x;     
  149.                                                          if(dis_p==3|| dis_p==8|| dis_p==10|| dis_p==15||dis_p>15)         
  150.                                                          {         
  151.                                                                  y=0;     
  152.                                                          }
  153.                                                          else if(dis_p<=2)
  154.                                                          {   
  155.                                                                 num=hou/10;
  156.                                                                 if(hou==10&min==0&sec==0)
  157.                                                                 y=dis_code3[(num)+dis_p+i*4];
  158.                                                                 else
  159.                                                                 y=dis_code3[(num)*32+dis_p+1];
  160.                                                                 if(hou==1&min==0&sec==0)
  161.                                                                 y=dis_code3[32+dis_p+1+i*4];
  162.                                                         }  
  163.                                                           else if(dis_p<=7)
  164.                                                           {         
  165.                                                                   num=hou%10;
  166.                                                               y=dis_code1[(num)*32+dis_p-4];
  167.                                                                 if((min==0)&sec==0)         
  168.                                                                   y=dis_code1[(num-1)*32+dis_p-4+(i*4)];
  169.                                                                 if(hou==10&min==0&sec==0)
  170.                                                                    y=dis_code1[288+dis_p-4+(i*4)];
  171.                                                                 if(hou==1&min==0&sec==0)
  172.                                                                 y=dis_code1[384+dis_p-4+(i*4)];
  173.                                                            }
  174.                                                           else if(dis_p<=9)        
  175.                                                           {
  176.                                                                  if(point)      
  177.                                                                   y=0x22;      
  178.                                                                   else        
  179.                                                                   y=0;            
  180.                                                         }
  181.                                                           else if(dis_p<=14)        
  182.                                                           {         
  183.                                                                   num=min/10;
  184.                                                                 y=dis_code2[num*32+dis_p-11];
  185.                                                                 if((min==10||min==20||min==30||min==40||min==50)&sec==0)         
  186.                                                                   y=dis_code2[(num-1)*32+dis_p-11+(i*4)];
  187.                                                                 if((min==0)&sec==0)
  188.                                                                 y=dis_code2[160+dis_p-11+i*4];
  189.                                                         }                                 
  190.                                                         P3=0;
  191.                                                         P1=x|0xE0;
  192.                                                         P3=y;   
  193.                                                            delay_ms();        
  194.                                                 }                  
  195.                                                 for(x=0;x<16;x++)
  196.                                                 {              
  197.                                                         dis_p=x;     
  198.                                                          if(dis_p==4 || dis_p==6||dis_p==11||dis_p==16||dis_p>16 )         
  199.                                                          {         
  200.                                                                  y=0;     
  201.                                                          }   
  202.                                                            else if(dis_p<=3)                                                         
  203.                                                           {            
  204.                                                                   num=min%10;      
  205.                                                                   y=dis_code1[(num)*32+dis_p];
  206.                                                                 if(sec==0)
  207.                                                                 y=dis_code1[(num-1)*32+dis_p+i*4];
  208.                                                                 if((min==0||min==10||min==20||min==30||min==40||min==50)&sec==0)
  209.                                                                 y=dis_code1[288+dis_p+i*4];
  210.                                                         }                                          
  211.                                                         else if(dis_p<=5)        
  212.                                                           {            
  213.                                                              if(point)      
  214.                                                                   y=0x22;      
  215.                                                                   else        
  216.                                                                   y=0;     
  217.                                                           }
  218.                                                         else  if(dis_p<=10)         
  219.                                                         {         
  220.                                                                 num=sec/10;
  221.                                                                 y=dis_code2[(num)*32+dis_p-7];
  222.                                                                 if(sec==0)
  223.                                                                 y=dis_code2[160+dis_p-7+i*4];
  224.                                                         if(sec==10||sec==20||sec==30||sec==40||sec==50)
  225.                                                                 y=dis_code2[(num-1)*32+dis_p-7+i*4];
  226.                                                         }                                                                                                                                
  227.                                                         else  if(dis_p<=15)
  228.                                                           {         
  229.                                                                   num=sec%10;
  230.                                                                 y=dis_code1[(num-1)*32+dis_p-12+i*4];
  231.                                                                    if(sec==0||sec==10||sec==20||sec==30||sec==40||sec==50)
  232.                                                                 y=dis_code1[288+dis_p-12+i*4];
  233.                                                      }
  234.                                                           P3=0;
  235.                                                         P1=x|0xd0;
  236.                                                           P3=y;   
  237.                                                            delay_ms();              
  238.                                                 }  
  239.                                         }           
  240.                                 }
  241.                         }  
  242.                         j=q;
  243.                         {
  244.                                 for(x=0;x<16;x++)  //
  245.                                 {         
  246.                                         dis_p=x;   
  247.                                         if(dis_p==3|| dis_p==8|| dis_p==10|| dis_p==15||dis_p>15)         
  248.                                         {         
  249.                                                 y=0;     
  250.                                         }
  251.                                         else if(dis_p<=2)
  252.                                         {              
  253.                                                   num=hou/10;                                                                           
  254.                                                   y=dis_code3[num*32+dis_p+1];         
  255.                                         }
  256.                                         else if(dis_p<=7) //4~7为时的个位
  257.                                         {         
  258.                                                 num=hou%10;
  259.                                               y=dis_code1[num*32+dis_p-4];
  260.                                         }
  261.                                         else if(dis_p<=9)        
  262.                                         {
  263.                                                  if(point)      
  264.                                                   y=0x22;      
  265.                                                   else        
  266.                                                   y=0;            
  267.                                         }
  268.                                                   else if(dis_p<=14)         
  269.                                           {         
  270.                                                   num=min/10;         
  271.                                                   y=dis_code2[num*32+dis_p-11];  
  272.                                           }                                 
  273.                                         P3=0;
  274.                                         P1=x|0xE0;
  275.                                         P3=y;   
  276.                                            delay_ms();
  277.                                 }         
  278.                                 for(x=0;x<16;x++)
  279.                                 {   
  280.                                         dis_p=x;     
  281.                                          if(dis_p==4 || dis_p==6||dis_p==11||dis_p==16||dis_p>16 )         
  282.                                          {         
  283.                                                  y=0;     
  284.                                          }   
  285.                                            else if(dis_p<=3)                                                         
  286.                                           {            
  287.                                                   num=min%10;      
  288.                                                   y=dis_code1[num*32+dis_p];      
  289.                                           }
  290.                                         else if(dis_p<=5)        
  291.                                           {            
  292.                                                     if(point)      
  293.                                                   y=0x22;      
  294.                                                   else        
  295.                                                   y=0;     
  296.                                           }
  297.                                         else  if(dis_p<=10)         
  298.                                         {
  299.                                                 num=sec/10;
  300.                                                 y=dis_code2[num*32+dis_p-7];
  301.                                         }
  302.                                                 
  303.                                         else  if(dis_p<=15)
  304.                                           {         
  305.                                                   num=sec%10;
  306.                                                 y=dis_code1[num*32+dis_p-12];        
  307.                                         }
  308.                                           P3=0;
  309.                                         P1=x|0xd0;
  310.                                           P3=y;   
  311.                                            delay_ms();            
  312.                             }
  313.                         }         
  314.                   }               
  315. /**************************************************///                    
  316.                 else         //当进入调整时间的状态,运行下面的程序段
  317.                 {      
  318.                          for(x=0;x<16;x++)
  319.                          {     
  320.                                  if(setting==1)      
  321.                                  if(x<16)                        
  322.                                 if(point)               
  323.                             y=dis_code[40+x];
  324.                                 else
  325.                                 y=0;

  326.                                  if(setting==2)      
  327.                                  if(x<16)                          
  328.                                 if(point)               
  329.                             y=dis_code[56+x];
  330.                                 else
  331.                                 y=0;

  332.                                 if(setting==3||setting==4)      
  333.                                  if(x<16)                        

  334.                                 if(point)               
  335.                             y=dis_code[72+x];
  336.                                 else
  337.                                 y=0;

  338.                             if(setting==5||setting==6)      
  339.                                  if(x<=16)                          
  340.                                 if(point)               
  341.                             y=dis_code[88+x];
  342.                                 else
  343.                                 y=0;

  344.                                    if(setting==7)
  345.                                 if(x<=16)                          
  346.                                 if(point)               
  347.                             y=dis_code[104+x];
  348.                                 else
  349.                                 y=0;

  350.                            
  351.                                 P3=0;     
  352.                                    P1=x|0xe0;               
  353.                                    P3=y;     
  354.                                    delay_ms();         
  355.                           }                                 
  356.                         
  357.                      for(x=0;x<16;x++)
  358.                         {         
  359.                                 if(setting==1||setting==2)
  360.                                 {        
  361.                                         dis_p=x;
  362.                                     if(err>=0)                        
  363.                                         {

  364.                                             if(dis_p<=7)
  365.                                                 {
  366.                                                         y=dis_code[120+x];
  367.                                                 }
  368.                                                 else if(dis_p<12)  
  369.                                                     {         
  370.                                                         disnum=err;
  371.                                                         num=disnum/10;
  372.                                                         y=dis_code[num*4+x-8];
  373.                                                 }
  374.                                                 else                        
  375.                                                 {                           
  376.                                                           num=disnum%10;        
  377.                                                           y=dis_code[num*4+x-12];
  378.                                                 }               
  379.                                     }
  380.                                         if(err<0)
  381.                                         {
  382.                                                   if(dis_p<=7 )
  383.                                                 {
  384.                                                         y=dis_code[128+x];
  385.                                                 }
  386.                                                 else if(dis_p<12)  
  387.                                                     {         
  388.                                                         disnum=err;
  389.                                                         num=l*disnum/10;
  390.                                                         y=dis_code[num*4+x-8];
  391.                                                 }
  392.                                                 else                        
  393.                                                 {                           
  394.                                                           num=l*disnum%10;        
  395.                                                           y=dis_code[num*4+x-12];
  396.                                                 }               
  397.                                     }         
  398.                                 }
  399.                                                 
  400.                                 if(setting==3)
  401.                                 {
  402.                                         dis_p=x;
  403.                                           if(dis_p<=7 )
  404.                                         {
  405.                                                 y=dis_code[120+x];
  406.                                         }
  407.                                           else if(x<12)  
  408.                                          {  
  409.                                                 disnum=hou;           
  410.                                                 num=disnum/10;
  411.                                                 y=dis_code[num*4+x-8];
  412.                                         }
  413.                                          else                                   
  414.                                          {     
  415.                                                   num=disnum%10;        
  416.                                                   y=dis_code[num*4+x-12];
  417.                                          }  
  418.                                    }

  419.                                 if(setting==4)
  420.                                 {
  421.                                         dis_p=x;
  422.                                           if(dis_p<=7 )
  423.                                         {
  424.                                                 y=dis_code[128+x];
  425.                                         }
  426.                                           else if(x<12)  
  427.                                          {  
  428.                                                 disnum=hou;           
  429.                                                 num=disnum/10;
  430.                                                 y=dis_code[num*4+x-8];
  431.                                         }
  432.                                          else                                   
  433.                                          {     
  434.                                                   num=disnum%10;        
  435.                                                   y=dis_code[num*4+x-12];
  436.                                          }  
  437.                                    }

  438.                                 if(setting==5)
  439.                                 {
  440.                                         dis_p=x;
  441.                                           if(dis_p<=7 )
  442.                                         {
  443.                                                 y=dis_code[120+x];
  444.                                         }
  445.                                           else if(x<12)  
  446.                                         {  
  447.                                                 disnum=min;           
  448.                                                 num=disnum/10;
  449.                                                 y=dis_code[num*4+x-8];
  450.                                         }
  451.                                          else                          
  452.                                          {     
  453.                                                   num=disnum%10;        
  454.                                                   y=dis_code[num*4+x-12];
  455.                                         }
  456.                                 }
  457.                                        
  458.                                 if(setting==6)
  459.                                 {
  460.                                         dis_p=x;
  461.                                           if(dis_p<=7 )
  462.                                         {
  463.                                                 y=dis_code[128+x];
  464.                                         }
  465.                                           else if(x<12)  
  466.                                         {  
  467.                                                 disnum=min;           
  468.                                                 num=disnum/10;
  469.                                                 y=dis_code[num*4+x-8];
  470.                                         }
  471.                                          else                          
  472.                                          {     
  473.                                                   num=disnum%10;        
  474.                                                   y=dis_code[num*4+x-12];
  475.                                         }
  476.                                 }

  477.                                 if(setting==7)
  478.                                 {   
  479.                                         dis_p=x;
  480.                                         if(dis_p<=5||dis_p==7)        
  481.                                         {
  482.                                                 y=0;
  483.                                         }
  484.                                         else if(dis_p==6)        
  485.                                         {
  486.                                                  if(point)      
  487.                                                   y=0x22;      
  488.                                                   else        
  489.                                                   y=0;            
  490.                                         }               
  491.                                           else if(x<12)  
  492.                                         {  
  493.                                                 disnum=sec;           
  494.                                                 num=disnum/10;
  495.                                                 y=dis_code[num*4+x-8];
  496.                                         }
  497.                                          else                          
  498.                                          {     
  499.                                                   num=disnum%10;        
  500.                                                   y=dis_code[num*4+x-12];
  501.                                         }
  502.                                 }

  503.                                 P3=0;     
  504.                                 P1=x|0xd0;     
  505.                                 P3=y;     
  506.                                 delay_ms();
  507.                         }         
  508.                 }     
  509.         }
  510.         while(1);   
  511. }
  512. /***************************************************/  
  513. void delay_ms(void)            
  514. {   
  515.         unsigned char i,j;
  516.           for(i=0;i<4;i++)   
  517.           for(j=0;j<30;j++);  
  518. }
  519. /****************************************************/
  520. void time50ms(void) interrupt 1
  521. {
  522.            TH0 = 0x4c;
  523.         TL0 = 0x1e;
  524.         timecount++;
  525.         if(timecount==10)  
  526.         {  
  527.                 timecount=0;
  528.                  point=!point;   
  529.                   if(point)   
  530.                   {   
  531.                           sec++;   
  532.                           timedeal();   
  533.                   }  
  534.         }   
  535.     if(!K1&&K1!=K1_old)
  536.         {  
  537.                 setting++;  
  538.                 if(setting==8)     
  539.                 setting=0;
  540.         }            
  541.         if(!K2 && K2!=K2_old)   
  542.         {   
  543.                 if(setting==1)   
  544.                 {   
  545.                         err++;
  546.                         if(err==60)
  547.                         
  548.                           err=0;
  549.                           timedeal();  
  550.                 }
  551.                 else if(setting==2)   
  552.                 {         
  553.                         err--;
  554.                         if(err==-60)
  555.                         err=0;
  556.                         timedeal();
  557.                 }            
  558.                 else if(setting==3)   
  559.                 {  
  560.                         hou++;
  561.                          if(hou>12)   
  562.                         hou=1;  
  563.                         timedeal();            
  564.                 }
  565.                 else if(setting==4)   
  566.                 {   
  567.                         hou--;
  568.                           if(hou==0)
  569.                         hou=12;   
  570.                         timedeal();            
  571.                 }
  572.                 else if(setting==5)   
  573.                 {   
  574.                          if(min==60)
  575.                         min=0;  
  576.                         min++;
  577.                         timedeal();
  578.                 }
  579.                 else if(setting==6)   
  580.                 {   
  581.                           if(min==0)
  582.                         min=60;
  583.                         min--;     
  584.                         timedeal();         
  585.                 }
  586.                    else if(setting==7)
  587.                 sec=0;
  588.                  
  589.         }
  590.         K1_old=K1;
  591.         K2_old=K2;
  592. }
  593. /****************************************************/  
  594. void timedeal(void)
  595. {   
  596.         if(sec>=60)
  597.          {   
  598.                  sec=0;
  599.                   j=-1;
  600.                 min++;
  601.         }   
  602.           if(min>=60)
  603.            {   
  604.                 min=0;
  605.                 hou++;
  606.         }
  607.          if(hou>12)           
  608.         {
  609.                 hou=1;
  610.                 day++;
  611.         }
  612.         if(day>=2)
  613.         {
  614.                 day=0;
  615.                 sec=sec+err;
  616.         }

  617. }
复制代码

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2018-4-18 16:06 | 只看该作者
干得漂亮 能分享下或者介绍一下原理图吗?
回复

使用道具 举报

板凳
ID:168911 发表于 2018-4-21 07:14 | 只看该作者
简易8x32点阵上翻页时钟仿真图

8x32仿真图.rar

8x32仿真图.rar

9.12 KB, 下载次数: 38, 下载积分: 黑币 -5

评分

参与人数 1黑币 +70 收起 理由
admin + 70 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:328014 发表于 2018-6-26 01:39 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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