基于飞思卡尔单片机的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/