版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目 零件計(jì)數(shù)器 </p><p><b> 摘要</b></p><p> 本次單片機(jī)課程設(shè)計(jì)我組選擇的題目是零件計(jì)數(shù)器,零件計(jì)數(shù)器本身在生產(chǎn)實(shí)踐中具有很實(shí)際的用途,選擇這個項(xiàng)目可以繞過我們更好的把課堂上學(xué)到的課本
2、知識和理論內(nèi)容與生產(chǎn)實(shí)踐結(jié)合起來,提高對實(shí)際問題的動手操作能力以及解決問題的能力,進(jìn)一步加深學(xué)生對于實(shí)際的電子元件電路功能的理解與運(yùn)用,對于設(shè)計(jì)實(shí)際的實(shí)用程序來解決一系列生產(chǎn)生活遇到的問題的能力有著顯著的家加強(qiáng)與提高。零件計(jì)數(shù)器的功能是通過感應(yīng)器對零件數(shù)量進(jìn)行中斷計(jì)數(shù),并由數(shù)碼管動態(tài)顯示出來,并通過實(shí)用的程序?qū)⒘慵?shù)目通過串口傳送給PC機(jī),還能夠通過實(shí)時的檢測電路將之與蜂鳴器連接起來,起到整十報(bào)警以及零件打包的功能。</p>
3、<p> 基于單片機(jī)構(gòu)成的零件計(jì)數(shù)器研究的主要內(nèi)容包括:AT89C51單片機(jī)用何種方式對外部計(jì)數(shù)脈沖進(jìn)行計(jì)數(shù)顯示控制、LED顯示驅(qū)動模塊的選擇、如何通過串口與PC機(jī)完成實(shí)時連接。在這個設(shè)計(jì)中主要需要解決的問題便是如何提高AT89C51單片機(jī)的抗干擾能力以及穩(wěn)定性。</p><p> 關(guān)鍵字:單片機(jī) 零件計(jì)數(shù)器 LED顯示 串口連接</p><p><b>
4、 目錄</b></p><p><b> 第1章 系統(tǒng)設(shè)計(jì)</b></p><p> 1.1電路框圖·····················
5、·························3</p><p> 1.2軟件設(shè)計(jì)方框圖及流程圖·····
6、183;··························4</p><p> 1.3電路功能·····
7、;····································
8、83;····6</p><p><b> 第2章 計(jì)數(shù)器程序</b></p><p> 2.1分段程序及功能··················
9、······················8</p><p> 2.2問題及解決方案·········
10、······························11</p><p> 第3章 實(shí)驗(yàn)結(jié)果及討論<
11、/p><p> 3.1實(shí)驗(yàn)結(jié)果································
12、183;············11</p><p> 3.2結(jié)論···················
13、······························11</p><p> 3.3心得體會·
14、183;····································
15、·······12</p><p> 參考文獻(xiàn)·························
16、;························12</p><p> 附錄········
17、····································
18、3;········13</p><p><b> 系統(tǒng)設(shè)計(jì)</b></p><p><b> 1.1 電路框圖</b></p><p> 電路總圖與功能如圖所示,每當(dāng)來一次外部中斷時,內(nèi)部計(jì)數(shù)一次,并將數(shù)值通過4位共陰數(shù)碼管動態(tài)顯示出來
19、。而單片機(jī)的P2口可以選擇四根不同的數(shù)碼管來動態(tài)顯示,通過視覺暫留達(dá)到同時顯示的效果。同時內(nèi)部程序檢測每當(dāng)計(jì)數(shù)十次時,會形成一個繼電器閉合的零件打包動作,并通過程序使得蜂鳴器發(fā)出警報(bào)。</p><p> 1.2 軟件設(shè)計(jì)方框圖及流程圖</p><p> 由于單片機(jī)實(shí)驗(yàn)箱的存在,因此硬件部分無需做過多準(zhǔn)備,只需根據(jù)硬件部分完成軟件設(shè)計(jì)即可,在此,我們使用基于單片機(jī)的C語言編程。C語言是一
20、種高級程序設(shè)計(jì)語言,其語法簡單適用性強(qiáng),在單片機(jī)編程時很方便。本次設(shè)計(jì)中使用的C語言編程軟件為Keil。</p><p><b> 軟件設(shè)計(jì)框圖如下:</b></p><p><b> 流程圖如下:</b></p><p> 編寫零件計(jì)數(shù)程序時應(yīng)當(dāng)注意需要事先的幾個功能,可以分段編寫,最后通過主程序連接。這段程序的重
21、點(diǎn)便是一段循環(huán)中斷計(jì)數(shù)程序,在數(shù)值加1的同時要給串口發(fā)出同樣的信息,每當(dāng)計(jì)數(shù)十次時還需要轉(zhuǎn)到零件打包以及蜂鳴器程序中執(zhí)行。</p><p><b> 1.3 電路功能</b></p><p> B部分是單片機(jī)的最小系統(tǒng)部分,只有這部分電路正常,整個系統(tǒng)才能工作。單片機(jī)為內(nèi)含8K FLASH程序存儲器的STC89C52RC,EA接高電平;各并行口都加了10K的上拉電
22、阻;晶振為11.0592M。設(shè)置了上電復(fù)位和手動復(fù)位電路。S1為手動復(fù)位按鈕。</p><p> C部分電路由4位一體的數(shù)碼管LED1、單個數(shù)碼管LED2和8個獨(dú)立發(fā)光二極管L1-L7組成。這3個部分都是共陰結(jié)構(gòu),并聯(lián)在一起,連接在P0口上。LED1用于完成LED動態(tài)顯示實(shí)驗(yàn),各個位選線為P24-P27,段碼由P0口輸出;LED2的COM端接地,完成LED靜態(tài)顯示實(shí)驗(yàn);L1-L7,可以方便地讀出P0輸出的二進(jìn)制
23、數(shù)據(jù),亦可做流水燈實(shí)驗(yàn)。7407在此起驅(qū)動作用。</p><p> F部分電路是由555和電容組成的單穩(wěn)電路。當(dāng)S_INT0按鈕按下后產(chǎn)生一個低電平單穩(wěn)信號送單片機(jī)的INT0,同時D_PLUS1亮一次,作為外部中斷請求信號。</p><p> I部分電路為蜂鳴器和繼電器電路。</p><p> 蜂鳴器采用9012三極管驅(qū)動,其基極接到RD端,當(dāng)RD端為低電平時
24、,三極管導(dǎo)通,蜂鳴器響。否則關(guān)斷。</p><p> 繼電器采用9013三極管驅(qū)動,其基極接到WR端,當(dāng)WRD端為低電平時,三極管關(guān)斷,繼電器不吸合,常閉觸點(diǎn)閉合,常開觸點(diǎn)打開,D1熄滅;反之則反。</p><p><b> 第2章 計(jì)數(shù)器程序</b></p><p> 2.1 分段程序及功能</p><p>
25、*******************開頭及引腳對應(yīng)程序******************</p><p> #include < reg51.h ></p><p> sbit BEEP=P3^7; </p><p> sbit JDQ=P3^6;</p><p> unsigned int Ledcount=0;&
26、lt;/p><p> unsigned int LedOut[8];</p><p> **********************LED數(shù)字碼表********************</p><p> unsigned char code MABIAO[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
27、</p><p> ************************延時函數(shù)***********************</p><p> void delay(unsigned int i)</p><p><b> {</b></p><p><b> char j;</b></
28、p><p> for(i;i>0;i--)</p><p> for(j=200;j>0;j--);</p><p><b> }</b></p><p> **********************串口發(fā)送函數(shù)*********************</p><p> vo
29、id sint()</p><p><b> {</b></p><p> SBUF = Ledcount%10000/1000 + 0x30;</p><p> while(!TI);</p><p><b> TI=0;</b></p><p> SBUF=Le
30、dcount%1000/100+ 0x30;</p><p> while(!TI);</p><p><b> TI=0;</b></p><p> SBUF=Ledcount%100/10+ 0x30;</p><p> while(!TI);</p><p><b> T
31、I=0;</b></p><p> SBUF=Ledcount%10+ 0x30;</p><p> while(!TI);</p><p><b> TI=0;</b></p><p> SBUF='\n';</p><p> while(!TI);<
32、/p><p><b> TI=0;</b></p><p><b> }</b></p><p> **********************LED顯示程序********************</p><p> void display()</p><p><
33、b> { </b></p><p><b> int i;</b></p><p> LedOut[0]=MABIAO[Ledcount%10000/1000];</p><p> LedOut[1]=MABIAO[Ledcount%1000/100];</p><p> LedOut[2]
34、=MABIAO[Ledcount%100/10];</p><p> LedOut[3]=MABIAO[Ledcount%10];</p><p> for(i=0;i<4;i++) </p><p><b> { </b></p><p> P0=LedOut[i];</p><
35、;p> switch(i) </p><p><b> { </b></p><p> case 0:P2=0xef;</p><p> break; </p><p> case 1:P2=0xdf;</p><p> break;
36、 </p><p> case 2:P2=0xbf;</p><p><b> break; </b></p><p> case 3:P2=0x7f;</p><p><b> break; </b></p><p><b> }<
37、/b></p><p> delay(100);</p><p><b> }</b></p><p><b> }</b></p><p> ***********************初始化函數(shù)**********************</p><p>
38、 void init()</p><p><b> {</b></p><p> EA=1; //允許中斷</p><p> EX0=1; //允許外部中斷0</p><p> IT0=1; //下降沿觸發(fā)</p><p> TR1=1; //啟
39、動T1定時器</p><p> TMOD=0x20; //定時器T1為工作方式2,初值自動重裝八位計(jì)數(shù)器 </p><p> TL1=0xfd; //預(yù)備單元</p><p> TH1=0xfd; //計(jì)數(shù)初值設(shè)定,波特率9600</p><p> SCON=0x50; //串行口為方式1,10步異位收發(fā)(1+8+1)<
40、;/p><p> PCON=0x00; //特殊功能寄存器都為0,波特率不加倍</p><p><b> }</b></p><p> *********************INT0中斷函數(shù)*********************</p><p> void int0(void) interrupt 0 &l
41、t;/p><p><b> {</b></p><p> Ledcount++; //中斷計(jì)數(shù)</p><p> if((Ledcount%10==0)&&(Ledcount!=0))</p><p><b> {</b></p><p><
42、b> BEEP=0;</b></p><p> delay(10000);</p><p><b> BEEP=1;</b></p><p><b> JDQ=~JDQ;</b></p><p><b> }</b></p><p
43、> if(Ledcount>9999) //超出計(jì)數(shù)上限后清零</p><p> Ledcount=0;</p><p><b> sint(); </b></p><p><b> }</b></p><p> *************************主程序
44、************************</p><p> void main(void)</p><p><b> { </b></p><p><b> init();</b></p><p><b> while(1)</b></p>&l
45、t;p><b> { </b></p><p> display();</p><p><b> }</b></p><p><b> }</b></p><p> 2.2問題及解決方案</p><p> 問題1:運(yùn)用指數(shù)函數(shù)計(jì)數(shù)
46、以及選擇四根數(shù)碼管顯示,導(dǎo)致程序運(yùn)行速度過慢,燈光閃爍。</p><p> 解決方案:改進(jìn)后去掉指數(shù)函數(shù),改用每一根數(shù)碼管分別使用計(jì)算出顯示數(shù)值的方法。</p><p> 問題2:計(jì)數(shù)值達(dá)到時蜂鳴器持續(xù)響,直到按下第十一次計(jì)數(shù)按鍵方才停止。</p><p> 解決方案:在蜂鳴器程序中增加BEEP清零和延時語句,可以讓蜂鳴器在計(jì)數(shù)第十次時只響一聲,并可改變響的時
47、間。</p><p> 第3章 實(shí)驗(yàn)結(jié)果及討論</p><p><b> 3.1實(shí)驗(yàn)結(jié)果</b></p><p> 本此課程設(shè)計(jì),使用到Keil C51編程器、燒寫工具以及串口助手等軟件工具。先是利用Keil軟件編寫程序,編譯無錯后再利用燒寫工具將其燒寫進(jìn)52單片機(jī)中,按下S_INT0按鈕,可得到LED動態(tài)顯示數(shù)據(jù)的變化,本次設(shè)計(jì)中用到4
48、個數(shù)碼管,也就是說,最高顯示零件數(shù)目可達(dá)9999個。另外,還可以利用串口助手,將零件數(shù)目實(shí)時傳送給PC機(jī),此結(jié)果可在串口助手上觀察到。結(jié)果是完全符合所需零件計(jì)數(shù)器的要求的。至此,可以說本次設(shè)計(jì)是成功的。</p><p><b> 3.2結(jié)論</b></p><p> 本次課程設(shè)計(jì)的主要特點(diǎn)是利用C51編程實(shí)現(xiàn)基于單片機(jī)的零件計(jì)數(shù)器,而非使用匯編語言。在編程中,要學(xué)
49、會寫出各種子程序,然后合理的調(diào)用它們,還要根據(jù)實(shí)際顯示結(jié)果不斷地去修改和完善,使其最終顯示出符合要求的結(jié)果,這不僅考察了我對于單片這門課的學(xué)習(xí)掌握情況,還考察了我對C語言的基礎(chǔ)知識是否扎實(shí),是否可以將所學(xué)的學(xué)科融會貫通。此外,還有其他的特點(diǎn),設(shè)計(jì)中用到燒寫工具以及串口助手等軟件工具,無需考慮硬件設(shè)計(jì),只需完成軟件設(shè)計(jì)部分。本次課程設(shè)計(jì)完成了基于單片機(jī)的零件計(jì)數(shù)器的設(shè)計(jì),讓我對于單片機(jī)的學(xué)習(xí)有了更深一層的領(lǐng)悟。</p>&l
50、t;p><b> 3.3心得體會</b></p><p> 經(jīng)過這段時間的學(xué)習(xí),我對單片機(jī)原理與運(yùn)用也有了更深層次的了解,同時也對過去所學(xué)的知識進(jìn)行了溫習(xí),對我組設(shè)計(jì)的課題《零件計(jì)數(shù)器》所用到的知識也進(jìn)行了專門的梳理和消化。這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高
51、自己的實(shí)際動手能力和獨(dú)立思考的能力。通過這次課程設(shè)計(jì),我也知道了自己的不足。書本上的知識是死的,只有通過實(shí)踐和具體的實(shí)例運(yùn)用,才能真正掌握知識、取得進(jìn)步。 這次課程設(shè)計(jì)的經(jīng)歷使我終身受益,我感受到做任何事情都是要真正用心去做的,也是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破。</p><p><b> 參考文獻(xiàn)</b></p>
52、<p> [1] 張有德 趙志英 涂時亮編著,單片微型機(jī)原理、應(yīng)用與實(shí)驗(yàn).第五版.</p><p> 上海.復(fù)旦大學(xué)出版社.2006</p><p> [2] 丁海軍、何坤金、王林等編著,程序設(shè)計(jì)基礎(chǔ)(C語言).北京.北京航空航天大學(xué)出版社.2009</p><p><b> 附錄</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)----手動計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)---倒數(shù)計(jì)數(shù)器
- 倒數(shù)計(jì)數(shù)器單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)----語言報(bào)數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)(語言報(bào)數(shù)計(jì)數(shù)器)
- 單片機(jī)課程設(shè)計(jì)--簡易頻率計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)外部脈沖計(jì)數(shù)器
- 基于單片機(jī)的頻率計(jì)數(shù)器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)00-99加計(jì)數(shù)器
- 單片機(jī)計(jì)數(shù)器實(shí)驗(yàn)報(bào)告
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于51單計(jì)時計(jì)數(shù)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--00-99加計(jì)數(shù)器程序設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)帶有l(wèi)cd顯示的音樂倒數(shù)計(jì)數(shù)器
- 單片機(jī)課程設(shè)計(jì)-00-99手動計(jì)數(shù)器設(shè)計(jì)
- 基于單片機(jī)lcd顯示的音樂倒數(shù)計(jì)數(shù)器課程設(shè)計(jì)論文
- 傳感器課程設(shè)計(jì)---基于單片機(jī)的工業(yè)產(chǎn)品自動計(jì)數(shù)器
- 《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)---可編程定時計(jì)數(shù)器
- 光電計(jì)數(shù)器課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論