C51(蓝牙,红外)智能遥控小车
目錄
?
?
1模塊準(zhǔn)備
2實(shí)現(xiàn)功能
1模塊準(zhǔn)備
三輪小車底盤
l298n電機(jī)驅(qū)動(dòng)模塊
?51最小系統(tǒng)開發(fā)板
ds1302時(shí)鐘模塊
?藍(lán)牙串口模塊hc-06
?18650電池盒和電池組三節(jié),12v左右
ds18b20溫度傳感器
紅外接收頭與遙控
lcd1602顯示屏
ttl電機(jī)2只
2實(shí)現(xiàn)功能
小車由藍(lán)牙模塊和紅外遙控控制運(yùn)行軌跡,通過pwm功能調(diào)整小車的速度,同時(shí)lcd1602實(shí)時(shí)顯示當(dāng)前日期和時(shí)間和當(dāng)前環(huán)境溫度。
3模塊功能詳解
藍(lán)牙模塊:使用串口中斷,中斷號(hào)4,單片機(jī)接收到相應(yīng)的指令后使小車執(zhí)行相應(yīng)功能。
?紅外遙控:使用外部中斷,下降沿觸發(fā),首先得看懂紅外接NEC收協(xié)議如下。
紅外遙控器采用了NEC編碼規(guī)則:
NEC 載波頻率為 38Khz
引導(dǎo)碼:9ms 高電平 + 4.5ms 低電平
0碼 :0.56 ms 高電平 + 0.56 ms 低電平
1 碼 : 0.56ms 高電平 + 1.68 ms 低電平
結(jié)束碼 :0.56ms 高電平
數(shù)據(jù)幀格式:引導(dǎo)碼 +識(shí)別碼 + 識(shí)別碼反碼 + 鍵值 + 鍵值反碼 + 結(jié)束碼
重復(fù)幀格式:9ms 高電平 + 2.25ms低電平 + 結(jié)束位 + 結(jié)束碼,總共110ms左右
整個(gè)完整數(shù)據(jù)格式:引導(dǎo)碼 + 識(shí)別碼 + 識(shí)別碼反碼 + 鍵值 + 鍵值反碼 + 結(jié)束碼+一段空閑時(shí)間+9ms 高電平 + 2.25ms低電平 + 結(jié)束位 + 結(jié)束碼+重復(fù)碼循環(huán)~~~
高位在前,即首先收到的是高位的數(shù)據(jù)
?
?將接收到的數(shù)據(jù)碼傳給單片機(jī)執(zhí)行相應(yīng)的功能。
ds18b20溫度傳感器:首先先搞定傳感器初始化后再進(jìn)行寫命令和讀數(shù)據(jù)這些。
初始化步驟:先拉低io口480~960us,再把io拉高,判斷io口在15~60us間是否變?yōu)榈碗娖?#xff0c;如是則初始化成功,注意當(dāng)超過一定時(shí)間后記得退出判斷,否則會(huì)進(jìn)入死循環(huán)。最后可以通過返回的i值知道是否初始化成功。(其他地方說讀取到低電平后還要做延時(shí)處理,自己實(shí)測(cè)可以不加延時(shí))
pwm控制車速(l298n):利用51的定時(shí)器在l298n輸出pwm信號(hào)來控制小車的速度,pwm控制車速的原理是通過改變輸出電機(jī)端口的電壓,從而改變車輪的轉(zhuǎn)速,那怎么改變電壓值呢?毋庸置疑只能通過定時(shí)器,設(shè)置定時(shí)器在一個(gè)周期(100ms)中30ms讓電機(jī)的端口輸出高電平,剩下的70ms輸出低電平,這樣一來pwm的占空比就是0.3,假設(shè)你的電池組是6v的,這時(shí)電機(jī)的有效電壓就是1.8v,這樣就可以通過改變占空比來控制車速啦。
這個(gè)是對(duì)定時(shí)器的初始化,一開始我設(shè)的是650us后發(fā)生中斷,pwm和pwm1分別是兩個(gè)電機(jī)的pwm口。
?
?當(dāng)650us到達(dá)后就會(huì)進(jìn)入中斷,在中斷里面判斷當(dāng)前pwm端口為1還是0,一開始設(shè)為0后進(jìn)中斷后就會(huì)執(zhí)行else里的程序,重新給定時(shí)器設(shè)置計(jì)數(shù)時(shí)間350us,并把pwm端口置1,當(dāng)350us到達(dá)后又會(huì)進(jìn)入中斷執(zhí)行if里的語(yǔ)句,就這樣一直重復(fù)。這樣pwm的周期就為1000us,其中有效時(shí)間為350us,即占空比為350/1000=0.35。
總結(jié)
以上是生活随笔為你收集整理的C51(蓝牙,红外)智能遥控小车的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若依代码生成使用教程
- 下一篇: 大学生电子设计大赛最全资料