求分析关于1602的几行程序以下程序中有?号的地方不懂?请高手帮忙解答,灰常感谢~
/*******************************************
函数名称:LocateXY
功 能:向液晶输入显示字符位置的坐标信息
参 数:x--位置的列坐标
y--位置的行坐标
返回值 :无
********************************************/
void LocateXY(uchar x,uchar y)
{
uchar temp;
temp = x&0x0f;
y &= 0x01;
if(y) temp |= 0x40; //如果在第2行
temp |= 0x80; //数据显示地址指令最高位为1
LcdWriteCommand(temp,1);
}
/*******************************************
函数名称:LcdWriteData
功 能:向液晶显示的当前地址写入显示数据
参 数:data--显示字符数据
返回值 :无
********************************************/
void LcdWriteData( uchar data )
{
WaitForEnable(); //等待液晶不忙
SET_RS;
CLR_RW;
_NOP();
DataPort = data; //将显示数据写入数据端口
_NOP();
SET_EN; //产生使能脉冲信号
_NOP();
_NOP();
CLR_EN;
}
{[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ 以下是主函数 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
/***************************************************
程序功能:动态显示文字“welcome!”
----------------------------------------------------
测试说明:观察液晶显示
****************************************************/
#include <msp430x14x.h>
#include "cry1602.c"
unsigned char *s1 = "welcome!";
void main( void )
{
unsigned char i;
WDTCTL = WDT_ADLY_250; //间隔定时器,定时16ms
LcdReset();
DispStr(4,0,s1);
LocateXY(0,9); //确定写入字符的显示位置,???????????????????????????????? 是怎么确定的?9是如何来的?
LcdWriteCommand(0x07, 1); //整体显示左移
for(i = 12; i > 0; i--) ?????????????????????????????? 这里i=12和下面i=24是怎么算的?
{
LcdWriteData(0x20); ???????????????????写入0x20是表示什么?
//延时250ms
IFG1 &= ~WDTIFG;
while(!(IFG1 & WDTIFG)); ?????????????????????这里延时有什么作用??
IFG1 &= ~WDTIFG;
}
while(1)
{
LcdWriteCommand(0x05, 1); //整体显示右移
for(i = 24; i > 0; i--)
{
LcdWriteData(0x20);
//延时250ms
IFG1 &= ~WDTIFG;
while(!(IFG1 & WDTIFG));
IFG1 &= ~WDTIFG;
}
LcdWriteCommand(0x07, 1); //整体显示左移
for(i = 24; i > 0; i--)
{
LcdWriteData(0x20);
//延时250ms
IFG1 &= ~WDTIFG;
while(!(IFG1 & WDTIFG));
IFG1 &= ~WDTIFG;
}
}
} |