c语言直线插补程序,高手请进采纳后追加20分

c语言直线插补程序,高手请进采纳后追加20分,第1张

程序问题是自己检芹闭查的,没有人嫌仿裂会跟你看程序

你只要说明方法或者是流程图。

你做的是直线逐点比较。

先砍掉插补程序,看能否画划线,在添加第一象限插补,最后全加上去。

确保每个步骤添加进去的大或代码没有问题。

限于篇幅,程序省去 按键子程序 延时子程序 液晶初始化及相关程序、字符部分 

#include<reg52.h>

#include<intrins.h>

#define mode 0x81 // 方式0,A口、B口输出,C口高4位输出,低4位输入

# include "stdio.h"

# include "string.h"

# include "math.h"

xdata unsigned char PA _at_ 0x7f00

xdata unsigned char PB _at_ 0x7f01

xdata unsigned char PC _at_ 0x7f02

xdata unsigned char caas _at_ 0x7f03 //控制字

sbit P32=P3^2

sbit P33=P3^3

sbit P35=P3^5

#define uchar unsigned char

#define uint unsigned int

unsigned char h,Pos 

unsigned int R,NX,NY

unsigned char key

code unsigned char KeyTable[] = { // 键码定义李山

0x0f, 0x0b, 0x07, 0x03,

0x0e, 0x0a, 0x06, 0x02,

0x0d, 0x09, 0x05, 0x01,

0x0c, 0x08, 0x04, 0x00

}

code unsigned char LEDMAP[] = { // 八段管显示码

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71

}

unsigned char Code_  // 字符代码寄存器

#define PD1 61 // 122/2 分成左右两半屏吵岁(122x32)

unsigned char Column

unsigned char Page_  // 页地址寄存器 D1,DO:页地址

unsigned char Code_  // 字符代码寄存器

unsigned char Command // 指令寄存器

unsigned char LCDData // 数据寄存器

xdata unsigned char CWADD1 _at_ 0x1cff // 写指令代码地址(E1)

xdata unsigned char DWADD1 _at_ 0x1eff // 写显示数据地址(E1)

xdata unsigned char CRADD1 _at_ 0x1dff // 读状态字哪碰中地址(E1)

xdata unsigned char DRADD1 _at_ 0x1fff // 读显示数据地址(E1)

xdata unsigned char CWADD2 _at_ 0x3cff // 写指令代码地址(E2)

xdata unsigned char DWADD2 _at_ 0x3eff // 写显示数进地址(E2)

xdata unsigned char CRADD2 _at_ 0x3dff // 读状态字地址(E2)

xdata unsigned char DRADD2 _at_ 0x3fff // 读显示数据地址(E2)

//----------------------液晶-----------------

// 清屏

// ************************ 中文显示程序 ***********************************/

/*************************直线 插 补***************************8*/ 

void delay(uint z)

{

uint x,y

for(x=zx>0x--)

for(y=50y>0y--)

}

void zhengx()

{

PA=0x00

delay(10)

PA=0x01

delay(10)

}

void fux()

PA=0x02

delay(10)

PA=0x03

delay(10)

}

void zhengy()

PB=0x00

delay(10)

PB=0x10

delay(10)

}

void fuy()

{

PB=0x20

delay(10)

PB=0x30

delay(10)

}

void zhixian(int NX,int NY)

{int FM, NXY, XOY,ZF,z

FM=0

{if(NX>0)

if(NY>0)

XOY=1

else

XOY=4

else

if(NY>0)

XOY=2

else

XOY=3}

for(NXY= fabs(NX) + fabs(NY)-1NXY>=0&&P32!=0&&P33!=0NXY--)

{ {if(NX>0)

if(NY>0)

XOY=1

else

XOY=4

else

if(NY>0)

XOY=2

else

XOY=3}

for(NXY= fabs(NX) + fabs(NY)-1NXY>=0NXY--)

{ if(FM>=0)

{if(XOY==1||XOY==4)

{ZF=1

zhengx()

}

else 

{ZF=2

fux()

}

FM=FM-fabs(NY)

else 

{if(XOY==1||XOY==2)

{

ZF=3

zhengy()

}

else 

{ZF=4

fuy()

}

FM=FM+fabs(NX)

for(z=0z<200z++)

{P35 = 0

delay(10)

P35 = 1

delay(10)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8242343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存