收藏 分销(赏)

51单片机,实现秒表功能.doc

上传人:可**** 文档编号:12089729 上传时间:2025-09-10 格式:DOC 页数:5 大小:22.50KB 下载积分:8 金币
下载 相关 举报
51单片机,实现秒表功能.doc_第1页
第1页 / 共5页
51单片机,实现秒表功能.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
/****************************************************************************** 实现秒表功能说明:用5键控制。启动。停止.暂停.继续.清零  按S2 启动  只有在清零或没有开始得情况下才有效  按S3 停止  只有在启动得情况下才有效  按S4 暂停  只有在启动得情况下才有效  按S5 继续  只有在暂停得情况下才有效  按S6 清零  只有在停止得情况下才有效 采用中断控制方式. ******************************************************************************/ #include〈reg52、h〉 #include〈intrins、h〉 #define uchar unsigned char #define uint unsigned int char  cent=0; char second=0; char minite=0; bit s2=0;  bit s3=0; bit s4=0; bit s5=0; bit 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 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_code[i]; P0=dis_code[k]; Delay1ms(1);      j=_crol_(j,1);ﻩ } ﻩ P0=0xff; } /************************************************************************ *   函数原型:keychuli(); *  功   能:处理与键盘相连得P1口得内容,作为键值。 ************************************************************************/ uchar keychuli() {   uchar k;         k=P1;           //P1口内容送K k=~k;                   //取反   return(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(); ﻩ   disp();     keyzhi=keychuli(); ﻩ   } ﻩﻩ keyzhi=keyzhii;         //按键释放后恢复按键键值 }    }  return(keyzhi);              //返回按键键值 } void zxxq()ﻩ /*更新显示区*/ {   find_code[0]=cent%10;         ﻩ   find_code[1]=cent/10; find_code[2]=12;   find_code[3]=second%10; find_code[4]=second/10; find_code[5]=12;   find_code[6]=minite%10;   find_code[7]=minite/10;ﻩ } /*中断函数*/ TTCO () interrupt 1 using 1 { ﻩ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_code[0]=11;   find_code[1]=11;  find_code[2]=11;  find_code[3]=11; find_code[4]=11; find_code[5]=11; find_code[6]=11; ﻩ find_code[7]=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(); ﻩﻩ ﻩ } ﻩ      break; ﻩ ﻩ ﻩ case 0x10: ﻩﻩ   // 清零 在停止下 ﻩ ﻩ    if(s3&&!s4) ﻩﻩ ﻩﻩ  { ﻩﻩﻩ ﻩ  s3=0; ﻩ ﻩ   s4=0; ﻩ ﻩﻩ TR0=0; ﻩﻩﻩ ﻩﻩ  cent=0;               second=0;           minite=0; ﻩ ﻩﻩ zxxq(); ﻩ ﻩ disp(); ﻩ ﻩ ﻩ   } ﻩ  break; ﻩ   ﻩﻩﻩ ﻩ ﻩ ﻩﻩﻩ ﻩ ﻩﻩ   }ﻩ ﻩﻩﻩﻩ      } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服