?? ocmj4x8c.h
字號:
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
//sbit cs = P0^0;//pg1
//sbit std = P0^1;//pg0
//sbit sclk = P0^2;//pg4
//sbit psb = P0^3; //pg2 //H=并口; L=串口;
//sbit rst = P0^4; //pg3 //Reset Signal 低電平有效
//#define cs PORTA.1
//#define std PORTA.0
//#define cs PORTA.1
//#define std PORTA.0
#define cs PORTA.0
#define std PORTA.1
#define sclk PORTA.4
#define psb PORTA.2
#define rst PORTA.3
void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);
static unsigned char ram_add[]={0x00,0x80,0x90,0x88,0x98,0x00};
unsigned char tab1[]={
"本系列中文模塊內"
"任意位置反白顯示"
"置二級字庫,可在"
"使用更方便更靈活"
};
flash unsigned char main_pagedata[]={
"置數 " //第一行
"已包袋數: " //第三行
"速度: 包/分" //第二行
"袋長: 毫米" //第四行
};
flash unsigned char set_pagedata[]={
" 基本參數設置 " //第一行
" 下料設置 " //第三行
" 電氣參數 " //第二行
" 張力設置 " //第四行
};
flash unsigned char dianqi_pagedata[]={
" 電氣參數設置 " //第一行
"輥徑: 毫米" //第三行
"細分: 步 " //第二行
"速比: / " //第四行
};
flash unsigned char xialiao_pagedata[]={
"速度: 袋 /分" //第一行
"下料: 圈 " //第三行
"計數: 袋 " //第二行
"下料速度: " //第四行
};
flash unsigned char gongyi_pagedata[]={
" 工藝參數設置 " //第一行
" 袋長: 毫米" //第三行
" 自動測量測袋長" //第二行
" 保存 " //第四行
};
flash unsigned char benji_pagedata[]={
" 本機參數設置 " //第一行
" 工藝參數 " //第三行
" 電氣參數 " //第二行
" 本機設置 " //第四行
};
flash unsigned char mima_pagedata[]={
"袋長: 毫米" //第三行
"補償: 毫米" //第三行
"置數: 個 "//第三行
"間距: 毫米" //第三行
};
flash unsigned char changgui_pagedata[]={
"袋長: 毫米" //第三行
"補償: 毫米" //第三行
"置數: 個 "//第三行
"間距: 毫米" //第三行
};
flash unsigned char test_pagedata[]={
"頻率 " //第一行
"ADC1: " //第三行
"速度 " //第二行
" " //第四行
};
flash unsigned char zhangli_pagedata[]={
"起始位置: " //第三行
"起始力矩: " //第三行
"結束位置: "//第三行
"結束力矩: " //第三行
};//起始位置和結束位置由adc1讀出,張力點為 20 40 60 80 100
//張力百分比為 (結束值-起始值)/(當前值-起始值)
/*------------將存在程序空間的字符串讀取出來,防到tab1中---------*/
//strcpy_P(char* s1, PGM_P s2);
/*-----------------------------------*/
void mydelay (unsigned int us) //delay time
{
while(us--) #asm("WDR");
}
void delay1 (unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
mydelay(1);
}
/*------------------初始化-----------------*/
void init_lcd (void)
{
rst=1;
psb=0;
wr_lcd (comm,0x30); /*30---基本指令動作*/
wr_lcd (comm,0x01); /*清屏,地址指針指向00H*/
mydelay (100);
wr_lcd (comm,0x06); /*光標的移動方向*/
wr_lcd (comm,0x0c); /*開顯示,關游標*/
}
/*---------------設置顯示位置(修改ram指針)----------------*/
void setxy(unsigned char first_line,unsigned char first_colume )
{
unsigned char i;
unsigned char temp;
temp=ram_add[first_line]+first_colume;
wr_lcd (comm,temp);
for(i=0;i<=50;i++);
}
/*---------------顯示一個字符(將1個字符碼寫入ram)----------------*/
void disp_c (unsigned char c)
{
wr_lcd (dat,c);
}
/*---------------顯示一個漢字(將2個字符碼寫入ram)----------------*/
void disp_hz (unsigned char c[])
{
wr_lcd (dat,c[0]);
wr_lcd (dat,c[1]);
}
/*---------------顯示漢字或字符----------------*/
void chn_disp (unsigned char *chn)
{
unsigned char i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80);
for (j=0;j<4;j++)
{
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}
}
/*-----------上半屏顯示漢字或字符------------*/
void chn_disp1 (unsigned char *chn)
{
uchar i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80);
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
wr_lcd (comm,0x90);
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}
/*----------------顯示圖形-----------------*/
void img_disp (unsigned char *img)
{
unsigned char i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j);
wr_lcd (comm,x1+i);
wr_lcd (comm,0x30);
wr_lcd (dat,img[j*16+i*2]);
wr_lcd (dat,img[j*16+i*2+1]);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j-32);
wr_lcd (comm,x2+i);
wr_lcd (comm,0x30);
wr_lcd (dat,img[j*16+i*2]);
wr_lcd (dat,img[j*16+i*2+1]);
}
}
wr_lcd (comm,0x36);
}
/*-------------下半屏顯示圖形--------------*/
void img_disp1 (unsigned char *img)
{
unsigned char i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j);
wr_lcd (comm,x2+i);
wr_lcd (comm,0x30);
wr_lcd (dat,img[j*16+i*2]);
wr_lcd (dat,img[j*16+i*2+1]);
}
}
wr_lcd (comm,0x36);
}
/*--------------顯示點陣----------------*/
void lat_disp (unsigned char data1,unsigned char data2)
{
unsigned char i,j,k,x;
x=x1;
for(k=0;k<2;k++)
{
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j*2);
wr_lcd (comm,x+i);
wr_lcd (comm,0x30);
wr_lcd (dat,data1);
wr_lcd (dat,data1);
}
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j*2+1);
wr_lcd (comm,x+i);
wr_lcd (comm,0x30);
wr_lcd (dat,data2);
wr_lcd (dat,data2);
}
}
x=x2;
}
wr_lcd (comm,0x36);
}
/*-----------------------------------------------*/
//當data1=0xff,data2=0xff時,在x0,y0處反白顯示16xl*yl.
void con_disp (unsigned char data1,unsigned char data2,unsigned char x0,unsigned char y0,unsigned char xl,unsigned char yl)
{
unsigned char i,j;
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y0+j);
wr_lcd (comm,x0+i);
wr_lcd (comm,0x30);
wr_lcd (dat,data1);
wr_lcd (dat,data2);
}
}
wr_lcd (comm,0x36);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
mydelay (180);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
unsigned char a,i,j,temp;
// cli();
mydelay (250);
a=content;
cs=1;
sclk=0;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
sclk=0;
}
std=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
sclk=0;
std=0;
sclk=1;
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
temp=0x80&a;
a=a<<1;
//std=CY;
if(temp==0)
std=0;
else
std=1;
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=0;
}
}
//
// sei();
}
unsigned char buffer_addr(unsigned char hang,unsigned char lie)
{
switch(hang)
{
case 1:
{
return (lie);
}
case 2:
{
return (32+lie);
}
case 3:
{
return (16+lie);
}
case 4:
{
return (48+lie);
}
}
}
void showpoint(unsigned char dat1)
{
//dat1=0x0c 關游標
//dat1=0x0e 顯示游標
mydelay(20);
wr_lcd (comm,dat1);
}
void qing_bai()
{
con_disp (0x00,0x00,0x80,0x80,16,16);
con_disp (0x00,0x00,0x80,0x8f,16,16);
}
//指定半字 反白
//在自定義方式中(即baien>20時) 從指定位置反白或取消反白 baien-20個字
void fan_bai (unsigned char baien,unsigned char x0,unsigned char y0)
{
unsigned char mod;
if(y0%2==0)
{
mod=1;
y0=y0/2;
}
else
{
mod=2;
y0=(y0-1)/2;
}
if(baien>20) //自定義方式
{
if(baien>=30)
{
mod=0x00;
baien=baien-10;
}
else
mod=0xff;
switch(x0)
{
case 1:
{
con_disp (mod,mod,0x80+y0,0x80,baien-20,16);
break;
}//end of case 1
case 2:
{
con_disp (mod,mod,0x80+y0,0x8f,baien-20,16);
break;
}//end of case 2
case 3:
{
con_disp (mod,mod,0x88+y0,0x80,baien-20,16);
break;
}//end of case 3
case 4:
{
con_disp (mod,mod,0x88+y0,0x8f,baien-20,16);
break;
}//end of case 4
}
return;
}
switch(x0)
{
case 1:
{
if(mod==1&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0xff,0x00,0x80+y0,0x80,1,16);
}//前半字
if(mod==2&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0xff,0x80+y0,0x80,1,16);
}//后半字
if(baien==0) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0x00,0x80+y0,0x80,1,16);
}//后半字
if(baien==3) //1 前半字反白,2 后半字反白 ,0 清反白 3 全字反白
{con_disp (0xff,0xff,0x80+y0,0x80,1,16);
}//后半字
wr_lcd (comm,0x36);
break;
}//end of case 1
case 2:
{
if(mod==1&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0xff,0x00,0x80+y0,0x8f,1,16);
}//前半字
if(mod==2&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0xff,0x80+y0,0x8f,1,16);
}//后半字
if(baien==0) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0x00,0x80+y0,0x8f,1,16);
}//后半字
if(baien==3) //1 前半字反白,2 后半字反白 ,0 清反白 3 全字反白
{con_disp (0xff,0xff,0x80+y0,0x8f,1,16);
}//后半字
wr_lcd (comm,0x36);
break;
}//end of case 2
case 3:
{
if(mod==1&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0xff,0x00,0x88+y0,0x80,1,16);
}//前半字
if(mod==2&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0xff,0x88+y0,0x80,1,16);
}//后半字
if(baien==0) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0x00,0x88+y0,0x80,1,16);
}//后半字
if(baien==3) //1 前半字反白,2 后半字反白 ,0 清反白 3 全字反白
{con_disp (0xff,0xff,0x88+y0,0x80,1,16);
}//后半字
wr_lcd (comm,0x36);
break;
}//end of case 3
case 4:
{
if(mod==1&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0xff,0x00,0x88+y0,0x8f,1,16);
}//前半字
if(mod==2&&baien==1) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0xff,0x88+y0,0x8f,1,16);
}//后半字
if(baien==0) //1 前半字反白,2 后半字反白 ,0 清反白
{con_disp (0x00,0x00,0x88+y0,0x8f,1,16);
}//后半字
if(baien==3) //1 前半字反白,2 后半字反白 ,0 清反白 3 全字反白
{con_disp (0xff,0xff,0x88+y0,0x8f,1,16);
}//后半字
wr_lcd (comm,0x36);
break;
}//end of case 4
}//end of switch
}
/*------------------主程序--------------------*/
/*
void test(void)
{
//SP=0x5f;
init_lcd ();
while (1)
{
lat_disp (0x00,0x00);
chn_disp (tab1);
con_disp (0xff,0xff,0x8c,0x80,2,16);
delay1 (8000);
clrram();
lat_disp (0xcc,0xcc);
delay1 (8000);
lat_disp (0x00,0x00);
chn_disp1 (tab31);
img_disp1 (tab32);
delay1 (8000);
clrram();
lat_disp (0xff,0x00);
delay1 (8000);
img_disp (tab5);
delay1 (8000);
}
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -