数字时钟
来源:互联网 发布:养老统筹怎么算法 编辑:程序博客网 时间:2024/04/30 02:16
#include<reg52.h> #define KeyPort P3 #define DataPort P0 sbit LATCH1=P2^2;sbit LATCH2=P2^3;// unsigned char hour,minute,second;bit UpdateTimeFlag;unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// ?????0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//????????????,???unsigned char TempData[8]; //??????????void DelayUs2x(unsigned char t);//us??????? void DelayMs(unsigned char t); //ms???void Display(unsigned char FirstBit,unsigned char Num);//???????unsigned char KeyScan(void);//????void Init_Timer0(void);//??????/*------------------------------------------------ ???------------------------------------------------*/void main (void){unsigned char num; Init_Timer0();while (1) //??? {num=KeyScan();switch(num) { case 1:hour++;if(hour==24)hour=0; //???? ?? ?1 break; case 2:hour--;if(hour==255)hour=23; //???? ???1 break; case 3:minute++;if(minute==60)minute=0; //???1 break; case 4:minute--;if(minute==255)minute=59; //???1 break; default:break; }if(UpdateTimeFlag==1) { UpdateTimeFlag=0; TempData[0]=dofly_DuanMa[hour/10]; //? //?????,????????0~9???,????? TempData[1]=dofly_DuanMa[hour%10]; TempData[2]=0x40; //??"-" TempData[3]=dofly_DuanMa[minute/10];//? TempData[4]=dofly_DuanMa[minute%10]; TempData[5]=0x40; TempData[6]=dofly_DuanMa[second/10];//? TempData[7]=dofly_DuanMa[second%10]; } }}/*------------------------------------------------ uS????,?????? unsigned char t,???? unsigned char ??????????,?????? 0~255 ??????12M,?????????,???? ???? T=tx2+5 uS ------------------------------------------------*/void DelayUs2x(unsigned char t){ while(--t);}/*------------------------------------------------ mS????,?????? unsigned char t,???? unsigned char ??????????,?????? 0~255 ??????12M,?????????------------------------------------------------*/void DelayMs(unsigned char t){ while(t--) { //????1mS DelayUs2x(245); DelayUs2x(245); }}/*------------------------------------------------ ????,????????? ???? FirstBit ??????????,???2????????????? ???0????????? Num?????????,?????99?????????2------------------------------------------------*/void Display(unsigned char FirstBit,unsigned char Num){ static unsigned char i=0; DataPort=0; //????,??????? LATCH1=1; //??? LATCH1=0; DataPort=dofly_WeiMa[i+FirstBit]; //??? LATCH2=1; //??? LATCH2=0; DataPort=TempData[i]; //?????,?? LATCH1=1; //??? LATCH1=0; i++; if(i==Num) i=0;}/*------------------------------------------------ ?????????------------------------------------------------*/void Init_Timer0(void){ TMOD |= 0x01; //????1,16????,??"|"????????????????? //TH0=0x00; //???? //TL0=0x00; EA=1; //????? ET0=1; //??????? TR0=1; //???????}/*------------------------------------------------ ????????------------------------------------------------*/void Timer0_isr(void) interrupt 1 { static unsigned int num,i; TH0=(65536-2000)/256;//???? 2ms TL0=(65536-2000)%256; Display(0,8); // ??????? i++; if(i==10) //20ms???? { i=0; UpdateTimeFlag=1; //???????1 } num++; if(num==500) //??1s { num=0; second++; if(second==60) //??60,???1 { second=0; minute++; if(minute==60)//???60,???1 { minute=0; hour++; if(hour==24)//???24,?? hour=0; } } }}/*------------------------------------------------??????,??????------------------------------------------------*/unsigned char KeyScan(void){ unsigned char keyvalue; if(KeyPort!=0xff) { DelayMs(10); if(KeyPort!=0xff) { keyvalue=KeyPort; while(KeyPort!=0xff); switch(keyvalue) { case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; case 0xf7:return 4;break; case 0xef:return 5;break; case 0xdf:return 6;break; case 0xbf:return 7;break; case 0x7f:return 8;break; default:return 0;break; } } } return 0;}
0 0
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟的源代码
- 数字时钟(代码)
- java数字时钟
- js数字时钟
- 数字时钟语音温度计
- 数字时钟语音温度计
- 单片机数字时钟
- 数字时钟系统
- Android中 要把一部分组件 在application中初使化
- 常见排序算法Java小结
- 休闲时光小代码----用CSS制作圣诞树
- 在github上搭建ssm项目,记录轻笔记项目的完成进度
- iOS开发之用block来实现UIAlertView点击事件的代理方法
- 数字时钟
- 页面资源的导入与配置
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- Adapter of page viewer (how to reuse view)
- ssm中登录功能的实现以及页面跳转
- elasticsearch配置文件里的一些坑 [Failed to load settings from [elasticsearch.yml]]
- ssm表单验证,登陆前后状态显示
- 【转载】SQL_Server_2008安装教程_图解
- 协议号端口号区别: