单片机控制LCD显示器的一个小问题
发布网友
发布时间:2022-04-19 19:36
我来回答
共4个回答
热心网友
时间:2023-07-17 23:34
这个问题很简单,无论MCU的ROM都多大,PC的值总是不断的增加,当达到ROM最大地址附近的时候,当再有PC值增加时,PC并不会溢出,而是重新记数,一般ROM不用完的话,例如:在 0xffffH处,PC增加1后,PC就为 0x0000 ,相当于程序重新运行,(就这样如此循环执行)所以在LZ提供的程序中,发生像LZ这样的情况完全是正常的。
因为你的LCD是静态显示的,而你在程序中有一个初始化LCD的函数,所以,在程序一遍运行的过程中,LCD是静态显示的,但当PC重新计数后,又会执行一遍初始化LCD的过程,这个时候,你会看到LCD会灭一下,再亮起,,,所以LZ这个程序整个过程看上去,LCD的内容就是会有一闪一闪的。
如果在程序中加入一个死循环,这样会在LCD初始化后,稳定显示(因为不会再次执行LCD初始化函数,除非外界的干扰是程序跑飞)。
所以在学习MCU的时候,每一个寄存器(这样我特指PC,是程序记数器)都需要我们去了解其特性,,其实我当时学习MCU的书,从我做MCU(硬件+软件)工程积累下来,我发现,以前学习MCU的这本书上,感觉没有一句话是废话。。。
不知道有人有没有像我一样的感觉。
个人邮箱是:
ppt1845@163.com
如果有什么问题的话,可以互相交流
热心网友
时间:2023-07-17 23:34
你的程序执行完不会停止,会重新从程序入口再从头执行,反复执行main函数
单片机程序要作成死循环的
热心网友
时间:2023-07-17 23:34
因为你在不停的初使化LCD,你应该进入一个while(1)循环中,只初使化LCD一次就可以了……
热心网友
时间:2023-07-17 23:35
眼花- -!