你只要说明方法或者是流程图。
你做的是直线逐点比较。
先砍掉插补程序,看能否画划线,在添加第一象限插补,最后全加上去。
确保每个步骤添加进去的大或代码没有问题。
限于篇幅,程序省去 按键子程序 延时子程序 液晶初始化及相关程序、字符部分
#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)
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)