⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digimod.c

📁 Digital Modulation Techniques are those echniques through which we convert digital signals into anal
💻 C
📖 第 1 页 / 共 4 页
字号:
calc_askN_sinewave(ask.amp0);
create_ask_waves();
}
else
{
calc_askN_sinewave(ask.amp1);
create_ask_waves();
}
}
}

////////////////////////////////////////////////////
void create_ask_waves()
{
int y=200,x1,y1;
setcolor(2);
setlinestyle(0,0,3);
for(int i=0;i<ask_lcycle;i++)
{
x1=ask.x+i;
if(ask.sine_value[i] >= 0)
y1=y-ask.sine_value[i];
else
y1=y+((-1)*ask.sine_value[i]);
line(x1,y1,x1,y1);
}
ask.x=x1;
}
///////////////////////////////////////////////////////
void create_graph_ask()
{
int csx1=30,csy1=100, csx2=620,csy2=300;
setcolor(15);
show_int_graph(ask.amp0,2,csx1-25,csy2-csy1-ask.amp0-5);
show_int_graph(((-1)*ask.amp0),3,csx1-30,csy2-csy1+ask.amp0-5);
setlinestyle(0,0,1);
line(csx1-4,csy2-csy1-ask.amp0,csx1+4,csy2-csy1-ask.amp0);
line(csx1-4,csy2-csy1+ask.amp0,csx1+4,csy2-csy1+ask.amp0);
show_int_graph(ask.amp1,2,csx1-25,csy2-csy1-ask.amp1-5);
show_int_graph(((-1)*ask.amp1),3,csx1-30,csy2-csy1+ask.amp1-5);
setlinestyle(0,0,1);
line(csx1-4,csy2-csy1-ask.amp1,csx1+4,csy2-csy1-ask.amp1);
line(csx1-4,csy2-csy1+ask.amp1,csx1+4,csy2-csy1+ask.amp1);
setcolor(4);
setlinestyle(0,0,3);
line(csx1,csy1,csx1,csy2);
line(csx1,csy2-csy1,csx2,csy2-csy1);
setcolor(9);
setlinestyle(1,1,1);
for(int i = csx1+ask_lcycle; i<csx2;i+=ask_lcycle-1)
line(i,csy1,i,csy2);
outtextxy(csx1,csy2+100,"Amplitude for 0  = ");
outtextxy(csx1,csy2+120,"Amplitude for 1  = ");
outtextxy(csx1,csy2+140,"Frequency        = ");
outtextxy(csx1,csy2+160,"Phase            = ");
setcolor(15);
show_int_graph(ask.amp0,2,csx1+160,csy2+100);
show_int_graph(ask.amp1,2,csx1+160,csy2+120);
show_int_graph(c_hz/10,2,csx1+160,csy2+140);
show_int_graph(c_angle,3,csx1+160,csy2+160);
settextstyle(1,0,4);
setcolor(15);
outtextxy(csx1,30,"Amplitude Shift Keying");
setfillstyle(1,9);
bar(csx1,70,csx1+370,72);
settextstyle(2,0,4);setcolor(15);
outtextxy(260,468,"Press any key to continue");
int a=54,b=csx1+166;
for(i=0;i<=7;i++)
{
setcolor(15);
graphicText(a,csy2-195,bd_4signal[i]);
setcolor(15);
graphicText(b,380,bd_4signal[i]);
a+=ask_lcycle;b+=7;
}
setcolor(9);
outtextxy(30,380,"Data             = ");
//getch();
}
//////////////////////////////////////////////////////////////////
void fskDataBox()
{
setfillstyle(1,0);
bar(130,80,639,440);
setfillstyle(1,8);
bar(140-4,100-4,640+4,220+4);
setfillstyle(1,15);
bar(140,100,634,220);
setfillstyle(1,9);
bar(142,102,632,120);
setcolor(15);
settextstyle(2,0,4);
outtextxy(145,104,"Frequency Shift Keying (ASK) Information");
setfillstyle(1,9);
bar(142,146,320,164);
outtextxy(145,146,"Frequency for 0 bit");
setfillstyle(1,8);
bar(332,144,379,164);
setfillstyle(1,1);
bar(334,146,377,162);
setfillstyle(1,15);
int xabc=336,yabc=148,xxyz,yxyz=160;
for(int i=0;i<=1;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,9);
bar(142,166,320,184);
outtextxy(145,166,"Frequency for 1 bit");
setfillstyle(1,8);
bar(332,164,379,184);
setfillstyle(1,1);
bar(334,166,377,182);
setfillstyle(1,15);
xabc=336,yabc=168,xxyz,yxyz=180;
for(i=0;i<=1;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,1);
bar(500,184,550,204);
setfillstyle(1,9); //inner
bar(500+2,184+2,550-2,204-2);
setfillstyle(1,1);
bar(560,184,610,204);
setfillstyle(1,9);    //inner
bar(560+2,184+2,610-2,204-2);
outtextxy(510,188,"Reset");
outtextxy(570,188,"Apply");
}
///////////////////////////////////////////////
int fskInputFun()
{
fsk.amp = c_amplitude;
fsk.phase = c_phase;
int x1=336,y1=128,x2=354,y2=140;
char ookCheck,t_afp[2];
/////////////////////////////////ook check
int i=0;
x1=336;x2=354;y1=148;y2=160;
i=0;
do{
i+=1;
x2=x1+(18);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
t_afp[i-1] = getche();
if(t_afp[i-1] < '0' || t_afp[i-1] > '9')
{i-=1;x2-=20;}
graphicText(x1+6,y1,t_afp[i-1]);
if(i == 2)break;
x1=x2+2;
}while(1);
fsk.hz0 = atoi(t_afp);
///////////////////////////////////////////////////amp1
x1=336;x2=354;y1=168;y2=180;
i=0;
do{
i+=1;
x2=x1+(18);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
t_afp[i-1] = getche();
if(t_afp[i-1] < '0' || t_afp[i-1] > '9')
{i-=1;x2-=20;}
graphicText(x1+6,y1,t_afp[i-1]);
if(i == 2)break;
x1=x2+2;
}while(1);
fsk.hz1=atoi(t_afp);
/////////////////////////////////////////////////
int choice=0; //0 done 1 reset
//x1=502;y1=186;x2=548;y2=200;
x1=562;y1=186;x2=608;y2=202;
setcolor(9);
setfillstyle(1,15); //inner
bar(x1,y1,x2,y2);
//outtextxy(510,188,"Reset");
outtextxy(570,188,"Apply");
while(1)
{
switch(getch())
{
case 77:
case 75:
{
if(choice==0)
{
x1=562;y1=186;x2=608;y2=202;
setcolor(15);setfillstyle(1,9);bar(x1,y1,x2,y2);outtextxy(570,188,"Apply")
;
choice=1;x1=502;y1=186;x2=548;y2=202;
setcolor(9);setfillstyle(1,15);bar(x1,y1,x2,y2);outtextxy(510,188,"Reset")
;
}
else if (choice==1)
{
x1=562;y1=186;x2=608;y2=202;
setcolor(9);setfillstyle(1,15);bar(x1,y1,x2,y2);outtextxy(570,188,"Apply")
;
choice=0;x1=502;y1=186;x2=548;y2=202;
setcolor(15);setfillstyle(1,9);bar(x1,y1,x2,y2);outtextxy(510,188,"Reset")
;
}
break;
}
case '
':
if(choice == 0)return(1); else return(0);
}
}
}
///////////////////////////////////////////////
void calc_fsk_sinewave(int hz01)
{
float frequency;
frequency = (2 * pi * hz01)/fsk_sr;
for (int t = 0; t<fsk_lcycle;t++)
fsk.sine_value[t] = fsk.amp * (sin((frequency*t)+ fsk.phase));
}
////////////////////////////////////////////////
void fsk_main()
{
fsk.x=32;
for (int i = 0;i<8;i++)
{
if (bd_4signal[i] == '0')
{
calc_fsk_sinewave(fsk.hz0*10);
create_fsk_waves();
}
else
{
calc_fsk_sinewave(fsk.hz1*10);
create_fsk_waves();
}
}
}
////////////////////////////////////////////////////
void create_fsk_waves()
{
int y=200,x1,y1;
setcolor(2);
setlinestyle(0,0,3);
for(int i=0;i<fsk_lcycle;i++)
{
x1=fsk.x+i;
if(fsk.sine_value[i] >= 0)
y1=y-fsk.sine_value[i];
else
y1=y+((-1)*fsk.sine_value[i]);
line(x1,y1,x1,y1);
}
fsk.x=x1;
}
///////////////////////////////////////////////////////
void create_graph_fsk()
{
int csx1=30,csy1=100, csx2=620,csy2=300;
setcolor(15);
show_int_graph(fsk.amp,2,csx1-25,csy2-csy1-fsk.amp-5);
show_int_graph(((-1)*fsk.amp),3,csx1-30,csy2-csy1+fsk.amp-5);
setlinestyle(0,0,1);
line(csx1-4,csy2-csy1-fsk.amp,csx1+4,csy2-csy1-fsk.amp);
line(csx1-4,csy2-csy1+fsk.amp,csx1+4,csy2-csy1+fsk.amp);
setcolor(4);
setlinestyle(0,0,3);
line(csx1,csy1,csx1,csy2);
line(csx1,csy2-csy1,csx2,csy2-csy1);
setcolor(9);
setlinestyle(1,1,1);
for(int i = csx1+fsk_lcycle; i<csx2;i+=fsk_lcycle-1)
line(i,csy1,i,csy2);
outtextxy(csx1,csy2+100,"Frequency for 0  = ");
outtextxy(csx1,csy2+120,"Frequency for 1  = ");
outtextxy(csx1,csy2+140,"Amplitude        = ");
outtextxy(csx1,csy2+160,"Phase            = ");
setcolor(15);
show_int_graph(fsk.hz0,2,csx1+160,csy2+100);
show_int_graph(fsk.hz1,2,csx1+160,csy2+120);
show_int_graph(fsk.amp,2,csx1+160,csy2+140);
show_int_graph(c_angle,3,csx1+160,csy2+160);
settextstyle(1,0,4);
setcolor(15);
outtextxy(csx1,30,"Frequency Shift Keying");
setfillstyle(1,9);
bar(csx1,70,csx1+370,72);
settextstyle(2,0,4);setcolor(15);
outtextxy(260,468,"Press any key to continue");
int a=54,b=csx1+166;
for(i=0;i<=7;i++)
{
setcolor(15);
graphicText(a,csy2-195,bd_4signal[i]);
setcolor(15);
graphicText(b,380,bd_4signal[i]);
a+=ask_lcycle;b+=7;
}
setcolor(9);
outtextxy(30,380,"Data             = ");
//getch();
}
//////////////////////////////////////////////
void pskDataBox()
{
setfillstyle(1,0);
bar(130,80,639,440);
setfillstyle(1,8);
bar(140-4,100-4,640+4,220+4);
setfillstyle(1,15);
bar(140,100,634,220);
setfillstyle(1,9);
bar(142,102,632,120);
setcolor(15);
settextstyle(2,0,4);
outtextxy(145,104,"Phase Shift Keying (ASK) Information");
setfillstyle(1,9);
bar(142,146,320,164);
outtextxy(145,146,"Phase for 0 bit");
setfillstyle(1,8);
bar(332,144,399,164);
setfillstyle(1,1);
bar(334,146,397,162);
setfillstyle(1,15);
int xabc=336,yabc=148,xxyz,yxyz=160;
for(int i=0;i<=2;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,9);
bar(142,166,320,184);
outtextxy(145,166,"Phase for 1 bit");
setfillstyle(1,8);
bar(332,164,399,184);
setfillstyle(1,1);
bar(334,166,397,182);
setfillstyle(1,15);
xabc=336,yabc=168,xxyz,yxyz=180;
for(i=0;i<=2;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,1);
bar(500,184,550,204);
setfillstyle(1,9); //inner
bar(500+2,184+2,550-2,204-2);
setfillstyle(1,1);
bar(560,184,610,204);
setfillstyle(1,9);    //inner
bar(560+2,184+2,610-2,204-2);
outtextxy(510,188,"Reset");
outtextxy(570,188,"Apply");
}
///////////////////////////////////////////////
int pskInputFun()
{
psk.amp = c_amplitude;
psk.frequency = c_frequency;
int x1=336,y1=128,x2=354,y2=140;
char ookCheck,t_afp[3];
int i=0;
x1=336;x2=354;y1=148;y2=160;
i=0;
do{
i+=1;
x2=x1+(18);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
t_afp[i-1] = getche();
if(t_afp[i-1] < '0' || t_afp[i-1] > '9')
{i-=1;x2-=20;}
graphicText(x1+6,y1,t_afp[i-1]);
if(i == 3)break;
x1=x2+2;
}while(1);
psk.ang0 = atoi(t_afp);
psk.phase0 = psk.ang0*(2*pi/360);
///////////////////////////////////////////////////amp1
x1=336;x2=354;y1=168;y2=180;
i=0;
do{
i+=1;
x2=x1+(18);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
t_afp[i-1] = getche();
if(t_afp[i-1] < '0' || t_afp[i-1] > '9')
{i-=1;x2-=20;}
graphicText(x1+6,y1,t_afp[i-1]);
if(i == 3)break;
x1=x2+2;
}while(1);
psk.ang1=atoi(t_afp);
psk.phase1 = psk.ang1*(2*pi/360);
/////////////////////////////////////////////////
int choice=0; //0 done 1 reset
//x1=502;y1=186;x2=548;y2=200;
x1=562;y1=186;x2=608;y2=202;
setcolor(9);
setfillstyle(1,15); //inner
bar(x1,y1,x2,y2);
//outtextxy(510,188,"Reset");
outtextxy(570,188,"Apply");
while(1)
{
switch(getch())
{
case 77:
case 75:
{
if(choice==0)
{
x1=562;y1=186;x2=608;y2=202;
setcolor(15);setfillstyle(1,9);bar(x1,y1,x2,y2);outtextxy(570,188,"Apply")
;
choice=1;x1=502;y1=186;x2=548;y2=202;
setcolor(9);setfillstyle(1,15);bar(x1,y1,x2,y2);outtextxy(510,188,"Reset")
;
}
else if (choice==1)
{
x1=562;y1=186;x2=608;y2=202;
setcolor(9);setfillstyle(1,15);bar(x1,y1,x2,y2);outtextxy(570,188,"Apply")
;
choice=0;x1=502;y1=186;x2=548;y2=202;
setcolor(15);setfillstyle(1,9);bar(x1,y1,x2,y2);outtextxy(510,188,"Reset")
;
}
break;
}
case '
':
if(choice == 0)return(1); else return(0);
}
}
}
///////////////////////////////////////////////
void calc_psk_sinewave(int ph01)
{
float frequency;
frequency = (2 * pi * c_hz)/psk_sr;
for (int t = 0; t<psk_lcycle;t++)
psk.sine_value[t] = psk.amp * (sin((frequency*t)+ ph01));
}
////////////////////////////////////////////////
void psk_main()
{
psk.x=32;
for (int i = 0;i<8;i++)
{
if (bd_4signal[i] == '0')
{
calc_psk_sinewave(psk.phase0);
create_psk_waves();
}
else
{
calc_psk_sinewave(psk.phase1);
create_psk_waves();
}
}
}
////////////////////////////////////////////////////
void create_psk_waves()
{
int y=200,x1,y1;
setcolor(2);
setlinestyle(0,0,3);
for(int i=0;i<psk_lcycle;i++)
{
x1=psk.x+i;
if(psk.sine_value[i] >= 0)
y1=y-psk.sine_value[i];
else
y1=y+((-1)*psk.sine_value[i]);
line(x1,y1,x1,y1);
}
psk.x=x1;
}
///////////////////////////////////////////////////////
void create_graph_psk()
{
int csx1=30,csy1=100, csx2=620,csy2=300;
setcolor(15);
show_int_graph(psk.amp,2,csx1-25,csy2-csy1-psk.amp-5);
show_int_graph(((-1)*psk.amp),3,csx1-30,csy2-csy1+psk.amp-5);
setlinestyle(0,0,1);
line(csx1-4,csy2-csy1-psk.amp,csx1+4,csy2-csy1-psk.amp);
line(csx1-4,csy2-csy1+psk.amp,csx1+4,csy2-csy1+psk.amp);
setcolor(4);
setlinestyle(0,0,3);
line(csx1,csy1,csx1,csy2);
line(csx1,csy2-csy1,csx2,csy2-csy1);
setcolor(9);
setlinestyle(1,1,1);
for(int i = csx1+psk_lcycle; i<csx2;i+=psk_lcycle-1)
line(i,csy1,i,csy2);
outtextxy(csx1,csy2+100,"Phase for 0      = ");
outtextxy(csx1,csy2+120,"Phase for 1      = ");
outtextxy(csx1,csy2+140,"Amplitude        = ");
outtextxy(csx1,csy2+160,"Frequency        = ");
setcolor(15);
show_int_graph(psk.ang0,3,csx1+160,csy2+100);
show_int_graph(psk.ang1,3,csx1+160,csy2+120);
show_int_graph(psk.amp,2,csx1+160,csy2+140);
show_int_graph(psk.frequency,2,csx1+160,csy2+160);
settextstyle(1,0,4);
setcolor(15);
outtextxy(csx1,30,"Phase Shift Keying");
setfillstyle(1,9);
bar(csx1,70,csx1+370,72);
settextstyle(2,0,4);setcolor(15);
outtextxy(260,468,"Press any key to continue");
int a=54,b=csx1+166;
for(i=0;i<=7;i++)
{
setcolor(15);
graphicText(a,csy2-195,bd_4signal[i]);
setcolor(15);
graphicText(b,380,bd_4signal[i]);
a+=ask_lcycle;b+=7;
}
setcolor(9);
outtextxy(30,380,"Data             = ");
//getch();
}
//////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
void carrierDataBox_4qam()
{
setfillstyle(1,0);
bar(130,80,639,440);
setfillstyle(1,8);
bar(140-4,100-4,640+4,270+4);
setfillstyle(1,15);
bar(140,100,634,270);
setfillstyle(1,9);
bar(142,102,632,120);
settextstyle(2,0,4);
outtextxy(145,104,"Enter 24 bits (3 bytes)");
setfillstyle(1,8);
bar(142,130,560,162);
setfillstyle(1,1);
bar(144,132,558,160);
setfillstyle(1,15);
int xabc=150,yabc=134,xxyz,yxyz=158;
for(int i=0;i<=23;i++)
{
xxyz=xabc+15;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,9);
bar(142,180,632,198);
outtextxy(145,182,"Carrier Signal Information");
bar(142,204,220,222);
outtextxy(145,206,"Amplitude");
setfillstyle(1,8);
bar(225,204,272,222);
setfillstyle(1,1);
bar(227,206,270,220);
setfillstyle(1,15);
xabc=230,yabc=208,xxyz,yxyz=218;
for(i=0;i<=1;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,9);
bar(142,224,220,242);
outtextxy(145,226,"Frequency");
setfillstyle(1,8);
bar(225,224,272,242);
setfillstyle(1,1);
bar(227,226,270,240);
setfillstyle(1,15);
xabc=230,yabc=228,xxyz,yxyz=238;
for(i=0;i<=1;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,9);
bar(142,244,220,262);
outtextxy(145,246,"Phase");
setfillstyle(1,8);
bar(225,244,292,262);
setfillstyle(1,1);
bar(227,246,290,260);
setfillstyle(1,15);
xabc=230,yabc=248,xxyz,yxyz=258;
for(i=0;i<=2;i++)
{
xxyz=xabc+18;
bar(xabc,yabc,xxyz,yxyz);
xabc=xxyz+2;
}
setfillstyle(1,1);
bar(500,244,550,262);
setfillstyle(1,9); //inner
bar(500+2,244+2,550-2,262-2);
setfillstyle(1,1);
bar(560,244,610,262);
setfillstyle(1,9);    //inner
bar(560+2,244+2,610-2,262-2);
outtextxy(510,247,"Reset");
outtextxy(570,247,"Apply");
}
////////////////////////////////////////////////
int carrierInputFun_4qam()
{
/////////////////////////////////digit
int x1=150,x2=150,y1=134,y2=158;
int i=0;
do{
i+=1;
x2=x1+(15);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
bd_4qam[i-1] = getche();
if(bd_4qam[i-1] != '0' && bd_4qam[i-1] != '1')
{i-=1;x2-=20;}
graphicText(x1+4,y1+6,bd_4qam[i-1]);
if(i == 24)break;
x1=x2+2;
}while(1);
bd_4qam[24]='/0';
/////////////////////////////////amplitude
x1=230,x2=230,y1=208,y2=218;
char t_afp[2];
i=0;
do{
i+=1;
x2=x1+(18);
setfillstyle(1,9);
bar(x1,y1,x2,y2);
t_afp[i-1] = getche();
if(t_afp[i-1] < '0' || t_afp[i-1] > '9')
{i-=1;x2-=20;}
graphicText(x1+4,y1,t_afp[i-1]);
if(i == 2)break;
x1=x2+2;
}while(1);
c_amplitude = atoi(t_afp);
//////////////////////////////////////////frequency
x1=230,x2=230,y1=228,y2=238;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -