中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

lcdc語言畫線函數(shù) lcd繪制曲線

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

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

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

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

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

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

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

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

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

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

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

// 畫任意點(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 );

}

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

//畫水平線

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

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

}

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

//畫任意兩點(diǎ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語言中有什么,函數(shù)可以劃線

函數(shù)名: line

功 能: 在指定兩點(diǎ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;

}

名稱欄目:lcdc語言畫線函數(shù) lcd繪制曲線
標(biāo)題來源:http://m.rwnh.cn/article18/hhgpdp.html

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

廣告

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

成都網(wǎng)站建設(shè)公司
阜新| 上高县| 连云港市| 专栏| 兴城市| 义马市| 西昌市| 广水市| 大厂| 萨嘎县| 晋中市| 平凉市| 竹北市| 黑山县| 花莲县| 吴堡县| 修武县| 泸州市| 治县。| 新郑市| 泸水县| 邵阳县| 西昌市| 南开区| 延庆县| 紫金县| 开封市| 兴隆县| 麻城市| 嘉峪关市| 柳河县| 宁城县| 乌拉特中旗| 吴江市| 江安县| 贞丰县| 泸水县| 柘城县| 综艺| 静宁县| 石棉县|