哈工大C语言课程设计 联系客服

发布时间 : 星期一 文章哈工大C语言课程设计更新完毕开始阅读091bb628a617866fb84ae45c3b3567ec102ddcc5

哈尔滨工业大学课程设计说明书(论文)

C0=262,D0=296,E0=330,F0=349,G0=392,A0=440,B0=494, C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988,

C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976,S=10 };

typedef enum NOTES SONG;

SONG song1[]={C0,N4+N2,E0,N4,G0,N2,G0,N2,A0,N1,G0,N1,E0,N4+N2, C0,N4,G0,N1/3,G0,N1/3,G0,N1/3,E0,N1,C0,N1,G10,N1/3,G10,N1/3, G10,N1/3,G10,N1/3,G10,N1/3,G10,N1/3,C0,N1,END,END};

SONG song2[]={A0,N2,B0,N2,C1,N1+N2,B0,N2,C1,N1,E1,N1,B0,N1+N1,S,N1,E0,N1, A0,N1+N2,G0,N2,A0,N1,C1,N1,G0,N1+N1,S,N1,E0,N2,E0,N2,F0, N1+N2,E0,N2,F0,N1,C0,N1,E0,N1+N1,S,N1,C1,N2,C1,N2,B0,N1+N2,370, N2,F0,N1,B0,N1,B0,N1+N2,S,N1,A0,N2,B0,N2,C1,N1+N2,B0,N2,C1,N1, E1,N1,B0,N1+N2,END,END}; int main() {

int m,n,c=1; char b='y'; while(b=='y') {

printf(\ printf(\ printf(\ scanf(\

while(m!=1&&m!=2&&m!=3) /*选择方式*/ {

printf(\ scanf(\ } if(m==1) {

printf(\ scanf(\ while(n!=1&&n!=2) {

printf(\ scanf(\ }

playmusic(n,&c); }

else if(m==2) {

typemusic(); } getchar();

printf(\ scanf(\

哈尔滨工业大学课程设计说明书(论文)

} return 0; }

void playmusic(int n,int *c) {

int note=0,fre,dur,control; char d; clock_t goal; if(n==1) {

while(song1[note]!=END) {

fre=*c*song1[note]; dur=song1[note+1]; if(kbhit()) break; if(fre)

{ /*若频率值fre非0*/ outportb(0x43,0xb6); /*初始化2号定时器 */ fre=(unsigned)(1193180L/fre); /*计算计数初值 */ outportb(0x42,(char)fre); /*先写计数初值的低8位*/ outportb(0x42,(char)(fre>>8)); /*再写计数初值的高8位*/ control=inportb(0x61); /*读0x61的状态*/

outportb(0x61,control|0x03); /*将第0位,第1位置1,使喇叭发声*/ }

goal=(clock_t)dur+clock( ); while(goal>clock( )); if(dur)

outportb(0x61,control); note+=2; } }else {

while(song2[note]!=END) {

fre=*c*song2[note]; dur=song2[note+1]; if(kbhit()) break; if(fre)

{ /*若频率值fre非0*/ outportb(0x43,0xb6); /*初始化2号定时器 */ fre=(unsigned)(1193180L/fre); /*计算计数初值 */ outportb(0x42,(char)fre); /*先写计数初值的低8位*/ outportb(0x42,(char)(fre>>8)); /*再写计数初值的高8位*/ control=inportb(0x61); /*读0x61的状态*/

outportb(0x61,control|0x03); /*将第0位,第1位置1,使喇叭发声*/ }

哈尔滨工业大学课程设计说明书(论文)

goal=(clock_t)dur+clock( ); while(goal>clock( )); if(dur)

outportb(0x61,control); note+=2; } } getchar();

printf(\ scanf(\ if(d=='r') *c*=2; else if(d=='l') *c*=0.5; else if(d=='n') *c=*c; }

void typemusic() {

char ch; clock_t goal; int fre=0,control,dur=2;

printf(\ printf(\ do {

ch=getch(); if(ch=='/'); else {

switch(ch) {

case 'z':fre=C10;break; case 'x':fre=D10;break; case 'c':fre=E10;break; case 'v':fre=F10;break; case 'b':fre=G10;break; case 'n':fre=A10;break; case 'm':fre=B10;break; case 'a':fre=C0;break; case 's':fre=D0;break; case 'd':fre=E0;break; case 'f':fre=F0;break; case 'g':fre=G0;break; case 'h':fre=A0;break; case 'j':fre=B0;break;

哈尔滨工业大学课程设计说明书(论文)

case 'q':fre=C1;break; case 'w':fre=D1;break; case 'e':fre=E1;break; case 'r':fre=F1;break; case 't':fre=G1;break; case 'y':fre=A1;break; case 'u':fre=B1;break; case '1':fre=C2;break; case '2':fre=D2;break; case '3':fre=E2;break; case '4':fre=F2;break; case '5':fre=G2;break; case '6':fre=A2;break; case '7':fre=B2;break;

default:printf(\ } }

if(fre){ /*若频率值fre非0*/ outportb(0x43,0xb6); /*初始化2号定时器 */ fre=(unsigned)(1193180L/fre); /*计算计数初值 */ outportb(0x42,(char)fre); /*先写计数初值的低8位*/ outportb(0x42,(char)(fre>>8)); /*再写计数初值的高8位*/ control=inportb(0x61); /*读0x61的状态*/

outportb(0x61,control|0x03); /*将第0位,第1位置1,使喇叭发声*/ }

goal=(clock_t)dur+clock( ); /* clock()是计时函数,而与其相关的数据类型是clock_t,返回当前程序占用的CPU时间,用clock()返回的值除于CLOCK_PER_SEC常量可以得到当前程序的运行时间,单位是秒 */ while(goal>clock( )); if(dur)

outportb(0x61,control); }while (ch!='/'); }

1.4 程序运行结果及自评: