基于單片機的交通安全車輛測速系統(tǒng) - 嵌入式 物聯(lián)網(wǎng)

**基于單片機的交通安全車輛測速系統(tǒng) **

  • 難度系數(shù):4分
  • 工作量:4分
  • 創(chuàng)新點:3分

1 簡介

基于51單片機的速度檢測系統(tǒng),利用速度檢測模塊檢測速度和路程,通過LCD1602顯示屏進行速度和路程的顯示,速度檢測模塊內(nèi)通過檢測每次通過的時間,進而實現(xiàn)對速度的檢測。

2 主要器件

  • 52單片機
  • 槽型光耦測速模塊
  • LCD1602顯示屏

3 實現(xiàn)效果


4 設計原理

4.1 槽型光耦測速模塊

簡介

槽型光耦以光為媒介傳輸電信號。它對輸入、輸出電信號有良好的隔離作用,所以,它在各種電路中得 1553b耦合器線纜接頭到廣泛的應用。目前它已成為種類最多、用途最廣的光電器件之一。光耦合器一般由三部分組成:光的發(fā)射、光的接收及信號放大。輸入的電信號驅(qū)動發(fā)光二極管(LED),使之發(fā)出一定波長的光,被光探測器接收而產(chǎn)生光電流,再經(jīng)過進一步放大后輸出。這就完成了電—光—電的轉(zhuǎn)換,從而起到輸入、輸出、隔離的作用。由于光耦合器輸入輸出間互相隔離,電信號傳輸具有單向性等特點,因而具有良好的電絕緣能力和抗干擾能力。又由于光耦合器的輸入端屬于電流型工作的低阻元件,因而具有很強的共模抑制能力。所以,它在長線傳輸信息中作為終端隔離元件可以大大提高信噪比。在計算機數(shù)字通信及實時控制中作為信號隔離的接口器件,可以大大增加計算機工作的可靠性。槽型光耦作為一種非常常見的電子元件,在電子電路系統(tǒng)設計的過程中,其選型的正確與否是非常重要的。槽型光耦合器也常常被稱為直射式光電傳感器,其工作原理是通過對紅外發(fā)射光的阻斷和導通,在紅外接收管感應出的電流變化來實現(xiàn)開和關(guān)的判斷。光電耦合器具有體積小、使用壽命長、工作溫度范圍寬、抗干擾性能強。無觸點且輸入與輸出在電氣上完全隔離等特點,因而在各種電子設備上得到廣泛的應用。光電耦合器可用于隔離電路、負載接口及各種家用電器等電路中。

特點

槽型光耦的特點

  • 檢測距離長。與接近開關(guān)等比較,光電開關(guān)的檢測距離非常長,且是無接觸式的,所以不會損傷檢測物體,也不受檢測物體的影響。
  • 幾乎不受檢測物體的制約。由于是采用對檢測對象的表面進行反射及光透過方式,不像接近開關(guān)只能對金屬,還能對玻璃、塑料、木制物體、液體等各種物質(zhì)進行檢測。
  • 響應速度快。與接近開關(guān)同樣,由于無機械運動,所以能對高速運動的物體進行檢測。鏡頭容易受有機塵土等的影響鏡頭免受污染后,光會散射或被遮光,所以在有活水蒸汽、塵土等較多的環(huán)境下使用的場合,需施加適當?shù)谋Wo裝置。
  • 不受環(huán)境強光的影響。幾乎不受一般照明光的影響,但像太陽光那樣的強光直接照射受光體時,會造成誤動作或損壞。

4.2 LCD1602顯示模塊

簡介
作為各類單片機實物設計的常用顯示屏,LCD1602是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,其1602是指LCD顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符(1個漢字占用2個字符)。這里需要要注意的是lcd1602是不能顯示漢字的,它只能顯示字母字符。

引腳功能

控制指令集

5 部分核心代碼

/*定時器0中斷號1*/ void Time0() interrupt 1 {	
	TH0 = 0xDC; //11.0592M晶振下裝入10ms初值 TL0 = 0x00;
	time++; if(time == 100)
	{
		Wheel_Speed = ( Angular_N / 20 ) * 2 * 3.5 * 3.14 ; //獲取1s內(nèi)中斷計數(shù)的值num,并進行數(shù)值處理  (中斷數(shù)值/20*直徑*3.14為1s內(nèi)移動距離) time = 0;	
		Angular_N = 0;
	}
} /*外部中斷0初始化*/ void Int0Init() {
	IT0 = 1; //跳變沿出發(fā)方式(下降沿) EX0 = 1; //打開INT0的中斷允許 EA = 1; //打開總中斷  } /*外部中斷0的中斷函數(shù)*/ void Int0() interrupt 0 {
	Angular_N++;		
} 
#include"lcd1602.h" sbit rs=P2^6; //1602的數(shù)據(jù)/指令選擇控制線  sbit rw=P2^5; //1602的讀寫控制線  sbit en=P2^7; //1602的使能控制線 void delay(uint n) //延時函數(shù)  { 
    uint x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); 
} void Busy(void) {
	uchar temp=0; do {
		rw=1;
		rs=0;
		en=0;
		_nop_();
		en=1;
		delay(1);
		en=0;
		temp=P0;
	}while(temp&0x80);
} void Lcd_WriteCom(uchar com) //1602寫命令函數(shù) { 
	P0=com; //把命令字送入P2 en=0; 
	rs=0; //選擇指令寄存器 rw=0; //選擇寫 _nop_();//一個機械周期  en=1; //使能線電平變化,命令送入1602的8位數(shù)據(jù)口  delay(1);
	en=0; 
} void Lcd_WriteData(uchar dat) //1602寫數(shù)據(jù)函數(shù)  { 
    P0=dat; //把要顯示的數(shù)據(jù)送入P0 en=0; 
	rs=1; //選擇數(shù)據(jù)寄存器  rw=0; //選擇寫  _nop_();//一個機械周期  en=1; //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口  delay(1);
	en=0; 
} void lcd_init() //1602初始化函數(shù)  { 
	delay(1);
    Lcd_WriteCom(0x38); //8位數(shù)據(jù),雙列,5*7字形  Busy();
	Lcd_WriteCom(0x0c); //開啟顯示屏,關(guān)光標,光標不閃爍  Busy();
	Lcd_WriteCom(0x06); //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位  Busy();
	Lcd_WriteCom(0x01); //清屏  Busy();
	Lcd_WriteCom(0x80); //設置數(shù)據(jù)指針起點 } 

完整代碼可進群免費領(lǐng)取。

嵌入式物聯(lián)網(wǎng)的學習之路非常漫長,不少人因為學習路線不對或者學習內(nèi)容不夠?qū)I(yè)而錯失高薪offer。不過別擔心,我為大家整理了一份150多G的學習資源,基本上涵蓋了嵌入式物聯(lián)網(wǎng)學習的所有內(nèi)容。點擊下方鏈接,0元領(lǐng)取學習資源,讓你的學習之路更加順暢!記得點贊、關(guān)注、收藏、轉(zhuǎn)發(fā)哦!

點擊這里找小助理0元領(lǐng)取:

the end

評論(0)