- 12
- 0
- 约2.65千字
- 约 4页
- 2017-08-11 发布于浙江
- 举报
12864显示汉字程序.doc
液晶TS12864-3驱动程序,可流水显示汉
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
#define DataPort P3
#define N 800
sbit E=P2^0;
sbit RW=P2^1;
sbit RS=P2^2;
sbit PSB=P2^3;
int num;
uint i=0;
uint l=0;
uint b;
uchar a[]=我爱我家0123456789abcdefg,!~_~;
uchar d[]={0x98,0x90,0x88,0x80};
/**************延时1ms*count*****************/
void delay(int count)
{ int x,y;
for(x=0;xcount;x++)
for(y=0;y120;y++);
}
/**************延时1us***********************/
/*void delayuS(uchar buf)
{
while(buf--);
}*/
/***********忙检测********************/
void Busy()
{
DataPort=0xFF;
RS=0;
RW=1;
while (1)
{
E =1;
if (P0^7==0) break;
}
E=0;
}
/***********写指令子程序****************/
void Write_Com(uchar command)
{
Busy(); //检测忙标志位
RS=0;
RW=0;
DataPort=command; //写入指令
E=1;
delay(1);
E=0;
}
/***********写数据子程序***************/
void Write_Data(uchar Data)
{
Busy();
RS=1;
RW=0;
DataPort=Data;
E=1;
delay(1);
E=0;
}
/***********LCD初始化*******************/
void Init_LCD(void)
{
PSB=0;
delay(1);
PSB=1; //将PSB置1,通信方式为8位数据并口
delay(1);
Write_Com(0x30);//30H--基本指令操作
Write_Com(0x0c);//开显示,关光标,不闪烁。
Write_Com(0x01);//清除显示
Write_Com(0x02);
Write_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
Write_Com(0x04);//显示状态 全关
}
/*****************清屏***********************/
void Clear_LCD(void)
{
Write_Com(0x01);
Write_Com(0x34);
Write_Com(0x30);
}
/******************读地址*************************************/
/*void Read_Add(void)
{
//uchar add=0;
DataPort=0xFF;
RS=0;
RW=1;
Busy();
add=(DataPort|0x10)0xbf;
//return(add);
}*/ //读地址失败
/*****************判断行*******************/
/*void Line_Num(uchar k)
{
//uint l;
if(k=128k=135)l=1;
if(k135k=143) l=3;
if(k143k=151) l=2;
if(k151k=159) l=4;
}*/
/*******************逐行显示***************************************/
void Display_Line(uchar x)
{
uchar c=0;
c=x-0x1; //本函数说明,函数内部的计算公式一定要处在函数的首行
if(i==0) Write_Com(x);
if(i==2*(0x87-c)) Write_Com(0x
原创力文档

文档评论(0)