当前位置:首页 > 单片机12864画线
{
Write_Data(LCD_H&(~(0x01<<(7-x_bit)))); Write_Data(LCD_L); } } else {
if(Mode) {
Write_Data(LCD_H);
Write_Data(LCD_L|(0x01<<(15-x_bit))); } else {
Write_Data(LCD_H);
Write_Data(LCD_L&(~(0x01<<(15-x_bit)))); } }
Write_Cmd(DRAW_ON); }
//画水平线
void v_Lcd12864DrawLineX_f( 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++ )
LCD_SET_Dot( X0, Y, Color ) ; }
//画垂直线:
void v_Lcd12864DrawLineY_f( 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++)
LCD_SET_Dot( X, Y0, Color) ; }
/*------------------------------------------------ 画直线
x:横坐标值,范围0~127 y:纵坐标值,范围0~63
------------------------------------------------*/
void LCD_SET_Line(uchar x1,uchar y1,uchar x2,uchar y2,bit Mode) {
uchar x_add,y_add,y_temp,Line_K; x1&=0x7f; x2&=0x7f; y1&=0x3f; y2&=0x3f; if(x2>x1) {
if(y2>y1||y2==y1) {
Line_K=(y2-y1)/(x2-x1);
for(x_add=0;x_add<=(x2-x1);x_add++) {
y_temp=y1+(Line_K*(x_add+x1));
LCD_SET_Dot(x_add+x1,y_temp,Mode); } } else {
Line_K=(y1-y2)/(x2-x1);
for(x_add=0;x_add<=(x2-x1);x_add++) {
y_temp=y1-(Line_K*(x_add+x1));
LCD_SET_Dot(x_add+x1,y_temp,Mode); } } }
else if(x2==x1) {
for(y_add=0;y_add<=(y2-y1);y_add++) {
LCD_SET_Dot(x1,y1+y_add,Mode); } }
else { } }
void v_Lcd12864DrawLine_f( unsigned char StartX, unsigned char StartY, unsigned char EndX, unsigned char EndY, unsigned char Color ) {
int t, distance; /*根据屏幕大小改变变量类型(如改为int型)*/ 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 ) {
v_Lcd12864DrawLineY_f( StartX, StartY, EndY, Color ) ; return ; } else {
incx = -1 ; }
if( delta_y > 0 ) {
incy = 1 ; }
else if(delta_y == 0 ) {
v_Lcd12864DrawLineX_f( 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 ; }
LCD_SET_Dot( StartX, StartY, Color ) ; /* Draw Line*/
for( t = 0 ; t <= distance+1 ; t++ ) {
LCD_SET_Dot( StartX, StartY, Color ) ; x += delta_x ; y += delta_y ; if( x > distance ) {
x -= distance ; StartX += incx ; }
if( y > distance ) {
y -= distance ; StartY += incy ; } } }
/*------------------------------------------------ 画矩形
x:横坐标值,范围0~127 y:纵坐标值,范围0~63
------------------------------------------------*/
void LCD_SET_Box(uchar x1,uchar y1,uchar x2,uchar y2,bit Mode) {
LCD_SET_Line(x1,y1,x2,y1,Mode); LCD_SET_Line(x1,y2,x2,y2,Mode); LCD_SET_Line(x1,y1,x1,y2,Mode); LCD_SET_Line(x2,y1,x2,y2,Mode); }
/*画正弦曲线*/ void fsin() {
float x,y;
共分享92篇相关文档