13927|12

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

电子钟数码管很闪 [复制链接]

我做了电子钟。为什么都是很闪眼睛,好像电压不稳似的,我看公交上的没有这种现象!不知怎么回事???
此帖出自单片机论坛

最新回复

这个问题是刷新周期不固定引起的。 应该在中断中刷,时间间隔要固定。否则刷新频率再高也是闪。  详情 回复 发表于 2007-8-17 09:36
点赞 关注
 

回复
举报

20

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

回复:电子钟数码管很闪

刷新频率太低了
此帖出自单片机论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复:电子钟数码管很闪

1秒钟至少要刷50次
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

4
 

回复:电子钟数码管很闪

用软件调频率吗?怎么调高啊?晶振是实验板上自带的11.059
此帖出自单片机论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复:电子钟数码管很闪

改软件啊,你程序执行一遍要多久总应该估算出来吧
此帖出自单片机论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 

回复:电子钟数码管很闪

不行只有改硬件频率了
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

7
 

回复:电子钟数码管很闪

我自己写的程序,在实验板上验证,硬件不能改啊。。。
此帖出自单片机论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

8
 

回复:电子钟数码管很闪

刷新程序最好放在中断中完成...
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

9
 

回复: 电子钟数码管很闪

程序在这里啊?是用的中断 #include<at89x51.h> #include<intrins.h> #define unchar unsigned char #define unint unsigned int #define nop _nop_() sbit clk=P2^0 ; sbit din=P2^1 ; sbit en=P2^2 ; unchar dispbuf[9]; void delay(unint value) { while(value!=0) value--; } unsigned char second,min,hou; unsigned char keycnt; unsigned int tcnt; unchar keyscan() { unchar row,col,i; P1=0xf0; row=P1&0xf0; row=row&0xf0; P1=0x0f; col=P1&0x0f; col=col&0x0f; i=~(col|row); return i;} void tsled(void) { unchar ts0,i,j; clk=0; en=0; delay(10); for(j=0;j<9;j++) { ts0=dispbuf[j]; for(i=0;i<4;i++) { clk=1; ts0=ts0<<1; if(AC==1) din=1; else din=0; clk=0; nop; delay(3); } } en=1; } void main(void) { unsigned char key; TMOD=0x2; ET0=1; EA=1; second=0; dispbuf[2]=second/10; dispbuf[1]=second%10; while(1) { if(keyscan()!=0) { if(key!=keyscan()) { P0=0xff;} key=keyscan(); switch(key) { case 0x18: TH0=0x47; TL0=0x47; TR0=1; break; case 0x14: TR0=0; break; case 0x12: TR0=0; keycnt=0; second=0; dispbuf[6]=0x0; dispbuf[5]=0x0; dispbuf[4]=0x0; dispbuf[3]=0x0; dispbuf[2]=0; dispbuf[1]=0; break; case 0x38: dispbuf[1]=dispbuf[1]+1; break; case 0x34: dispbuf[2]=dispbuf[2]+1; break; } } dispbuf[8]=0x1; dispbuf[7]=0x01; dispbuf[0]=0x1; tsled(); } } void t0(void) interrupt 1 using 0 { tcnt++; if(tcnt==5000) { tcnt=0; second++; if(second==60) { second=0; min++; if(min==60) { min=0 ; hou++; if(hou==24) { hou=0;} } } dispbuf[6]=hou/10; dispbuf[5]=hou%10; dispbuf[4]=min/10; dispbuf[3]=min%10; dispbuf[2]=second/10; dispbuf[1]=second%10; } }
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 

回复: 电子钟数码管很闪

晕哦,自己写的程序都不知道刷新频率?!!! 是你写的吗? 我带毕业设计也不会给学生看程序的。
此帖出自单片机论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

11
 

回复:电子钟数码管很闪

你的中断频率太快(5KHZ),浪费CPU时间太多...而且你的显示部分并不在中断中完成的...
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 

回复:电子钟数码管很闪

这个问题是刷新周期不固定引起的。 应该在中断中刷,时间间隔要固定。否则刷新频率再高也是闪。
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

13
 

回复:电子钟数码管很闪

我用的是MODE 2方式自动装载,0.2us中断5000次,到1s,这样做不对吗? 还有一个问题就是时间走的不准,和电脑上比慢了,难道是初值的问题?
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表