📄 digimod.c
字号:
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
#include <process.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define tcpath "d:\tc\bgi"
#define yvalue 180
#define yvalue2 300
#define lineweight 3
#define bdweight 10
#define pi 3.1415
//////////////////////
int main_c_hz=90, main_c_amplitude=15, main_sr =2000;
float main_c_frequency;
int main_c_angle=90;
int main_c_phase;
int main_c_lcycle=200,main_temp;
float main_c_sine_value[1000];
///////////////////////////////////
char bd_4main[20]="101011101";
int y1=yvalue-20,x1=200,y2=yvalue;
////////////////////////////////////carrier signal values
char bd_4signal[9];
int y12=yvalue2-40,x12=40,y22=yvalue2;
int c_hz=20, c_amplitude=25, sr =4000;
float c_frequency;
int c_angle;
int c_phase;
int c_lcycle=400,temp;
float c_sine_value[1000];
////////////////////////////////////carrier 4 qam
char bd_4qam[25];
////////////////////////////////////
struct ASK
{
float frequency,sine_value[1000];
int phase;
int amp0,amp1;
int x;
int noiseVal;
}ask;
int ask_sr=700,ask_lcycle=70;
///////////////////////////////////
struct FSK
{
float sine_value[1000];
int hz0,hz1;
int phase;
int amp;
int x;
}fsk;
int fsk_sr=700,fsk_lcycle=70;
///////////////////////////////////
struct PSK
{
float sine_value[1000];
float frequency;
int ang1,ang0;
int phase0,phase1;
int amp;
int x;
}psk;
int psk_sr=700,psk_lcycle=70;
///////////////////////////////////
struct QAM
{
float sine_value[1000];
float frequency;
int ang1,ang2,ang3,ang4;
int phase1,phase2,phase3,phase4;
int amp1,amp2;
int x;
}qam;
int qam_sr=700,qam_lcycle=70;
///////////////////////////////////
void initialgraph(void);
void mainpage(void);
void createmenu(void);
////////////////////////////////////
void creategraph_4main(void);
void createDsignal_4main(void);
void dsignal4_0_4main(int);
void dsignal4_1_4main(int);
void calc_sinewave_4main();
void create_simple_wave_4main();
void create_analoggraph_4main();
///////////////////////////////////
void askHandler(void);
void fskHandler(void);
void pskHandler(void);
void qamHandler(void);
void helpHandler(void);
void exitHandler(void);
/////////////////////////////
void carrierDataBox();
int carrierInputFun();
void askDataBox();
int askInputFun();
void fskDataBox();
int fskInputFun();
void pskDataBox();
int pskInputFun();
void qamDataBox();
int qamInputFun();
void graphicText(int x,int y,char ch);
////////////////////////////////
void calc_sinewave();
void view_data();
void create_simple_wave();
void create_graph();
void show_int_graph(int val,int l,int x,int y);
void creategraph_digital(void);
void createDsignal_digital(void);
void dsignal4_0_digital(int);
void dsignal4_1_digital(int);
/////////////////////////////
void calc_ask_sinewave(int);
void calc_askN_sinewave(int);
void ask_main();
void askN_main();
void create_ask_waves();
void create_graph_ask();
/////////////////////////////
void calc_fsk_sinewave(int);
void fsk_main();
void create_fsk_waves();
void create_graph_fsk();
/////////////////////////////
void calc_psk_sinewave(int);
void psk_main();
void create_psk_waves();
void create_graph_psk();
/////////////////////////////
void carrierDataBox_4qam();
int carrierInputFun_4qam();
void showDtable();
void creategraph_Dqam(void);
void createDsignal_Dqam(void);
void dsignal4_0_Dqam(int);
void dsignal4_1_Dqam(int);
void calc_qam_sinewave(int,int);
void qam_main();
void create_qam_waves();
void create_graph_qam();
void showDtable2();
/////////////////////////////
void main()
{
initialgraph();
mainpage();
}
/////////////////////////////
void initialgraph()
{
int gd=DETECT, gm;
initgraph(&gd, &gm, tcpath);
}
/////////////////////////////
void mainpage()
{
y1=yvalue-20;x1=200;y2=yvalue;
setfillstyle(1,1);
bar(70,20,570,22);
bar(70,65,570,67);
setfillstyle(1,9);
bar(70,22,570,64);
setcolor(15);
settextstyle(7,0,4);
outtextxy(80,20,"Digital to Analog Modulation");
setfillstyle(1,1);
bar(190-2,120-2,410+2,190+2);
bar(190-2,310-2,410+2,390+2);
setcolor(1);
setfillstyle(1,9);
bar(190,120,410,190);
bar3d(248,230,333,275,10,1);
bar(190,310,410,390);
setfillstyle(1,1);
bar(295,194,305,220);
bar(295,277,305,305);
setcolor(15);
settextstyle(2,0,4);
outtextxy(252,240,"Digital/Analog");
outtextxy(252,252," Modulation");
creategraph_4main();
createDsignal_4main();
calc_sinewave_4main();
create_simple_wave_4main();
create_analoggraph_4main();
setfillstyle(1,1);
bar(460-2,240-2,520+2,265+2);
bar(460-2,160-2,520+2,185+2);
bar(460-2,320-2,520+2,345+2);
setcolor(1);
setlinestyle(1,1,9);
line(344,252,458,252);
line(440,172,440,333);
line(440,172,460,172);
line(440,333,460,333);
line(540,172,540,333);
line(520,172,540,172);
line(520,333,540,333);
line(540,252,560,252);
bar(560-2,240-2,620+2,265+2);
setfillstyle(1,9);
bar(460,240,520,265);
bar(460,160,520,185);
bar(460,320,520,345);
bar(560,240,620,265);
setcolor(15);
settextstyle(2,0,5);
outtextxy(480,165,"ASK");
outtextxy(480,245,"FSK");
outtextxy(480,325,"PSK");
outtextxy(580,245,"QAM");
createmenu();
//getch();
}
////////////////////////////
void createmenu()
{
setfillstyle(1,8);
bar(3,117,110,248);
setfillstyle(1,1);
bar(1,117,107,245);
setfillstyle(1,9);
bar(4,120,104,242);
setfillstyle(1,1);
bar(1,120,107,122);
bar(1,140,107,142);
bar(1,160,107,162);
bar(1,180,107,182);
bar(1,200,107,202);
bar(1,220,107,222);
bar(1,240,107,242);
setcolor(15);
settextstyle(2,0,5);
outtextxy(38,122,"ASK");
outtextxy(38,142,"FSK");
outtextxy(38,162,"PSK");
outtextxy(38,182,"QAM");
outtextxy(38,202,"ABOUT-US");
outtextxy(38,222,"EXIT");
int x=4,y=124;
int choice=1;
setfillstyle(1,15);
setcolor(9);
bar(x,y,x+100,y+19-4);
outtextxy(38,122,"ASK");
char ch;
setfillstyle(1,1);
bar(1,441,639,444);
bar(1,476,639,479);
setfillstyle(1,9);
bar(1,445,639,475);
while(1)
{
//getch();
switch (choice)
{
case 1:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"Amplitude Shift Keying Technique");break;
}
case 2:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"Frequency Shift Keying Technique");break;
}
case 3:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"Phase Shift Keying Technique");break;
}
case 4:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"QAM");break;
}
case 5:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"Team profile and contact");break;
}
case 6:
{
setcolor(15);
setfillstyle(1,9);bar(1,445,639,475);
outtextxy(10,450,"Exit");break;
}
}
setfillstyle(1,9);
setcolor(15);
switch(getch())
{
case 80: {if (choice == 6)choice=1;else choice+=1;break;}
case 72: {if (choice == 1)choice=6;else choice-=1;break;}
//case '0': exit(0);
case '
':
{
if (choice == 1) askHandler(); else
if (choice == 2) fskHandler(); else
if (choice == 3) pskHandler(); else
if (choice == 4) qamHandler(); else
if (choice == 5) helpHandler();else
if (choice == 6) exit(0);//exitHandler();
}
}
if (choice == 1)
{
bar(x,y+(19*5),x+100,y+(19*6));outtextxy(38,222,"EXIT");
bar(x,y+19,x+100,y+(19*2));outtextxy(38,142,"FSK");
}
if (choice == 2)
{
bar(x,y,x+100,y+19);outtextxy(38,122,"ASK");
bar(x,y+(19*2),x+100,y+(19*3));outtextxy(38,162,"PSK");
}
if (choice == 3)
{
bar(x,y+19,x+100,y+(19*2));outtextxy(38,142,"FSK");
bar(x,y+(19*3),x+100,y+(19*4));outtextxy(38,182,"QAM");
}
if (choice == 4)
{
bar(x,y+(19*2),x+100,y+(19*3));outtextxy(38,162,"PSK");
bar(x,y+(19*4),x+100,y+(19*5));outtextxy(38,202,"ABOUT-US");
}
if (choice == 5)
{
bar(x,y+(19*3),x+100,y+(19*4));outtextxy(38,182,"QAM");
bar(x,y+(19*5),x+100,y+(19*6));outtextxy(38,222,"EXIT");
}
if (choice == 6)
{
bar(x,y+(19*4),x+100,y+(19*5));outtextxy(38,202,"ABOUT-US");
bar(x,y,x+100,y+19);outtextxy(38,122,"ASK");
}
setfillstyle(1,15);
setcolor(9);
if (choice == 1)
{
bar(x,y,x+100,y+19);outtextxy(38,122,"ASK");
}
if (choice == 2)
{bar(x,y+19,x+100,y+(19*2));outtextxy(38,142,"FSK");}
if (choice == 3)
{bar(x,y+(19*2),x+100,y+(19*3));outtextxy(38,162,"PSK");}
if (choice == 4)
{bar(x,y+(19*3),x+100,y+(19*4));outtextxy(38,182,"QAM");}
if (choice == 5)
{bar(x,y+(19*4),x+100,y+(19*5));outtextxy(38,202,"ABOUR-US");}
if (choice == 6)
{bar(x,y+(19*5),x+100,y+(19*6));outtextxy(38,222,"EXIT");}
setfillstyle(1,1);
bar(1,120,107,122);
bar(1,140,107,142);
bar(1,160,107,162);
bar(1,180,107,182);
bar(1,200,107,202);
bar(1,220,107,222);
bar(1,240,107,242);
}
}
////////////////////////////////////////////////
void creategraph_4main()
{
int cgx1=200,cgy1=130, cgx2=400,cgy2=yvalue;
setcolor(15);
setlinestyle(0,1,3);
line(cgx1,cgy1,cgx1,cgy2);
line(cgx1,cgy2,cgx2,cgy2);
setcolor(8);
setlinestyle(1,1,1);
for(int i = cgx1+20; i<cgx2;i+=20)
line(i,cgy1,i,cgy2);
//getch();
}
/////////////////////////////////////////////////////
void createDsignal_4main()
{
setcolor(1);
int len=strlen(bd_4main);
for (int i=0;i<len-1;i++)
{
if(bd_4main[i] == '0')
{
dsignal4_0_4main(i+1);
}
else
{
dsignal4_1_4main(i+1);
}
}
}
//////////////////////////////////////////////////////
void dsignal4_0_4main(int pos)
{
setcolor(1);
setlinestyle(0,1,lineweight);
int x=x1;x1+=20;
if (pos == 1 || (pos != 1 && bd_4main[pos-2] == '0'))
line(x,y2,x+20,y2);
else
{
line(x,y1,x,y2);
line(x,y2,x+20,y2);
}
}
///////////////////////////////////////////////////////
void dsignal4_1_4main(int pos)
{
setcolor(1);
setlinestyle(0,1,lineweight);
int x=x1;x1+=20;
if (pos == 1 || (pos != 1 && bd_4main[pos-2] == '1'))
line(x,y1,x+20,y1);
else
{
line(x,y1,x,y2);
line(x,y1,x+20,y1);
}
}
///////////////////////////////////////////////////////
void calc_sinewave_4main()
{
main_c_frequency = (2 * pi * main_c_hz)/main_sr;
for (int t = 0; t<main_c_lcycle;t++)
main_c_sine_value[t] = main_c_amplitude * (sin((main_c_frequency*t)+
main_c_phase));
}
/////////////////////////////
void create_analoggraph_4main()
{
setcolor(15);
line(200,350,400,350);
line(200,320,200,380);
}
/////////////////////////////
void create_simple_wave_4main()
{
int x=200,y=350,x1,y1;
setcolor(1);
setlinestyle(0,0,3);
for(int i=0;i<main_c_lcycle;i++)
{
x1=x+i;
if(main_c_sine_value[i] >= 0)
y1=y-main_c_sine_value[i];
else
y1=y+((-1)*main_c_sine_value[i]);
line(x1,y1,x1,y1);
}
}
///////////////////////////////////
void askHandler(void)
{
int z;
do{
setcolor(15);
carrierDataBox();
z=carrierInputFun();
}while(z != 1);
do{
setcolor(15);
askDataBox();
z=askInputFun();
}while(z != 1);
cleardevice();
/////////////////////digital part
creategraph_digital();
createDsignal_digital();
getch();
cleardevice();
/////////////////////carrier signal
calc_sinewave();
create_simple_wave();
create_graph();
getch();
cleardevice();
/////////////////////askpart
create_graph_ask();
outtextxy(30,300,"Signal Without Noise ");
ask_main();
getch();
cleardevice();
if(ask.noiseVal == -1)
mainpage();
else
/////////////////////askpart with noise
{create_graph_ask();
outtextxy(30,300,"Signal With Noise ");
askN_main();
getch();
cleardevice();
mainpage();
}
exit(0);
}
///////////////////////////////////
void fskHandler(void)
{
int z;
do{
setcolor(15);
carrierDataBox();
z=carrierInputFun();
}while(z != 1);
do{
setcolor(15);
fskDataBox();
z=fskInputFun();
}while(z != 1);
cleardevice();
/////////////////////digital part
creategraph_digital();
createDsignal_digital();
getch();
cleardevice();
/////////////////////carrier signal
calc_sinewave();
create_simple_wave();
create_graph();
getch();
cleardevice();
/////////////////////fskpart
create_graph_fsk();
fsk_main();
getch();
cleardevice();
mainpage();
//exit(0);
}
///////////////////////////////////
void pskHandler(void)
{
int z;
do{
setcolor(15);
carrierDataBox();
z=carrierInputFun();
}while(z != 1);
do{
setcolor(15);
pskDataBox();
z=pskInputFun();
}while(z != 1);
cleardevice();
/////////////////////digital part
creategraph_digital();
createDsignal_digital();
getch();
cleardevice();
/////////////////////carrier signal
calc_sinewave();
create_simple_wave();
create_graph();
getch();
cleardevice();
/////////////////////pskpart
create_graph_psk();
psk_main();
getch();
cleardevice();
mainpage();
//exit(0);
}
///////////////////////////////////
void qamHandler(void)
{
int z;
do{
setcolor(15);
carrierDataBox_4qam();
z=carrierInputFun_4qam();
}while(z != 1);
do{
setcolor(15);
qamDataBox();
z=qamInputFun();
showDtable();
getch();
}while(z != 1);
cleardevice();
/////////////////////digital part
creategraph_Dqam();
createDsignal_Dqam();
getch();
cleardevice();
/////////////////////carrier signal
calc_sinewave();
create_simple_wave();
create_graph();
getch();
cleardevice();
/////////////////////qampart
create_graph_qam();
qam_main();
showDtable2();
getch();
cleardevice();
mainpage();
}
///////////////////////////////////
void helpHandler(void)
{
setfillstyle(1,0);
bar(130,80,639,440);
setfillstyle(1,8);
bar(140-4,100-4,640+4,370+4);
setfillstyle(1,15);
bar(140,100,634,370);
setfillstyle(1,9);
bar(142,102,632,120);
settextstyle(2,0,4);
outtextxy(145,104,"Team Profile");
setcolor(1);
outtextxy(145,120+10,"Course Instructor ");
outtextxy(145,130+10,"----------------- ");
setcolor(9);
outtextxy(145,150+10,"Kamran Ishaq Kukda");
setcolor(1);
outtextxy(145,170+10,"Team Leader ");
outtextxy(145,180+10,"----------------- ");
setcolor(9);
outtextxy(145,200+10,"Arsalan Akhtar ");
outtextxy(145,210+10,"[ arsalan.akhtar@gmail.com ]");
setcolor(1);
outtextxy(145,230+10,"Team Members ");
outtextxy(145,240+10,"----------------- ");
setcolor(9);
outtextxy(145,260+10,"Jawaid Iqbal Bhatti");
outtextxy(145,270+10,"[ jawaid85@hotmail.com ]");
outtextxy(145,290+10,"Kumail Haider");
outtextxy(145,300+10,"[ kumi_here@hotmail.com ]");
outtextxy(145,320+10,"Jibran Sabhi");
outtextxy(145,330+10,"[ j_4_jibs@hotmail.com ]");
getch();
setfillstyle(1,0);
bar(130,80,639,440);
mainpage();
}
///////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -