📄 320_240_driver.c
字号:
{
pixel(y, x);
}
}
else
{
for(y=y2;y<=y1;y++)
{
pixel(y, x);
}
}
}
else
{
if( fabs(y1-y2) <= fabs(x1-x2)) // |k|<=1 // y行数 <= x列数
{
k=((float)y2-y1) / ((float)x2-x1) ;
b=y1-k*x1;
if( x1 < x2 )
{
for(x=x1;x<=x2;x++)
{
y=(unsigned int)(k*x+b);
pixel(y, x);
}
}
else
{
for(x=x2;x<=x1;x++)
{
y=(unsigned int)(k*x+b);
pixel(y,x);
}
}
}
else // 行数>列数
{
k=((float)x2-x1) / ((float)y2-y1) ;
b=x1-k*y1;
if( y1 <= y2 )
{
for(y=y1;y<=y2;y++)
{
x=(unsigned int)(k*y+b);
pixel(y,x);
}
}
else
{
for(y=y2;y<=y1;y++)
{
x=(unsigned int)(k*y+b);
pixel(y , x);
}
}
}
}
}
//==================================================
void char_addr_point_set( unsigned int urow,unsigned int ucol)
{
unsigned int ipos;
ipos=urow*40+ucol+1200;
wr_cmd_0(0x004c);
wr_cmd_2(0x0046,ipos);
}
//==================================================
void showchar8(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{ // row:显示行 col:显示列 chp:显示第几个字. attribute:反色。1:显示字黑,0显示字白
unsigned int j,char_data;
const unsigned int *p;
p=&HZ8_DOT_LIB[0];
chp=chp*16;
p=p+chp; // 指针指向显示数字的地址
col/=8;
//=========================================
// 显示中文
//=========================================
if(attribute)
{
for(j=0;j<16;j++)
{
char_addr_point_set(row,col); //设置Vram地址
write_lcd_command(0x0042);
char_data=*p++;
write_lcd_data(char_data);
row+=1;
}
}
else
{
for(j=0;j<16;j++)
{
char_addr_point_set(row,col); //设置Vram地址
write_lcd_command(0x0042);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
row+=1;
}
}
}
//==================================================
void showchar16(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{
unsigned int j,char_data;
const unsigned int *p;
p=&HZ16_DOT_LIB[0];
chp=chp*32;
p=p+chp;
col/=8;
//=========================================
// 显示中文
//=========================================
if(attribute)
{
for(j=0;j<16;j++)
{
char_addr_point_set(row,col); //设置Vram地址 //显示光标右移,设置光标地址
write_lcd_command(0x0042); // 写显示数据
char_data=*p++; //左8位
write_lcd_data(char_data);
char_data=*p++; //右8位
write_lcd_data(char_data);
row+=1;
}
}
else
{
for(j=0;j<16;j++)
{
char_addr_point_set(row,col); //设置Vram地址
write_lcd_command(0x0042);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
row+=1;
}
}
}
//==================================================
void showchar24(unsigned int row,unsigned int col,unsigned int chp,unsigned int attribute)
{
unsigned int j,char_data;
const unsigned int *p;
p=&HZ24_DOT_LIB[0];
chp=chp*72;
p=p+chp;
col/=8;
//=========================================
// 显示中文
//=========================================
if(attribute)
{
for(j=0;j<24;j++)
{
char_addr_point_set(row,col); //设置Vram地址
write_lcd_command(0x0042);
char_data=*p++;
write_lcd_data(char_data); //左8位
char_data=*p++;
write_lcd_data(char_data); //中8位
char_data=*p++;
write_lcd_data(char_data); //右8位
row+=1;
}
}
else
{
for(j=0;j<24;j++)
{
char_addr_point_set(row,col); //设置Vram地址
write_lcd_command(0x0042);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
char_data=*p++;
char_data^=0x00ff;
write_lcd_data(char_data);
row+=1;
}
}
}
//==================================================
//==================================================
// 画实时波形
//==================================================
void lineVT(void)
{
unsigned int i;
clr_grphram();
//================================
// 实时曲线
//================================
showchar24(0,24*4,29,1);
showchar24(0,24*5,30,1);
showchar24(0,24*6,27,1);
showchar24(0,24*7,28,1);
line(40,0,239,0);
lineH(100,0,100,320);
lineH(200,0,200,320);
for(i=0;i<255;i++)
{
line(100-sindata[i],i+1,100-sindata[i+1],i+2);
line(200-sindata[i],i+1,200-sindata[i+1],i+2);
}
}
//==================================================
// 画频谱图
//==================================================
void lineVF(void)
{
unsigned int i;
clr_grphram();
/*
//------------------------
// 电压频谱图
//------------------------
showchar24(0,24*4,0,1);
showchar24(0,24*5,11,1);
showchar24(0,24*6,22,1);
showchar24(0,24*7,23,1);
showchar24(0,24*8,24,1);
//-------------------------
//频率
//电压: 含有率:
//------------------------
showchar16(26,16*2,121,1);
showchar16(26,16*3,102,1);
showchar16(26,16*4,198,1);
showchar16(44,16*2,6,1);
showchar16(44,16*3,82,1);
showchar16(44,16*4,198,1);
showchar16(44,16*11,119,1);
showchar16(44,16*12,126,1);
showchar16(44,16*13,102,1);
showchar16(44,16*14,198,1);
*/
//-----------------------
lineH(43,0,43,320);
lineH(61,0,61,320);
//------------------------
lineH(25,0,25,320);
lineH(239,0,239,320);
line(25,0,239,0);
line(25,319,239,319);
//------------------------
for(i=0;i<19;i++)
{
line(199,i*16+8,199-sindata[i],i*16+8);
line(199,i*16+9,199-sindata[i],i*16+9);
line(199,i*16+10,199-sindata[i],i*16+10);
// showchar8(200,i*16+8,i+0,1);
}
// showchar8(200,1*16+8,1,0);
}
//==================================================
// 画圆
//==================================================
void circle(unsigned char OY,unsigned char OX,unsigned char R)//
{
unsigned int dx,dy,xx,rr,rs;
dy = R;
rr = R*R;
rs = R*71/100; //0.71R
for(dx=0;dx<=rs;)
{
dx++;
xx = dx*dx;
while((rr-xx)<(dy*dy))
{
dy--;
}
pixel(OY-dy,OX+dx); //第一象限
pixel(OY-dy,OX-dx); //第二象限
pixel(OY+dy,OX-dx); //第三象限
pixel(OY+dy,OX+dx); //第四象限
pixel(OY-dx,OX+dy); //第一象限
pixel(OY-dx,OX-dy); //第二象限
pixel(OY+dx,OX-dy); //第三象限
pixel(OY+dx,OX+dy); //第四象限
}
}
//==================================================
void delaya(unsigned int dat)
{
unsigned int i,j,datnum;
datnum=dat;
for(i=0;i<datnum;i++)
{
for (j=0;j<1000;j++)
{
}
}
}
//==================================================
//eof
//==================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -