#include"header.h"
#include"letter.h"
/*#pragma DATA_SECTION(DATA_ADD,"DATA_ADD_file") //LCD写命令地址
#pragma DATA_SECTION(COMMAND_ADD,"CMD_ADD_file")
unsigned int DATA_ADD,COMMAND_ADD;*/
unsigned int letteraddress;
//================================================================
//LCD写命令函数
//================================================================
void CMD_WR(unsigned int i)
{
CMD;
CE_EN;
WR_EN;
//P2_3=0;
COMMAND_ADD=i;
//delay();
CE_OFF;
WR_END;
}
//================================================================
//LCD写数据函数
//================================================================
void DATA_WR(unsigned int i)
{
DATA;
CE_EN;
WR_EN;
DATA_ADD=i;
// delay();
CE_OFF;
WR_END;
}
/*unsigned int RD_AD(void)
{
unsigned int address,addressh,addressl;
CE_EN;
CMD;
COMMAND_ADD=0x47;
addressl = DATA_ADD;
addressh = DATA_ADD;
address = addressh<<8 + addressl;
CE_OFF;
return address;
}*/
//================================================================
//液晶初始化程序
//================================================================
void LCD_init()
{
unsigned int i;
unsigned char code a[8]={ 0x030,0x087,0x07,0x027,0x032,0x0EF,0x028,0x00 },
b[10]={0x000,0x000,0x0F0,0x080,0x025,0x0F0,0x000,0x04B,0x0E0,0x02E};
//*******************液晶复位***************************************
LCD_RST;
for(i=100;i>0;i--);
LCD_RST_END;
for(i=100;i>0;i--);
//*******************LCD系统初始化***************************************************************
CMD_WR(0x040);
for(i=0;i<8;i++)
DATA_WR(a[i]);
//********************设置显示起始地址和显示区域**************************************************
CMD_WR(0x44);
for(i=0;i<10;i++)
DATA_WR(b[i]);
//*********************设置画面水平偏移量***********************************************************
CMD_WR(0x5a);
DATA_WR(0x0);
//*********************设置液晶显示模式(图形模式)************************************************
CMD_WR(0x5b);
DATA_WR(0x4);
//*********************开第一显示区 ,关闪烁*********************************************************
CMD_WR(0x59);
DATA_WR(0x04);
LCD_clr(); //清屏
}
//================================================================
//设置光标地址
//================================================================
void Cursor_pos_set(char x,char y)//x为显示汉字的行号,y为显示汉字的列号
{
unsigned int addressh,addressl;
letteraddress = x*40;
letteraddress = letteraddress*16+y;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
}
//================================================================
//16*16汉字显示函数
//================================================================
void Display_hz(unsigned int i,uchar reverse)//i为汉字在字库中的序号
{
uchar addressh=0,addressl=0,j;
i=i*30;
//**************光标地址的移动方向为向下***********************
CMD_WR(0x04F);
//***************使能连续写功能,写左半汉字********************
CMD_WR(0x042);
if(reverse==1)
{
for(j=0;j<15;j++)
DATA_WR( ~Chinese_character[i+(j<<1)]);
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//***************写右半个汉字*********************************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//***************写入光标地址,即右半汉字写入地址*************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
//****************使能连续写功能****************************
CMD_WR(0x042);
for(j=0;j<15;j++)
DATA_WR( ~Chinese_character[i+(j<<1)+1]);
//*************把光标位置移动到下一汉字的地址*******************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//*************写入光标地址,即右半汉字写入地址************************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
}
else
{
for(j=0;j<15;j++)
DATA_WR( Chinese_character[i+(j<<1)]);
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//***************写右半个汉字*********************************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//***************写入光标地址,即右半汉字写入地址*************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
//****************使能连续写功能****************************
CMD_WR(0x042);
for(j=0;j<15;j++)
DATA_WR( Chinese_character[i+(j<<1)+1]);
//*************把光标位置移动到下一汉字的地址*******************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//*************写入光标地址,即右半汉字写入地址************************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
}
}
//================================================================
//15*16汉字反显函数
//================================================================
void ReverseDisplay_hz(unsigned int i)//i为汉字在字库中的序号,reverses是否反显
{
uchar addressh=0,addressl=0,j;
i=i*30;
//**************光标地址的移动方向为向下***********************
CMD_WR(0x04F);
//***************使能连续写功能,写左半汉字********************
CMD_WR(0x042);
for(j=0;j<15;j++)
DATA_WR( ~Chinese_character[i+(j<<1)]);
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//***************写右半个汉字*********************************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//***************写入光标地址,即右半汉字写入地址*************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
//****************使能连续写功能****************************
CMD_WR(0x042);
for(j=0;j<15;j++)
DATA_WR( ~Chinese_character[i+(j<<1)+1]);
//*************把光标位置移动到下一汉字的地址*******************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//*************写入光标地址,即右半汉字写入地址************************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
}
//================================================================
//8*16字符显示函数
//================================================================
void Display_asc(Uint16 i , uchar inverse)//i为汉字在字库中的序号,inverse=1时反显示汉字
{
uchar addressh,addressl,j;
i=i<<4;
//**************光标地址的移动方向为向下***********************
CMD_WR(0x04F);
//***************使能连续写功能,写左半汉字********************
CMD_WR(0x042);
if(inverse)
{
for(j=0;j<16;j++)
DATA_WR( ~ASC_character[i+j]);
}
else
{
for(j=0;j<16;j++)
DATA_WR( ASC_character[i+j]);
}
//*************把光标位置移动到下一汉字的地址*******************
letteraddress++;
addressl = letteraddress&0x0FF;
addressh = letteraddress>>8;
//*************写入光标地址,即右半汉字写入地址************************
CMD_WR(0x46);
DATA_WR(addressl);
DATA_WR(addressh);
}
//================================================================
//LCD清屏程序
//================================================================
void LCD_clr()
{
uchar i,j;
CMD_WR(0x4f);
for(i=0;i<0x28;i++)
{
CMD_WR(0x46);
DATA_WR( i);
DATA_WR( 0x0);
CMD_WR(0x42);
for(j=240;j>0;j--)
DATA_WR( 0x0);
}
cnt_1s_copy=0;//清屏后立即更新时间显示
}
/*显示矩形
参数x_start:矩形的X起始地址
y_start:矩形的Y起始地址
x_dim: 矩形的长度
y_dim: 矩形的宽度
color: 矩形显示方式(1:矩形为高亮,0:矩形为暗)
*/
/*void LCD_tang(uint8 x_start,uint8 y_start,uint8 x_dim,uint8 y_dim,uint8 color )
{uint8 i,j;
for(j=0;j<x_dim;j++)
{LCD_com(0x46);
LCD_data((y_start*0x28+x_start+j)%0x100);
LCD_d
LCd.rar_320 240 LCD PIC_LCD 240_PIC_pic 320 240 l_pic lcd
版权申诉
62 浏览量
2022-09-22
19:48:04
上传
评论
收藏 2KB RAR 举报
林当时
- 粉丝: 100
- 资源: 1万+