單片機課設零件計數器_第1頁
單片機課設零件計數器_第2頁
單片機課設零件計數器_第3頁
單片機課設零件計數器_第4頁
單片機課設零件計數器_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

河海大學課程設計報告單片機課程設計報告課程名稱:零件計數器學號:1162310120姓名:授課班號:275501年級專業(yè):11級通信工程指導老師:劉玉宏摘要:本次單片機課程設計我組選擇的題目是零件計數器,零件計數器本身在生產實踐中具有很實際的用途,選擇這個項目可以繞過我們更好的把課堂上學到的課本知識和理論內容與生產實踐結合起來,提高對實際問題的動手操作能力以及解決問題的能力,進一步加深學生對于實際的電子元件電路功能的理解與運用,對于設計實際的實用程序來解決一系列生產生活遇到的問題的能力有著顯著的家加強與提高。零件計數器的功能是通過感應器對零件數量進行中斷計數,并由數碼管動態(tài)顯示出來,并通過實用的程序將零件數目通過串口傳送給PC機,還能夠通過實時的檢測電路將之與蜂鳴器連接起來,起到整十報警以及零件打包的功能。關鍵字:計數器,單片機,數碼顯示,串口通信目錄一.設計內容設計要求················································4二.設計方案1電路框圖··············································42流程框圖··············································53分段原理··············································54電路功能··············································61)蜂鳴器及繼電器原理································62)數碼管顯示原理·····································7三.計數器主程序1分段程序及功能········································82問題及解決方案·······································14四.結論1實驗結果···············································152本次課設的貢獻········································152改善建議···············································163心得體會···············································16五.附錄1軟件介紹··············································172參考文獻··············································18設計內容設計內容:把接在INT0上的單穩(wěn)信號當作零件信號,單片機計數一次,當計滿十次時,蜂鳴器發(fā)出一聲警告音,并使繼電器閉合一次,產生零件打包動作。要求和提高要求主要掌握外部中斷和動態(tài)顯示的應用,提高實時通過串口把零件數量發(fā)送給PC。設計方案電路框圖P0P0單片機AT89C51P2P38個限流電阻4位共陰數碼管動態(tài)顯示復位復位選位選位INT0INT0蜂鳴器繼電器蜂鳴器繼電器電路總圖與功能如圖所示,每當來一次外部中斷時,內部計數一次,并將數值通過4位共陰數碼管動態(tài)顯示出來。而單片機的P2口可以選擇四根不同的數碼管來動態(tài)顯示,通過視覺暫留達到同時顯示的效果。同時內部程序檢測每當計數十次時,會形成一個繼電器閉合的零件打包動作,并通過程序使得蜂鳴器發(fā)出警報。流程框圖否判斷是否為10的倍數循環(huán)警示打包操作是計數,串口賦值是監(jiān)測中斷開始(復位)否判斷是否為10的倍數循環(huán)警示打包操作是計數,串口賦值是監(jiān)測中斷開始(復位)主程序:主程序為中斷初值設定程序,包括中斷計數超出時的清零程序,中斷以及時鐘的設定,計數初值的計算以及波特率的計算,還有子程序的調用。延時子程序:包括兩種不同的延時程序,分別是計數時需要的短延時以及蜂鳴器等需要的較長時間延遲。數碼管顯示子程序:包括P2口的數碼管選擇設定以及計數數值對應的數碼管顯示數值的設定,通過獨特的計算方法將計數總值與四根不同的數碼管顯示一一對應起來。外部中斷0與串口數據發(fā)送子程序:每來一次中斷計數值加1,同時向串口發(fā)送一次此時的數值。串口中斷子程序:串口數據發(fā)送的開始和停止程序。電路功能蜂鳴器及繼電器原理動態(tài)顯示部分電路由4位一體的數碼管LED1、單個數碼管LED2和8個獨立發(fā)光二極管L1-L7組成。這3個部分都是共陰結構,并聯(lián)在一起,連接在P0口上。LED1用于完成LED動態(tài)顯示實驗,各個位選線為P24-P27,段碼由P0口輸出;LED2的COM端接地,完成LED靜態(tài)顯示實驗;L1-L7,可以方便地讀出P0輸出的二進制數據,亦可做流水燈實驗。7407在此起驅動作用。計數器主程序分段程序及功能#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitP32=P3^2;sbitP37=P3^7;sbitP36=P3^6;sbitP24=P2^4;sbitP25=P2^5;sbitP26=P2^6;sbitP27=P2^7;ucharcount;uchartable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極數碼管表voidbeep();voidrelay();voiddelay(ucharx);voiddisplay(uchara,ucharb,ucharc,uchard);voidsendchar(uchardat1); voidmain(){intge,shi,bai,qian;EA=1;//開總中斷EX0=1;//允許外部中斷0IT0=1;//負跳變沿中斷方式SCON=0x50;//串口工作在方式1,允許接收PCON=0x00;//波特率不加倍TMOD=0x20;//定時器1工作在方式2TH1=0xfd;//賦初始值TL1=0xfd;TR1=1;while(1){qian=count/1000;bai=count%1000/100;shi=count%100/10;ge=count%10;display(ge,shi,bai,qian);}voiddelay(ucharx){uchari,j;for(i=0;i<100;i++)for(j=0;j<x;j++);}//延時時間的計算:先將程序轉變?yōu)閰R編語言,通過每一條匯編語言所占據的機器周期時間的總和,便可以算出延時所花費的時間。//蜂鳴器程序voidbeep(){P37=0;delay(300);P37=1;}//繼電器程序voidrelay(){P36=1;delay(300);P36=0;}voiddisplay(uchara,ucharb,ucharc,uchard)//四段數碼管顯示{P0=table[a];P27=0;delay(8);P27=1;P0=table[b];P26=0;delay(8);P26=1;P0=table[c];P25=0;delay(8);P25=1;P0=table[d];P24=0;delay(8);P24=1;}//將得到的數據對照共陰極數碼管表顯示voidzhongduan()interrupt0{if(P32==0){delay(10);//延時消除抖動if(P32==0)//確認有按鍵按下{count++;sendchar(count);if(count%10==0&count!=0){beep();relay();}}while(!P32);//等待KEY1松開delay(10);//延時消除抖動}}voidsendchar(uchardat1)//串口發(fā)送數據程序{SBUF=dat1;while(!TI);//等待串行口發(fā)送完畢TI=0;//清除串行口發(fā)送結束標志}//產生計數信號、計數標志、并將計數值實時發(fā)給PC串行口發(fā)送時,第一位是0,結束位是1問題及解決方案遇到的問題:運用指數函數計數以及選擇四根數碼管顯示,導致程序運行速度過慢,燈光閃爍。改進方法:改進后去掉指數函數,改用每一根數碼管分別使用計算出顯示數值的方法。遇到的問題:計數值達到時蜂鳴器持續(xù)響,直到按下第十一次計數按鍵方才停止。解決方法:在蜂鳴器程序中增加清零語句,中斷中增加置位語句,可以讓蜂鳴器在計數第十次時只響一聲。結論實驗結果按鍵脈沖源0,則四位數碼管顯示數字+1,當到10的倍數時,蜂鳴器發(fā)出聲音,繼電器產生打包動作。通過串口調試助手在PC機上可實時顯示數碼管數據。本次課設的貢獻本次課設中參與了程序的編寫、改進,在keil軟件中運行無誤后,燒寫程序到單片機實驗箱進行調試,通過串口調試助手顯示計數值,以實現(xiàn)實驗的要求。改善建議實驗中INT0中斷信號計數到10次時,本次實現(xiàn)的功能在PC端不能顯示打包指令,只能通過硬件繼電器閉合,虛擬計一次打包。更好是在串口調試助手中能夠顯示打包次數,以方便計數。同時,在初始化計數初值時,串口調試程序不能發(fā)送一個數目顯示到數碼管中,以適應實際計數過程中計數中斷和電源無法工作的情況。心得體會通過本次的單片機課程設計,我深刻體會和理解了如何將所學的單片機理論知識和實際生產生活需要結合起來,進行實踐運用的方法,極大的鍛煉了我的實際動手和根據實際需要設計程序的能力。通過設計零件計數器,我加深了對于課堂上所學知識的掌握和理解,對于串口通信以及中斷程序的掌握更上一個臺階,中間的實踐動手過程中通過對遇到的實際問題的思考和解決,極大的提升了我個人的實踐水平以及綜合素質。附錄軟件介紹燒寫程序:打開STC-ISP,如下圖界面,在MCUType欄目下選中單片機,如STC89C51。根據您的9針數據線連接情況選中COM端口,波特率一般保持默認,如果遇到下載問題,可以適當下調一些,按圖示選中各項。先確認硬件連接正確,按如圖點擊“打開文件”并在對話框內找到您要下載的HEX文件按下圖選中兩個條件項,這樣可以使您在每次編譯KEIL時HEX代碼能自動加載到STC-ISP,點擊“Download/下載”。手動按下電源開關便即可把可執(zhí)行文件HEX寫入到單片機內,如圖是正在寫入程序截圖。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論