定时计数器时钟显示_lcd1602.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定时计数器时钟显示_lcd1602

/********************************** 功能:时钟显示 2012年4月27日 编辑环境:ICCAVR 用定时计数器0实现始终显示 操作内核成功 **********************************/ #includeiom16v.h #includemacros.h #include1602LCD.c #define uint unsigned int #define uchar unsigned char char second=0,minute=11,hour=18; const uchar table[]=Wodeshizhong:; //13个字符 char counter=0; #pragma interrupt_handler timer0_ovf:10 //定时计数器0溢出中断声明 /******************************************** 定时计数器0初始化 256分频 一秒溢出 ********************************************/ void time0_init() //用计数器0不方便还是得改为1 { TCCR0|=(1CS02)|(0CS01)|(1CS00);//256分频普通模式 8M/1024= TCNT0=61; //计数寄存器初始值 TIMSK|=(1TOIE0); //溢出中断使能 SREG=0X80; //打开全局中断 } /************************************* 在第一行显示:Wodeshizhong: ***************************************/ void show_1() //显示字符函数 { uint i; write_com(0x82); for(i=0;i13;i++) { write_data(table[i]); } } /******************************************* 在第二行显示任意字符,主要是为写分隔号 ******************************************/ void show_2(uchar zf,uchar wei) { write_com(0xC0+wei);//0xC0=0x80+0x40 write_data(zf); //写指令之后就是一个字符,相对应 } void show_num(uchar num,uchar wei) // 在第二行进行数字显示 { uchar shi,ge; //定义十位和个位上的数 shi=num/10; //除10取整数 ge=num%10; //除10取余数 write_com(0x80+0x40+wei);// 第二行显示 write_data(0x30+shi);//十位的显示 write_data(0x30+ge);//个位的显示0x30对应的是0的标准字符库字符 } /************************************************ 中断溢出函数,不是每一秒溢出一次,得加循环 ************************************************/ void timer0_ovf() //为了显示00:00:00的变化值 { TCNT0=0X61; if(++counter=40) //因为溢出一次是25ms,40次就是1s { if(second==59) { second=0; minute++; } else { second++; } if(minute==59) { minute=0; hour++; } if(hour==24) { hour=0; } counter=0;// 用8位定时计数器是一定要注意40次溢出才到一秒,因此必须 // 必须在没到一个时间时一定要对定时计数器进行清零 } } void main()//主函数 {

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档