程序如下:
/***************************************************
程序功能:动态显示文字“welcome”
----------------------------------------------------
测试说明:观察液晶显示
****************************************************/
#include <msp430.h>
#include "Cry1602.h"
#include "Cry1602.c"
uchar *s1 = "welcome!";
void main( void )
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
uchar i;
WDTCTL = WDT_ADLY_16; //间隔定时器,定时16ms
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
LcdReset();
DispStr(4,0,s1);
LocateXY(0,9); //确定写入字符的显示位置
LcdWriteCommand(0x07, 1); //整体显示左移
for(i = 12; i > 0; i--)
{
LcdWriteData(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;
}
}
}
头文件一部分:
/*******************************************
函数名称:LocateXY
功 能:向液晶输入显示字符位置的坐标信息
参 数:x--位置的列坐标
y--位置的行坐标
返回值 :无
********************************************/
void LocateXY(uchar x,uchar y)
{
uchar temp;
temp = x&0x0f;
y &= 0x01;
if(y) temp |= 0x40; //如果在第2行
temp |= 0x80;
LcdWriteCommand(temp,1);
}
请问一下:这个 LocateXY中x为列y为行,x取值为0-15,y取值为0和1,
LocateXY(0,9); 是不是反了
LocateXY(9,0);但我试验过了后者不行,为什么呢?想不懂了。
还有这个延时函数是如何达到250ms的?、
此帖出自
小平头技术问答
一周热门 更多>