lcdc语言画线函数 lcd绘制曲线

C语言的模块化编程还是不太理解,还请各位大神指点!

模块化编程是为了更好的管理工程、方便以后移植代码、使主函数或主文件(即有main函数的那个文件)变得简单,因为我们读代码时一般都是从主函数开始读的。

成都创新互联是专业的蛟河网站建设公司,蛟河接单;提供网站设计制作、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行蛟河网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

那怎么进行模块化呢?

简单的就是一个功能包装成一个函数,要实现什么功能就调用哪个函数实现。

而复杂点的就是,一个功能模块统一放一个C文件中,这个模块相关的函数全部在这个C文件中实现,在主文件(即有main函数的C文件)想要使用这个模块的功能函数,只需要包含它的头文件就可以调用了。那头文件就只是放这个功能模块的函数声明。

这样子做,以后移植就方便多了。如果别的工程需要这个功能模块,只需复制一下它的C文件已经H文件到这个工程目录下,就能使用。

比如实现LCD描字、划线、画圆等等函数都放在一个叫做lcd.c的文件中,那就应该有一个叫做lcd.h的文件跟它对应,这个.h都是放这个.c文件对外函数的声明。主文件的开头出只需来一个#include"lcd.h"就可以调用这些画圆划线函数了。

单片机控制LCD打点 如何打一条线

这与液晶的驱动芯片有关,比如带字库的12864液晶,画点、画线子函数如下:

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

// 画任意点

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

void dian( unsigned char X, unsigned char Y, unsigned char Color )

{

unsigned char Row , Tier , Tier_bit ;

unsigned char ReadOldH, ReadOldL ;

send_com( 0x34 ) ;

send_com( 0x36 ) ;

Tier = X 4 ;

Tier_bit = X 0x0f ;

if( Y 32 )

{

Row = Y ;

}

else

{

Row = Y - 32 ;

Tier += 8 ;

}

send_com( Row + 0x80 ) ;

send_com( Tier + 0x80 ) ;

read_12864() ;

ReadOldH = read_12864() ;

ReadOldL = read_12864() ;

send_com( Row + 0x80 ) ;

send_com( Tier + 0x80 ) ;

if( Tier_bit 8 )

{

switch( Color)

{

case 0 : ReadOldH =( ~( 0x01 ( 7 - Tier_bit ))) ; break ;

case 1 : ReadOldH |= ( 0x01 ( 7 - Tier_bit )) ; break ;

case 2 : ReadOldH ^= ( 0x01 ( 7 - Tier_bit )) ; break ;

default : break ;

}

send_data( ReadOldH ) ;

send_data( ReadOldL ) ;

}

else

{

switch(Color)

{

case 0 : ReadOldL = (~( 0x01 ( 15 - Tier_bit ))) ; break ;

case 1 : ReadOldL |= ( 0x01 ( 15 - Tier_bit )) ; break ;

case 2 : ReadOldL ^= ( 0x01 ( 15 - Tier_bit )) ; break ;

default : break ;

}

send_data( ReadOldH ) ;

send_data( ReadOldL ) ;

}

send_com( 0x30 );

}

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

//画水平线

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

void linex( unsigned char X0, unsigned char X1, unsigned char Y, unsigned char Color )

{ unsigned char Temp ;

if( X0 X1 )

{

Temp = X1 ;

X1 = X0 ;

X0 = Temp ;

}

for( ; X0 = X1 ; X0++ )

dian( X0, Y, Color ) ;

}

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

//画垂直线

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

void liney( unsigned char X, unsigned char Y0, unsigned char Y1, unsigned char Color )

{

unsigned char Temp ;

if( Y0 Y1 )

{

Temp = Y1 ;

Y1 = Y0 ;

Y0 = Temp ;

}

for(; Y0 = Y1 ; Y0++)

dian( X, Y0, Color) ;

}

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

//画任意两点间线段

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

void line( unsigned char StartX, unsigned char StartY, unsigned char EndX, unsigned char EndY, unsigned char Color )

{

int t, distance;

int x = 0 , y = 0 , delta_x, delta_y ;

char incx, incy ;

delta_x = EndX - StartX ;

delta_y = EndY - StartY ;

if( delta_x 0 )

{

incx = 1;

}

else if( delta_x == 0 )

{

liney( StartX, StartY, EndY, Color ) ;

return ;

}

else

{

incx = -1 ;

}

if( delta_y 0 )

{

incy = 1 ;

}

else if(delta_y == 0 )

{

linex( StartX, EndX, StartY, Color ) ;

return ;

}

else

{

incy = -1 ;

}

delta_x = abs( delta_x );

delta_y = abs( delta_y );

if( delta_x delta_y )

{

distance = delta_x ;

}

else

{

distance = delta_y ;

}

dian( StartX, StartY, Color ) ;

for( t = 0 ; t = distance+1 ; t++ )

{

dian( StartX, StartY, Color ) ;

x += delta_x ;

y += delta_y ;

if( x distance )

{

x -= distance ;

StartX += incx ;

}

if( y distance )

{

y -= distance ;

StartY += incy ;

}

}

}

C语言中有什么,函数可以划线

函数名: line

功 能: 在指定两点间画一直线

用 法: void far line(int x0, int y0, int x1, int y1);

程序例:#include graphics.h

#include stdlib.h

#include stdio.h

#include conio.hint main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

int xmax, ymax; /* initialize graphics and local variables */

initgraph(gdriver, gmode, ""); /* read result of initialization */

errorcode = graphresult();

/* an error occurred */

if (errorcode != grOk)

{

printf("Graphics error: %s\n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} setcolor(getmaxcolor());

xmax = getmaxx();

ymax = getmaxy(); /* draw a diagonal line */

line(0, 0, xmax, ymax); /* clean up */

getch();

closegraph();

return 0;

}


分享文章:lcdc语言画线函数 lcd绘制曲线
本文网址:http://pwwzsj.com/article/hhgpdp.html