欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载  

    基于51单片机的秒表程序.pdf

    • 资源ID:7207754       资源大小:90.54KB        全文页数:5页
    • 资源格式: PDF        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机的秒表程序.pdf

    基于基于 51 单片机的秒表程序单片机的秒表程序 #include sbitADDR3=P13;/单片机 I/O 口 sbit ENLED=P14; sbit KEY1 = P24; sbit KEY2 = P25; sbit KEY3 = P26; sbit KEY4 = P27; unsigned char code LedChar = /数码管显示字符转换表 0 xC0, 0 xF9, 0 xA4, 0 xB0, 0 x99, 0 x92, 0 x82, 0 xF8, 0 x80, 0 x90, 0 x88, 0 x83, 0 xC6, 0 xA1, 0 x86, 0 x8E ; unsigned char LedBuff6 = /数码管显示缓冲区 0 xFF, 0 xFF, 0 xFF, 0 xFF, 0 xFF, 0 xFF ; unsigned char KeySta4 = 1,1,1,1; bit StopwatchRefresh=1; bit StopwatchRunning=0; unsigned char DecimalPart=0; unsigned int IntegerPart=0; unsigned char T0RH=0; unsigned char T0RL=0; void ConfigTimer0(unsigned int ms); void StopwatchDisplay(); void KeyDriver(); void main() EA= 1;/使能总中断 ENLED=0; ADDR3=1; P2=0XFE; ConfigTimer0(2); while (1) if (StopwatchRefresh) StopwatchRefresh=0; StopwatchDisplay(); KeyDriver(); void ConfigTimer0(unsigned int ms) unsigned long tmp; tmp=11059200/12; tmp=(tmp*ms)/1000; tmp=65536-tmp; tmp=tmp+18; T0RH=(unsigned char)(tmp8); T0RL=(unsigned char)tmp; TMOD TMOD|=0X01; TH0=T0RH; TL0=T0RL; ET0=1; TR0=1; void StopwatchDisplay() signed char i; unsigned char buf4; LedBuff0=LedCharDecimalPart%10; LedBuff1=LedChar(DecimalPart/10)%10; buf0=IntegerPart%10; buf1=(IntegerPart/10)%10; buf2=(IntegerPart/100)%10; buf3=(IntegerPart/1000)%10; for(i=3;i=1;i-) if(bufi=0) LedBuffi+2=0XFF;/高位消零 else break; for(;i=0;i-) LedBuffi+2=LedCharbufi; LedBuff2/第三个数码管显示小数点 /秒表开始函数 void StopwatchAction() if(StopwatchRunning) StopwatchRunning=0; else StopwatchRunning=1; /秒表复位函数 void StopwatchReset() StopwatchRunning=0; DecimalPart=0; IntegerPart=0; StopwatchRefresh=1; /检测按键是否有动作,主函数中调用此函数 voidKeyDriver() unsigned char i; staticunsigned char backup 4= 1,1,1,1; for(i=0; i<4; i+) if(backupi != KeyStai) if(backupi != 0) if(i=1) StopwatchReset(); else if(i=2) StopwatchAction(); backupi = KeyStai; /按键扫描函数,需在定时中断中调用,推荐调用间隔 1ms void KeyScan() unsigned char i; static unsigned char keybuf4 = 0 xFF, 0 xFF, 0 xFF, 0 xFF; /将一行的 4 个按键值移入缓冲区 keybuf0 = (keybuf0 << 1) | KEY1; keybuf1 = (keybuf1 << 1) | KEY2; keybuf2 = (keybuf2 << 1) | KEY3; keybuf3 = (keybuf3 << 1) | KEY4; /消抖后更新按键状态 for (i=0; i<4; i+)/每行 4 个按键,所以循环 4 次 if (keybufi= 0 x00) /连续 4 次扫描值为 0,即 4*4ms 内都是按下状态时,可认为按键已稳定的按 下 KeyStai = 0; else if (keybufi=0 xFF) /连续 4 次扫描值为 1,即 4*4ms 内都是弹起状态时,可认为按键已稳定的弹 起 KeyStai = 1; /数码管显示函数,中断函数中调用 void LedScan() static unsigned char i=0; P0=0XFF; P1=(P1 P0=LedBuffi; if(i=10) DecimalPart=0; IntegerPart+; if(IntegerPart=10000) IntegerPart=0; StopwatchRefresh=1; /* T0 中断服务函数,用于数码管显示扫描与按键扫描 */ void InterruptTimer0() interrupt 1 static unsigned char tmr10ms=0; TH0=T0RH; TL0=T0RL; LedScan(); KeyScan(); tmr10ms+; if(tmr10ms=5) tmr10ms=0; StopwatchCount();

    注意事项

    本文(基于51单片机的秒表程序.pdf)为本站会员(苏美尔)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开