?? 12864.c[2008-11-01-14-56-06].sfb
字號:
#define uchar unsigned char
#define uint unsigned int
#include "zz1.c"
#define CLR_E P6OUT&=~BIT0;//p6.0
#define SET_E P6OUT|=BIT0;
#define CLR_WR P6OUT&=~BIT1;//p6.1
#define SET_WR P6OUT|=BIT1;
#define CLR_DI P6OUT&=~BIT2;//p6.2
#define SET_DI P6OUT|=BIT2;
#define CLR_CS1 P6OUT&=~BIT3;//p6.3
#define SET_CS1 P6OUT|=BIT3;
#define CLR_CS2 P6OUT&=~BIT4;//p6.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
//******************************************************
//************讀狀態(tài)***返回0為準(zhǔn)備就緒,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;
}
//指令寄存器寫入函數(shù)
wcmd(uchar Reg_Code)
{
while (checkstatus() == 1);
CLR_DI;
CLR_WR;
DATADIR = 0xff;
DATAOUT = Reg_Code;
SET_E;
CLR_E;
}
// 顯示數(shù)據(jù)寫入函數(shù)
wdat(uchar Disp_Data)
{
while (checkstatus() == 1)
;
SET_DI;
CLR_WR;
DATAOUT = 0X00;
DATADIR = 0xff;
DATAOUT = Disp_Data;
SET_E;
_NOP();
CLR_E;
}
// 設(shè)置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寄存器初始化函數(shù)
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);
}
{
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;
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));
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -