基于單片機的交通安全車輛測速系統(tǒng) - 嵌入式 物聯(lián)網(wǎ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ā)哦!
- 贊