基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第1頁
基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第2頁
基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第3頁
基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第4頁
基于51單片機的汽車遠(yuǎn)近燈設(shè)計與制作_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論