📄 m320240.c
字号:
/********************************************************
this is demo for test lcd 320240
writed by MBEST COMPANY
2005.8.19 TEST OK
mcu : AT89C52
*********************************************************/
#include <reg52.h>
/*for XBYTE define*/
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/********************************************************
define command address
*********************************************************/
#define command_port XBYTE[0x8100]
#define data_port XBYTE[0x8000]
sbit p_cs=P3^2;
sbit p_sel=P3^1;
sbit p_st=P3^0;
#define system_set 0x40
#define sleep_in 0x53
#define disp_on 0x59
#define disp_off 0x58
#define scroll 0x44
#define csrrform 0x5d
#define cgram_adr 0x5c
#define csrdir_r 0x4c
#define csrdir_l 0x4d
#define csrdir_u 0x4e
#define csrdir_d 0x4f
#define hdot_scr 0x5a
#define ovlay 0x5b
#define csrw 0x46
#define csrr 0x47
#define mwrite 0x42
#define mread 0x43
void show320 ( uint code *dd );
/*********************************************************
some test word lib
**********************************************************/
uchar code HUAN[32]={
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00
};/*-- 文字: 欢 --*/
uchar code YING[32]={
0x40,0x00,0x21,0x80,0x36,0x7C,0x24,0x44,0x04,0x44,0x04,0x44,0xE4,0x44,0x24,0x44,
0x25,0x44,0x26,0x54,0x24,0x48,0x20,0x40,0x20,0x40,0x50,0x00,0x8F,0xFE,0x00,0x00
};/*-- 文字: 迎 --*/
uchar code LE[128]={/*-- 文字: 乐 --*/
/*-- 宋体22; 此字体下对应的点阵为:宽x高=29x29 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x02,0x01,0xFF,0x00,
0x03,0xFF,0xFC,0x00,0x03,0xF0,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x03,0xC0,0x00,
0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x00,0x07,0x03,0x80,0x80,
0x06,0x03,0x81,0xC0,0x0F,0xFF,0xFF,0xE0,0x06,0x03,0x80,0x00,0x00,0x03,0x80,0x00,
0x00,0x63,0x90,0x00,0x00,0xF3,0x9C,0x00,0x00,0xE3,0x8E,0x00,0x01,0xC3,0x87,0x00,
0x03,0x83,0x83,0x80,0x07,0x03,0x83,0xC0,0x0E,0x03,0x81,0xC0,0x18,0x03,0x81,0xC0,
0x30,0x13,0x80,0x80,0x20,0x1F,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,
0x00,0x00,0x00,0x00
};
void write_com ( uchar a )
{
command_port = a ;
return ;
}
void write_data ( uchar a )
{
data_port = a ;
return;
}
//-------------------------------------------------------------------
// clear display region
//
void clear_disp ()
{
uint i ;
//------------------1 CSRDIR---------------------//
write_com ( csrdir_r );
//------------------2 CSRw------------------------//
write_com ( csrw );
write_data ( 0x00 );
write_data ( 0x00 );
//------------------3 MwRITE-----------------------//
write_com ( mwrite );
for(i= 0; i< 9600 ; i++) //320/8*240 = 9600 byte
{
write_data ( 0x00);
}
}
//-------------------------------------------------------------------
// initialate the display
void Init_disp()
{
int i;
//--------------0 reset display controllor-----//
p_st = 0;
for(i = 0 ; i < 250 ; i ++)
p_st = 1;
//--------------1 SYSTEM_SET------------------//
write_com ( system_set );
write_data ( 0x30 );
write_data ( 0x87 );
write_data ( 0x07 );
write_data ( 0x27 );//0x28 );
write_data ( 0x30 );//0x35 );
write_data ( 0xf0 );
write_data ( 0x28 );
write_data ( 0x00 );
//--------------2 SCROLL---------------------//
write_com ( scroll );
write_data ( 0x00 );
write_data ( 0x00 );
write_data ( 0xf0);
write_data ( 0x00 );
write_data ( 0x40 );
write_data ( 0xf0 );
write_data ( 0x00 );
write_data ( 0x00 );
write_data ( 0x00 );
write_data ( 0x00 );
//--------------3 HDOT_SCR--------------------//
write_com ( hdot_scr );
write_data ( 0x00 );
//--------------4 OVLAY------------------------//
write_com ( ovlay );
write_data ( 0x1c );
//-------------6 DISP_ON-------------------------//
write_com ( disp_on );
write_data ( 0x04 );
//--------------5invoking clear_disp()-----------//
clear_disp ( );
}
//------------------------------------------------------------
// show 16x16 word
//
void show1616 (uint baseaddr, uchar code * string)
{
//uint baseaddr ;
uchar addrl;
uchar addrh;
uchar counter;
for ( counter = 0; counter <16; counter++ )
{
write_com ( csrw );
addrl = (baseaddr+counter*0x28) & 0x00ff; // 0x28 bytes/line
addrh = ((baseaddr+counter*0x28)& 0xff00)>>8;
write_data ( addrl );
write_data ( addrh );
write_com ( mwrite );
write_data ( *(string+2*counter));
write_data ( *(string+2*counter + 1) );
}
return;
}
//------------------------------------------------------------
// show 32x32 word
//
void show3232 (uint baseaddr, uchar code * string)
{
uchar addrl;
uchar addrh;
uchar counter;
//baseaddr = 0x0064;
for ( counter = 0; counter <128; counter++ )
{
write_com ( csrw );
addrl = (baseaddr+counter*0x0028) & 0x0fff; // 0x28 bytes/line
addrh = ((baseaddr+counter*0x0028)& 0xfff0)>>8;
write_data (addrl );
write_data (addrh );
write_com ( mwrite );
write_data ( *(string+4*counter));
write_data ( *(string+2*counter+1 ) );
}
return;
}
void show320 ( uint code * dd)
{
//uint baseaddr ;
//uint addrl;
//uint addrh;
uint counter;
write_com ( csrdir_r );
write_com ( csrw );
write_data (0x00 );
write_data (0x00 );
write_com ( mwrite );
for ( counter = 0; counter <9600; counter++ )
{
write_data ( *dd);
dd++;
}
return;
}
void Delay5()
{
uchar i = 15;
uint j;
while(i--)
{
j=37269;
while(j--);
;
};
return;
}
void main ( void )
{
int i , j ;
uint addr ;
p_cs = 0 ;
p_sel =1 ; /* select 80 series cpu*/
Init_disp();
show3232( 5+3,LE );
Delay5();
Delay5();
clear_disp ();
show1616( 15 , BAI );
show1616 ( 15 + 4 , SI );
show1616 ( 15 + 8 , TE );
for( j = 60 ; j < 240 ; )
{
addr = 0x00 + j*0x20;
for ( i = 0 ; i < 40 ; )
{
show1616(addr+i*2 , HUAN);
show1616( addr +(i+1)*2 , YING);
i+=2;
}
j += 32 ;
}
while(1)
{
for(i = 0 ; i < 250 ; i ++)
for( j = 0 ; j < 750 ; j ++ )
;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -