1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
while(1)
{ if(t==10) //定时器 { t=0; temp++; if(temp==9999) temp=0; } display(temp) ; //显示任意4位数 } 这个程序中display函数写在if循环外面,能够正常执行, 但是如果下载if里面,就会出错,它将显示个位从1-9, 然后高位一直闪烁。不能像写在外面那样定住,非常疑惑, 因为,其他程序根本没有变化,但是这一句变化却会有这样的改变,不知道为什么。 希望有人解惑,谢谢。 |
|
相关推荐
11个回答
|
|
不要只贴出有问题的部分,应该将你所想要设计的程序思路写出来,做什么(实现什么功能)、用什么做(硬件电路简述)、怎么做(程序大概思路)、遇到什么问题、程序,就这么一点信息,相帮你都帮不到
|
|
|
|
好吧 下面贴程序,我只是想知道把显示函数写在判断定时器函数里面和外面有什么区别,我知道正确的为什么正确,却不知道错误的为什么错误 |
|
|
|
下面是完整的程序
//显示任意4位数,1-9999动态显示,定时器0设置0.5s一走, //延时程序设置让其一直显示 #include #define uint unsigned int #define uchar unsigned char ***it duan=P2^6; ***it wei=P2^7; uchar code tableduan[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0xff ,0x6f }; uchar code tablewei[]= { 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f }; void yanshi(uint); void display(uint); uchar qian,bai,shi,ge; uint t=0,temp; void main() { TMOD=1; TH0=15536/256; TL0=15536%256; EA=1; ET0=1; TR0=1; while(1) { if(t==1) { t=0; temp++; if(temp==9999) temp=0; } display(temp) ; //显示任意4位数 } } void yanshi(uint z) { uint a,b; for (a=z;a>0;a--) for(b=120;b>0;b--); } void display(uint z) //任意4位 { uint tms; tms=5; qian=z/1000; bai=z%1000/100; shi=z%1000%100/10; ge=z%10; wei=1; P0=tablewei[0]; wei=0; duan=1; P0=tableduan[qian]; duan=0; yanshi(tms); wei=1; P0=tablewei[1]; wei=0; duan=1; P0=tableduan[bai]; duan=0; yanshi(tms); wei=1; P0=tablewei[2]; wei=0; duan=1; P0=tableduan[shi]; duan=0; yanshi(tms); wei=1; P0=tablewei[3]; wei=0; duan=1; P0=tableduan[ge]; duan=0; yanshi(tms); } void time0() interrupt 1 { TH0=15536/256; TL0=15536%256; t++; } |
|
|
|
因为单纯从你这个循环来看是没有问题的,所以必须从整体的程序来分析,才能判断的出来 |
|
|
|
嗯好的 程序贴出来了,请帮我看看 |
|
|
|
|
|
|
|
首先你可以看你的主循环里面的if语句,按照你的程序应该是1s进入次对吧,然后你在看看你的显示程序display;你是通过放在主循环里面让display不停的内循环来扫描你的四位数码管(这种做法本来就有问题),其实你这种做法能显示出来都是靠你的delay函数延时你才能勉强显示出来的,如果我估计的没错的话,你所谓能够正常显示,估计高位会比较亮低三位会比较亮的多好回过头来,假如把display放到if语句里面去是不是就等于1s钟我再来扫描一次显示呢,那我们肉眼看到是不是就是会看到你的数码是1s钟闪烁一次 |
|
|
|
动态显示利用的是人的视觉暂留现象及发光二极管的余辉效应,扫描速度要足够快,你如果放在if里面那就是0.5s才扫描一次,这样的速度远达不到要求,就变成了闪烁,放在if外面就是一直在扫描显示
|
|
|
|
谢谢,楼上给我讲的很详细,我已经懂了 |
|
|
|
数码管输入信号加上锁存器就不会出现这个问题了。
|
|
|
|
数码管输入信号加上锁存器就不会出现这个问题了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
503 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1756 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1183 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1053 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1287 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12022 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 22:54 , Processed in 0.861573 second(s), Total 89, Slave 73 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号