?? 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 + -