欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

lcdc語(yǔ)言畫(huà)線(xiàn)函數(shù) lcd繪制曲線(xiàn)

C語(yǔ)言的模塊化編程還是不太理解,還請(qǐng)各位大神指點(diǎn)!

模塊化編程是為了更好的管理工程、方便以后移植代碼、使主函數(shù)或主文件(即有main函數(shù)的那個(gè)文件)變得簡(jiǎn)單,因?yàn)槲覀冏x代碼時(shí)一般都是從主函數(shù)開(kāi)始讀的。

成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的蛟河網(wǎng)站建設(shè)公司,蛟河接單;提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行蛟河網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

那怎么進(jìn)行模塊化呢?

簡(jiǎn)單的就是一個(gè)功能包裝成一個(gè)函數(shù),要實(shí)現(xiàn)什么功能就調(diào)用哪個(gè)函數(shù)實(shí)現(xiàn)。

而復(fù)雜點(diǎn)的就是,一個(gè)功能模塊統(tǒng)一放一個(gè)C文件中,這個(gè)模塊相關(guān)的函數(shù)全部在這個(gè)C文件中實(shí)現(xiàn),在主文件(即有main函數(shù)的C文件)想要使用這個(gè)模塊的功能函數(shù),只需要包含它的頭文件就可以調(diào)用了。那頭文件就只是放這個(gè)功能模塊的函數(shù)聲明。

這樣子做,以后移植就方便多了。如果別的工程需要這個(gè)功能模塊,只需復(fù)制一下它的C文件已經(jīng)H文件到這個(gè)工程目錄下,就能使用。

比如實(shí)現(xiàn)LCD描字、劃線(xiàn)、畫(huà)圓等等函數(shù)都放在一個(gè)叫做lcd.c的文件中,那就應(yīng)該有一個(gè)叫做lcd.h的文件跟它對(duì)應(yīng),這個(gè).h都是放這個(gè).c文件對(duì)外函數(shù)的聲明。主文件的開(kāi)頭出只需來(lái)一個(gè)#include"lcd.h"就可以調(diào)用這些畫(huà)圓劃線(xiàn)函數(shù)了。

單片機(jī)控制LCD打點(diǎn) 如何打一條線(xiàn)

這與液晶的驅(qū)動(dòng)芯片有關(guān),比如帶字庫(kù)的12864液晶,畫(huà)點(diǎn)、畫(huà)線(xiàn)子函數(shù)如下:

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

// 畫(huà)任意點(diǎn)

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

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 );

}

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

//畫(huà)水平線(xiàn)

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

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 ) ;

}

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

//畫(huà)垂直線(xiàn)

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

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) ;

}

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

//畫(huà)任意兩點(diǎn)間線(xiàn)段

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

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語(yǔ)言中有什么,函數(shù)可以劃線(xiàn)

函數(shù)名: line

功 能: 在指定兩點(diǎn)間畫(huà)一直線(xiàn)

用 法: 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;

}

名稱(chēng)欄目:lcdc語(yǔ)言畫(huà)線(xiàn)函數(shù) lcd繪制曲線(xiàn)
標(biāo)題來(lái)源:http://chinadenli.net/article18/hhgpdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司云服務(wù)器靜態(tài)網(wǎng)站服務(wù)器托管網(wǎng)頁(yè)設(shè)計(jì)公司Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司