- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于8051单片机和DS12C8878位数码管显示的时钟
#includereg52.h#includeabsacc.h#define sec XBYTE[0xed00]//秒寄存器地址#define min XBYTE[0xed02]//分寄存器地址#define hour XBYTE[0xed04]//小时寄存器地址#define DS12887a XBYTE[0xed0a]//12887A寄存器地址#define DS12887b XBYTE[0xed0b]//12887B寄存器地址unsigned char code b[8]={0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff};//数码管地址unsigned char code c[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//数码管字符码sbit beep=P1^4;sbit K2=P1^0;sbit K1=P1^1;sbit K3=P1^2;//sbit DS12887CS=P2^1;sbit DISP=P2^4;sbit S1=P2^2;unsigned char SS_1,SS_2,SS_3,SS_0;//*****************单位延时2ms函数 ************************void delay1ms(unsigned char t) {unsigned char i,j;for(;t0;t--)for(i=2;i0;i--)for(j=248;j0;j--);}//******** //12887初始化,所有中断禁止,24h制,二进制格式 ********void clock_initial(void){//DS12887CS=0;DS12887b=0x86;//禁止时钟更新hour=0x00;min=0x00;sec=0x00;DS12887a=0x20;//启动内部锂电池DS12887b=0x06;//启动时钟更新//DS12887CS=1;}//******************时间修改函数修改小时 ****************void clock_adj_h(char adj){char temp; temp=hour;if((temp+adj)==0x18){DS12887b=0x86;hour=0x00;DS12887b=0x06;}else if((temp+adj)==-1){DS12887b=0x86;hour=0x17;DS12887b=0x06; }else{DS12887b=0x86;hour=temp+adj;DS12887b=0x06;}}//******************时间修改函数修改分钟 ************************void clock_adj_m(char adj){ char temp;temp=min;if((temp+adj)==0x3c){DS12887b=0x86;min=0x00;DS12887b=0x06; }else if((temp+adj)==-1){DS12887b=0x86;min=0x3b;DS12887b=0x06; }else{DS12887b=0x86;min=temp+adj;DS12887b=0x06; }}//******************读取时间及显示函数 ************************void disp (void){unsigned char i,h,m,s,j;unsigned char a[8];//DS12887CS=0;h=hour;m=min;s=sec;//读取时间//DS12887CS=1;a[0]=c[h/10]SS_1;//小时十位a[1]=c[h%10]SS_1;//小时个位a[2]=c[10]SS_0;//显示“- ”“a[3]=c[m/10]SS_2;//分钟十位a[4]=c[m%10]SS_2;//分钟个位a[5]=c[10]SS_0;//显示“- ”“a[6]=c[s/10]SS_3;//秒十位a[7]=c[s%10]SS_3;//秒个位for(j=0;j2;j++)for(i=0;i8;i++){DISP=0;P0=a[i];DISP=1;P2=b[i];delay1ms(1);S1=0;} }//*****************按键扫描及求键码 *********************void key_scan(void){unsigned char a;char b;b=0;P1=P1|0x07;if(!(K1K2K3))//是否有按键按下{delay1ms(10);//延时消抖if(
文档评论(0)