LCD1602显示C程序(2008-05-27 18:40:44)
标签:it
#include <>
#include <>
#define uchar unsigned char
#define uint unsigned int
#define LcdBus PORTA
const char rs=0; //LCD端口定义
const char rw=1;
const char en=2;
void LcdIni(void);
void WrOp(uchar dat);
void WrDat(uchar dat);
void ChkBusy(void);
main()
{
LcdIni();
WrOp(0x80);
WrDat('F');
WrDat('L');
WrDat('A');
WrDat('S');
WrDat('H');
WrDat('M');
WrDat('A');
WrDat('N');
while(1);
}
void LcdIni()
{
DDRA=0XFF; //设置PA输出
PORTA=0XFF; //全部加上上拉电阻
DDRC=0XFF; //设置PC为输出
PORTC=0XFF; //全部加上上拉电阻
WrOp(0x38);
WrOp(0x06); //光标加1
WrOp(0x0c); //开显示
}
void
WrOp(uchar dat)
{
uchar i;
ChkBusy();
PORTC &=~BIT(rs); //RS=0
PORTC &=~BIT(rw); //RW=0
PORTC &=~BIT(en); //EN=0
PORTA =dat; //送数据
PORTC |=BIT(en); //EN=1
for(i=1;i;i++); //延时
PORTC &=~BIT(en); //EN=0
}
void WrDat(uchar dat)
{
uchar i;
ChkBusy();
PORTC |=BIT(rs); //rs=1
PORTC &=~BIT(rw); //rw=0
PORTC &=~BIT(en); //en=0
PORTA=dat; //送数据
PORTC |=BIT(en); //en=1
for(i=1;i;i++); //延时
PORTC &=~BIT(en); //en=0
}
void ChkBusy()
{
DDRA=0X00; //设置为输入
PORTA=0X00; //不设置上拉电阻
PORTC &=~BIT(rs); //RS=0
PORTC |=BIT(rw); //RW=1
PORTC |=BIT(en); //EN=1
while(PINA & 0x80); //送数据
PORTC &=~BIT(en); //en=0
DDRA=0xff; //设置为输出
}
SMC1602A(16*2)模拟口线接线方式
LCD1602显示C程序 来自淘豆网m.daumloan.com转载请标明出处.