中断显示怪现象?

2019-03-24 19:29发布

我现在用单片机处理一个128*64的液晶屏,我把显示函数放在主函数的while(1)里面,信息能够在屏上显示,但是当我把显示函数放在时间这1S的定时中断里面后,屏上就不会有显示了,其实这也是相当于1S刷屏呀,这是什么原因呀?我在主函数里面进行显示后再延时1S,其实效果应该是一样的呀?求原因 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
jishuaihu
1楼-- · 2019-03-25 00:04
我没有见过有51的定时器定时能达到1S的。普通51单片机12MHz晶振最多是65535uS,折合65.535mS。当然你可以通过加变量实现1S的计时。
用中断处理显示函数显然是不合适的,中断处理的数据应该尽量的少,实际使用的时候一般都是设置一个标志位,在中断函数里面对标志位进行操作,跳出中断后再执行所需函数。你的问题可能是显示函数还没有执行完毕下一个中断就到了,造成一直出于中断状态,显示函数永远没有完整的执行过一次,液晶自然也就不能显示了。还有你现在的中断函数进入中断后应该是没有关闭中断,如果关闭中断的话应该也可以显示的,但不建议这样用。再看一下程序吧!
David_Lee
2楼-- · 2019-03-25 01:14

原帖由 jiangjieqazwsx 于 2011-12-21 22:26 发表 我现在用单片机处理一个128*64的液晶屏,我把显示函数放在主函数的while(1)里面,信息能够在屏上显示,但是当我把显示函数放在时间这1S的定时中断里面后,屏上就不会有显示了,其实这也是相当于1S刷屏呀,这是什么原 ...

 

检查是不是有其它高优先级中断那些,影响了LCD的操作。

可以在进入定时中断后,关闭总中断,待定时中断中,对LCD的操作完成后,再重新开启中断。

jiangjieqazwsx
3楼-- · 2019-03-25 05:59
 精彩回答 2  元偷偷看……
jiangjieqazwsx
4楼-- · 2019-03-25 06:17
我用的是C8051F120单片机,所以要进行页面寻址,要进行寄存器配置
jishuaihu
5楼-- · 2019-03-25 09:36
谁告诉你的是这样?写程序不能靠想当然。
只要满足中断条件就会进入中断,定时器没有关就不会停,中断没有关有中断请求就会进入中断入口地址。具体的看C8051F数据手册里面的定时器和中断部分的原理吧,我没用过这个片子,也说不清。
再有一个,显示不应该这么用。中断里面处理的东西要尽量少,最好只做标记,不做处理。等跳出中断后再根据标志位进行相应处理!
jiangjieqazwsx
6楼-- · 2019-03-25 12:17
嗯,我会改善代码的,谢谢

一周热门 更多>