📄 lcd320240.c
字号:
if(lay==2) //判断层
addr = addr + 0x8000;
for(j=0;j<8;j++)
{
for(i=0;i<24;i++)
{
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
wr_command(0x42); //mwrite 数据写入显示缓冲区
wr_datas(*(data1+i+j*24));
addr=addr+1;
}
addr=addr+16;
}
}
/*********************************************************
//显示汉字程序
//data:汉字的16*16点阵数据;addr:汉字显示的首地址;lay:层
**********************************************************/
void DisplayChinese(unchar *data1,unint addr,unint lay)
{
unchar addrH = 0;
unchar addrL = 0;
unint temp = 0;
unint i;
for(i=0;i<240;i++) //越界检查
{
temp = i*40+39;
if(addr==temp)
return;
}
for(i=0;i<16;i++)
{
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
//wr_datas(addrL);
//wr_datas(addrH);
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
wr_command(0x42); //mwrite 数据写入显示缓冲区
wr_datas(*(data1+i*2));
wr_datas(*(data1+i*2+1));
addr = addr + 40;
}
}
/******************************************************
//清除汉字程序
//addr:清除汉字的首地址;lay:层
*******************************************************/
void ClearChinese(unint addr,unint lay)
{
unchar addrH = 0;
unchar addrL = 0;
unchar temp = 0;
unchar *data1 ;
unchar datatemp = 0;
unint i;
data1 = &datatemp;
for(i=0;i<240;i++) //越界检查
{
temp = i*40+39;
if(addr==temp)
return;
}
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
for(i=0;i<16;i++)
{
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
//wr_datas(addrL);
//wr_datas(addrH);
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
wr_command(0x42); //mwrite 数据写入显示缓冲区
wr_datas(*(data1));
wr_datas(*(data1));
addr = addr + 40;
}
}
/********************************************************
//显示符号程序
//data:符号的8*16点阵数据;addr:符号显示的首地址;lay:层
*********************************************************/
void DisplaySymbol(unchar *data1,unint addr,unint lay)
{
unchar addrH = 0;
unchar addrL = 0;
unint temp = 0;
unint i;
for(i=0;i<240;i++) //越界检查
{
temp = i*40+39;
if(addr==temp)
return;
}
for(i=0;i<16;i++)
{
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
wr_command(0x42); //mwrite 数据写入显示缓冲区
wr_datas(*(data1+i));
addr = addr + 40;
}
}
/******************************************************
//清除符号程序
//addr:清除符号的首地址;lay:层
******************************************************/
void ClearSymbol(unint addr,unint lay)
{
unchar addrH = 0;
unchar addrL = 0;
unchar temp = 0;
unchar *data1 ;
unchar datatemp = 0;
unint i;
data1 = &datatemp;
for(i=0;i<240;i++) //越界检查
{
temp = i*40+39;
if(addr==temp)
return;
}
for(i=0;i<16;i++)
{
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
addrL = (unchar)(addr&0X00FF);
addrH = (unchar)((addr&0XFF00)>>8);
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
wr_command(0x42); //mwrite 数据写入显示缓冲区
wr_datas(*(data1));
addr = addr + 40;
}
}
/**************************************************************
//显示波形, 可以描8的倍数个点,小于320
输入: 首地址 ,Y方向长度 , lay:层
***************************************************************/
void DispalyWave(unchar *ad_data,unint Y_length,unint lay)
{
unchar i,j;
unchar addrH = 0;
unchar addrL = 0;
unint addrtemp = 0;
unchar datatemp, Y_temp=0;
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
Y_temp=0x80;
for(i=0;i<Y_length;i++)
{
for(j=0;j<8;j++)
{
if(Y_temp==0)
Y_temp=0x80;
if(ad_data[i+j]<=180)
{addrtemp=(ad_data[i+j]+180)/2;}
else
{addrtemp=(ad_data[i+j]-180)/2;}
addr2=addr1+i-40*addrtemp;
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
wr_datas((unchar)(addr2&0X00FF)); // 写低地址
wr_datas((unchar)((addr2&0XFF00)>>8)); //写高地址
wr_command(0x47); //读地址指令
addrL = RD_LCD(); //读地址
addrH = RD_LCD();
wr_command(0x43); //读数据指令
datatemp = RD_LCD(); //读数据
//DisplayPoint(datatemp,8803+i,1);
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
wr_datas(addrL); // 写低地址
wr_datas(addrH); //写高地址 */
wr_command(0x42); //mwrite 数据写入显示缓冲区
datatemp=datatemp|Y_temp;
wr_datas(Y_temp);
Y_temp=Y_temp>>1;
}
}
}
/*********************************************
FFT后,频谱分布图
unint *ad_data,频谱数据
unint addr0,坐标原点
unint P_flag,页标志
*********************************************/
void Display_ppu(int *ad_data,unint addr0,unint P_flag,unint lay)
{
unint i,j,k;
unchar addrH = 0;
unchar addrL = 0;
unint addrtemp = 0;
unchar datatemp, Y_temp=0;
float temp,temp2;
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
DisplayChineseArray("音频信号分析仪",14,12,1);
DisplayChineseArray("音频信号各频率和占总功率",24,644,1);
DisplaySymbol(datamaohao,668,1);
DisplaySymbol(databfh,672,1);
DisplayChineseArray("周期",4,1286,1);
DisplaySymbol(datamaohao,1290,1);
DisplaySymbol(datas,1300,1);
DisplayChineseArray("失真度",6,1302,1);
DisplaySymbol(datamaohao,1308,1);
DisplaySymbol(databfh,1312,1);
for(j=0+P_flag*144;j<144+P_flag*144;j=j+4)
{
Y_temp=0x40;
for(k=0;k<4;k++)
{
temp2=(float)ad_data[j+k];
temp=temp2/32768*10;
addrtemp=(unint)temp;
for(i=0;i<addrtemp;i++)
{
addr2=addr0-40+j/4+1-40*i;
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
wr_datas((unchar)(addr2&0X00FF)); // 写低地址
wr_datas((unchar)((addr2&0XFF00)>>8)); //写高地址
wr_command(0x47); //读地址指令
addrL = RD_LCD(); //读地址
addrH = RD_LCD();
wr_command(0x43); //读数据指令
datatemp = RD_LCD(); //读数据
wr_command(0x4c); //set point move direction
wr_command(0x46); //set point address
wr_datas(addrL); // 写低地址
wr_datas(addrH); //写高地址 */
wr_command(0x42); //mwrite 数据写入显示缓冲区
datatemp=datatemp|Y_temp;
wr_datas(datatemp);
}
Y_temp=Y_temp>>2;
}
}
}
/*********************************************
FFT后,功率分布图
addr0坐标原点
unsigned int *ad_data,电压值
nint *fl_data,频率值
*********************************************/
void Display_gltu(unint addr0,unint lay,unsigned int k_ff,unsigned int f_ff,int *ddtbull)
{
unchar igl;
unchar addrH = 0;
unchar addrL = 0;
int power_all,power_sum,power_f;
unint Fs,Fn,F_base;
unchar datatemp, Y_temp=0;
float time,dist,power_all_db ,power_sum_db,power_bfb,power_bff;
Y_temp=0xff;
switch(lay)
{
case 1:
wr_datas(addrL);
wr_datas(addrH);
break;
case 2:
wr_datas(addrL);
wr_datas(0x80+addrH);
break;
default:
break;
}
//显示周期
time=cyc_jud(ddtbull);
Fs=f_ff;
ClearPic(1950,108,16,1);
if(time==0)
DisplayChineseArray("非周期",6,1950,1);
else
{ time = time* Fs;
time=1000/time;
DisplayFloat4(time,1950,1);}
//显示失真度
dist=shizhd(ddtbull);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -