单片机液晶显示器C51编程的三个问题(里面详细,欢迎高手)

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:29:45
问题一:我在学OCM4X8C液晶显示器,LCD_cmd(dat)是一个往寄存器中发送指令的函数,LCD_cmd(0x34)为什么是“关闭图形显示”的意思?好像没有这条指令啊。
问题二:下面一个函数是测试液晶显示器是否忙。P1接口与D0—D7并行相接,sbit busy=P1^7。
void chk_busy (void)
{
P1=0xff;
rs=0;
rw=1;
e =1;
while(busy==1);
e =0;
}
我觉得此程序很荒唐,如果P1=0xff,则busy==P^7==1,说明液晶显示器永远是忙的,这怎么可能?!
问题三:有一个指令叫“反显”,这是什么意思?有什么功能?

51单片机作为输入口使用时,必须现象IO口送稿电平,因为我们是要判断显示屏的状态,所以必须把IO口,也就是你程序中P1口设置为输入口。
在显示屏中,通常是我们看到的字符的痕迹是被点亮的,反显恰好相反了,是把看不到的部分点亮。将向印章一样,有凸出的,也有凹下的,如果我们把正常显示说成是凸出的,那么反显就是凹下显示的。

1、34H应该是关闭图形显示的功能,你可以看液晶数据手册。
2、这个程序是通过判断P1^7这个管脚来判断液晶是否忙。这没有问题。P1口不可能永远为0XFF。如果你的P1口有数据变化,即使你把它先全部置1,它马上又会变为其它状态,所有不会一直为0XFF。
3、反显就是指背景为黑色,你要显示的字符为白色,正好跟平常显示相反。

问题一请查询液晶手册。

问题二、busy是一位变量,其值等于P1的最高位值。P1=0xff是51必须的一条命令,想读取外部电平,必需先往那个口写高电平。这是由于内部上拉电阻的影响。可以参考课本详细了解IO口的结构。你向P1口写高电平后,再去读,就是它实际的电平值,可能是高电平,也可能是低电平。busy是液晶输出的电平值,不忙时就是0.

问题三、你看过胶卷吗?那就是反显的效果,说白了就是黑白颠倒。

hehe 正如上面所说的 51的有些口就是很特别, 你不输出高电平,就读不到外部电平. 这就是双向口的弊端. 概念上不容易理解.感觉很怪, 但是你仔细研究了这些口的内部硬件结构就理解了. 很有意思的,可以做很灵活的设计

问题一:我不知道你的lcd控制器是什么,不过有关指令你应该查那种控制器的文档,里面都说明很详细;
问题二:51单片机I/O口既可做输入也可作输出,当要读取外部输入数据时先把相应位置高,如果外部数据是低电平则会拉低相应管脚,而不管你原来写的是0xFF还是0x00,因此lcd不忙时DB.7会把引脚拉低
问题三:反显就是指背景和要显示的数据完全反过来,这样原来显示的颜色变成了背景色,而原来的背景色成了数据颜色