51单片机最简洁易懂的时钟设计.ppt

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机最简洁易懂的时钟设计

最简洁易懂的时钟设计 作者:KEVIN HE 实验要求 这个实验还是比较简单。就是一个时钟。8个数码管显示时间计算。6个按键分别对时,分,秒进行加和减的运算。。例按一下KSEC(P30)即秒数加一。再按一下KMIN(P31)即分数加一。。。 仿真图片 这个显示的是7点10分零三秒。 实验程序 #include reg52.h #define uint unsigned int #define uchar unsigned char sbit ksec=P3^0 ##定义变量 sbit kmin=P3^1; sbit khour=P3^2; sbit jsec=P3^3; sbit jmin=P3^4; sbit jhour=P3^5; unsigned secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; unsigned int num=0,sec=0,min=0,hour=0; unsigned char code table[10]={0X3f,0X30,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0x6f}; void delay(unsigned int x)##延时函数 { int i,j; for(i=0;ix;i++) for(j=0;j120;j++); } void display()##显示函数 { if(num==20) { num=0; sec++; if(sec==60) {sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) { hour=0; sec=0;min=0; } } } } secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2=0XFE; P0=table[secge]; delay(5); P2=0XFd; P0=table[secshi]; delay(5); P2=0XFB; P0=0X40; delay(5); P2=0XF7; P0=table[minge]; delay(5); P2=0XEF; P0=table[minshi]; delay(5); P2=0XdF; P0=0x40; delay(5); P2=0XbF; P0=table[hourge]; delay(5); P2=0X7F; P0=table[hourshi]; delay(5); } void keyscan()##按键函数 { if(jsec==0) {delay(10); if(jsec==0) {sec--; if(sec=0) sec=0; } while(jsec==0) display();} if(jmin==0) {delay(10); if(jmin==0) {min--; if(min=0) min=0; } while(jmin==0) display();} if(jhour==0) {delay(10); if(jhour==0) {hour--; if(hour=0) hour=0; } while(jhour==0) display();} {if(ksec==0) {delay(10); if(ksec==0) {sec++; if(sec=60) sec=0; } while(ksec==0) display();} if(kmin==0) {delay(10); if(kmin==0) {min++; if(min=60) min=0; } while(kmin==0) display(); } if(khour==0) {delay(10); if(khour==0) {hour++; if(hour=60) hour=0; } while(khour==0) display(); } } } void main()##主函数 { TMOD=0X01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while(1) { display(); keyscan(); } } void timer0() interrupt 1##定时器中断 { num++; TH0=0X3C; TL0=0XB0; } 总结 这是经过仿真证实可用的程序和仿真文件,将在论坛上发程序和仿真文件。 * *

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档