云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机12864画线

单片机12864画线

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 21:59:09

{

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;

搜索更多关于: 单片机12864画线 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com