请问下面这些程序是什么意思呢?单片机的

特别是倒数两段void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
/*******************************/
void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
/*******************************/
void WriteDataLCM(uchar dataW)
{
WaitForEnable();
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
/***********************************/
void InitLcd()
{
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
/***********************************/
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
Y&=1;
X&=15;
if(Y)X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
WriteDataLCM(DData);
}
还有(0x38,1)这些括号里的不知是啥咧?还有最后一段的WriteCommandLCM(X,0); (X,0)是什么呢

第1个回答  2018-04-12
液晶屏总线通信协议,
目前看程序来看应该属于intel的8080时序,
液晶屏有8只数据脚,一个rs脚(命令/数据),一个rw脚(读/写控制),
在写入数据的时候会出现液晶忙标识,此时需要等待液晶响应,
类似于1602或12864液晶屏追问

哇!!!非常感谢你!!!可以再问一个问题吗?请问倒数两段的0x38和0x40是指什么呢?

本回答被提问者和网友采纳
第2个回答  2018-04-12
倒数两个分别是LCM初始化,和送数据追问

谢谢!可以再问一个问题吗?请问倒数两段的0x38和0x40是指什么呢?

追答

一步步来,这些都不难,关键在硬件(你这个应该是LCM)要求怎么操作

追问

好的T T,(0x38,1)这些括号里的不知是啥,也是硬件固定的吗?还有最后一段的WriteCommandLCM(X,0); (X,0)是什么呢

请问下面这些程序是什么意思呢?单片机的
目前看程序来看应该属于intel的8080时序,液晶屏有8只数据脚,一个rs脚(命令\/数据),一个rw脚(读\/写控制),在写入数据的时候会出现液晶忙标识,此时需要等待液晶响应,类似于1602或12864液晶屏

单片机程序问题。请问下面程序分别是啥意思?要详细的!
注释很全面呀,就是一个初始化程序,初始化后:1、串口波特率9600 2、开了定时器0、定时器1、串口、定时器2中断 3、程序有些问题,主要是定时器2中断开了但未做初始化;定时器1做了波特率发生器但又开了中断将会有干涉。4、一些变量也做了初始化。

单片机定时计数的问题,下面这段程序是什么意思啊,是8052,最好能逐行解...
define uchar unsigned char 宏定义懂吧 以后unsigned char就用uchar表示了 uchar code table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};编码定义和C中数组定义方法类似 这里主要是为了让数码管显示具体数字而编的 uchar seconds,minute,count1; 定义变量 \/***初始化...

各位单片机高手,哪位帮我分析一下下面这个程序,问题出在哪儿?谢谢
回答:首先给你解释一下“<<”位移符的作用: 因为你的P1=0xfe,二进制数据就是11111110,左移一位之后为11111100,0往左移了一位,但是最低位系统自动以0补齐,而0x7f的二进制数据位01111111,所以if语句是永远进入不了的。 当然,针对此问题,C51给出了一个解决方案: 使用_crol_()函数可解决此问题...

下面的单片机程序的每一步都是什么意思?
DEL3,DEL2,DEL1,DEL 是DELAY延时的循环。时长16*171*167*2us ~=1S CPL P1.0 将端口变反。这是最简单的8051测试程序,通过端口P1.0不断输随时间变化、可肉眼观察到的电平。

单片机中的Timer0Interrupt(void) interrupt 1下的程序是用来做什么的...
那是中断服务程序,看你贴出来那个函数名称貌似是定时器0的中断,定时器你装完初值,开定时器后,定时器就开始计时,定时器有四种工作模式,比如工作方式0,16位定时器,可以定时65536us,当从初值加到65536后,产生溢出,定时器向cpu申请中断,cpu转去执行中断服务程序,执行完后回到main函数,51单片机共...

这个单片机的程序怎么看?
即只要不断电,就始终循环执行,那只有用while(1)语句。以下面的简单的主程序为例 while(1)下的一对大括号构成了无限循环程序,就是画红框的两行,永无限循环的执行下去。这就是单片机主程序必须要的结构,而其它的程序中是不允许有这种无限循环(也叫死循环)语句的。

单片机语句这是什么意思这个*p是什么意思?还有下面的p++是不是无限加...
这个是指针用法,P是地址(指针),前面加个*是把该地址的内容取出来,P++是指针在用完后加1的意思,地址加1代表就是取下一位

求解释下下面单片机程序的每一步是什么意思,谢谢了
ROM: 程序存储区 mov a,#0c5h 与 mov a,0c5h 是不同的,前者是将0c5h放入a;后者是将RAM地址数为0c5h处的数据放入a。mov r0,a 与 mov @r0,a 是不同的,前者将a的内容放入r0寄存器;后者将a的内容放入数据存储区某处,其地址为r0的内容。这段指令把数据挪来挪去,貌似没具体...

请各位高手回答一下下面的单片机程序问题!谢谢!
即2μs 该段程序执行该类指令总次数=250x200x10=500000 耗用时间 = 500000x2μs = 10^6μs =1s 若改为延时0.1 第三行指令改为 LOOP1: MOV R1, #01 若改为延时0.5s, 第三行指令改为 LOOP1: MOV R3, #05 若改为延时2s, 第三行指令改为 LOOP1: MOV R1, #20 ...

相似回答