杭州清达光电技术有限公司

12年

杭州清达光电技术有限公司

卖家积分:22001分-23000分营业执照:已审核经营模式:原厂制造商所在地区:浙江 杭州

收藏本公司 人气:1198728

企业档案

  • 相关证件:营业执照已审核 
  • 会员类型:
  • 会员年限:12年
  • 卢小姐 QQ:752574498
  • 电话:13506715842
  • 手机:13506715842
  • 阿库IM:
  • 地址:杭州市余杭区仁和街道永泰路2号22幢
  • E-mail:752574498@qq.com

您的当前位置:

杭州清达光电技术有限公司 > 技术资料 > HG2401288测试程序

HG2401288测试程序

发布时间: 2018/8/20 10:00:22 | 820 次阅读

HG2401288为自带中文字库的240128液晶屏,内置RA8822控制器,接口为并口

HG2401288测试程序如下:

//本程序为HG2401288 模块的基本驱动程序

//程序的显示结果为:

//“

//清达光电科技有限公司 ”

//“

//HG2401288

#include<stdio.h>

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint  unsigned int

#define lcd_bus  P1

//sbit _CS=P3^2;

sbit _CS=P3^3;

sbit    RS=P3^4;

sbit _WR=P3^0;

sbit _RD=P3^1;

sbit _RST=P3^5;

sbit    buzy=P3^6;

sbit    x=P3^3;

//----------------------------

//忙

//----------------------------

void busy()

{

while(buzy==1);

}

//----------------------------

//延时子程序

//----------------------------

void Delay(uint m)

{

uint i;

uint j;

for(i=0;i<m;i++)

for(j=0;j<109;j++);

}

//----------------------------

//写入寄存器地址或参数

//----------------------------

void writecom(uchar command)

{

busy();

lcd_bus =command;

_CS=0;

RS=0;

_WR=0;

_WR=1;

RS=1;

_CS=1;

}

//----------------------------

//写入数据

//----------------------------

void writedat(uchar ddata)

{

busy();

lcd_bus =ddata;

_CS =0;

RS=1;

_WR=0;

_nop_();_nop_();_nop_(); _nop_();

_WR=1;

RS=0;

_CS=1;

}

//----------------------------

//显示文本

//----------------------------

void ShowText(uchar *text)

{

while(*text>0)

{

writedat(*text);

text++;

}}

/**********************************************

 地址定义 ,x为一个字节,y为一行

********************************************/

void xy(uchar x,uchar y)

{

 uchar i;

 writecom(0x60);writecom(0x3f&x);

 writecom(0x70);writecom(0xff&y);

 _nop_();

}

//----------------------------

//显示文本

//----------------------------

void writeText(uchar x,uchar y,uchar *text)

{

xy(x,y);

while(*text>0)

{

writedat(*text);

text++; Delay(100);

}

}

void writeText1(uchar x,uchar y,uchar *text)

{

xy(x,y);

while(*text>0)

{

writedat(*text);

text++;

}

}

/*********************************************

初始化

**********************************************/

void Init()

{

_RST= 0;

buzy=1;

Delay(25);

buzy=0;

_RST= 1;

Delay(100);

writecom(0x00);writecom(0xcd);  //开电源,文本模式,开显示,不闪烁,不反白

writecom(0x01);writecom(0xf1);    // CLK_OUT 致能控制, 高触发,4M

writecom(0x02);writecom(0x10);    //60ns的读取速度

writecom(0x03);writecom(0x80);    //byte正常,com and seg不卷动

writecom(0x10);writecom(0x68);    //中英问对齐,字体正常

writecom(0x11);writecom(0x10);    // 光标高度为一,行距为0

writecom(0x12);writecom(0x91);    //水平移动,选择DDRAM1,

writecom(0x20);writecom(0x1d);    // 工作窗右边 29*8=232

writecom(0x30);writecom(0x7f);    // 工作窗低边 127

writecom(0x40);writecom(0x00);    // 工作窗左边 00

writecom(0x50);writecom(0x00);    // 工作窗顶边 00

writecom(0x21);writecom(0x1d);    // 显示窗右边 29*8=232

writecom(0x31);writecom(0x80);     // 显示窗低边 127

writecom(0x41);writecom(0x00);     // 显示窗左边 00

writecom(0x51);writecom(0x00);     // 显示窗顶边 00

//writecom(0x80);writecom(0x33);   //光标闪烁时间设定,默认值

writecom(0x81);writecom(0x40);   //  刷新频率 ,默认值

//writecom(0x81);writecom(0x00);   //  刷新频率

//writecom(0x91);writecom(0x00);   //  刷新频率 ,默认值

//writecom(0xd0);writecom(0x00);  //LCD 亮度控制(DAC 功能)

//writecom(0x90);writecom(0x0a);

writecom(0x90);writecom(0x12);   //XCK 讯号周期

//writecom(0xf0);writecom(0x08);    //清除命令  ,不用

//writecom(0xe0);writecom(0x00);

}

//----------------------------

//清屏

//----------------------------

void CleanScreen1(uchar m)

{

uchar i,j;

writecom(0x00);writecom(0xc5);  //开电源,图形模式,开显示,不闪烁,不反白

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x00);

for(i=0;i<1;i++)

{ for(j=0;j<1;j++)

writedat(m);

}

Delay(500);

writecom(0x00);writecom(0xcd); //开电源,文本模式,开显示,不闪烁,不反白

}

//----------------------------

//清屏

//----------------------------

void CleanScreen(uchar m)

{

uchar i,j;

writecom(0x00);writecom(0xc5);  //开电源,图形模式,开显示,不闪烁,不反白

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x00);

for(i=0;i<128;i++)

{for(j=0;j<30;j++)

writedat(m);

}

Delay(500);

writecom(0x00);writecom(0xcd); //开电源,文本模式,开显示,不闪烁,不反白

}

//----------------------------

//隔点

//----------------------------

void dotScreen(uchar m)

{

uchar i,j;

writecom(0x00);writecom(0xc5); //开电源,图形模式,开显示,不闪烁,不反白

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x00);

for(j=0;j<64;j++)

{

for(i=0;i<30;i++)

writedat(m);

for(i=0;i<30;i++)

writedat(~m);

}

Delay(500);

writecom(0x00);writecom(0xcd); //开电源,文本模式,开显示,不闪烁,不反白

}

//----------------------------

//边框

//----------------------------

void biank()

{

uchar i,j;

writecom(0x00);writecom(0xc5);//开电源,图形模式,开显示,不闪烁,不反白

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x00);

for(i=0;i<30;i++)

{

writedat(0xff);

}

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x7f);

for(i=0;i<30;i++)

{

writedat(0xff);

}

writecom(0x12);writecom(0x11);  //先垂直移动再水平移动

writecom(0x60);writecom(0x00);

writecom(0x70);writecom(0x01);

for(i=0;i<126;i++)

{

writedat(0x80);

}

writecom(0x60);writecom(0x3d);

writecom(0x70);writecom(0x01);

for(i=0;i<126;i++)

{

writedat(0x01);

}

writecom(0x12);writecom(0x91);

writecom(0x00);writecom(0xcd); //开电源,文本模式,开显示,不闪烁,不反白

}

/*******************************************************

文本写入

*******************************************************/

void text()

{

//biank();

writecom(0xf1);writecom(0x1f);

writecom(0x60);writecom(0x04);

writecom(0x70);writecom(0x20);

ShowText("清达光电");

writecom(0xf1);writecom(0x0f);

writecom(0x60);writecom(0x0c);

writecom(0x70);writecom(0x30);

ShowText("科技有限公司");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x5f);

writecom(0x10);writecom(0x79);

writecom(0x60);writecom(0x06);

writecom(0x70);writecom(0x40);

ShowText("HG2401288");

Delay(600);

 /*

writecom(0x00);writecom(0xcc);  // 文本 反白显示

Delay(600);

writecom(0x03);writecom(0xc4); // 设定Common 的自动卷动

Delay(60000);

writecom(0x00);writecom(0xcd);

writecom(0xf1);writecom(0x0f);

writecom(0x60);writecom(0x08);

writecom(0x70);writecom(0x70);

ShowText("杭州佳显科技有限公司HANGZHOU.");

Delay(6000);

*/

}

void tx11 () interrupt 3 using 2

{

if(~x)

{

Delay(60000);

}

}

/*******************************************************

 向下卷动

************************************************************/

void lcd_up()

{

uchar i;

for(i=0;i<240;i++)

{

writecom(0x03);writecom(0xc4); // 设定Common 的自动卷动

Delay(400);}

}

/*******************************************************

 向左卷动

************************************************************/

void lcd_left()

{

uchar i,j;

for(j=0;j<30;j++)

{

writecom(0x03);writecom(0xc3); // 设定seg 的自动卷动

Delay(600);}

}

/*****************只能向左和想下卷动*****************************/

//----------------------------

//主程序

//----------------------------

main()

{

 uchar i;

 IE=0X88;

 IP=0X08;

 IT0=0;

 Init();

 while(1)

 {

 CleanScreen(0x00);i=0;

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x0f);

writeText(0,0,"清达光电提供内置中文字库产品:直接提取中文和西文,控制器RA8822是一个双图层(Two Pages)中英文文字与绘图模式的点矩阵液晶显示(LCD)控制器,内建512K Byte 的字型码,可以显示中文字形,英日欧文字等字母,产品型号为:");

 writecom(0xf1);writecom(0x4f);

 writeText1(0,112,"HG2401288-F-LWH");

  Delay(1200);

do

{  

 CleanScreen(0x00);

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x4f);

writeText1(2,0,"水平放大演示");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x4f);

writeText1(2,50,"竖直放大演示");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x0f);

writeText1(0,25,"2401288");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x4f);

writeText1(2,70,"2 4 0 1 2 8 8");  

 Delay(1200);

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x4f);

writeText1(0,25,"2401288");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x5f);

writeText1(2,70,"2 4 0 1 2 8 8");

 Delay(1200);

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x8f);

writeText1(0,25,"2401288");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x6f);

writeText1(2,70,"2 4 0 1 2 8 8");

 Delay(1200);

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0xcf);

writeText1(0,25,"2401288");

writecom(0xf0);writecom(0xa0);

writecom(0xf1);writecom(0x7f);

writeText1(2,70,"2 4 0 1 2 8 8");

 Delay(1200);i++;}while(i<5);  

}}