原创 LCD常用画图子程序(点,线,图,字符库)

2008-10-11 00:55 3356 4 4 分类: MCU/ 嵌入式

LCD常用画图子程序(点,线,图,字符库)


http://blog.ednchina.com/Kaos_linyong/50205/message.aspx


//------------------------------------------------------------
//显示字符
//------------------------------------------------------------
void display_char(uint x_point,uint y_point,uchar asic_num)
{
uint i;
i=(x_point/8)+y_point*PARA;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
LCD_W_DATA=asic_num;
}
//
// 画位图函数
//
// 输入: xstart 横轴起始坐标
// ystart 纵轴起始坐标
// width 位图宽度(占多少个字节的宽度)
// hight 位图高度(以象素为单位的)
// pbmp 位图数据头指针
//在屏上画一个矩形图片
//

void DrawBitmap( uint xstart, uint ystart,uint width,uint hight, uchar const *pbmp)
{
uint i; //数据开始的内存单元
uint a; //送的行数据个数
uint b; //送的列数据
uchar temp2;
uint temp0;
uint temp1;
a="width/8";
LCD_W_CMD=0x4c; // CSRDIR 代码
//清除矩形框内的数据----------------------------
temp1=ystart;
for(b=0;b<hight;b++)
{
i=(xstart/8)+temp1*PARA+page2;
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(temp0=a;temp0>0;temp0--)
{
LCD_W_DATA = 0x00;
};
temp1++;
};
//----------------------------------------------
temp1=ystart;
for(b=0;b<hight;b++)
{
i=(xstart/8)+temp1*PARA+page2;
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(temp0=0;temp0<a;temp0++)
{
temp2=*pbmp;
LCD_W_DATA =temp2;
pbmp++;
}
temp1++;
};
}
void W_DOT(uint O_X,uchar O_Y)//(0~319)*(0~239) 画点
{
uchar a,b,c,d;
uint x,y;
y=O_Y*PARA;
c=O_X/8;
a=O_X%8;
b=0x80;
b>>=a;
// b^=0xff;
x=page2;
x=x+y+c;
a=x;
c=x>>8;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=a;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=c;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x43; // mread代码
d="LCD"_R_DATA;
d|=b;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=a;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=c;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
LCD_W_DATA=d;
}

void W_horizontal_line(uchar O_Y)//0~239 画水平线
{
uchar a;
uint i;
i=O_Y*PARA;
i+=page2;
LCD_W_CMD=0x4c; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(a=40;a!=0;a--) LCD_W_DATA=0xff;
}

void W_vertical_line(uint O_X)//0~319 画垂直线
{
uchar a,b;
uint i;
i=page2;
a=O_X/8;
b=O_X%8;
i+=a;
a=0x80;
a>>=b;
// a^=0xff;
LCD_W_CMD=0x4f; // CSRDIR 代码
LCD_W_CMD=0x46; // CSRW 代码
LCD_W_DATA=i;//0x30; // 设置参数光标指针低8位
LCD_W_DATA=i>>8;//0x2a; // 设置参数光标指针高8位
LCD_W_CMD=0x42;
for(b=0x00;b<240;b++)
{
LCD_W_DATA=a;
};
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条