基于飞思卡尔单片机的1602 LCD驱动

  • 格式:doc
  • 大小:15.00 KB
  • 文档页数:2

1602是最简单的LCD,几块钱一个,也非常地简单。论坛上有人要飞思卡尔的1602程序,早的时候写了一个。主要是改寄存器,应该是移植了别人的程序。

1602可以显示2行、每行显示16个ASCII字符,并且可以自定义图形,只需要写入相对应字符的ASCII码就可以显示。1602各引脚的功能,具体不同厂家生产的引脚可能不一样,大家使用前要注意看厂家提供的资料。1602的ds大家自己去搜吧。

D0~D7端为8位数据口,进行数据传送,而RS、R/W、E端则配合可以做出不同的操作,对1602进行操作主要有四种,如下:

1、读状态,输入:RS=L,RW=H,E=H。输出:D0~D7=状态字

2、写指令,输入:RS=L,RW=L,D0~D7=指令,E=高脉冲。输出:无

3、读数据,输入:RS=H,RW=H,E=H。输出:D0~D7=数据

4、写数据,输入:RS=H,RW=L,D0~D7=数据,E=高脉冲。输出:无

从以上可以看出,如果想对1602进行何种操作,只要按其相对应的操作规程来做即可。

//************************************************************************************

//省略若干个宏,见代码,HCS08dz60,那几个管脚宏也没有改动,很容易看明白。

//下载:/files/8e571ae1-cf81-11de-b24d-0014221b798a/

////////////////////////////////////////////////////////////////////////////////

unsigned char uctech[] = {"ITSC"};

unsigned char net[] = {"WHUT"};

void main(void)

{

SOPT1_COPT = 0; /* Watchdog disabled */

/* MCG init Busclk = 2M */

MCGC1 = 0x80;

MCGC2 = 0x36;

MCGC3 = 0x01;

while(!MCGSC_OSCINIT);

/* GPIO Init */

PTBDD_PTBDD1 = 1;

LED = 1;

PTADD_PTADD5 = 1;

PTADD_PTADD4 = 1;

PTADD_PTADD6 = 1;

// EnableInterrupts; /* enable interrupts */

Delay400Ms();

LCDInit();

Delay5Ms();

DisplayListChar(6, 1, uctech);

DisplayListChar(6, 0, net);

for(;;)

{

} /* loop forever */

/* please make sure that you never leave main */

}

//************************************************************************************

//下载:/files/8e571ae1-cf81-11de-b24d-0014221b798a/