標(biāo)題: 基于單片機的速度測量系統(tǒng)設(shè)計(程序+電路原理圖) [打印本頁]
作者: 雷瘋子 時間: 2018-12-28 18:24
標(biāo)題: 基于單片機的速度測量系統(tǒng)設(shè)計(程序+電路原理圖)
要求:
設(shè)計一個汽車速度測速系統(tǒng),已知車輪直徑D一米,
器件清單: 光電傳感器,單片機,共陽極數(shù)碼管
本系統(tǒng)設(shè)計主要內(nèi)容
1信號采集 這部分主要采用光電信號傳感器采集信號,并傳向單片機
2單片機數(shù)據(jù)處理 這部分主要才用單片機采用適當(dāng)?shù)乃惴ǎ瑢ο嚓P(guān)數(shù)據(jù)進行相關(guān)運算并得出結(jié)果
3 Led數(shù)字顯示 這部分主要通過7位共陽極數(shù)碼管顯示給用戶。
4 用protues仿真
:
一 。 光電脈沖發(fā)生器
在車輪上安裝光電傳感器,輪子轉(zhuǎn)一次得到一個脈沖,經(jīng)過信號處理,通過T1口傳到單片機,經(jīng)過單片機處理,通過數(shù)碼管顯示。如圖所示:
單片機測速系統(tǒng)總原理圖

二. 系統(tǒng)程序設(shè)計:
本設(shè)計軟件主要分為主程序,中斷服務(wù)子程序,led數(shù)碼管顯示子程序三個部分。軟件功能在keil中編寫c語言實現(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,每一秒計算一次顓頊
{
js=TH1*256+TL1;
TH1=0; TL1=0; k=0;
}
js=0; TR0=1;
}
三.Led顯示子程序 主要通過控制共陽極來實現(xiàn)由p1線控制四個數(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);
附錄
單片機測量系統(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;//定時開始
- 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黑下載地址:
基于單片機的速度測量系統(tǒng).doc
(46.5 KB, 下載次數(shù): 47)
2018-12-28 18:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: a1a1a1 時間: 2019-10-29 22:16
沒有proteus的文件嗎
作者: 1340634897 時間: 2021-3-19 09:05
這個是不是無法仿真,得有實際測試才可以
作者: Ming.MO 時間: 2022-3-6 16:39
大佬大佬,程序里面的js是時間嗎,如果是時間的話ss=js*2*PI*R該怎么理解
作者: Ming.MO 時間: 2022-3-12 22:09
大佬,我按照你的仿真做了沒反應(yīng)呀,就算加了時鐘激勵源也沒反應(yīng)這是為啥呢
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |