要求: 設(shè)計(jì)一個(gè)汽車速度測(cè)速系統(tǒng),已知車輪直徑D一米, 器件清單: 光電傳感器,單片機(jī),共陽(yáng)極數(shù)碼管 本系統(tǒng)設(shè)計(jì)主要內(nèi)容 1信號(hào)采集 這部分主要采用光電信號(hào)傳感器采集信號(hào),并傳向單片機(jī)
2單片機(jī)數(shù)據(jù)處理 這部分主要才用單片機(jī)采用適當(dāng)?shù)乃惴,?duì)相關(guān)數(shù)據(jù)進(jìn)行相關(guān)運(yùn)算并得出結(jié)果 3 Led數(shù)字顯示 這部分主要通過(guò)7位共陽(yáng)極數(shù)碼管顯示給用戶。 4 用protues仿真 : 一 。 光電脈沖發(fā)生器 在車輪上安裝光電傳感器,輪子轉(zhuǎn)一次得到一個(gè)脈沖,經(jīng)過(guò)信號(hào)處理,通過(guò)T1口傳到單片機(jī),經(jīng)過(guò)單片機(jī)處理,通過(guò)數(shù)碼管顯示。如圖所示:
單片機(jī)測(cè)速系統(tǒng)總原理圖
 二. 系統(tǒng)程序設(shè)計(jì): 本設(shè)計(jì)軟件主要分為主程序,中斷服務(wù)子程序,led數(shù)碼管顯示子程序三個(gè)部分。軟件功能在keil中編寫(xiě)c語(yǔ)言實(shí)現(xiàn)。 中斷函數(shù)程序如下: void timero(void) interrupt 1 //中斷子程序 { TR1=0; TR0=0; TF0=0; TL0=0x00; TH0=0x4c; k++; if(k>=20) //每50ms中斷一次,那么當(dāng)K》=20是就是1s,每一秒計(jì)算一次顓頊 { js=TH1*256+TL1; TH1=0; TL1=0; k=0; } js=0; TR0=1; }
三.Led顯示子程序 主要通過(guò)控制共陽(yáng)極來(lái)實(shí)現(xiàn)由p1線控制四個(gè)數(shù)碼管 while(1) { P0=SEG_TAB[ss/10000]; P2_0=0; delay(10); P0=SEG_TAB[(ss%100000)/100]; P2_1=0; delay(10); P0=SEG_TAB[(ss%100000)%100/10]; P2_2=0; delay(10); P0=SEG_TAB[(ss%100000)%100%10]; P2_3=0; delay(10); 附錄 單片機(jī)測(cè)量系統(tǒng)主程序如下: - #include <reg51.h>
- #include <stdio.h>
- #define uchar unsigned char
- #define unit unsigned int
- #define ulong unsigned long
- #define R 5
- #define PI 314 //段暄定義
- sbit P0_0=P0^0;
- sbit P0_1=P0^1;
- sbit P0_2=P0^2;
- sbit P0_3=P0^3;
- sbit P0_4=P0^4;
- sbit P0_5=P0^5;
- sbit P0_6=P0^6;
- sbit P0_7=P0^7;
- //位選定義
- sbit P2_0=P2^0;
- sbit P2_1=P2^1;
- sbit P2_2=P2^2;
- sbit P2_3=P2^3;
- uchar SEG_TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- ulong js=0;
- uchar k=0;
- void main()
- {
- int ss=js*2*PI*R;
- TMOD=0x51;
- TL1=0x00; TH1=0x00;
- TL0=0x00;TH0=0x4c;
- IE=0x82;
- TR0=1;//定時(shí)開(kāi)始
- while(1)
- {
- P0=SEG_TAB[ss/10000];
- P2_0=0;
- delay(10);
- P0=SEG_TAB[(ss%100000)/100];
- P2_1=0;
- delay(10);
- P0=SEG_TAB[(ss%100000)%100/10];
- P2_2=0;
- delay(10);
- P0=SEG_TAB[(ss%100000)%100%10];
- P2_3=0;
- delay(10);
- }
- }
- void timero(void) interrupt 1 //中斷子程序
- {
- TR1=0; TR0=0;
- TF0=0;
- TL0=0x00;
- TH0=0x4c;
- k++;
- if(k>=20)
- {
- js=TH1*256+TL1;
- TH1=0; TL1=0; k=0;
- }
- js=0; TR0=1;
-
- }
- void delay(unsigned int time)
- {
- unsigned int j=0;
- for(;time>o;time--);
- for(j=0;j<125;j++);
-
-
- }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
基于單片機(jī)的速度測(cè)量系統(tǒng).doc
(46.5 KB, 下載次數(shù): 47)
2018-12-28 18:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|