51单片机,实现秒表功能._第1页
51单片机,实现秒表功能._第2页
51单片机,实现秒表功能._第3页
51单片机,实现秒表功能._第4页
51单片机,实现秒表功能._第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档/*实现秒表功能说明:用键控制启动停止暂停继续清零按启动只有在清零或没有开始的情况下才有效按停止只有在启动的情况下才有效按暂停只有在启动的情况下才有效按继续只有在暂停的情况下才有效按清零只有在停止的情况下才有效采用中断控制方式*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intchar cent=0;char second=0;char minite=0;bit s2=0; bit s3=0; bit s4=0; bit s5=0; b

2、it s6=0; /*共阳数码管字型码*/*0,1,2,3,4,5,6,7,8,9,p.,灭*/ char code dis_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff,0xbf; /*P点显示代码序号*/ char data find_code=0,0,12,0,0,12,0,0;/*/函数名: void Delay1ms(uint count)/功能: 延时时间为1ms/输入参数:count,1ms计数/说明:总共延时时间为1ms乘以count,crystal=12Mhz/*/* 延迟函数 */void

3、Delay1ms(uint count) uint j; while(count-!=0) for(j=0;j<80;j+); /*/*显示函数*/*/void disp()char i,j=0xfe; char k; for(i=0;i<8;i+) P2=j; k=find_codei; P0=dis_codek; Delay1ms(1); j=_crol_(j,1); P0=0xff;/* 函数原型:keychuli();* 功 能:处理与键盘相连的P1口的内容,作为键值。*/uchar keychuli() uchar k; k=P1; /P1口内容送K k=k; /取反 r

4、eturn(k); /返回键值 /* 函数原型:key();* 功 能:键盘扫描函数,函数返回值即键值。*/uchar key() uchar keyzhi,keyzhii; /电子钟键盘按键键值临时存放 keyzhi=keychuli(); /调P1口处理函数 if(keyzhi!=0) /有键动作延时去抖动,否则函数返回 disp(); disp(); keyzhi=keychuli(); /再次调P1口处理函数 if(keyzhi!=0) /真正有键按下,取键值并暂存 keyzhii=keyzhi; while(keyzhi!=0) /判按键是否释放,没有释放延时去抖动等待释放 disp

5、(); disp(); keyzhi=keychuli(); keyzhi=keyzhii; /按键释放后恢复按键键值 return(keyzhi); /返回按键键值 void zxxq() /*更新显示区*/ find_code0=cent%10; find_code1=cent/10; find_code2=12; find_code3=second%10; find_code4=second/10; find_code5=12; find_code6=minite%10; find_code7=minite/10;/*中断函数*/ TTCO () interrupt 1 using 1

6、TH0=(65536-7000)/256; /赋初值TL0=(65536-7000)%256;cent+; if(cent=100) cent=0;second+;if(second=60) second=0; minite+; if(minite=60)minite=0;zxxq(); /*主函数*/void main() char kz; EA=1; ET0=1; TMOD=0X01; TH0=(65536-7000)/256; TL0=(65536-7000)%256; find_code0=11; find_code1=11; find_code2=11; find_code3=11;

7、 find_code4=11; find_code5=11; find_code6=11; find_code7=10; disp(); while(1) kz=key(); switch(kz) case 0x00:disp();break; /*判断键值后直接调用循环显示函数*/ case 0x01: / 启动 在开始或清零下 if(s3=0&&s4=0) TR0=1; zxxq(); disp(); break ; case 0x02: /停止在启动下 if(s4=0) s3=1; TR0=0; zxxq(); disp(); break; case 0x04: /暂停在启动下 if(s3=0) s4=1; TR0=0; zxxq(); disp(); break; case 0x08:/ 继续在暂停下 if(s4&&s3=0) s4=0; TR0=1; zxxq(); disp(); b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论