⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 update01.c

📁 一种采用74hc245实现led动态显示时间的一种方法
💻 C
字号:
#include <reg52.h>             /* 预处理命令 */
#include <absacc.h>
#include <stdio.h>
#define SECOND 62
unsigned int count;           /* 定义用于500微秒计数器的整型变量 */

void dlms(unsigned char d);	
//段码表
unsigned char code Table[14] = {0x77,0x24,0x5d,0x6d,0x2e,0x6b,0x7b,0x25,0x7f,0x6f,0x08,0x1f,0x3f,0x80};
                               /* 0 , 1 ,  2,   3,   4,   5,   6,   7,   8,   9,   - ,   p  , A ,   . */
//
//要显示的字符
unsigned char idata dis_buf[6]={0,0,0,0,0,0};
//								低位,		高位,
//根据数组中的内容在段码表中查出要显示的字符,LED上显示的字符为9,2,3,P,5,6
struct time  {                 /* 定义用于时、分、秒的结构变量*/
    unsigned char   hour;      /* 时 */
    unsigned char   min;       /* 分 */
    unsigned char   sec;       /* 秒 */
};
struct time clocktime;         /* 当前时间 */


//dis_buf[0]为显示的高位
void display(unsigned char *p){
			unsigned char sel,i;
		sel=0x01;
		for(i=6;i>0;i--){
			P0=Table[*p];
			P2=sel;
			dlms(10);
			p++;
			sel=sel<<1;
		}
}
timer0() interrupt 1 using 2  /* 定时器T0中断服务程序 */
{
		
  if( ++count == SECOND ) {                    /* 每次中断时微秒计数器加1 */
     count = 0;
	
	 //display(dis_buf);
//     update(&clocktime);
	 if (clocktime.sec/0X0a < 1){
			dis_buf[5]=clocktime.sec;
			dis_buf[4]=0;
		//dis_buf[3]=0;
		//dis_buf[2]=0;
		//dis_buf[1]=0;
		//dis_buf[0]=0;
	 }
	 else if((clocktime.sec/0X0A) >= 1){
	 dis_buf[5]=clocktime.sec % 0X0a;
	 dis_buf[4]=clocktime.sec / 0X0A;}	
     if( ++clocktime.sec == 60 ) {             /* 秒处理 */
			
         clocktime.sec = 0;  
    
         if( ++clocktime.min == 60 ) {         /* 分处理 */
             clocktime.min = 0;      
             if( ++clocktime.hour == 25 ) {     /* 小时处理 */
                 clocktime.hour = 1;
             }       
          }
      }     
  
  
  
	 //dis_buf[3]=0;
	 //dis_buf[2]=0;
	 //dis_buf[1]=0;
	 //dis_buf[0]=0;
		if (clocktime.min/0x0a < 1)
		{
			dis_buf[3]=clocktime.min;
			dis_buf[2]=0;
			}
		else if ((clocktime.min) >=1){
			dis_buf[3]=clocktime.min % 0X0a;
	 		dis_buf[2]=clocktime.min / 0X0A;
	}
	}
	display(dis_buf); dlms(3);
 }  
//}

void dlms(unsigned char d)
	{
	//unsigned char d;
	unsigned char i,j;
	for(i=d;i>0;i--)
	{
	for(j=1000;j>0;j--)
		{;};
		}
		}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -