8X16点阵滚动显示时钟.docx

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

8X16点阵滚动显示时钟(带源程序及仿真) 仿真界面如下图所示,能实现滚动显示时间。按下“调整模式”键,可以进入调整“分”与“时”的模式。此时可以按“调整数值”键来调整对应的数值。 C语言源程序: #include REGX51.H #include intrins.h unsigned char sec=0,min=0,hou=12,timecount=0,oldP1=0xff,setting=0; bit point=1,K1_old,K2_old; unsigned char code dis_code[56]={0x07c,0x082,0x082,0x07c,0x000,0x084,0x0fe,0x080, //0与1 0x0c4,0x0a2,0x092,0x08c,0x044,0x082,0x092,0x06c, //2与3 0x078,0x044,0x0fe,0x040,0x04e,0x08a,0x08a,0x072, //4与5 0x07c,0x092,0x092,0x064,0x006,0x002,0x0f2,0x00e, //6与7 0x06c,0x092,0x092,0x06c,0x04c,0x092,0x092,0x07c, //8与9 0x008,0x084,0x052,0x030,0x092,0x0F4,0x004,0x000, //分 0x07C,0x054,0x07C,0x002,0x092,0x07F,0x002,0x000, //时 }; sbit K1=P2^7; sbit K2=P2^6; void time50ms(void); void delay2ms(void); void timedeal(void); void main(void) { unsigned char num,disnum,x,y,offset=0,dis_p,scantimes=0; IE=0x82; //允许定时器0工作 TMOD=0x01; //timer0为模式1 TR0=1; //定时器0可以工作 TH0 = 0x3c;TL0 = 0x0b0; do { if(setting==0){ //正常显示状态 for(x=0;x16;x++){ dis_p=x+offset; if(dis_p26) dis_p-=27; if(dis_p==0 || dis_p==5 || dis_p==10 || dis_p==12 || dis_p==17 || dis_p21){ //空列 y=0; }else if(dis_p=4){ //1~4为时的十位 num=hou/10; if(num0) y=dis_code[num*4+dis_p-1]; else y=0; }else if(dis_p=9){ //6~9为时的个位 num=hou%10; y=dis_code[num*4+dis_p-6]; }else if(dis_p==11){ //11为冒号的显示位 if(point) y=0x24; else y=0; }else if(dis_p=16){ //13~16为分的十位 num=min/10; y=dis_code[num*4+dis_p-13]; }else{ //18~21为分的个位 num=min%10; y=dis_code[num*4+dis_p-18]; } P1=0; P3=x*4; P1=y; delay2ms(); } scantimes++; if(scantimes=8){ scantimes=0; offset++; if(offset26) offset=0; }} else{ //当进入调整时间的状态,运行下面的程序段 for(x=0;x16;x++){ if(setting==1) disnum=min; else disnum=hou; if(x8) //前8列显示汉字 y=dis_code[32+setting*8+x]; else if(x12){ //8~

文档评论(0)

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

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

1亿VIP精品文档

相关文档