

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 轉盤轉速測量的設計方案</p><p><b> 一、設計目的</b></p><p> 設計電路實現轉盤的轉速測量。</p><p><b> 二、組內分工初定</b></p><p> A.陳永昌:負責設計方案的制定,程序的設計,電路的焊接。</p>
2、<p> B.詹小樑:負責元件的采購,方案的討論,電路的調試。</p><p> C.李忠諭:負責元件的采購,方案的討論,電路的調試。</p><p> 三、使用電子元件及個數</p><p><b> 四、設計方案</b></p><p> 光電轉速傳感器是根據光敏二極管工作原理制造的一種感應接收光
3、強度變化的電子器件,當它發(fā)出的光被目標阻斷時,則接收器感應出相應的電信號。光電式傳感器由獨立且相對放置的光發(fā)射器和收光器組成。當目標通過光發(fā)射器和收光器之間并阻斷光線時,傳感器輸出信號。它是效率最高、最可靠的檢測裝置。槽形(U形)光電開關是對射式的變形,其優(yōu)點是無須調整光軸。</p><p> 4.1電動機、信號盤、傳感器</p><p> 圖1:電動機、信號盤、傳感器的安裝</
4、p><p> 圖中電機為直流電機,轉速隨輸入的電壓變化。信號盤為帶有4個透光孔的圓盤。傳感器為光電門,透光時輸出電流,遮光時無電流。</p><p><b> 4.2信號放大電路</b></p><p><b> 圖2:信號放大電路</b></p><p> 信號放大電路是通過三極管對光電門輸出
5、的信號進行放大,然后經過CD4093進行整形,輸入到單片機的脈沖計數T0口,進行計數。</p><p><b> 4.3單片機電路</b></p><p><b> 圖3:單片機電路</b></p><p> 在此采用頻率測量法,其測量原理為,在1S時間內,計取轉速傳感器發(fā)生的脈沖個數(即頻率) ,從而算出實際轉速。
6、設1S的脈沖數為 n,轉速 </p><p> rate = n * 60 / 4;</p><p><b> 4.4串口輸出電路</b></p><p> 圖4:串口max232電路</p><p> 此電路通過max232芯片實現單片機與PC機的串口通信,用于實時地向電腦傳輸當前轉速。</p>
7、<p> 五、課程設計開展情況及總結</p><p> 圖4:實物正面與反面</p><p><b> 圖5:實物運行圖</b></p><p><b> 六、課程設計總結</b></p><p> 本次課程設計總體很順利,過程中學到了很多的新知識。比如,需要重新學習單片機的C程
8、序設計,需要學習串口的數據輸出,光電門信號的處理等。</p><p> 七、單片機系統源程序</p><p> /*******************************************************************</p><p> 本系統的實現原理:1)使用T2實現 1/16秒的定時,定時中斷一次后對變量A累加;</p
9、><p> 使用T0進行脈沖計數。統計每秒輸入的脈沖個數、</p><p> 2)在while大循環(huán)中判斷變量A,若A到達16,代表定時1S到達,</p><p> 此時用變量counter保存計數器T0的脈沖計數值。然后清零</p><p> 變量A,重新開始1S的定時;</p><p> 3)對counter
10、乘以60然后除以4(光電門端每轉輸出4個脈沖),</p><p> 就是每分鐘的轉速了。</p><p> 4)進行顯示和串口輸出。</p><p> *******************************************************************/</p><p> #include <r
11、eg52.h></p><p> void Initial(); //用于初始化單片機。</p><p> void InitSerial(); //用于初始化串口。</p><p> void display(); //顯示函數,用于顯示數碼管。</p><p> void delay();//延遲函數。</p>
12、;<p> void getNumber(unsigned int counter);//用于把一個int型數據分解為4位。</p><p> void send();//用于發(fā)送串口數據。</p><p> unsigned char num[4];//用于存儲要顯示的每一位。</p><p> unsigned int counter=0
13、; //記錄每秒的脈沖個數。</p><p> unsigned int rate=0; //每分鐘的轉速。</p><p> unsigned char A =0;</p><p> sbit D1 = P2^7;</p><p> sbit D2 = P2^6;</p><p> sbit D3 = P
14、2^5;</p><p> sbit D4 = P2^4;</p><p> //定義數碼管的顯示。</p><p> unsigned char code Seg_Tab[]=</p><p><b> {</b></p><p> ~0x3F,~0x06,~0x5B,~0x4F,~0
15、x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x00,</p><p> //0,1,2,3,4,5,6,7,8,9,空;</p><p><b> };</b></p><p><b> main(){</b></p><p><b> //初始化。&l
16、t;/b></p><p> Initial();</p><p> InitSerial();</p><p> while(1){</p><p> if(A==16){</p><p> counter=TH0<<8|TL0;</p><p> rate
17、= counter*15/4;</p><p><b> TH0 = 0;</b></p><p><b> TL0 = 0;</b></p><p><b> A=0;</b></p><p><b> }</b></p><
18、p> getNumber(rate);</p><p> display();</p><p><b> send();</b></p><p><b> }</b></p><p><b> }</b></p><p> void
19、 Initial(){</p><p> TMOD = 0x05;</p><p><b> TH0 = 0;</b></p><p><b> TL0 = 0;</b></p><p> RCAP2H=0x0B; </p><p> RCAP2L=0xDC; &l
20、t;/p><p> ET2=1; </p><p><b> EA = 1;</b></p><p><b> TR0 = 1;</b></p><p><b> TR2 = 1;</b></p><p> P0 = 0xff;<
21、/p><p><b> P2 = 0;</b></p><p><b> }</b></p><p> void InitSerial(){</p><p> SCON = 0x50;</p><p> TMOD = TMOD | 0x20;</p>&l
22、t;p> TH1 = 0xF3;</p><p> TL1 = 0xF3;</p><p><b> TR1 = 1;</b></p><p> PCON = PCON | 0x80;</p><p><b> }</b></p><p> void dis
23、play(){</p><p><b> D1 = 1;</b></p><p> P0 = Seg_Tab[num[0]];</p><p><b> delay();</b></p><p><b> D1 = 0;</b></p><p>
24、<b> D2 = 1;</b></p><p> P0 = Seg_Tab[num[1]];</p><p><b> delay();</b></p><p><b> D2 = 0;</b></p><p><b> D3 = 1;</b>
25、</p><p> P0 = Seg_Tab[num[2]];</p><p><b> delay();</b></p><p><b> D3 = 0;</b></p><p><b> D4 = 1;</b></p><p> P0 =
26、Seg_Tab[num[3]];</p><p><b> delay();</b></p><p><b> D4 = 0;</b></p><p><b> }</b></p><p> void getNumber(unsigned int counter){&l
27、t;/p><p><b> int i;</b></p><p> for (i = 0; i<4; i++, counter /= 10)</p><p><b> {</b></p><p> num[i] = counter%10;</p><p><
28、b> }; </b></p><p><b> }</b></p><p> void send(){</p><p><b> int i;</b></p><p> for(i=3;i>=0;i--){</p><p><b>
29、 TI = 0;</b></p><p> SBUF = 0x30+num[i];</p><p> while(!TI);</p><p><b> }</b></p><p><b> TI = 0;</b></p><p> SBUF =
30、39; ';</p><p> while(!TI);</p><p><b> }</b></p><p> void delay(){ </p><p> unsigned char i;</p><p> for(i=0;i<250;i++);</p>
31、<p><b> }</b></p><p> //定時器2中斷子程序。中斷一次對A累加一次。</p><p> void Timer2(void) interrupt 5 {</p><p><b> TF2=0; </b></p><p><b> A++;&
32、lt;/b></p><p><b> }</b></p><p> ////////////////////////////////////////////////////結束///////////////////////////////////////////////////////////////////////</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論