网站大量收购独家精品文档,联系QQ:2885784924

基于pic16f877a单片机的秒表计时器.doc

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

基于pic16f877a单片机的秒表计时器 内蒙古民族大学 草原神鹰工作组 电路组 王恒舜 2012/12/12 功能实现:用于计时,可精确到秒。其最多可用于三次计时,计时范围00:00s~59:59s。也可把它改成简单的时钟。 实现原理:通过pic16f877a内部TMR0计时\定数器计时,利用键盘来控制其开启、定时,通过液晶显示。 键盘从左至右依次为:开启计时器,一次计时、二次计时,三次计时。 按下左一键开始计时: 第一次按下左二键第一次计时: 第二次按下左二键第二次计时: 按下右一键第三次计时,且计时结束: 第一、二、三次所计时间分别为02:52s(两分五十二秒),03:54s(三分五十四秒),05:09s(五分零九秒)。 其代码如下: #includepic.h #define uchar unsigned char #define uint unsigned int #define RS RC0 #define RW RC1 #define E RC2 uchar const table[]={0,1,2,3,4,5,6,7,8,9}; int num,s1,s2,s3,s4,s5,s6,a,b,c,n,i; void LCD_write_command(uchar dat); void LCD_write_data(uchar dat); void LCD_disp_char(uchar x,uchar y,uchar dat); void delay(uint x); void init(); void main() { TRISB=0; PORTB=0X07; i=0; if(RB0==0) { init(); delay(10); while(RB0) { if(num=58) { num=0; n++; c=n/3600; s5=c/10; s6=c%10; a=n%3600/60; s1=a/10; s2=a%10; b=n%60; s3=b/10; s4=b%10; LCD_disp_char(0,1,3); LCD_disp_char(2,1,table[s1]); LCD_disp_char(3,1,table[s2]); LCD_disp_char(4,1,:); LCD_disp_char(5,1,table[s3]); LCD_disp_char(6,1,table[s4]); LCD_disp_char(7,1,s); } if(RB1==0i==0) { i=1; LCD_disp_char(0,0,1); LCD_disp_char(2,0,table[s1]); LCD_disp_char(3,0,table[s2]); LCD_disp_char(4,0,:); LCD_disp_char(5,0,table[s3]); LCD_disp_char(6,0,table[s4]); LCD_disp_char(7,0,s); } if(RB1==0i==1) { i=1; LCD_disp_char(10,0,2); LCD_disp_char(12,0,table[s1]); LCD_disp_char(13,0,table[s2]); LCD_disp_char(14,0,:); LCD_disp_char(15,0,table[s3]); LCD_disp_char(16,0,table[s4]); LCD_disp_char(17,0,s); } if(RB2==0) while(RB0); } } } void init() { TRISC=0; TRISD=0; PORTD=0; LCD_write_command(0x38);//设置格式 LCD_write_command(0x0c);//整体显示 关光标 不闪烁? LCD_write_command(0x06);//设置输入方式,增量不够移位? LCD_write_command(0x01);//清屏? OPTION_REG=0X07;//设置预分为1:256 INTCON=0Xa0;//开启TMR0中断 TMR0=57;//TMR0寄存器预存57 } void interrupt time0()//中断 { T

文档评论(0)

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

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

1亿VIP精品文档

相关文档