×
嵌入式 > 嵌入式开发 > 详情

CD4053控制带LCD显示

发布时间:2020-10-10 发布时间:
|
注:P1^6、P1^7分别为两个功能键,P1^6为低通滤波器的级联端即在其按下后同时分别按其他各键则为各个放大器连的低通,P1^7
为同样为高通滤波器的组合键。实际此电路是一个键控放大器,主要做的是10dB步进可调,带LCD显示。以下为keil中的程序:
#include
sbit lcdrs=P2^6;
sbit lcden=P2^7;
sbit lcdrw=P2^5;
sbit D10=P1^0;
sbit D20=P1^1;
sbit D30=P1^2;
sbit D40=P1^3;
sbit D50=P1^4;
sbit D60=P1^5;
sbit lwchose=P1^6;
sbit hgchose=P1^7;
char code temp0[]="20LogAu=10dB";
char code temp1[]="20LogAu=20dB";
char code temp2[]="20LogAu=30dB";
char code temp3[]="20LogAu=40dB";
char code temp4[]="20LogAu=50dB";
char code temp5[]="20LogAu=60dB";
char code templ0[]="lw_10dB";
char code templ1[]="lw_20dB";
char code templ2[]="lw_30dB";
char code templ3[]="lw_40dB";
char code templ4[]="lw_50dB";
char code templ5[]="lw_60dB";
char code temph0[]="hg_10dB";
char code temph1[]="hg_20dB";
char code temph2[]="hg_30dB";
char code temph3[]="hg_40dB";
char code temph4[]="hg_50dB";
char code temph5[]="hg_60dB";
char num;
void delay(int z);
void write_com(char com)// 指令子函数
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
lcdrw=1;
lcdrs=1;
}
void write_data(char datae) // 数据子函数
{
lcdrs=1;
lcdrw=0;
P0=datae;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x06); // 输入方式的设置
write_com(0x0c);
write_com(0x14);
write_com(0x01); //清屏
write_com(0x02); //复位
}
void main()
{
init();
lab: while (1)
{
if (D10==0)
{
write_com(0x01); //清屏
P3=0x22;
for(num=0;num<12;num++)
{
write_data(temp0[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}
else if (D20==0)
{
write_com(0x01); //清屏
P3=0x0a;
for(num=0;num<12;num++)
{
write_data(temp1[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}

else if (D30==0)
{
write_com(0x01); //清屏
P3=0x02;
for(num=0;num<12;num++)
{
write_data(temp2[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}
else if (D40==0)
{
write_com(0x01); //清屏
P3=0x04;
for(num=0;num<12;num++)
{
write_data(temp3[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}
else if (D50==0)
{
write_com(0x01); //清屏
P3=0x08;
for(num=0;num<12;num++)
{
write_data(temp4[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}
else if (D60==0)
{
write_com(0x01); //清屏
P3=0x00;
for(num=0;num<12;num++)
{
write_data(temp5[num]);
delay(5);
}
write_com(0x80+10);
goto lab;
}
TAB1: if (lwchose==0)
{
if (D10==0)
{
delay(5);
if (D10==0)
{
write_com(0x01); //清屏
P3=0x7a;
for(num=0;num<7;num++)
{
write_data(templ0[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}

}
else if (D20==0)
{
delay(5);
if (D20==0)
{
write_com(0x01); //清屏
P3=0x6a;
for(num=0;num<7;num++)
{
write_data(templ1[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}

}
else if (D30==0)
{
delay(5);
if (D30==0)
{
write_com(0x01); //清屏
P3=0x62;
for(num=0;num<7;num++)
{
write_data(templ2[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}
}
else if (D40==0)
{
delay(5);
if (D40==0)
{
write_com(0x01); //清屏
P3=0x64;
for(num=0;num<7;num++)
{
write_data(templ3[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}
}
else if (D50==0)
{
delay(5);
if (D50==0)
{
write_com(0x01); //清屏
P3=0x68;
for(num=0;num<7;num++)
{
write_data(templ4[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}
}
else if (D60==0)
{
delay(5);
if (D60==0)
{
write_com(0x01); //清屏
P3=0x60;
for(num=0;num<7;num++)
{
write_data(templ5[num]);
delay(5);
}
write_com(0x80+10);
goto TAB1;
}
}
}
TAB2: if (hgchose==0)
{
if (D10==0)
{
delay(5);
if (D10==0)
{
write_com(0x01); //清屏
P3=0x3a;
for(num=0;num<7;num++)
{
write_data(temph0[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}

}
else if (D20==0)
{
delay(5);
if (D20==0)
{
write_com(0x01); //清屏
P3=0x2a;
for(num=0;num<7;num++)
{
write_data(temph1[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}

}
else if (D30==0)
{
delay(5);
if (D30==0)
{
write_com(0x01); //清屏
P3=0x22;
for(num=0;num<7;num++)
{
write_data(temph2[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}
}
else if (D40==0)
{
delay(5);
if (D40==0)
{
write_com(0x01); //清屏
P3=0x24;
for(num=0;num<7;num++)
{
write_data(temph3[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}
}
else if (D50==0)
{
delay(5);
if (D50==0)
{
write_com(0x01); //清屏
P3=0x28;
for(num=0;num<7;num++)
{
write_data(temph4[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}
}
else if (D60==0)
{
delay(5);
if (D60==0)
{
write_com(0x01); //清屏
P3=0x20;
for(num=0;num<7;num++)
{
write_data(temph5[num]);
delay(5);
}
write_com(0x80+10);
goto TAB2;
}
}
}
}
}
void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
五大标准轻松搞定4K超高清电视选购