基于單片機(jī)的交通安全車(chē)輛測(cè)速系統(tǒng) - 嵌入式 物聯(lián)網(wǎng)
**基于單片機(jī)的交通安全車(chē)輛測(cè)速系統(tǒng) **
- 難度系數(shù):4分
- 工作量:4分
- 創(chuàng)新點(diǎn):3分
1 簡(jiǎn)介
基于51單片機(jī)的速度檢測(cè)系統(tǒng),利用速度檢測(cè)模塊檢測(cè)速度和路程,通過(guò)LCD1602顯示屏進(jìn)行速度和路程的顯示,速度檢測(cè)模塊內(nèi)通過(guò)檢測(cè)每次通過(guò)的時(shí)間,進(jìn)而實(shí)現(xiàn)對(duì)速度的檢測(cè)。
2 主要器件
- 52單片機(jī)
- 槽型光耦測(cè)速模塊
- LCD1602顯示屏
3 實(shí)現(xiàn)效果
4 設(shè)計(jì)原理
4.1 槽型光耦測(cè)速模塊
簡(jiǎn)介
槽型光耦以光為媒介傳輸電信號(hào)。它對(duì)輸入、輸出電信號(hào)有良好的隔離作用,所以,它在各種電路中得 1553b耦合器線纜接頭到廣泛的應(yīng)用。目前它已成為種類(lèi)最多、用途最廣的光電器件之一。光耦合器一般由三部分組成:光的發(fā)射、光的接收及信號(hào)放大。輸入的電信號(hào)驅(qū)動(dòng)發(fā)光二極管(LED),使之發(fā)出一定波長(zhǎng)的光,被光探測(cè)器接收而產(chǎn)生光電流,再經(jīng)過(guò)進(jìn)一步放大后輸出。這就完成了電—光—電的轉(zhuǎn)換,從而起到輸入、輸出、隔離的作用。由于光耦合器輸入輸出間互相隔離,電信號(hào)傳輸具有單向性等特點(diǎn),因而具有良好的電絕緣能力和抗干擾能力。又由于光耦合器的輸入端屬于電流型工作的低阻元件,因而具有很強(qiáng)的共模抑制能力。所以,它在長(zhǎng)線傳輸信息中作為終端隔離元件可以大大提高信噪比。在計(jì)算機(jī)數(shù)字通信及實(shí)時(shí)控制中作為信號(hào)隔離的接口器件,可以大大增加計(jì)算機(jī)工作的可靠性。槽型光耦作為一種非常常見(jiàn)的電子元件,在電子電路系統(tǒng)設(shè)計(jì)的過(guò)程中,其選型的正確與否是非常重要的。槽型光耦合器也常常被稱(chēng)為直射式光電傳感器,其工作原理是通過(guò)對(duì)紅外發(fā)射光的阻斷和導(dǎo)通,在紅外接收管感應(yīng)出的電流變化來(lái)實(shí)現(xiàn)開(kāi)和關(guān)的判斷。光電耦合器具有體積小、使用壽命長(zhǎng)、工作溫度范圍寬、抗干擾性能強(qiáng)。無(wú)觸點(diǎn)且輸入與輸出在電氣上完全隔離等特點(diǎn),因而在各種電子設(shè)備上得到廣泛的應(yīng)用。光電耦合器可用于隔離電路、負(fù)載接口及各種家用電器等電路中。
特點(diǎn)
槽型光耦的特點(diǎn)
- 檢測(cè)距離長(zhǎng)。與接近開(kāi)關(guān)等比較,光電開(kāi)關(guān)的檢測(cè)距離非常長(zhǎng),且是無(wú)接觸式的,所以不會(huì)損傷檢測(cè)物體,也不受檢測(cè)物體的影響。
- 幾乎不受檢測(cè)物體的制約。由于是采用對(duì)檢測(cè)對(duì)象的表面進(jìn)行反射及光透過(guò)方式,不像接近開(kāi)關(guān)只能對(duì)金屬,還能對(duì)玻璃、塑料、木制物體、液體等各種物質(zhì)進(jìn)行檢測(cè)。
- 響應(yīng)速度快。與接近開(kāi)關(guān)同樣,由于無(wú)機(jī)械運(yùn)動(dòng),所以能對(duì)高速運(yùn)動(dòng)的物體進(jìn)行檢測(cè)。鏡頭容易受有機(jī)塵土等的影響鏡頭免受污染后,光會(huì)散射或被遮光,所以在有活水蒸汽、塵土等較多的環(huán)境下使用的場(chǎng)合,需施加適當(dāng)?shù)谋Wo(hù)裝置。
- 不受環(huán)境強(qiáng)光的影響。幾乎不受一般照明光的影響,但像太陽(yáng)光那樣的強(qiáng)光直接照射受光體時(shí),會(huì)造成誤動(dòng)作或損壞。
4.2 LCD1602顯示模塊
簡(jiǎn)介
作為各類(lèi)單片機(jī)實(shí)物設(shè)計(jì)的常用顯示屏,LCD1602是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,其1602是指LCD顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符(1個(gè)漢字占用2個(gè)字符)。這里需要要注意的是lcd1602是不能顯示漢字的,它只能顯示字母字符。
引腳功能
控制指令集
5 部分核心代碼
/*定時(shí)器0中斷號(hào)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)中斷計(jì)數(shù)的值num,并進(jìn)行數(shù)值處理 (中斷數(shù)值/20*直徑*3.14為1s內(nèi)移動(dòng)距離) time = 0;
Angular_N = 0;
}
} /*外部中斷0初始化*/ void Int0Init() {
IT0 = 1; //跳變沿出發(fā)方式(下降沿) EX0 = 1; //打開(kāi)INT0的中斷允許 EA = 1; //打開(kāi)總中斷 } /*外部中斷0的中斷函數(shù)*/ void Int0() interrupt 0 {
Angular_N++;
}
#include"lcd1602.h" sbit rs=P2^6; //1602的數(shù)據(jù)/指令選擇控制線 sbit rw=P2^5; //1602的讀寫(xiě)控制線 sbit en=P2^7; //1602的使能控制線 void delay(uint n) //延時(shí)函數(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寫(xiě)命令函數(shù) {
P0=com; //把命令字送入P2 en=0;
rs=0; //選擇指令寄存器 rw=0; //選擇寫(xiě) _nop_();//一個(gè)機(jī)械周期 en=1; //使能線電平變化,命令送入1602的8位數(shù)據(jù)口 delay(1);
en=0;
} void Lcd_WriteData(uchar dat) //1602寫(xiě)數(shù)據(jù)函數(shù) {
P0=dat; //把要顯示的數(shù)據(jù)送入P0 en=0;
rs=1; //選擇數(shù)據(jù)寄存器 rw=0; //選擇寫(xiě) _nop_();//一個(gè)機(jī)械周期 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); //開(kāi)啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍 Busy();
Lcd_WriteCom(0x06); //顯示地址遞增,即寫(xiě)一個(gè)數(shù)據(jù)后,顯示位置右移一位 Busy();
Lcd_WriteCom(0x01); //清屏 Busy();
Lcd_WriteCom(0x80); //設(shè)置數(shù)據(jù)指針起點(diǎn) }
完整代碼可進(jìn)群免費(fèi)領(lǐng)取。
嵌入式物聯(lián)網(wǎng)的學(xué)習(xí)之路非常漫長(zhǎng),不少人因?yàn)閷W(xué)習(xí)路線不對(duì)或者學(xué)習(xí)內(nèi)容不夠?qū)I(yè)而錯(cuò)失高薪offer。不過(guò)別擔(dān)心,我為大家整理了一份150多G的學(xué)習(xí)資源,基本上涵蓋了嵌入式物聯(lián)網(wǎng)學(xué)習(xí)的所有內(nèi)容。點(diǎn)擊下方鏈接,0元領(lǐng)取學(xué)習(xí)資源,讓你的學(xué)習(xí)之路更加順暢!記得點(diǎn)贊、關(guān)注、收藏、轉(zhuǎn)發(fā)哦!
- 贊