📄 12864.c[2008-11-01-13-50-24].sfb
字号:
#define uchar unsigned char
#define uint unsigned int
#include "zz1.c"
#define CLR_E P6OUT&=~BIT0;//p3.0
#define SET_E P6OUT|=BIT0;
#define CLR_WR P6OUT&=~BIT1;//p3.1
#define SET_WR P6OUT|=BIT1;
#define CLR_DI P6OUT&=~BIT2;//p3.2
#define SET_DI P6OUT|=BIT2;
#define CLR_CS1 P6OUT&=~BIT3;//p3.3
#define SET_CS1 P6OUT|=BIT3;
#define CLR_CS2 P6OUT&=~BIT4;//p3.4
#define SET_CS2 P6OUT|=BIT4;
#define DATADIR P5DIR
#define DATAOUT P5OUT
#define DATAIN P5IN
#define Set_Disp_On 0x3F
#define Set_Disp_Off 0x3E
#define Set_Column 0x40
#define Set_Page 0xB8
#define Set_Start_Line 0xC0
//******************************************************
//************读状态***返回0为准备就绪,1为忙**************
//******************************************************
uchar checkstatus()
{
uchar status=0;
SET_WR;
CLR_DI;
SET_E;
DATADIR=0x00;
status=DATAIN;
CLR_E;
DATADIR=0xff;
if(status&0x80==0x80)
return 1;
else
return 0 ;
}
//指令寄存器写入函数
wcmd(uchar Reg_Code)
{
while(checkstatus()==1);
CLR_DI;
CLR_WR;
DATADIR=0xff;
DATAOUT=Reg_Code;
SET_E;
CLR_E;
}
// 显示数据写入函数
wdat(uchar Disp_Data)
{
while(checkstatus()==1);
SET_DI;
CLR_WR;
DATAOUT=0X00;
DATADIR=0xff;
DATAOUT=Disp_Data;
SET_E;
_NOP();
CLR_E;
}
// 设置XY地址,X用页表示,Y用行表示***********
void Set_XY(unsigned char X_PageColumn, unsigned char Y_Column)
{
wcmd(Set_Page+X_PageColumn);
wcmd(Set_Column+Y_Column);
}
// 12864寄存器初始化函数
init12864()
{
DATADIR=0xff;
P6DIR=0Xff;
SET_CS1;
SET_CS2;
wcmd(Set_Disp_Off);
wcmd(Set_Start_Line);
wcmd(Set_Page);
wcmd(Set_Column);
wcmd(Set_Disp_On);
}
//*****************************************
// 清除12864显示存储器
//*****************************************
clr()
{
unsigned char j,k;
SET_CS1;
SET_CS2;
for(k=0;k<8;k++)
{
wcmd(Set_Page+k);
wcmd(Set_Column);
for(j=0;j<64;j++)
{
while(checkstatus());
wdat(0x00);
}
}
}
//*****************************************
void display(uchar x,uchar y,uchar *k) // 16*16
{
uchar i,j;
for(j=0;j<2;j++)
{
if(y<64)
{
SET_CS1;
CLR_CS2;
Set_XY(x+j,y);
}
else
{
CLR_CS1;
SET_CS2;
Set_XY(x+j,y-64);
}
for(i=0;i<16;i++)
{
wdat(*(k+j*16+i));
}
}
}
//*****************************************
void display3(uchar x,uchar y,uchar *k) // 16*8
{
uchar i,j;
// uchar rline=y,rcol=x;
//if(rcol>120) {rline=rline+2;rcol=0;}
for(j=0;j<2;j++)
{
if(y<64)
{
SET_CS1;
CLR_CS2;
Set_XY(x+j,y);}
else
{
CLR_CS1;
SET_CS2;
Set_XY(x+j,y-64);}
for(i=0;i<8;i++)
{
wdat(*(k+j*8+i));
//y=y+1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -