第一篇:C語言設計課程實訓報告
昆明理工大學城市學院
課程設計報告
課 程 名 稱: 課程設計題目: 姓
名:
系:
專
業: 年
級: 學
號: 指 導 教 師:
C語言設計課程設計
萬年歷
信息工程系
計算機科學與技術
2012
2013 年月 12 日
任 務 書
實訓的目標
1.進一步培養學生結構化程序設計的思想,加深對高級語言基本語言要素和控制結構的理解。
2.針對C語言中的重點和難點內容進行訓練,獨立完成有一定工作量的程序設計任務,同時強調好的程序設計風格。
3.掌握C語言的編程技巧和上機調試程序的方法。4.掌握程序設計中的常用算法。
任務名稱:萬年歷
項目功能:
1、能夠顯示當前月的日歷以及標志出當前日期。
2、可以翻頁、翻年。
3、可以輸入年月日查看輸入的年月的日歷。
4、擁有記事本的功能。
教師簽名:
目錄
一、實訓要求:................................................................................................................4 1.掌握時間函數的運用。................................................................................................4 2.掌握在WinTC下的動畫制作。...................................................................................4 3.掌握bioskey和隨機函數的運用。.............................................................................4 4.學會邊界的判斷。........................................................................................................4 5.掌握鏈表和文件。........................................................................................................4 6.綜合所學內容編寫一個程序。....................................................................................4
二、實訓題目:.......................................................................................................................4 1.①給出時間計算與幾天的差值;②給出天數計算日期;③給出兩個日期計算差值。4
2.①讓一個圓在屏幕上動起來;②制作一個太陽、地球、月亮的動畫。................4 3.①區域內有障礙物使方塊不能穿過;②小球在區域內運動,碰到邊界后隨機改變方向繼續運動。...................................................................................................................4 4.①創建一個結構體;②創建鏈表并輸出;③刪除已有鏈表中的一個節點;④在已有鏈表中增加一個節點。...................................................................................................4 5.萬年歷............................................................................................................................4
三、實訓過程:.......................................................................................................................4 1.時間函數:....................................................................................................................4 思考過程:.......................................................................................................................4 2.動畫制作:....................................................................................................................4 思考過程:.......................................................................................................................4 障礙物(邊界判斷)...........................................................................................................4 思考過程...........................................................................................................................4 鏈表及文件:.......................................................................................................................4 思考過程...........................................................................................................................4 1.課程設計:萬年歷(帶記事本功能)........................................................................5 ① 思考過程.....................................................................................................................5 ②源代碼:.......................................................................................................................5 ③ 運行結果...................................................................................................................10
四、實訓心得:.....................................................................................................................11
一、實訓要求:
1.掌握時間函數的運用。
2.掌握在WinTC下的動畫制作。3.掌握bioskey和隨機函數的運用。4.學會邊界的判斷。5.掌握鏈表和文件。
6.綜合所學內容編寫一個程序。
二、實訓題目:
1.①給出時間計算與幾天的差值;②給出天數計算日期;③給出兩個日期計算差值。2.①讓一個圓在屏幕上動起來;②制作一個太陽、地球、月亮的動畫。
3.①區域內有障礙物使方塊不能穿過;②小球在區域內運動,碰到邊界后隨機改變方向繼續運動。
4.①創建一個結構體;②創建鏈表并輸出;③刪除已有鏈表中的一個節點;④在已有鏈表中增加一個節點。5.萬年歷
三、實訓過程:
1.時間函數:
a)思考過程: 第一小題:先把系統當前時間用time函數轉換成秒,再把輸入的天數用24乘3600秒轉換成秒,再與系統當前的秒數相加減,最后用ctime函數以字符串輸出。第二小題:調用localtime取得系統當前年月日,然后把當前年月日提取出來用自己輸入的年月日進行替換,用mktime把該年月日轉換成秒,然后再把系統當前時間轉換成秒,兩個秒數進行相加減,把加減后的結果除以(24*3600)就得到相差的天數。第三小題和第二小題同理,輸入兩個日期、轉換成秒以后相加減,最后除以(24*3600),就得到了兩個日子相差的天數。
2.動畫制作:
思考過程:做個循環,先用白色畫一個圓,然后再用背景色畫一個圓把當前圓覆蓋,然后改變圓心,然后在畫圓再覆蓋~最后循環完之后,再用白色在用位置畫個圓,因為不這樣干的話,屏幕上就沒有最好運行的位置了…第二小題同理~ 障礙物(邊界判斷);
① 思考過程:第一小題:判斷出上下左右移動的時候能運動的范圍(即控制外邊界),然后再把范圍內的某些不能通過的點的范圍找出來,把他們分別排除在外,其他的坐標點就是可以任意移動的了,用bioskey計算按下的鍵的鍵值,然后判斷可以移動之后,就在當前位置用背景色畫一個方框,然后在移動之后的位置用白色畫方框和障礙物等。第二小題劃定一個匡,然后在匡的范圍再把小球的半徑減去,就是最后小球能運動的范圍了…然后我設置的是讓小球逆時針轉動,然后用隨機函數(系統時間做種子)來控制小球偏移的位置(或者說角度)。
鏈表及文件: ① 思考過程:第一個問題需要做的是結構體的認識并運,定義一個結構體,然后輸入內容,然后再輸出之前輸入的內容。第二個問題則是創建鏈表并輸出,將一個節點分成了兩份,一邊是指針域,一邊是數據域,而指針域,指針域是下一節點的地址,我把頭結點不存儲數據,以方便之后兩題的操作;第三個問題是刪除鏈表,首先定義一個空的字符串,P,P1,P2,把頭指針賦值給P,隨后讓用戶輸入要刪去數據的名字,儲存在字符串中,利用strcmp函數進行查找,隨后如果第一個有數據的節點就符合要求,就把第二個節點的地址賦值給頭節點的指針域后跳出循環,如果不是第一個節點符合要求就執行循環,讓P賦值給P2,再把p->next賦值給P,這時P就到了下一個節點,再把p->next賦值給P1,也就是讓P1得到第三個節點的首地址,P指向第二個節點,P2指向第一個節點,再進行循環,還是沒找到就把P,P1,P2同時向后移動一個節點,如果找到了,就把P2的值賦給p->next,再把p->next的值賦給P,這時P就回到了上一個節點,再把p->next直接指向P1,就把中間的那個節點跳過,完成了刪除功能;第四個問題則是增加節點,同樣定義一個整型數據(即學號),P,P1,P2,P3,讓用戶鍵入想要添加的位置,之后讓頭指針賦值給P,p->next就賦值給P1,也就是讓p1指向下一個節點,隨后執行循環,讓用戶輸入想學號和每個節點內的學號比較,如果找到了,就創建一個新的鏈表,并讓P3指向它,讓用戶輸入添加的信息,并且把p->next賦值給P2和P,這是P就到了下一個節點,再把p->next賦值給P1,也就是讓P1指向第二個,P和P2都指向第一個,返回循環,如果符合要求就讓p3->next指向P1,p2->next指向P3,這樣,新的節點就進入了鏈表中,滿足要求,最后在主函數中先輸入數據,然后執行一個死循環,讓用戶選擇功能,如果選擇1就刪除一個節點,選擇2就增加一個節點,選擇0就跳出循環結束程序。1.課程設計:萬年歷(帶記事本功能)
① 思考過程:用localtime取得當前的系統時間,并且提取出年月日,然后把公元元年到今年一月一日前的天數計算出來,把這個天數除7取余為a,然后就獲得了今年元旦前的一天是星期幾。然后循環、從一月循環到當前月的上一月的最后一天,在這個循環中,循環一次a+1;當a=7時a置零,這個是用來計算當前月的上一月的最后一天是星期幾,然后從新在次循環外另開一個循環來輸出當前月的日歷,并標記出今天用()標記,然后用bioskey讀取用戶按下的鍵值,并實現相應的翻頁、標記特殊日子、記事本、從新輸入年份等功能…
②源代碼:
#include
/*計算公元元年到某年某月的時間*/ void f1(long int t,long int n,int y,int r);
/*按日歷模式輸出要得到的那個月的日歷*/ void w();
/*當前月的日歷*/ void s();
/*輸入某個年份和月份*/ void m(long int n,int y,int r);
/*記事本功能的函數*/
struct jishiben
/*記事本的結構體定義*/ {
long int a;
char name[100];};
void w()
/*輸出當前月的日歷*/ {
int y,r,a,b,c;
/*分別定義月份日期以及記錄鍵值記錄日期以及某月最后一天*/
long int n;
/*定義年份的變量*/
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep);/*取得當地時間*/
printf(“%d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);/*輸出當前的年月日*/
n=(1900+p->tm_year);
/*獲得當前年份*/
y=(1+p->tm_mon);
/*獲得當前月份*/
r=p->tm_mday;
/*獲得當前的是幾號*/
for(;;)
{
printf(“jin tian shi %d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);
/*輸出當前年月日*/
f(n,y,r);
/*調用函數f獲得某年某月的日歷*/
printf(“an fang xiang jian ke tiao jie nian huo yuen”);
printf(“ru xu shu ru nian fen qing an hui ge jian n”);
printf(“ruo xu shi yong ji shi ben qing an hui chen”);
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)c=31;
if(y==4||y==6||y==9||y==11)c=30;
if(y==2&&(((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0))))c=29;
if(y==2&&((n%4!=0)||((n%100==0)&&(n%400!=0))))c=28;
/*判斷月份及最后一天*/
a=bioskey(0);
/*取得按下的鍵值*/
if(a==18432)n=n-1;
/*按方向鍵向上則年份減一*/
if(a==20480)n=n+1;
/*按方向鍵向下則年份加一*/
if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}}
/*按方向鍵向左則月份減一*/
if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}}
/*按方向鍵向右則月份加一*/
if(a==18488){b=r;r=r-7;if(r<1)r=b;}
/*按小鍵盤8則上一周*/
if(a==19509){b=r;r=r+7;if(r>c)r=b;}
/*按小鍵盤5則下一周*/
if(a==19252){b=r;r=r-1;if(r<1)r=b;}
/*按小鍵盤4則上一日*/
if(a==19766){b=r;r=r+1;if(r>c)r=b;}
/*按小鍵盤則下一日*/
if(a==7181)m(n,y,r);
/*調用m函數 進行記事本功能*/
if(a==3592)s();
/*按回格鍵調用函數s 出入年份和月份*/
if(a==283)exit(0);
/*按esc鍵 直接退出程序*/
system(“CLS”);
} } void f(long n,int y,int r)
/*計算公元元年一月一號到某年的天數n y r為年月日*/ { long int i,t;
/*定義 i為循環變量
t為天*/ t=0;for(i=1;i if(((i%4==0)&&(i%100!=0))||((i%100==0)&&(i%400==0)))/*判斷閏年*/ t=t+366; if((i%4!=0)||((i%100==0)&&(i%400!=0))) /*判斷平年*/ t=t+365; if(t%7==0) /*為防止數據過大 所以當t除7的余數是0的時候,讓t=0;*/ t=0;} f1(t,n,y,r); /*調用函數f輸出某月的日歷*/ } void f1(long int t,long int n,int y,int r) /*按日歷模式輸出某月的日歷n y r為年月日*/ { int i,j,k,a; /*a為記錄星期的*/ a=t%7;for(i=1;i /*循環到某月的前一個月*/ { for(j=1;;j++) { a=a+1; if(a==7)a=0; if((i==1||i==3||i==5||i==7||i==8||i==10||i==12)&&j==31)break; if((i==4||i==6||i==9||i==11)&&j==30)break; if(i==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break; } } printf(“%ld nian %d yue ri lin”,n,y);printf(“ 1 n”);printf(“MON TUE WED THU FRI SAT SUNn”);for(k=0;k ”);for(j=1;;j++) /*按日歷模式輸出某月*/ { if(j==r)printf(“(%2d)”,j); /*標記出當前的日子以及特殊的日期*/ else printf(“ %2d ”,j); a=a+1; if(a==7){a=0;printf(“n”);} /*當循環一個星期以后,輸出一個換行符*/ if((y==1||y==3||y==5||y==7||y==8||y==10||y==12)&&j==31)break; if((y==4||y==6||y==9||y==11)&&j==30)break; if(y==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;/*判斷這個月的最后一天時跳出循環*/ } printf(“n”);} void s() /*輸入年月的函數*/ { long int n;int y,r,a;for(;;){ printf(“qing shu ru nian he yuen”); scanf(“%ld%d”,&n,&y); if(y<12&&y>0)break; /*判斷輸入的月份是否正確*/ else printf(“yue fen shu ru cuo wun”);} for(;;){ r=0; /*這里不需要標記處某天,所以令r=0*/ f(n,y,r); /*調用函數f來輸出需要的某月的日歷*/ printf(“an fang xiang jian ke tiao jie nian huo yuen”);printf(“ru xu shu ru nian fen qing an hui ge jian n”);printf(“an r jian fan hui dang qian yuen”);a=bioskey(0);if(a==18432)n=n-1; /*按方向鍵上鍵 則年份減一*/ if(a==20480)n=n+1; /*按方向鍵下鍵 則年份加一*/ if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}} /*按方向鍵左鍵月份減一*/ if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}} /*按方向鍵右鍵 月份加一*/ if(a==283)exit(0); /*按esc退出程序*/ system(“CLS”); /*清屏*/ if(a==4978)w(); /*按小寫的r 則調用函數w顯示當前月的日歷*/ if(a==3592)s(); /*按回格鍵 調用它自己 從新輸入一個年月*/ } } void m(long int n,int y,int r){ long int c; /*c是用來計算結構體長度的*/ long int s=r+100*y+10000*n; /*轉換年月日 例如2013-7-10 就轉換成20130710*/ struct jishiben kefu; /*定義結構體*/ FILE *fp; /*定義文件指針*/ c=sizeof(struct jishiben);/*計算結構體需要的長度*/ system(“CLS”); /*清屏*/ if((fp=fopen(“qw2.txt”,“a+”))==NULL) /*判斷這個文件是否存在*/ {printf(“da kai shi bai qing xian chuang jian gai wen jiann”);exit(-1);} else { for(;!feof(fp);){fread(&kefu,sizeof(kefu),1,fp);if(kefu.a==s)break;} /*篩選數據*/ if(kefu.a==s) { printf(“ri qi %ld---%s n”,kefu.a,kefu.name);} /*若得到了需要的數據 則顯示出來*/ else /*否則錄入數據*/ { /*錄入前先把文件關閉掉 然后再從新以追加方式打開*/ fclose(fp); fp=fopen(“qw2.txt”,“a”); fseek(fp,-c,2); printf(“qing shu ru xing xi n”); kefu.a=s; /*令長整型變量等于s 方便篩選*/ printf(“qing shu ru nei rongn”); printf(“%ldn”,kefu.a); gets(kefu.name); /*輸入字符*/ fwrite(&kefu,c,1,fp); /*把數據寫入*/ } getch(); fclose(fp); /*關閉文件*/ } w(); /*返回w函數再進行相應的操作*/ } int main(){ w(); /*調用函數w來開始第一次運行*/ getch();} ③ 運行結果 按回車實現記事本功能: 按回車返回記事本: 在特殊日子下按回車,查詢是否有要做的事情: 四、實訓心得: 通過為期三個星期是實訓,讓我收獲很多,比之前在課堂上的對c語言的理解更加的深刻了。在第一周學習了時間函數的使用和用c語言來畫動畫;第二周學習了怎么創建和使用鏈表、并且學習了文件的操作,雖然在文件操作方面我學習的還是不是很熟練,但是還是能夠自己寫個記事本了~最后一周,我們自己寫了自己的課程設計,在課程設計的過程中,不斷加強自己的程序的功能,這對我們來說雖然有些難度,但是經過自己的努力,還是實現了一些曾經自己都不敢接觸的東西。這次的實訓,讓的對c語言有了更加深刻的理解、增加的對c語言的興趣,并且比之前更加的能夠熟練的使用c語言了;我相信在以后對c的更深入的學習和c++、java的學習中,我也能夠通過實訓加強自己的~ 計算機專業實踐教學總結 為了進一步增強實踐教學效果,提高學生計算機編程能力,更好的理論聯系實際,根據我院計算機專業專科實踐性教學環節中的實踐部分的要求,計算機教研室組織2011級計算機專業學生于2012年7月5日至7月12日進行了C語言課程設計實訓,對2010級計算機專業進行了網頁設計課程實訓,須取得了較好的效果。現將本次實訓總結如下: 一、課程設計實訓的教學安排 1.實習內容安排 指導2010級學生分組開放一個關于書城的網站,2011級學生用C語言開發一個應用系統,實訓以集中授課形式,首先由教師提供實訓題目,指導學生,期間由指導教師管理、督促、指導,按照要求及實訓的規定完成實訓任務。 根據學生的實際情況,進行分組選題,五人一組。C語言的主要的課程設計題目如下(學生也可自主選題): 1、圖書管理系統 2、學生信息管理系統 3、學生成績管理系統 4、學生通訊錄管理系統 5、職工信息管理系統 6、學生試卷分數統計 課程設計采用學生自主設計和指導老師輔導相結合的方式。 各組在中加學院機房完成編程題目,寫出實驗報告,程序要調試通過,最后指導教師根據所編程序以及實驗報告的優劣給予評分。 2.教師安排及備課安排 通過實訓,使學生了解網站開發工具Asp和編程語言C語言的基本語法知識和編程要點,通過這次實訓可以進一步加強對計算機語言理論知識的消化吸收,通過編程將課本知識融會貫通。 在實訓中,請了計算機企業的王皓然經理講解了一些C語言在企業中的應用案例和C語言的編程技巧等內容。在課程設計過程中,由高琴和楊煥海老師對學生設計過程中提出的問題進行解答指導,并督促學生按時完成程序設計和實驗報告的書寫。 二、課程設計實訓的實施 1.備課過程 本著對學生負責的態度,指導教師做了大量的前期準備工作。首先指導教師根據學生學習情況和學生的特點,精心選擇實訓內容,盡量選擇應用性較強,對學生知識點考查將全面的系統讓學生去實現。在將實訓題目發給學生之前先自己分析實訓題目的設計流程和編程思路,更好的為學生的課程設計題目提供合理的建議。 2.教學過程 在指導學生實訓時,首先介紹所提供設計題目的目的及要求,使學生對自己要開發的系統有一個總體的、明確的認識;然后要求學生分組并確定每組開發的系統;指導學生對所選系統進行分析,設計流程圖,并合理劃分各個模塊;指導小組成員進行各個模塊設計;設計過程中對學生的系統隨時檢查,盡早發現程序的錯誤并指導學生改正;程序設計完成后,對學生最終的系統進行調試驗收,運行不能通過的程序指導學生進行調試修改;最后指導學生完成實訓報告。 三、課程設計實訓的效果 本次實訓達到了實踐教學的預期目的,學生普遍感到應用計算機語言的編程能力有很大的提高,同時也激發了大家對計算機語言的學習興趣;大多數學生認為通過具體的程序設計能學以致用,將理論專業知識緊密聯系實際,這樣的實訓非常有必要,取得了非常好的效果。 四、課程實訓教學存在的問題 在實訓教學指導中,出現的問題也很多,基本上是隨時發現問題隨時加以解決。通過教師和學生兩方面的反饋意見來看,較為突出的問題是: 1.理論教學課時少,講解內容不夠全面 有學生反映,實訓中用到的部分內容在課程理論教學中沒有涉及到,尤其是C語言由于課時較少,而內容較多,很多內容在課堂教學中沒能講到。C語言是計算機專業的基礎課程,對學生計算機語言的學習是一個重要基礎。計算機學院將C語言課程放到兩個學期來講,課時較多,將C語言的知識點全面覆蓋,對以后學生學習“數據結構”、“數據庫原理”等計算機核心課程有很大幫助。建議加大C語言的課時。 2.實訓課程內容應提前提供給學生 大部分學生建議將課程設計內容在課程教學期間提供給他們,他們可以提前 準備。在實訓的期間,完成一個大系統的設計,從需求分析、總體設計、模塊設計、詳細設計,以及代碼的逐行調試,時間比較倉促,學生實訓完成的質量不高,采納學生的建議,以后教師在講課過程中題目提供給學生,讓他們提供準備,高質量完成實訓任務。 總之,這次課程實訓教學工作取得了不錯的效果,讓學生鞏固了已學知識,提高了計算機編程能力,還進一步激發了他們學習熱情,同時也提升了學生對專業的熱愛。學生們在程序設計中出現的種種錯誤、問題,也讓他們認識到實際工作與理論學習之間的距離;踏踏實實做程序,編程能力才能真正得到提高,才能學好自己的專業課程。 《JAVA 學 院: 組 長: 組其他成員: 專 業: 年 級: 指 導 教師: 年 月 語言編程》實訓報告 目錄 第一章 實訓目的和要求..................................................................................................................................1 1.1 實訓目的.............................................................................................................錯誤!未定義書簽。1.2 實訓要求.............................................................................................................錯誤!未定義書簽。第二章 課程實訓選題......................................................................................................................................2 第三章 需求分析............................................................................................................錯誤!未定義書簽。 3.1 系統設計思想...................................................................................................錯誤!未定義書簽。3.2 系統功能概述...................................................................................................錯誤!未定義書簽。3.3 業務流和數據流...............................................................................................錯誤!未定義書簽。第四章: 系統數據模型設計.............................................................................................錯誤!未定義書簽。 4.1主界面模塊..........................................................................................................錯誤!未定義書簽。4.2控制模塊..............................................................................................................錯誤!未定義書簽。4.3 功能模塊設計.....................................................................................................錯誤!未定義書簽。4.3.1 系統功能設計..................................................................................................錯誤!未定義書簽。4.4 系統開發與運行環境.........................................................................................錯誤!未定義書簽。第五章 系統實現............................................................................................................錯誤!未定義書簽。 各模塊的具體實現....................................................................................................錯誤!未定義書簽。第六章 結 論............................................................................................................錯誤!未定義書簽。參考文獻………………………………………………………………………………………………..………8 第一章 實訓目的和要求 第二章 課程實訓選題 目錄 設計任務與要求................................................................2 3 設計方案與論證................................................................2 3.1設計方案.......................................................................2 3.2 設計論證......................................................................3 4 設計原理及功能說明.........................................................3 4.1 NE555的使用................................................................3 4.2 CD4017的工作原理......................................................4 5 單元電路的設計................................................................5 5.1 電源裝置......................................................................5 7 總結與體會...........................................................................6 一、產品介紹........................................................................8 二、課程設計要求................................................................8 三、課程設計原理................................................................8 四、焊接步驟及注意事項.....................................................9 注意事項:..........................................................................10 附錄三 制作實物圖............................................................11 設計目的 本次設計本著鍛煉學生的動手能力和思考能力的目的,把所學知識與實際相結合。學生通過理論設計和實際制作解決相應的實際問題,鞏固和運用在《數字電子技術》一書中所學的理論知識和實驗技能,掌握模擬電子系統的一般設計方法,提高設計能力和實際動手能力,為以后從事電子產品打下良好的基礎。 提高學生的就業競爭力,激發我校大學生事實就是,刻苦鉆研,發揚團隊合作精神,培養學生的創新思維和動手實踐能力。加強學生對專業前沿技術的學習和能力的培養。例如,焊接技術,自我解決問題的能力。 同時在設計以及實踐的過程中不僅可以充分運用所學知識于實際中,還可鍛煉學生的思維能力和知識拓展完成力,調動學生學習電子信息技術的積極性。設計任務與要求 所設計的電路,并且能夠順利實現所要達到的目的。充分運用所學知識,焊接技術嫻熟,排版合理。 1,打印《模擬電子技術》課程設計說明書一份,給出課程的設計和制作調試過程; 2,根據技術指標的要求畫出設計電路圖,畫出印制電路版圖; 3,設計時間:一周; 4,寫出模電課程設計報告電子稿一份,在規定時間內上交給老師,并達到老師的要求; 5,人員分組為三、四人一組,在一個班級內不能選用同一課題設計; 6,制作PCB版。設計方案與論證 3.1設計方案 本電路由555組成的多諧振蕩器和CD4017十進制計數器/脈沖分配器組成。10顆發光二極管模擬幸運物,當按下啟動鍵1秒以上,發光二極管高速循環點亮,幾秒鐘后旋轉速度越來越慢并最終隨機停止于某 顆燈上。可以將每顆燈旁邊標上幸運物品作為搖獎器。47μF電解電容的數值決定延遲時間,1μF的電解電容數值決定循環速度。電源供電電壓為直流5V,也可以采用3節1.5V電池供電。 3.2 設計論證 若當按下開關1秒以上,發光二極管高速循環點亮,幾秒鐘后旋轉速度越來越慢并最終停于某顆燈上。重復試驗,停留的位置隨機。則設計成功,否則,設計失敗。設計原理及功能說明 4.1 NE555的使用 NE555(Timer IC)為8腳時基集成電路,大約在1971年由Corporation發布,在當時是唯一非常快速且商業化的Timer IC,在往后的30年中非常普遍被使用,且延伸出許多的應用電路,后來基于CMOS技 術版本的Timer IC如MOTOROLA的MC1455已被大量的使用,但原規格的NE555依然正常的在市場上供應,盡管新版IC在功能上有部份的改善,但其腳位勁能并沒變化,所以到目前都可直接的代用 Pin 1(接地)-地線(或共同接地),通常被連接到電路共同接地。 Pin 2(觸發點)-這個腳位是觸發NE555使其啟動它的時間周期。觸發信號上緣電壓須大于2/3 VCC,下緣須低于1/3 VCC。 Pin 3(輸出)-當時間周期開始555的輸出輸出腳位,移至比電源電壓少1.7伏的高電位。周期的結束輸出回到O伏左右的低電位。于高電位時的最大輸出電流大約200 mA。Pin 4(重置)-一個低邏輯電位送至這個腳位時會重置定時器和使輸出回到一個低電位。它通常被接到正電源或忽略不用。 Pin 5(控制)-這個接腳準許由外部電壓改變觸發和閘限電壓。當計時器經營在穩定或振蕩的運作方式下,這輸入能用來改變或調整輸出頻率。 Pin 6(重置鎖定)-Pin 6重置鎖定并使輸出呈低態。當這個接腳的電壓從1/3 VCC電壓以下移至2/3 VCC以上時啟動這個動作。 Pin 7(放電)-這個接腳和主要的輸出接腳有相同的電流輸出能力,當輸出為ON時為LOW,對地為低阻抗,當輸出為OFF時為HIGH,對地為高阻抗。 Pin 8(V +)-這是555個計時器IC的正電源電壓端。供應電壓的范圍是+4.5伏特(最小值)至+16伏特(最大值)。 圖4—1 NE555內部結構圖 4.2 CD4017的工作原理 十進制計數/分頻器CD4017,其內部由計數器及譯碼器兩部分組成,由譯碼輸出實現對脈沖信號的分配,整個輸出時序就是O0、O1、O2、…、O9依次出現與時鐘同步的高電平,寬度等于時鐘周期。 CD4017有10個輸出端(O0~O9)和1個進位輸出端~O5-9。每輸入10個計數脈沖,~O5-9就可得到1個進位正脈沖,該進位輸出信號可作為下一級的時鐘信號。 CD4017有3個輸(MR、CP0和~CP1),MR為清零端,當在MR端上加高電平或正脈沖時其輸出O0為高電平,其余輸出端(O1~O9)均為低電平。CP0和~CPI是2個時鐘輸入端,若要用上升沿來計數,則信號由CP0端輸入;若要用下降沿來計數,則信號由~CPI端輸入。設置2個時鐘輸入端,級聯時比較方便,可驅動更多二極管發光。 由此可見,當CD4017有連續脈沖輸入時,其對應的輸出端依次變為高電平狀態,故可直接用作順序脈沖發生器。 圖4-2 CD4017引腳圖 圖4-3 CD4017工作原理圖 單元電路的設計 5.1 電源裝置 一般情況下,我們使用的電源信號都是交流電源即220V,50HZ。,而我們所設計的幸運大轉盤所采用的5V直流電源信號,由于這種信號不是很常見,所以我們應設計信號轉換裝置。在此我們選用220V的轉換為5V的電壓,此裝置包括變壓器、整流電路、穩幅。其中整流電路是單相橋式整流電路,穩幅電路是一個三端集成穩壓管。若實現穩壓電源,首先就要就電路進行穩壓。在穩壓方面可選用變壓器來完成。由輸入交流電壓變為直流則須對電路進行整流。本次設計選用全波橋式整流電路進行整流,然后要對輸入的電壓進行調節,在調節方面可選用可調節三端正電壓穩壓器進行調節(LM317)。通過整流后得電流幅值變化很大,所以需要用電容對電流進行濾波。如此下去,便得到全波整流電壓。5.2 應用電路設計 我們設計的是電子幸運轉盤,主題是NE55和CD4017的連接裝置,從電路圖到實際電路的轉換,需要注意元器件的串并聯。4017是一個十進計數器集成電路,16腳及8腳分別為正及負電源接腳,可在3-18 V下工作。14腳是時鐘脈沖輸入端,每當輸入由低電位(約0V)轉高電位(近正電源電壓)時令輸出腳(共十腳)依次序輪流輸出高電位。13腳是輸入時鐘脈沖控制端,一般接低電位,若接高電位會令14腳暫停作用。15腳是置零腳,一般接零電位,若接高電位則使輸出置零,即Q0輸出腳”3”永遠為高電位,失去計數作用。12腳是進位腳,用來接下一個十進計數器用,變成雙位計數器,現在的電路不用,故空接。在4017的14腳接上一脈沖產生器便可成為電子幸運輪盤。脈沖產生器是一個用定時器集成電路555設計而成的無穩態多諧波(方波)振蕩器,產生高低變化不停的方型脈沖波。當按一下按鈕式開關(時,C1會實時充電至電源電壓9V,此電壓經晶體管(TR)緩沖放大器后施加在IC555無穩態多諧波(方波)振蕩器的重置腳即4腳上,令其開始振蕩,在第3腳輸出方波脈沖。當按鈕式開關放開后,C1會經R1放電,其電壓徐徐下降,IC2第4腳的電壓也跟隨下降。在一定的時間后(由C1乘R1的時間常數決定,一般約十秒內),IC2第4腳的電壓變得很低,令振蕩停止,第3腳 停止輸出方波脈沖。IC2 555在起動時,第3腳輸出約等于電源電壓的高位電壓,經R3向C3充電,當C3電壓升至 2/3電源電壓時,經第六 腳觸發內部的電壓比較器,令第3腳 變為接近零的低電位。之后C3經R3 放電,當C3電壓下降至1/3電源電壓 時,經第二腳觸發內部另一個電壓比較器,使第3腳變回高輸出電位,再次重復向C3充電。結果C3不停經R3充電和放電,555第3腳不停輸出方型脈沖波。R3及C3數值越大,頻率越低。R3及C3數值越小,頻率越高。6 硬件的制作與調試 當作品完成后,我們首先進行各種各樣的檢測。實踐證明一個電子裝置,即使按照設計的電路參數進行安裝,在測試的過程中也難以達到預期的效果。根據此完成的電路圖,印刷出電路板,進行電路板的腐蝕,打孔,上元器件等一系列的工作,后得到了計的電路板。 在PCB板的制作中要注意許多細節問題,例如元器件的擺放,及線路布置,腐蝕的時間控制,焊接時不能熔斷電路板的線路等等。若有細小的不注意,就會使得印刷出的電路板出現問題,所以在此過程中我們特別細心。一旦出現問題就會使得打出的空的大小與元器件的大小不相符合,在電路板上修改會造成許多不必要的麻煩,最后會因為不清楚元器件的焊接點,使得整個電路報廢。其它方面的問題,自己在制作過程中也得注意,這樣才能讓電路更加完善,減小錯誤出現的概率。經過認真處理后,得到實物圖。 根據原理,發現問題,找到解決問題的方法,發現元器件的選擇規格不夠精確。過反復調試后,采取有效的措施加以改進使裝置達到預定的技術指標。經調試試驗后,發現該作品基本能達到預期效果。總結與體會 時光匆匆而過,一周轉眼即逝。在過去的這兩周時間里,原本以為會比較輕松的設計任務卻讓我覺得有點措手不及。雖然困難重重,但是在遇到的各種問題中,我學會的耐心,也學會了堅持,也學會了以前掌握不太牢固的數電和模電知識收獲頗豐。在這次電子創新設計中,我們小組的題目是電子幸運輪盤。設計的時候并不順利,芯片的選擇和電路的接法對于我 這種從來沒有實際操作過的學生還是有一定難度的。經過我們大家的集體 討論后,我們還是把最終的電路圖設計了出來。這讓我充分體會到了團隊了力量,團結才能讓大 家把事情干好。一個人的力量始終太渺小,集思廣益才能讓我們進步得更快,讓我們學習到更多知識。最讓我頭疼的是在 實際操作過程中,我們經常會因一個小失誤,比如線接錯了,有的線沒有接上等等問題讓實驗板的燈無法亮起來。這些都是讓我始料未及的。由于不細心的地方太多,老是求快,想早點完成設計和焊接,但是這反而導致了很多次的失敗,當時甚至有放棄的念頭。但是我們堅持下來了,當最終看到成品的時候,我覺得一切都是值得的。記得老師說過細節決定成敗。以前感觸不深,沒有注意太多的細節,總是抱著差不多就行或者放縱自己的心態來面對學習和生活中的問題。但是我現在明白了,這是不對的。對于科學我們就應該保持嚴謹態度。我從這次設計中感受到了堅持的重要性。做事不能輕言放棄,雖然過程不順利,但是只要我們能堅持,朝自己既定的目標前進,就一定會走到終點。一點小小的挫折實際上是在為美景做鋪墊,當我們守得云開見月明的時候,就會發現沿途的曲折實際上是在考驗我們對目標是否堅定。堅持下來,我們會收獲豐碩的果實。電子創新設計,不僅讓我的知識掌握的 更牢固,還讓我意識到了我們所學的知識可以跟現實生活緊密的聯系起來。這讓我對自己有了更多的信心,因為我們在大學里面不是混日子,而是在學習真正對我們生活有幫助的知識能力。我會更加珍惜現在這么好的學習環境,努力學習知識,讓自己在激烈的社會競爭中立足,也把自己學到的知識運用到生活實際來回報社會。附錄一 總體電路原理圖 附錄二 制作實物圖 一、產品介紹 該迷你音箱可以作為MP3或筆記本及臺式機的功放。如果從電腦取電,可以從USB,也可以直接從主機中引出12V,現在有些電腦電源帶有供液晶顯示器用的12V電源接口,更是方便。如果從USB取電,要注意占用一個獨立的USB口,不要和其他USB設備共用。TDA2822M采用5V供電時的工作電流只有200mA~300mA,只要主板質量合格,不會有什么問題。本套件制作容易,是提高初學者學習電子技術興趣的良好套材。 在拿到本套件后,請對照材料清單清點一遍,并用萬用表粗略的(因出廠已測量過)測量一下各元件的參數,先檢查元件有沒有出錯,對照裝配圖安裝元件,有沒有虛假錯焊,只要元件安裝無誤,一般情況下是能夠成功的。 二、課程設計要求 制作一個有源音箱,能夠連接電腦.手機.mp3.收音機等播放設備,能夠精確的調節音量和較好的保真度。元件清單: 三、課程設計原理 通過音頻線將MP3.MP4等設備的左.右兩路音頻信號輸入到立體聲盤式電位器的輸出端,2路音頻信號在分別經過R1.C1.R2.C2耦合到功率放大集成電路TDA2822的輸入端6.7腳,經過IC(TDA288)內部功率放大后其1.3腳輸出經過放大后的音頻信號以推動左.右兩路揚聲器工作。電路中的發光二級管LED起電源通指示作用。撥動開關SW可以控制電源的開或關自流電源插座DC起電路可以外接電源的作用。帶為其VOL是用來控制音量的大小。 設計原理圖 根據印刷版的圖形標志選擇不同器件進行焊接,圖形中有的圓表示電容,并且虛線區域表示電容的負極。注意在GRL三個焊孔中,G必須接導線的金黃的線,R L可以隨意接。在兩空之間用直線連接起來表示器件插入其兩個孔內。 電路印刷電路圖 四、焊接步驟及注意事項 1按元件清單清點所有元件,分類擺放以便于拿取。用萬用表檢測,如有壞損的○ 請選出來,更換。 ②對照原理圖元件清單安裝元件,參照電路板元件符號確定元件的安裝方向、高度。注意:電解電容的極性,電解電容應緊貼線路板,按絲印方向安裝以免影響封蓋。盡量把元件上的字符朝向一致,置于易觀察的位置,以利于檢查。 ③焊接元件要快時間要短,用錫量要適量,避免拖錫而造成短路。 ④焊接元件先小后大,分類分批焊接完成后,剪去過長引腳,檢查所有焊點有無虛焊及漏焊。電位器和外接電源插孔與底板對保持水平再焊機。 ⑤發光二極管指示最后焊接。約留1cm引腳長度彎折以便從外殼孔中露出。⑥最后焊接電源和左右聲道喇叭引線,并在根部用熱熔膠棒固定。 調試封裝完成以后安裝上4節七號電池打開開關以后就可以工作了。B50K元件是調節音量的。將立體聲插頭插入MP3播放器檢查是否正常工作。那么一個簡約時尚的迷你音箱就做完了 注意事項: 1、清單清點元件數量,檢測元件是否完好。 2、向電路板安放元器件時注意元件大小、層次、安裝方式。 3、注意虛焊、漏焊、焊點短路及毛刺等問題。剪腳長度 4、注意區分排線連接揚聲器和導線連接電源。 5、安裝外殼時要注意不要壓到導線和排線。 五、總結 作為機械專業的學生,電路板焊接這樣的經驗對我們來說十分珍貴,首先,我們綜合運用了在模擬電子課上學習到的知識,并動手,實踐了相關的學習內容,增強了對學科知識的了解與理解。 這次是直接按照圖紙進行焊接工作,可以說是獨立完成,是對我們基本能力的考驗,焊接過程姑且不計,有幸一次性成功音箱工作狀態非常理想音質很棒,第一次用上了自己親手制作的音箱。此次課程設計拓寬了我的認知面在原來的基礎上又認識并掌握了一些元器件的使用,自己的焊接技術也得到了鍛煉,在第一次用到PCB板心中難免有些緊張,不過隨著焊接的繼續,就習慣了這樣的工作,很享受這樣的過程,從中學到了很多,并且提高了自己的動手能力。搞些老師這兩個星期的辛苦付出,很期待下一次的課程設計的到來。 附錄一 材料清單 附錄二 PCB裝配圖 附錄三 制作實物圖 紹興職業技術學院計算機系 《》課程實訓報告 專業__________班級_______學號_________姓名小組成員指導老師實訓名稱實訓日期:年月日 一、實訓目的(列出本實訓所要掌握技能) 二、實訓環境(描述實訓的軟件、硬件環境) (注明實訓地點,列出本實訓所需的軟件、硬件環境) 三、實訓內容、步驟與過程分析 (列出實訓內容,闡明實訓步驟及中間的結果或現象、最終結果和現象,對這些結果和現象進行分析,若出現誤差也予以分析誤差原因) 四、實訓總結 (說明實訓過程中遇到的問題及解決辦法;未解決/需進一步研討的問題;介紹本實訓中的收獲和經驗等) 第一頁第二篇:C語言課程實訓總結
第三篇:Java 課程實訓報告
第四篇:電子設計課程實訓報告(本站推薦)
第五篇:課程實訓報告格式