微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > pic单片机两个IO口四线驱动LCD1602

pic单片机两个IO口四线驱动LCD1602

时间:11-30 来源:互联网 点击:

TxLs164(0x23); //接口设置

do
{
Dat = 1; //使能下沿
Dat = 0;
DelayUs(50); //延时等待
}
while (--i);

TxLs164(0x22); //四线模式

Dat = 1; //使能下沿
Dat = 0;
DelayUs(50); //延时等待

WriteData(0x28, 0); //接口设置
WriteData(0x0c, 0); //显示打开
WriteData(0x01, 0); //显示清屏
WriteData(0x06, 0); //光标右移
}

//*******************************************************************
//函数名称:ShiftChar(*buff);
//输入参数:缓冲区首址, 0 = 左移 1 = 右移
//输出参数:无
//功能描述:移动字符
//建造日期:2008.12.08
//*******************************************************************
void ShiftChar(unsigned char *buff, unsigned char rl)
{
unsigned char temp, i;

if (rl & 0x01) //字符右移
{
temp = buff[15]; //取尾字符

for (i = 15; i > 0; i--)
{
buff[i] = buff[i - 1]; //数据右移
}

buff[0] = temp; //首尾交换
}

else //字符左移
{
temp = buff[0]; //取首字符

for (i = 0; i < 15; i++)
{
buff[i] = buff[i + 1]; //数据左移
}

buff[15] = temp; //字符交换
}
}

//*******************************************************************
//函数名称:main();
//输入参数:无
//输出参数:无
//功能描述:主要程序
//建造日期:2008.12.08
//*******************************************************************
void main(void)
{
unsigned char i, rl;

PortInit(); //脚位设置
ConInit(); //配置设置
LcdInit(); //液晶设置

DelayMs(50); //短暂延时
AddrSite(0, 0); //坐标设置
PrintChar(TopChar); //发送字符

i = 0; //移动记数
rl = 0; //左右移动

while (1)
{
if (i++ > 200) //移动记数
{
i = 0; //记数清零
rl ^= 0x01; //移动取反
}

DelayMs(250); //延时显示
ShiftChar(BotChar, rl); //移动字符

AddrSite(0, 1); //坐标设置
PrintChar(BotChar); //发送字符
}
}



源代码下载:http://www.51hei.com/f/1602ym.rar
仿真文件下载:http://www.51hei.com/f/1602fz.rar

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top