![基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第1頁](http://file4.renrendoc.com/view9/M03/23/1E/wKhkGWdU_WeAB-L4AAGLLcfc3P4418.jpg)
![基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第2頁](http://file4.renrendoc.com/view9/M03/23/1E/wKhkGWdU_WeAB-L4AAGLLcfc3P44182.jpg)
![基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第3頁](http://file4.renrendoc.com/view9/M03/23/1E/wKhkGWdU_WeAB-L4AAGLLcfc3P44183.jpg)
![基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第4頁](http://file4.renrendoc.com/view9/M03/23/1E/wKhkGWdU_WeAB-L4AAGLLcfc3P44184.jpg)
![基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第5頁](http://file4.renrendoc.com/view9/M03/23/1E/wKhkGWdU_WeAB-L4AAGLLcfc3P44185.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
目錄
1產(chǎn)品功能分析....................................................1
2設(shè)計方案遴選....................................................1
2.1單片機的選擇...............................................1
2.2模塊的選擇.................................................1
2.3系統(tǒng)框圖設(shè)計................................................2
3產(chǎn)品硬件設(shè)計....................................................2
3.1STC89C52RC單片機核心電路設(shè)計..............................2
3.2按鍵電路設(shè)計..............................................3
3.3LCD1602液晶顯示模塊電路...................................4
3.4LED電路的設(shè)計.............................................5
4產(chǎn)品軟件設(shè)計....................................................5
4.1主程序流程圖.............................................5
4.2LCD1602液晶顯示程序設(shè)計...................................6
4.3產(chǎn)品程序清單.............................................7
5產(chǎn)品使用說明....................................................8
5.1產(chǎn)品裝配圖...............................................8
5.2產(chǎn)品調(diào)試.................................................8
6、產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)...............................................11
7參考資料........................................................11
附錄..............................................................12
附錄1元器件清單...........................................12
附錄2電路原理圖...........................................13
附錄3PCB設(shè)計圖............................................14
附錄4產(chǎn)品實物圖...........................................15
附錄5主程序代碼...........................................17
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
基于51單片機汽車遠(yuǎn)近燈光設(shè)計與制作
1產(chǎn)品功能分析
本產(chǎn)品是一款控制汽車遠(yuǎn)近燈系統(tǒng),是通過用光敏電阻來測量光線亮度,在
測出的值比設(shè)置的值小時,會開啟車燈;通過使用超聲波傳感器測量距離,在小于
設(shè)置值時,自動將遠(yuǎn)光燈變?yōu)榻鉄?大于設(shè)置值時將近光燈變?yōu)檫h(yuǎn)光燈。
2設(shè)計方案遴選
2.1單片機的選擇
方案1:
STM32單片機是一個功耗較低,成本低和高性能的單片機,結(jié)構(gòu)簡單,工具容
易使用,功能強大,讓其應(yīng)用廣泛。
1.核心:擁有ARM32位Cortex-M3cpu,工作頻率最高能到72MHz,1.25DMIPS/M
Hz。
2.存儲器:芯片上有集成32-512kb閃存和6-64kbSRAM內(nèi)存。
3.調(diào)試方式:擁有串行調(diào)試和JTAG接口。最多有112個的快速I/O端口,最
多可達(dá)11個定時器,最多有13個通信接口。
4.是運行指令的,但是對于多路信號處理,就需要有很多DSP進行并處理。
方案2:
STC89C52RC單片機,是一款高速,低功耗的單片機,指令代碼可以兼容傳統(tǒng)
8051單片機,用友8K內(nèi)部程序儲存,內(nèi)部數(shù)據(jù)存儲一共有512字節(jié),擁有3個
16位定時/計數(shù)器,是8051的加強版。
本產(chǎn)品選擇方案2,因為STC89C52RC單片機有多種工作模式,可以靈活,
有效的解決問題,操作簡單。
2.2模塊的選擇與使用
2.2.1光照檢測模塊
本產(chǎn)品中使用光敏電阻檢測,它是一個能自動檢測周圍環(huán)境的光照強度,并
1
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
能通過外界環(huán)境的光照強度來改變自身電阻大小的器件。在本產(chǎn)品中使用光敏
電阻為了通過光照強度來控制燈光。
2.2.2超聲波模塊
在產(chǎn)品中安裝了一個超聲波測距的元件,該元件有2cm到400cm的非接觸
式距離測量功能。通過聲波發(fā)射器,接收器和控制電路共同構(gòu)成。通過設(shè)置固
定值,然后在通過超聲波測量是否比設(shè)置值大或小時,將會自動對燈光進行變
化。
2.3系統(tǒng)框圖設(shè)計
控制電路的開關(guān)放在汽車遠(yuǎn)近燈開關(guān)上,在遠(yuǎn)光燈開啟時,會啟動自動控
制系統(tǒng)。在對面有車時,車燈或反光鏡的反射光會被“光檢測輸入端”捕捉,然
后電路會對單片機發(fā)出有效高電平,接著單片機會通過程控方式來檢測“光檢
測輸入端”發(fā)出的信號是否有效。如果,信號有效則會開啟“控制光亮輸出
端”將車燈改為近光燈;否則會繼續(xù)檢測輸入信號。
其中系統(tǒng)框圖如圖2-1所示
控制電路開關(guān)
光檢測控制光亮
STC89C52
輸入端輸出端
時鐘電路復(fù)位電路
圖2-1系統(tǒng)框圖
3產(chǎn)品硬件設(shè)計
3.1STC89C52RC單片機核心電路設(shè)計
C51單片機是該產(chǎn)品的核心元件,所以讓性能更強,工作模式更多,速度更
快的STC89C52RC單片機成為控制電路的核心,其原理圖如圖3-1。
2
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-1STC89C52RC原理圖
3.2按鍵電路設(shè)計
本產(chǎn)品使用了單片機P35,P36,P37三個接口,再通過按鍵來設(shè)置超聲波的
距離值和光敏電阻的阻值,圖3-2示。
圖3-2按鍵原理圖
手動模式下:
第一個按鍵:按一下是開啟近光燈。
按兩下是關(guān)閉近光燈。
第二個按鍵:按一下是開啟遠(yuǎn)光燈。
按兩下是關(guān)閉遠(yuǎn)光燈。
第三個按鍵:可以轉(zhuǎn)換模式
顯示屏出現(xiàn)字母“s”變?yōu)槭謩幽J健?/p>
3
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
出現(xiàn)字母“z”變?yōu)樽詣幽J健?/p>
自動模式下:
第一個按鍵:按一下可以進入設(shè)置模式。
在按一下是退出設(shè)置模式
第二個按鍵:按一下增加超聲波距離和光照閾值。
第三個按鍵:按一下減少超聲波距離和光照閾值。
3.3LCD1602液晶顯示模塊電路
液晶顯示在本產(chǎn)品中主要用來顯示超聲波距離和光照閾值。它主要用來顯
示符號,數(shù)字等,是一款點陣型液晶顯示模塊。
液晶顯示是通過對液晶物理特性的利用,再通過電壓控制顯示區(qū)域,通電就
可以顯現(xiàn),還能顯示出圖像和字母,有薄并在大規(guī)模集成電路中使用,還具備直
接通過驅(qū)動和易全彩顯示的特點,并廣泛應(yīng)用在游戲機,電腦,電視等。
液晶顯示器作為輸出器件的優(yōu)點:
1.顯示質(zhì)量高,收到信號后會穩(wěn)定保持色彩和亮度并不會閃爍。
2.由數(shù)字接口,簡單方便可靠。
3.體積小,重量輕,輻射低。
4.功耗低,對比其他顯示器耗電量更少。
液晶顯示原理圖如圖3-3所示
圖3-3LCD1602液晶顯示原理圖
4
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
3.4LED電路的設(shè)計
LED燈是由一種半導(dǎo)體材料制作的,能直接將電能轉(zhuǎn)化成光能的發(fā)光顯示
器。具有節(jié)能,環(huán)保,安全,功耗低等特點,廣泛在各個領(lǐng)域中使用。在本產(chǎn)品中
作為遠(yuǎn)近燈,在光敏電阻檢測光照強度是否小于設(shè)置值時,如果是,會開啟燈;反
之,不會開啟燈光。在通過超聲波測距檢測距離是否大于設(shè)置值;如果是,為
遠(yuǎn)光燈。反之,則為近光燈。LED燈原理圖如圖3-4所示。
圖3-4LED燈原理圖
4產(chǎn)品軟件設(shè)計
4.1主程序流程圖
該產(chǎn)品程序是通過在kei5uVision軟件中編寫,主要功能有檢測光的輸入是否
有效和P1.2電平高低等,其主程序流程圖如圖4-1所示。
開始
光檢測輸入是否
否有效
P1.2為高電平,繼電器關(guān)
是
閉,
遠(yuǎn)光變近光
調(diào)用延時程序
5
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
P1.2為低電平,繼電器開
啟,
近光變遠(yuǎn)光
結(jié)束
圖4-1主程序流程圖
4.2LCD1602液晶顯示程序設(shè)計
**********************lcd16上顯示兩位十進制數(shù)***********************
voidwrite_sfm2(ucharhang,ucharadd,uchardate)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
write_data('%');
}
********************lcd1602上顯示超聲波距離***********************
voidwrite_sfm_csb(ucharhang,ucharadd,uintdate){
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/100%10);
write_data('.');
write_data(0x30+date/10%10);
write_data(0x30+date%10);
write_data('m');
}
voidinit_1602()
6
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
{
write_com(0x38);//
write_com(0x0c);
write_com(0x06);
}
voidwrite_string(ucharhang,ucharadd,uchar*p){
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{if(*p=='\0')break;
write_data(*p);
p++;}
}
4.3產(chǎn)品程序清單
本產(chǎn)品的程序主要由初始化程序,單片機頭文件,顯示程序,按鍵程序,延時程
序,超聲波測距程序,定時中斷程序等組成。清單如下圖所示。
圖4-3程序清單圖
7
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
5產(chǎn)品使用說明
5.1產(chǎn)品裝配圖
產(chǎn)品主要由STC89C52單片機,超聲波模塊,LCD1602顯示,電阻,晶振,遠(yuǎn)近光
燈,光敏電阻,電容,電阻,按鍵模塊,開關(guān),電源等組成。裝配圖如下所示
圖5-1產(chǎn)品裝配圖
5.2產(chǎn)品調(diào)試
第一步:未接通電源產(chǎn)品實物圖
圖5-2產(chǎn)品實物圖
8
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
第二步:接通電源,在光照小于設(shè)置的光照值,距離小于設(shè)置的距離,開啟近
光燈。
圖5-2-1近光燈開啟
第三步:在光照小于設(shè)置的光照值,距離大于設(shè)置的距離,開啟遠(yuǎn)光燈。
圖5-2-2遠(yuǎn)光燈開啟
第四步:在光照大于設(shè)置的光照值時,遠(yuǎn)近燈關(guān)閉。
9
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-2-3遠(yuǎn)近光關(guān)閉
5.3產(chǎn)品使用說明
1.將產(chǎn)品放在桌面,讓LCD1602顯示屏面向自己。
2.將USB接口和DC電源座連通,接通電源后,顯示屏第一行會顯示距離,
第二行顯示光照值。
3.第一個按鍵可以設(shè)置距離和光照閾值,進入設(shè)置頁面后;第二個和第三
個按鍵可以加減距離和光照閾值;再按第一個按鍵可以退出設(shè)置界面。
4.第三個按鍵可以切換自動和手動模式。
5.自動模式下,通過超聲波和光敏電阻測量光照是否小于設(shè)置的光照值,
距離是否小于設(shè)置的距離,如果小于會開啟近光燈;反之在光照小于設(shè)置的光
照值,距離大于設(shè)置的距離,則會開啟遠(yuǎn)光燈;在光照大于設(shè)置的光照值,燈光
全部關(guān)閉。
6.手動模式下,通過第一個按鍵,開啟遠(yuǎn)光燈;第二個按鍵,開啟近光燈。
7.通過LCD1602顯示屏來查看當(dāng)前距離和光照值。
6、產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)
[1]J-STD-001E電氣與電子組件的焊接要求
10
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
[2]IPC-A-610D(中文版),IPC-A-610E電子組件的可接受性要求
[3]IPC-7711/21電子組件和電路板的返工&返修
[4]GB/T11457-2006信息技術(shù)軟件工程術(shù)語;
[5]GB/T8566-2007信息技術(shù)軟件生存周期過程標(biāo)準(zhǔn);
[6]GB/T8567-2006計算機軟件文檔編制規(guī)范。
7參考資料
[1]單片機技術(shù)在智能家具中的應(yīng)用與發(fā)展[J].李立文,彭森.家庭生活指南.2019(07)
[2]基于單片機的車載酒精含量自檢系統(tǒng)設(shè)計與實現(xiàn)[J].廖梅花.現(xiàn)代工業(yè)經(jīng)濟和信息化.2021(10)
[3]基于單片機的可拼車出租車計價系統(tǒng)的設(shè)計[J].王淑嬌,楊寶山.信息技術(shù)與信息化.2017(07)
[4]基于51單片機的智能酒駕預(yù)防系統(tǒng)[J].徐昊元,曹誠偉,舒煜喬,周家樂,史志鵬.電子制
作.2022(21)
[5]基于單片機技術(shù)的汽車遠(yuǎn)近光自動切換裝置分析[J].王銳.農(nóng)家參謀.2020(04)
[6]基于單片機的自平衡小車設(shè)計與實現(xiàn)[J].曹杰,藍(lán)賢桂,周書民,劉琦,謝冬輝,肖靜.科技廣
場.2017(06)
[7]《單片機與嵌入式系統(tǒng)應(yīng)用》2021年總目次[J].單片機與嵌入式系統(tǒng)應(yīng)用.2021(12)
[8]單片機技術(shù)在電子技術(shù)創(chuàng)新模塊中的應(yīng)用[J].周行政.造紙裝備及材料.2021(07)
[9]單片機技術(shù)在電氣傳動系統(tǒng)中的應(yīng)用策略[J].嚴(yán)棟梁.信息記錄材料.2021(12)
11
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄
附錄1元器件清單
12
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄2電路原理圖
13
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄3PCB設(shè)計圖
14
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄4產(chǎn)品實物圖
15
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
16
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄5主程序代碼
#include<reg52.h>//調(diào)用單片機頭文件
#defineucharunsignedchar//無符號字符型宏定義變量范圍0~255
#defineuintunsignedint//無符號整型宏定義變量范圍0~65535
#include<intrins.h>
sbitCS=P2^0;//CS定義,連接ADC0832CS腳
sbitSCL=P2^2;//SCL定義,連接ADC0832SCL腳
sbitDO=P2^3;//DO定義,連接ADC0832DO腳
//這三個引腳參考資料
sbitrs=P1^0;//1602數(shù)據(jù)/命令選擇引腳H:數(shù)據(jù)L:命令
sbitrw=P1^1;//1602讀寫引腳H:數(shù)據(jù)寄存器L:指令寄存器
sbite=P1^2;//1602使能引腳下降沿觸發(fā)
sbitc_send=P2^6;//超聲波發(fā)射
sbitc_recive=P2^7;//超聲波接收
ucharflag_hc_value;//超聲波中間變量
longdistance;//距離
uintset_d;//距離
bitflag_csb_juli;//超聲波超出量程
uintflag_time0;//用來保存定時器0的時候的
bitflag_200ms=1;
bitflag_shou=0;
sbitled_yuan1=P1^3;
sbitled_yuan2=P1^4;
sbitled_jin=P1^5;
sbitkey1=P3^5;
sbitkey2=P3^6;
sbitkey3=P3^7;
ucharguangxian;//光線的顯示變量
ucharruo_gx;//設(shè)置光線的弱的變量
ucharvalue;
ucharmenu_1;//菜單設(shè)置變量
uchari;
17
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
uchara_a;
#defineRdCommand0x01//定義ISP的操作命令
#definePrgCommand0x02
#defineEraseCommand0x03
#defineError1
#defineOk0
#defineWaitTime0x01//定義CPU的等待時間
sfrISP_DATA=0xe2;//寄存器申明
sfrISP_ADDRH=0xe3;
sfrISP_ADDRL=0xe4;
sfrISP_CMD=0xe5;
sfrISP_TRIG=0xe6;
sfrISP_CONTR=0xe7;
/*================打開ISP,IAP功能=================*/
voidISP_IAP_enable(void)
{
EA=0;/*關(guān)中斷*/
ISP_CONTR=ISP_CONTR&0x18;/*0001,1000*/
ISP_CONTR=ISP_CONTR|WaitTime;/*寫入硬件延時*/
ISP_CONTR=ISP_CONTR|0x80;/*ISPEN=1*/
}
/*===============關(guān)閉ISP,IAP功能==================*/
voidISP_IAP_disable(void)
{
ISP_CONTR=ISP_CONTR&0x7f;/*ISPEN=0*/
ISP_TRIG=0x00;
EA=1;/*開中斷*/
}
/*================公用的觸發(fā)代碼====================*/
voidISPgoon(void)
{
ISP_IAP_enable();/*打開ISP,IAP功能*/
ISP_TRIG=0x46;/*觸發(fā)ISP_IAP命令字節(jié)1*/
ISP_TRIG=0xb9;/*觸發(fā)ISP_IAP命令字節(jié)2*/
_nop_();
}
/*====================字節(jié)讀========================*/
unsignedcharbyte_read(unsignedintbyte_addr)
{
EA=0;
ISP_ADDRH=(unsignedchar)(byte_addr>>8);/*地址賦值*/
18
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff);
ISP_CMD=ISP_CMD&0xf8;/*清除低3位*/
ISP_CMD=ISP_CMD|RdCommand;/*寫入讀命令*/
ISPgoon();/*觸發(fā)執(zhí)行*/
ISP_IAP_disable();/*關(guān)閉ISP,IAP功能*/
EA=1;
return(ISP_DATA);/*返回讀到的數(shù)據(jù)*/
}
/*==================扇區(qū)擦除========================*/
voidSectorErase(unsignedintsector_addr)
{
unsignedintiSectorAddr;
iSectorAddr=(sector_addr&0xfe00);/*取扇區(qū)地址*/
ISP_ADDRH=(unsignedchar)(iSectorAddr>>8);
ISP_ADDRL=0x00;
ISP_CMD=ISP_CMD&0xf8;/*清空低3位*/
ISP_CMD=ISP_CMD|EraseCommand;/*擦除命令3*/
ISPgoon();/*觸發(fā)執(zhí)行*/
ISP_IAP_disable();/*關(guān)閉ISP,IAP功能*/
}
/*====================字節(jié)寫========================*/
voidbyte_write(unsignedintbyte_addr,unsignedcharoriginal_data)
{
EA=0;
//SectorErase(byte_addr);
ISP_ADDRH=(unsignedchar)(byte_addr>>8);/*取地址*/
ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff);
ISP_CMD=ISP_CMD&0xf8;/*清低3位*/
ISP_CMD=ISP_CMD|PrgCommand;/*寫命令2*/
ISP_DATA=original_data;/*寫入數(shù)據(jù)準(zhǔn)備*/
ISPgoon();/*觸發(fā)執(zhí)行*/
ISP_IAP_disable();/*關(guān)閉IAP功能*/
EA=1;
}
/***********************1ms延時函數(shù)*****************************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
19
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
}
*****************把設(shè)置溫度數(shù)據(jù)保存到單片機內(nèi)部eeprom**************
voidwrite_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000,set_d%256);
byte_write(0x2001,set_d/256);
byte_write(0x2002,ruo_gx);
byte_write(0x2057,a_a);
}
/******************把數(shù)據(jù)從單片機內(nèi)部eeprom中讀出來*****************/
voidread_eeprom()
{
set_d=byte_read(0x2001);
set_d=set_d*256+byte_read(0x2000);
ruo_gx=byte_read(0x2002);
a_a=byte_read(0x2057);
}
/**************開機自檢eeprom初始化*****************/
voidinit_eeprom()
{
read_eeprom();//先讀
if(a_a!=2)//新的單片機初始單片機內(nèi)問eeprom
{
set_d=70;
a_a=2;
ruo_gx=20;
write_eeprom();
}
}
/********************************************************************
*名稱:delay()
*功能:延時,延時時間大概為5US。
*輸入:無
*輸出:無
********************************************************************
20
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
voiddelay_uint(uintq)
{
while(q--);
}
/********************************************************************
*名稱:write_com(ucharcom)
*功能:1602命令函數(shù)
*輸入:輸入的命令值
*輸出:無
*******************************************************************/
voidwrite_com(ucharcom)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
/********************************************************************
*名稱:write_data(uchardat)
*功能:1602寫數(shù)據(jù)函數(shù)
*輸入:需要寫入1602的數(shù)據(jù)
*輸出:無
*******************************************************************/
voidwrite_data(uchardat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
/********************lcd1602上顯示兩位十進制數(shù)***********************/
voidwrite_sfm2(ucharhang,ucharadd,uchardate)
21
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
write_data('%');
}
/**********************lcd1602上顯示超聲波距離***********************/
voidwrite_sfm_csb(ucharhang,ucharadd,uintdate)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/100%10);
write_data('.');
write_data(0x30+date/10%10);
write_data(0x30+date%10);
write_data('m');
}
/********************************************************************
*名稱:init_1602()
*功能:1602初始化,請參考1602的資料
*輸入:無
*輸出:無
********************************************************************/
voidinit_1602()
{
write_com(0x38);//
write_com(0x0c);
write_com(0x06);
}
/********************************************************************
*名稱:write_string(ucharhang,ucharlie,uchar*p)
*功能:改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"abcd
ef",調(diào)用該函數(shù)如下
write_string(1,5,"abcdef;")
22
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
*輸入:行,列,需要輸入1602的數(shù)據(jù)
*輸出:無
********************************************************************/
voidwrite_string(ucharhang,ucharadd,uchar*p)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p=='\0')break;
write_data(*p);
p++;
}
}
ucharkey_can;
/********************獨立按鍵程序*****************/
voidkey()
{
staticucharkey_new;
key_can=20;
if((P3&0xf0)!=0xf0)
{
delay_uint(50);
if(((P3&0xf0)!=0xf0)&&(key_new==1))
{
key_new=0;
switch(P3&0xf0)
{
case0x70:key_can=3;break;//左邊第1個
case0xb0:key_can=2;break;//左邊第2個
case0xd0:key_can=1;break;//左邊第3個
}
}
}
else
key_new=1;
}
/***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)***********************************/
23
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
//請先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來讀本函數(shù),主要是對應(yīng)時序圖
來理解,本函數(shù)是模擬0832的串行協(xié)議進行的
//100通道
//111通道
unsignedcharad0832read(bitSGL,bitODD)
{
unsignedchari=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0;
SCL=1;
SCL=0;
DO=SGL;
SCL=1;
SCL=0;
DO=ODD;
SCL=1;
SCL=0;
DO=1;
for(i=0;i<8;i++)
{
SCL=1;
SCL=0;
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{
value1>>=1;
if(DO)
value1+=0x80;
SCL=1;
SCL=0;
}
CS=1;
SCL=1;
if(value==value1)
returnvalue;
return0;
}
/*********************小延時函數(shù)*****************************/
24
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
voiddelay()
{
_nop_();//執(zhí)行一條_nop_()指令就是1us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/*********************超聲波測距程序*****************************/
voidsend_wave()
{
c_send=1;//10us的高電平觸發(fā)
delay();
c_send=0;
TH0=0;//給定時器0清零
TL0=0;
TR0=0;//關(guān)定時器0定時
while(!c_recive);//當(dāng)c_recive為零時等待
TR0=1;
while(c_recive)//當(dāng)c_recive為1計數(shù)并等待
{
flag_time0=TH0*256+TL0;
if((flag_time0>40000))//當(dāng)超聲波超過測量范圍時,顯示3個888
{
TR0=0;
flag_csb_juli=2;
distance=888;
break;
}
else
{
flag_csb_juli=1;
}
}
if(flag_csb_juli==1)
{
TR0=0;//關(guān)定時器0定時
distance=flag_time0;//讀出定時器0的時間
distance*=0.017;//0.017=340M/2=170M=0.017M
算出來是米
25
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
if((distance>500))//距離=速度*時間
{
distance=888;//如果大于3.8m就超出超聲波的量程
}
}
}
/*********************定時器0、定時器1初始化******************/
voidtime_init()
{
EA=1;//開總中斷
TMOD=0X11;//定時器0、定時器1工作方式1
ET0=1;//開定時器0中斷
TR0=1;//允許定時器0定時
ET1=1;//開定時器1中斷
TR1=1;//允許定時器1定時
}
/*******************按鍵執(zhí)行函數(shù)******************/
voidkey_with()
{
if(key_can==1)
{
menu_1++;
if(menu_1==1)
{
write_string(1,0,"csb:0.00m");
write_string(2,0,"setgx:00%");
write_sfm_csb(1,7,set_d);
write_sfm2(2,7,ruo_gx);//設(shè)置光線的參數(shù)
write_com(0x80+6);//將光標(biāo)移動到
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==2)
{
write_sfm2(2,7,ruo_gx);//設(shè)置光線的參數(shù)
write_com(0x80+0x40+6);//將光標(biāo)移動到
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1>=3)
{
menu_1=0;
26
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
write_string(1,0,"csb:0.00m");
write_string(2,0,"gx:00%");
write_com(0x0c);//關(guān)閉顯示
}
key_can=0;
}
if(menu_1==1)//設(shè)置超聲波參數(shù)
{
if(key_can==2)//
{
set_d++;//加超聲波距離報警數(shù)據(jù)
if(set_d>=500)
set_d=500;
key_can=0;
}
if(key_can==3)//
{
set_d--;//減超聲波距離報警數(shù)據(jù)
if(set_d<=10)
set_d=10;
key_can=0;
}
write_sfm_csb(1,7,set_d);//顯示設(shè)置的距離
write_com(0x86);//將光標(biāo)移動到
write_com(0x0f);//顯示光標(biāo)并且閃爍
write_eeprom();//保存數(shù)據(jù)
}
if(menu_1==2)//設(shè)置弱光報警
{
if(key_can==2)//
{
ruo_gx++;//加弱光報警數(shù)據(jù)
if(ruo_gx>=99)
ruo_gx=99;
key_can=0;
}
if(key_can==3)//
{
ruo_gx--;//減強光報警數(shù)據(jù)
if(ruo_gx<=1)
ruo_gx=1;
27
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
key_can=0;
}
write_sfm2(2,7,ruo_gx);
write_com(0x80+0x40+6);//將光標(biāo)移動到
write_com(0x0f);//顯示光標(biāo)并且閃爍
write_eeprom();//保存數(shù)據(jù)
}
}
/********************************************************************
*名稱:Main()
*功能:主函數(shù)
*輸入:無
*輸出:無
********************************************************************
voidMain()
{
delay_1ms(150);
P0=P1=P2=P3=0xff;//初始化單片機IO口為高電平
init_1602();
time_init();//定時器初始化程序
init_eeprom();//開始初始化保存的數(shù)據(jù)
write_string(1,0,"csb:0.00m");
write_string(2,0,"gx:00%");
//delay_1ms(5000);
c_send=1;//10us的高電平觸發(fā)
delay();delay();delay();delay();delay();
c_send=0;
while(1)
{
key();
if(menu_1==0)
{
if(key3==0)
{
delay_1ms(5);
if(key3==0)
{
flag_shou=~flag_shou;
while(!key3);
}
28
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
}
if(flag_shou==0)
{
write_com(0x80+0x40+1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年濟寧道路客貨運輸從業(yè)資格證b2考試題庫
- 2025年焦作道路運輸從業(yè)人員從業(yè)資格考試
- 電焊工入職合同(2篇)
- 《北魏政治和北方民族大交融》聽課評課記錄2(新部編人教版七年級上冊歷史)
- 2024-2025學(xué)年高中英語Module6TheInternetandTelecommunicationsSectionⅤWriting-正反觀點對比類議論文教案含解析外研版必修1
- 企業(yè)年終工作總結(jié)報告
- 公司人事部門年終工作總結(jié)
- 遼寧民事訴訟委托協(xié)議
- 秘書處工作計劃范本
- 大學(xué)生職業(yè)規(guī)劃計劃書
- 心理學(xué)基礎(chǔ)知識考試參考題庫500題(含答案)
- 北師大版小學(xué)三年級數(shù)學(xué)下冊全冊教案
- DCMM練習(xí)題練習(xí)試題
- 《工業(yè)化建筑施工階段碳排放計算標(biāo)準(zhǔn)》
- GB/T 33761-2024綠色產(chǎn)品評價通則
- 地下停車場充電樁技術(shù)方案建議書
- 幼兒園設(shè)施設(shè)備安全教育
- 廢舊保溫棉處置合同范例
- 《人工智能簡述》課件
- 《軌道交通工程盾構(gòu)施工技術(shù)》 課件 項目5 盾構(gòu)隧道防水施工
- 2024年數(shù)據(jù)編織價值評估指南白皮書-Aloudata
評論
0/150
提交評論