Void OCMJ_WR(unsigned char dat)
{
OCM_STB=0;
while(OCM_BUSY);
PORT_DATA=dat;
delay_us(1);
OCM_STB=1;
delay_us(1);
while(!OCM_BUSY);
OCM_STB=0;
beepims(20);
}
/***************************************************
1)显示国标汉字
命令格式: F0 XX YY QQ WW
该命令为5字节命令(最大执行时间为1.2毫秒,Ts2=1.2mS),
其中 XX:为以汉字为单位的屏幕行坐标值,取值范围00到07、02到09、00到09
YY:为以汉字为单位的屏幕列坐标值,取值范围00到01、00到03、00到04
QQ WW:坐标位置上要显示的GB 2312 汉字区位码
*****************************************************/
void OCMJ_WR_CN(char xx,char yy,char* pData)
{
OCMJ_WR(0xf0);
OCMJ_WR(xx);
OCMJ_WR(yy);
OCMJ_WR(*pData);
OCMJ_WR(*(pData++));
}
/*
局部清屏指令 F0 XX YY 55D 90D 此指令可清屏16X16点阵区域
*/
void OCMJ_CLR_CN(char xx,char yy)
{
OCMJ_WR(0xf0);
OCMJ_WR(xx);
OCMJ_WR(yy);
OCMJ_WR(55);
OCMJ_WR(90);
}
/***************************************************
2) 显示8X8 ASCII字符
命令格式:F1 XX YY AS
该命令为4字节命令(最大执行时间为0.8毫秒,Ts2=0.8mS),
其中 XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
AS:坐标位置上要显示的ASCII 字符码
****************************************************/
void OCMJ_ASCII8(char xx,char yy,char as)
{
OCMJ_WR(0xf1);
OCMJ_WR(xx);
OCMJ_WR(yy);
OCMJ_WR(as);
}
/*
BT:字节像素值,0 显示白点,1 显示黑点 (显示字节为横向)
*/
void OCMJ_Dot8(char xx,char yy,char BT);
void OCMJ_CLR_ASCII8(char xx,char yy)
{ char i;
for(i=0;i<8;i++)
OCMJ_Dot8(xx,yy+i,0);//BT:字节像素值,0 显示白点,1 显示黑点 (显示字节为横向)
}
/**************************************************
3) 显示8X16 ASCII字符
命令格式:F9 XX YY AS
该命令为4字节命令(最大执行时间为1.0毫秒,Ts2=1.0mS),
其中 XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
AS:坐标位置上要显示的ASCII 字符码
****************************************************/
void OCMJ_ASCII16(char xx,char yy,char as)
{
OCMJ_WR(0xf9);
OCMJ_WR(xx);
OCMJ_WR(yy);
OCMJ_WR(as);
}
/*
BT:字节像素值,0 显示白点,1 显示黑点 (显示字节为横向)
*/
void OCMJ_CLR_ASCII16(char xx,char yy)
{ char i;
for(i=0;i<16;i++)
OCMJ_Dot8(xx,yy+i,0); //BT:字节像素值,0 显示白点,1 显示黑点 (显示字节为横向)
}
/**************************************************
4) 显示位点阵
命令格式: F2 XX YY 该命令为3字节命令(最大执行时间为0.1毫秒,Ts2=0.1mS),
其中 XX:为以1*1点阵为单位的屏幕行坐标值,取值范围00到7F、20到9F、00到9F
YY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
****************************************************/
void OCMJ_Dot(char xx,char yy)
{
OCMJ_WR(0xf2);
OCMJ_WR(xx);
OCMJ_WR(yy);
}
/**************************************************
5) 显示字节点阵
命令格式: F3 XX YY BT 该命令为4字节命令(最大执行时间为0.1毫秒,Ts2=0.1mS),
其中 XX:为以1*8点阵为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
BT:字节像素值,0 显示白点,1 显示黑点 (显示字节为横向)
****************************************************/
void OCMJ_Dot8(char xx,char yy,char BT)
{
OCMJ_WR(0xf3);
OCMJ_WR(xx);
OCMJ_WR(yy);
OCMJ_WR(BT);
}
/**************************************************
6) 清屏 命令格式:F4 该命令为单字节命令(最大执行时间为11毫秒,Ts2=11mS),其功能为将屏幕清空。
**************************************************/
void OCMJ_CLR_ALL(void)
{
OCMJ_WR(0xf4);
}
/**************************************************
7) 上移 命令格式:F5 该命令为单字节命令(最大执行时间为25毫秒,Ts2=25mS),其功能为将屏幕向上移动一个点阵行。
/**************************************************/
void OCMJ_UP(void)
{
OCMJ_WR(0xf5);
}
/******************************************************
8) 下移 命令格式:F6 该命令为单字节命令(最大执行时间为30毫秒,Ts2=30mS),其功能为将屏幕向下移动一个点阵行。
*******************************************************/
void OCMJ_DOWN(void)
{
OCMJ_WR(0xf6);
}
/********************************************************
9) 左移 命令格式:F7 该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向左移动一个点阵列。
*********************************************************/
void OCMJ_LEFT(void)
{
OCMJ_WR(0xf7);
}
/*********************************************************
10) 右移 命令格式: F8 该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向右移动一个点阵列。
*********************************************************/
void OCMJ_RIGHT(void)
{
OCMJ_WR(0xf8);
}
/***************************************************
2) 显示8X8 ASCII字符串
命令格式:F1 XX YY AS
该命令为4字节命令(最大执行时间为0.8毫秒,Ts2=0.8mS),
其中 XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13
YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4F
char flash * pData :字符串指针
****************************************************/
extern void OCMJ_WR_STR(unsigned char xx,unsigned char yy, char flash * pData)
{
while((*pData)) //遇到停止符0结束
{
OCMJ_ASCII8(xx, yy,*pData);
pData++;
if(xx<0x13)
xx++;
else
{
xx=0;
yy+=8;
}
}
}
/***************************************************
1)显示国标汉字串
命令格式: F0 XX YY QQ WW
该命令为5字节命令(最大执行时间为1.2毫秒,Ts2=1.2mS),
其中 XX:为以汉字为单位的屏幕行坐标值,取值范围00到07、02到09、00到09
YY:为以汉字为单位的屏幕列坐标值,取值范围00到01、00到03、00到04
char flash * pData: 汉字串指针
*****************************************************/
extern void OCMJ_WR_CNS(unsigned char xx,unsigned char yy, char flash * pData)
{
while((*pData)) //遇到停止符0结束
{
char x;
OCMJ_WR(0xf0);
OCMJ_WR(xx);
OCMJ_WR(yy);
// x=Unico_GB2312();
OCMJ_WR(*pData-0xa0);
pData++;
// x=Unico_GB2312(* pData);
OCMJ_WR(*pData-0xa0);
pData++;
if(xx<0x09)
xx++;
else
{
xx=0;
yy++;
}
}
}
--------------------------------------------------------------------------------
-- 作者:邱工
-- 发布时间:2005-2-16 15:46:35
--
//OCM5x10B参考程序
#include <reg52.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define data_ora P1 //MCU P1<------> LCM
#define uchar unsigned char
#define uint unsigned int
sbit req =P3^0; //请求信号,H有效
sbit busy=P3^1; //H:已收到数据并在处理中,L:空闲可接收数据
void send (uchar dat);
uchar code tab2[]={
0x35,0x38,0x27,0x4c,0x1d,0x50,0x25,0x54,0x1f,0x26,
0x1c,0x1c,0x33,0x30,0x2f,0x3e,0x19,0x0b,0x2b,0x1e,
0x10,0x22,0x1f,0x29,0x20,0x0d,0x36,0x30,0x2e,0x24,
0x2d,0x1c,0x30,0x2e,0x2f,0x34,0x2a,0x1e,0x26,0x57,
0x24,0x03,0x1f,0x49,0x24,0x3a,0x36,0x23,0x19,0x5a,
0x11,0x4a,0x1c,0x52,0x2c,0x45,0x36,0x30,0x2e,0x24,
0x32,0x1b,0x1c,0x16,0x37,0x36,0x1f,0x42,0x32,0x34,
0x1c,0x10,0x19,0x06,0x24,0x3c,0x17,0x41,0x18,0x1b,
0x15,0x24,0x33,0x23,0x1b,0x07,0x36,0x18,0x21,0x4e,
0x2a,0x19,0x33,0x23,0x18,0x5c,0x17,0x1d,0x11,0x43};
uchar code tab4[]={
"Golden Palm Science "
" Technology Co.,Ltd "
"No.31 Jianshe Road3 "
"Zhaoqing P.R.China "
"Postcode: 526040 "
"TEL: 86-758-2263858 "
"E_mail:jmgpc "
"@pub.zhaoqing.gd.cn "};
uchar code tab6[]={
/*-- 调入了一幅图像:F:\\梁\\画图\\COCKL.bmp --*/
/*-- 宽度x高度=160x80 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,