单片机12864 c程序-MSP430与12864连接驱动程序(KS0108)
#i nclude "MSP430x14x.h" // Standard EquaTIons
#i nclude "math.h"
#i nclude "stdlib.h"
#i nclude "stdio.h"
#i nclude "string.h"
#i nclude "ctype.h"
#i nclude "HZTable.h"
#i nclude "ASCII816.h"
#define uint unsigned int
#define uchar unsigned char
//**********************************************
#define RS BIT0
#define RW BIT1
#define E BIT2
#define CS1 BIT3
#define CS2 BIT4
#define RST BIT5
#define EL BIT6 //背光
//数据线:p4口 ,控制线: p5口
//**********************************************
uchar cradd1,cradd2;
uchar item1[5]={0,1,2,3,50}; //欢迎使用
uchar item2[5]={4,5,6,7,50}; //请等待……
//=======================================================
void short_delay(uint i)
{ uint j;
for(j=0;j<=i;j++);
}
void delayms(uchar TIckms)
{ uchar count,i;
_NOP();
_NOP();
_NOP();
for(i=TIckms;i>0;i--)
{ for(count=0;count<=58;count++) {;}
_NOP();
}
}
//**************************************************
void prl0(uchar com1)// 写指令代码子程序(左)
{
P5DIR|=0X7F; //P5为输出口
P5OUT|=CS1; //csa=1
P5OUT&=~CS2; //csb=0
P5OUT&=~RS;
P5OUT|=RW; //RS=0,R/W=1,以便读液晶状态
P4DIR=0x00; //P4口为输入口
do
{
P5OUT|=E; //E=1
cradd1=P4IN;
P5OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P5OUT&=~RW; //rw=0
P4DIR=0xff; //P4口为输出口
P4OUT=com1;
P5OUT|=E; //E=1
P5OUT&=~E; //E=0
}
//**************************************************
void prl1(uchar dat1)// 写显示数据子程序(左)
{
P5DIR|=0X7F; //P5为输出口
P5OUT|=CS1; //csa=1
P5OUT&=~CS2; //csb=0
P5OUT&=~RS;
P5OUT|=RW; //RS=0,R/W=1,以便读液晶状态
P4DIR=0x00; //P4口为输入口
do
{
P5OUT|=E; //E=1
cradd1=P4IN;
P5OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P5OUT|=RS; //rs=1
P5OUT&=~RW; //rw=0
P4DIR=0xff; //P4口为输出口
P4OUT=dat1;
P5OUT|=E; //E=1
P5OUT&=~E; //E=0
}
//**************************************************
void prr0(uchar com2)// 写指令代码子程序(右)
{
P5DIR|=0X7F; //P5为输出口
P5OUT&=~CS1; //csa=0
P5OUT|=CS2; //csb=1
P5OUT&=~RS;
P5OUT|=RW; //RS=0,R/W=1,以便读液晶状态
P4DIR=0x00; //P4口为输入口
do
{
P5OUT|=E; //E=1
cradd1=P4IN;
P5OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P5OUT&=~RW; //rw=0
P4DIR=0xff; //P4口为输出口
P4OUT=com2;
P5OUT|=E; //E=1
P5OUT&=~E; //E=0
}
//*************************************************
void prr1(uchar dat2)// 写显示数据子程序(右)
{
P5DIR|=0X7F; //P5为输出口
P5OUT&=~CS1; //csa=0
P5OUT|=CS2; //csb=1
P5OUT&=~RS;
P5OUT|=RW; //RS=0,R/W=1,以便读液晶状态
P4DIR=0x00; //P4口为输入口
do
{
P5OUT|=E; //E=1
cradd1=P4IN;
P5OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P5OUT|=RS; //rs=1
P5OUT&=~RW; //rw=0
P4DIR=0xff; //P4口为输出口
P4OUT=dat2;
P5OUT|=E; //E=1
P5OUT&=~E; //E=0
}
//*************************