整点声音报时时钟.docx

上传人:b****5 文档编号:30210664 上传时间:2023-08-07 格式:DOCX 页数:14 大小:26.36KB
下载 相关 举报
整点声音报时时钟.docx_第1页
第1页 / 共14页
整点声音报时时钟.docx_第2页
第2页 / 共14页
整点声音报时时钟.docx_第3页
第3页 / 共14页
整点声音报时时钟.docx_第4页
第4页 / 共14页
整点声音报时时钟.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

整点声音报时时钟.docx

《整点声音报时时钟.docx》由会员分享,可在线阅读,更多相关《整点声音报时时钟.docx(14页珍藏版)》请在冰豆网上搜索。

整点声音报时时钟.docx

整点声音报时时钟

 

C语言实习报告

整点声音报时时钟

 

电科1001班任新龙120

2011-07-08

 

目录

●实习人信息……………………………………………….2

●C语言实习简介………………………………………….2

●实习课题………………………………………………….2

●参考资料………………………………………………….3

●参考时钟运行效果图…………………………………….7

●我设计的时钟….…………………………………………7

●我设计的时钟运行效果图………………………………10

●实习心得................………………………….…………...10

 

实习人信息

西安科技大学

学院:

通信与信息工程学院

专业班:

电子科学与技术1001班

姓名:

任新龙

学号:

1007060120

手机号码:

187********

邮箱:

465039505@

 

C语言实习简介

实习时间:

2011-07-04至2011-07-08

实习地点:

实验楼4楼A机房

实习工具:

TC

 

实习课题

《整点声音报时时钟》

用C语言设计一个整点声音报时时钟,在TC环境下运行,要求满足以下条件:

1.具有指针式表盘界面(方形或圆形);

2.具有时针+分针+秒针并正确旋转;

3.时钟时间须与系统时间相一致,秒针具有滴答声音效果.并实现整点报时.

 

参考资料

时钟参考代码:

#include

#include

#include

#definepi3.1415926

#defineX(a,b,c)x=a*cos(b*c*pi/180-pi/2)+300;

#defineY(a,b,c)y=a*sin(b*c*pi/180-pi/2)+240;

#defined(a,b,c)X(a,b,c);Y(a,b,c);line(300,240,x,y)

intx1,y1,x2,y2;

voidinit()

{inti,l,x1,x2,y1,y2;

chars[10];

floatf;

setbkcolor(0);

setcolor

(2);

circle(300,240,180);

circle(300,240,200);

circle(300,240,5);

for(i=12;i>=1;i--)

{f=(30*(i-12)*pi/180);

x1=300+sin(f)*(180-6)-16;

y1=240-cos(f)*(180-6);

sprintf(s,"%2d",i);

setcolor(13);

settextstyle(0,0,2);

outtextxy(x1,y1,s);

}

for(i=0;i<60;i++)

{

if(i%5==0)

{setcolor(5);

setlinestyle(0,0,3);

l=15;}

else

{setcolor(14);

l=5;}

x1=160*cos(i*6*pi/180)+300;

y1=160*sin(i*6*pi/180)+240;

x2=(160-l)*cos(i*6*pi/180)+300;

y2=(160-l)*sin(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

intx,y;

intgd=VGA,gm=2;

unsignedcharh,m,s;

structtimet[1];

initgraph(&gd,&gm,"d:

\\tc");

init();

setwritemode

(1);

gotoxy(30,20);

printf("madebyliyunzhan");

gettime(t);

/*h=t[0].ti_hour;*/

if(t[0].ti_hour>12)

t[0].ti_hour=t[0].ti_hour-12;

if(t[0].ti_hour<4)

h=abs(t[0].ti_hour-3);

m=t[0].ti_min;

s=t[0].ti_sec;

setcolor(7);

d(80,h,30);

setcolor(14);

d(110,m,6);

setcolor(4);

d(150,s,6);

while(!

kbhit())

{while(t[0].ti_sec==s)

gettime(t);

sound(400);

delay(70);

sound(200);

delay(30);

nosound();

setcolor(4);

d(150,s,6);

s=t[0].ti_sec;

d(150,s,6);

if(t[0].ti_min!

=m)

{

setcolor(14);

d(110,m,6);

m=t[0].ti_min;

d(110,m,6);

}

if(t[0].ti_hour!

=h)

{setcolor(7);

d(80,h,30);

h=t[0].ti_hour;

d(80,h,30);

sound(1000);

delay(240);

nosound();

delay(140);

sound(2000);

delay(240);

nosound();

}

}

getch();

closegraph();

}

时钟音乐参考代码:

#include

#include

#defineS145

#defineS2S1/2

#defineS4S1/4

#defineS8S1/8

#defineS16S1/16

enumFREQDEF

{

L1=131,L2=147,L3=165,L4=175,L5=196,L6=220,L7=247,

N1=262,N2=296,N3=330,N4=349,N5=392,N6=440,N7=494,

H1=523,H2=587,H3=659,H4=698,H5=784,H6=880,H7=988,

I1=1047,I2=1175,I3=1319,I4=1397,I5=1568,I6=1760,I7=1976

}song[]=

{

N2,S4,N2,S8,N3,S16,N2,S16,N1,S4,L6,S4,L5,S8,L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,

L6,S8,N1,S8,N5,S8,N6,S8,N3,S8,N5,S8,N2,S1,N3,S4,N3,S8,N2,S8,N3,S8,N5,S4,N3,S4,

L5,S8,L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,L6,S8,L6,S8,L2,S8,L3,S8,L5,S1,N2,S4,

N2,S4,N5,S4,N6,S8,N5,S8,N4,S2,N5,S2,N6,S4,N5,S8,N3,S8,N2,S8,N3,S16,N2,S16,N1,S8,L6,S16,

N1,S16,N2,S1,N3,S4,N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,

L6,S8,N1,S8,N2,S8,L6,S8,N1,S8,N3,S8,N2,S1,0

};

voidmain()

{

intnote=0,fre,dur,control;

clock_tgoal;

while(song[note]!

=0)

{

fre=song[note];

dur=song[note+1];

if(kbhit())break;

if(fre)

{

outportb(0x43,0xb6);

fre=(unsigned)(1193180L/fre);

outportb(0x42,(char)fre);

outportb(0x42,(char)(fre>>8));

control=inportb(0x61);

outportb(0x61,(control)|0x3);

}

goal=(clock_t)dur+clock();

while(goal>clock());

if(fre)

outportb(0x61,control);

goal=(clock_t)0;

note=note+2;

}

}

参考时钟运行效果图

 

我设计的时钟

我设计的时钟代码:

#include

#include

#include

#definepi3.1415926

intox,oy,locx,locy,i;

floatangle;

charstr[20];

voidinitial()/*初始化,绘制表盘*/

{

intgdriver=VGA,gmode=2;

initgraph(&gdriver,&gmode,"");

ox=getmaxx()/2;oy=getmaxy()/2;

/*setbkcolor();

setcolor();*/

for(i=0;i<8;i++)/*绘制外表盘*/

circle(ox,oy,200-i);

setcolor(3);

setfillstyle(SOLID_FILL,3);

/*circle(ox,oy,10);

floodfill(ox,oy,3);*/

for(i=0;i<60;i++)

{

angle=i*pi/30-pi/2;

locx=ox+150*cos(angle);locy=oy+150*sin(angle);

if(i%5==0)

{

settextstyle(0,0,2);

sprintf(str,"%-2d",i/5);

if(i==0)

outtextxy(ox+180*cos(angle)-13,oy+180*sin(angle)-4,"12");

elseif(i/5<=9&i/5>0)

outtextxy(ox+180*cos(angle)-4,oy+180*sin(angle)-4,str);

else

outtextxy(ox+180*cos(angle)-8,oy+180*sin(angle)-4,str);

circle(locx,locy,5);

}

else

circle(locx,locy,1);

floodfill(locx,locy,3);

}

setwritemode

(1);

gotoxy(30,30);

printf("DesignedbyRenXinlong");

setwritemode(0);

}

main()

{

inthour,min,sec=60;

structtimet;

initial();

gettime(&t);

while(!

kbhit())

{

gettime(&t);

if(sec!

=t.ti_sec)

{

setcolor(BLACK);

angle=hour*pi/6+min*pi/360-pi/2;

line(ox,oy,ox+90*cos(angle),oy+90*sin(angle));

/*setlinestyle(SOLID_LINE,0,1);*/

angle=min*pi/30-pi/2;

line(ox,oy,ox+110*cos(angle),oy+110*sin(angle));

angle=sec*pi/30-pi/2;

line(ox,oy,ox+130*cos(angle),oy+130*sin(angle));

setcolor(WHITE);

hour=t.ti_hour;min=t.ti_min;sec=t.ti_sec;

/*setlinestyle(SOLID_LINE,0,3);*/

angle=hour*pi/6+min*pi/360-pi/2;

line(ox,oy,ox+90*cos(angle),oy+90*sin(angle));

/*setlinestyle(SOLID_LINE,0,1);*/

angle=min*pi/30-pi/2;

line(ox,oy,ox+110*cos(angle),oy+110*sin(angle));

angle=sec*pi/30-pi/2;

line(ox,oy,ox+130*cos(angle),oy+130*sin(angle));

if(min==0&&sec==0)

{

sound(10000);delay(5000);nosound();

}

else

{

sound(10000);delay(20);nosound();

}

}

}

getch();

closegraph();

return0;

}

 

我设计的时钟运行效果图

 

实习心得

在2011-07-04至2011-07-08这段时间里,我们在专业老师的带领下进行了c语言程序实践学习。

老师给我们推荐了5道实习题目,让我们从中选出一道完成即可。

老师还给我们提供了大量的资料供我们参考,以减少实习难度。

我选择了《整点声音报时时钟》:

用C语言设计一个整点声音报时时钟,在TC环境下运行,要求满足以下条件:

1.具有指针式表盘界面(方形或圆形);

2.具有时针+分针+秒针并正确旋转;

3.时钟时间须与系统时间相一致,秒针具有”滴答”声音效果.并实现整点报时。

对只刚刚学了一个学期的C语言的我来说,这要算是一个大的程序了!

起初,我什么都看不懂,就连老师给的参考资料都看不懂。

后来,经过我上网搜集资料、向好友寻求帮助、请教华为公司的一位研发工程师,我开始摸索着去学习这些新的东西。

在这短短的5天实习期间,我在图书馆和网上查阅了大量的资料。

我感觉我的我的自学能力和相关知识在飞速增长。

通过这些请教和自学,我终于完成了老师布置的课题!

实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。

首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这几天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点。

其次,在编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺。

再次,通过几天的实习使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便;改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成;我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。

总之,通过实习使我自身的知识体系和学习能力都得到了巩固和提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1