您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机-数码管-时分秒显示
/******2012-8-23日修改为XX-XX-XX,24小时制并成功显示*******/#includereg52.h#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~9的数码管显示sbitdula=P2^6;//声明段选sbitwela=P2^7;//声明位选ucharh,m,s,num1;//定义变量voiddelay(uintxms)//延时函数{uinti,j;for(i=xms;i0;i--)for(j=110;j0;j--);}voidinit()//初始化{TMOD=0x10;//00010001定时器0的工作方式1,定时器1的工作方式1TH1=(65536-45872)/256;TL1=(65536-45872)%256;EA=1;//开总中断ET1=1;//开定时器1中断TR1=1;//启动定时器1}voidmain()//主函数{init();//初始化while(1)//while循环{wela=1;//打开位选P0=0xfe;//点亮数码管wela=0;//关闭位选dula=1;//打开段选P0=table[h/10];//送入数据dula=0;//关闭段选delay(1);//延时5mswela=1;//打开位选P0=0xfd;//点亮数码管wela=0;//关闭位选dula=1;//打开段选P0=table[h%10];//送入数据dula=0;//关闭段选delay(1);//延时5mswela=1;//打开位选P0=0xfb;//点亮数码管wela=0;//关闭位选dula=1;//打开段选P0=table[m/10];//送入数据dula=0;//关闭段选delay(1);//延时5mswela=1;//打开位选P0=0xf7;//点亮数码管wela=0;//关闭位选dula=1;//打开段选P0=table[m%10];//送入数据dula=0;//关闭段选delay(1);//延时5mswela=1;//打开位选P0=0xef;//点亮数码管wela=0;//关闭位选dula=1;//打开段选P0=table[s/10];//送入数据dula=0;//关闭段选delay(1);//延时5mswela=1;P0=0xdf;wela=0;dula=1;P0=table[s%10];dula=0;delay(1);}}voidT1_time()interrupt3//中断3{TH1=(65536-45872)/256;//重装初值TL1=(65536-45872)%256;//num1++;//num2每加一次判断一次是否到20次了if(num1==20)//如果到了20次,说明1秒钟到了{num1=0;//把num1清零,重新再计20次s++;//s每加一次判断一次,是否到60次了if(s==60)//如果到了60次,说明1分钟到了{s=0;//把s清零,重新再计60次m++;//m每加一次判断一次是否到60次了if(m==60)//如果到了60次,说明1小时到了{m=0;//把m清零,重新再计60次h++;//h每加一次判断一次是否到24次了if(h==24)//如果h到了24次,说明24小时到了{h=0;//把m清零,重新再计60次}}}}}
本文标题:单片机-数码管-时分秒显示
链接地址:https://www.777doc.com/doc-6028394 .html