




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
目錄
1產(chǎn)品功能分析....................................................1
2設(shè)計(jì)方案遴選....................................................1
2.1單片機(jī)的選擇...............................................1
2.2模塊的選擇.................................................1
2.3系統(tǒng)框圖設(shè)計(jì)................................................2
3產(chǎn)品硬件設(shè)計(jì)....................................................2
3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì)..............................2
3.2按鍵電路設(shè)計(jì)..............................................3
3.3LCD1602液晶顯示模塊電路...................................4
3.4LED電路的設(shè)計(jì).............................................5
4產(chǎn)品軟件設(shè)計(jì)....................................................5
4.1主程序流程圖.............................................5
4.2LCD1602液晶顯示程序設(shè)計(jì)...................................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è)計(jì)技術(shù)標(biāo)準(zhǔn)...............................................11
7參考資料........................................................11
附錄..............................................................12
附錄1元器件清單...........................................12
附錄2電路原理圖...........................................13
附錄3PCB設(shè)計(jì)圖............................................14
附錄4產(chǎn)品實(shí)物圖...........................................15
附錄5主程序代碼...........................................17
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
基于51單片機(jī)汽車遠(yuǎn)近燈光設(shè)計(jì)與制作
1產(chǎn)品功能分析
本產(chǎn)品是一款控制汽車遠(yuǎn)近燈系統(tǒng),是通過用光敏電阻來測(cè)量光線亮度,在
測(cè)出的值比設(shè)置的值小時(shí),會(huì)開啟車燈;通過使用超聲波傳感器測(cè)量距離,在小于
設(shè)置值時(shí),自動(dòng)將遠(yuǎn)光燈變?yōu)榻鉄?大于設(shè)置值時(shí)將近光燈變?yōu)檫h(yuǎn)光燈。
2設(shè)計(jì)方案遴選
2.1單片機(jī)的選擇
方案1:
STM32單片機(jī)是一個(gè)功耗較低,成本低和高性能的單片機(jī),結(jié)構(gòu)簡(jiǎn)單,工具容
易使用,功能強(qiáng)大,讓其應(yīng)用廣泛。
1.核心:擁有ARM32位Cortex-M3cpu,工作頻率最高能到72MHz,1.25DMIPS/M
Hz。
2.存儲(chǔ)器:芯片上有集成32-512kb閃存和6-64kbSRAM內(nèi)存。
3.調(diào)試方式:擁有串行調(diào)試和JTAG接口。最多有112個(gè)的快速I/O端口,最
多可達(dá)11個(gè)定時(shí)器,最多有13個(gè)通信接口。
4.是運(yùn)行指令的,但是對(duì)于多路信號(hào)處理,就需要有很多DSP進(jìn)行并處理。
方案2:
STC89C52RC單片機(jī),是一款高速,低功耗的單片機(jī),指令代碼可以兼容傳統(tǒng)
8051單片機(jī),用友8K內(nèi)部程序儲(chǔ)存,內(nèi)部數(shù)據(jù)存儲(chǔ)一共有512字節(jié),擁有3個(gè)
16位定時(shí)/計(jì)數(shù)器,是8051的加強(qiáng)版。
本產(chǎn)品選擇方案2,因?yàn)镾TC89C52RC單片機(jī)有多種工作模式,可以靈活,
有效的解決問題,操作簡(jiǎn)單。
2.2模塊的選擇與使用
2.2.1光照檢測(cè)模塊
本產(chǎn)品中使用光敏電阻檢測(cè),它是一個(gè)能自動(dòng)檢測(cè)周圍環(huán)境的光照強(qiáng)度,并
1
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
能通過外界環(huán)境的光照強(qiáng)度來改變自身電阻大小的器件。在本產(chǎn)品中使用光敏
電阻為了通過光照強(qiáng)度來控制燈光。
2.2.2超聲波模塊
在產(chǎn)品中安裝了一個(gè)超聲波測(cè)距的元件,該元件有2cm到400cm的非接觸
式距離測(cè)量功能。通過聲波發(fā)射器,接收器和控制電路共同構(gòu)成。通過設(shè)置固
定值,然后在通過超聲波測(cè)量是否比設(shè)置值大或小時(shí),將會(huì)自動(dòng)對(duì)燈光進(jìn)行變
化。
2.3系統(tǒng)框圖設(shè)計(jì)
控制電路的開關(guān)放在汽車遠(yuǎn)近燈開關(guān)上,在遠(yuǎn)光燈開啟時(shí),會(huì)啟動(dòng)自動(dòng)控
制系統(tǒng)。在對(duì)面有車時(shí),車燈或反光鏡的反射光會(huì)被“光檢測(cè)輸入端”捕捉,然
后電路會(huì)對(duì)單片機(jī)發(fā)出有效高電平,接著單片機(jī)會(huì)通過程控方式來檢測(cè)“光檢
測(cè)輸入端”發(fā)出的信號(hào)是否有效。如果,信號(hào)有效則會(huì)開啟“控制光亮輸出
端”將車燈改為近光燈;否則會(huì)繼續(xù)檢測(cè)輸入信號(hào)。
其中系統(tǒng)框圖如圖2-1所示
控制電路開關(guān)
光檢測(cè)控制光亮
STC89C52
輸入端輸出端
時(shí)鐘電路復(fù)位電路
圖2-1系統(tǒng)框圖
3產(chǎn)品硬件設(shè)計(jì)
3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì)
C51單片機(jī)是該產(chǎn)品的核心元件,所以讓性能更強(qiáng),工作模式更多,速度更
快的STC89C52RC單片機(jī)成為控制電路的核心,其原理圖如圖3-1。
2
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-1STC89C52RC原理圖
3.2按鍵電路設(shè)計(jì)
本產(chǎn)品使用了單片機(jī)P35,P36,P37三個(gè)接口,再通過按鍵來設(shè)置超聲波的
距離值和光敏電阻的阻值,圖3-2示。
圖3-2按鍵原理圖
手動(dòng)模式下:
第一個(gè)按鍵:按一下是開啟近光燈。
按兩下是關(guān)閉近光燈。
第二個(gè)按鍵:按一下是開啟遠(yuǎn)光燈。
按兩下是關(guān)閉遠(yuǎn)光燈。
第三個(gè)按鍵:可以轉(zhuǎn)換模式
顯示屏出現(xiàn)字母“s”變?yōu)槭謩?dòng)模式。
3
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
出現(xiàn)字母“z”變?yōu)樽詣?dòng)模式。
自動(dòng)模式下:
第一個(gè)按鍵:按一下可以進(jìn)入設(shè)置模式。
在按一下是退出設(shè)置模式
第二個(gè)按鍵:按一下增加超聲波距離和光照閾值。
第三個(gè)按鍵:按一下減少超聲波距離和光照閾值。
3.3LCD1602液晶顯示模塊電路
液晶顯示在本產(chǎn)品中主要用來顯示超聲波距離和光照閾值。它主要用來顯
示符號(hào),數(shù)字等,是一款點(diǎn)陣型液晶顯示模塊。
液晶顯示是通過對(duì)液晶物理特性的利用,再通過電壓控制顯示區(qū)域,通電就
可以顯現(xiàn),還能顯示出圖像和字母,有薄并在大規(guī)模集成電路中使用,還具備直
接通過驅(qū)動(dòng)和易全彩顯示的特點(diǎn),并廣泛應(yīng)用在游戲機(jī),電腦,電視等。
液晶顯示器作為輸出器件的優(yōu)點(diǎn):
1.顯示質(zhì)量高,收到信號(hào)后會(huì)穩(wěn)定保持色彩和亮度并不會(huì)閃爍。
2.由數(shù)字接口,簡(jiǎn)單方便可靠。
3.體積小,重量輕,輻射低。
4.功耗低,對(duì)比其他顯示器耗電量更少。
液晶顯示原理圖如圖3-3所示
圖3-3LCD1602液晶顯示原理圖
4
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
3.4LED電路的設(shè)計(jì)
LED燈是由一種半導(dǎo)體材料制作的,能直接將電能轉(zhuǎn)化成光能的發(fā)光顯示
器。具有節(jié)能,環(huán)保,安全,功耗低等特點(diǎn),廣泛在各個(gè)領(lǐng)域中使用。在本產(chǎn)品中
作為遠(yuǎn)近燈,在光敏電阻檢測(cè)光照強(qiáng)度是否小于設(shè)置值時(shí),如果是,會(huì)開啟燈;反
之,不會(huì)開啟燈光。在通過超聲波測(cè)距檢測(cè)距離是否大于設(shè)置值;如果是,為
遠(yuǎn)光燈。反之,則為近光燈。LED燈原理圖如圖3-4所示。
圖3-4LED燈原理圖
4產(chǎn)品軟件設(shè)計(jì)
4.1主程序流程圖
該產(chǎn)品程序是通過在kei5uVision軟件中編寫,主要功能有檢測(cè)光的輸入是否
有效和P1.2電平高低等,其主程序流程圖如圖4-1所示。
開始
光檢測(cè)輸入是否
否有效
P1.2為高電平,繼電器關(guān)
是
閉,
遠(yuǎn)光變近光
調(diào)用延時(shí)程序
5
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
P1.2為低電平,繼電器開
啟,
近光變遠(yuǎn)光
結(jié)束
圖4-1主程序流程圖
4.2LCD1602液晶顯示程序設(shè)計(jì)
**********************lcd16上顯示兩位十進(jìn)制數(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è)計(jì)
{
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)品的程序主要由初始化程序,單片機(jī)頭文件,顯示程序,按鍵程序,延時(shí)程
序,超聲波測(cè)距程序,定時(shí)中斷程序等組成。清單如下圖所示。
圖4-3程序清單圖
7
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5產(chǎn)品使用說明
5.1產(chǎn)品裝配圖
產(chǎn)品主要由STC89C52單片機(jī),超聲波模塊,LCD1602顯示,電阻,晶振,遠(yuǎn)近光
燈,光敏電阻,電容,電阻,按鍵模塊,開關(guān),電源等組成。裝配圖如下所示
圖5-1產(chǎn)品裝配圖
5.2產(chǎn)品調(diào)試
第一步:未接通電源產(chǎn)品實(shí)物圖
圖5-2產(chǎn)品實(shí)物圖
8
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
第二步:接通電源,在光照小于設(shè)置的光照值,距離小于設(shè)置的距離,開啟近
光燈。
圖5-2-1近光燈開啟
第三步:在光照小于設(shè)置的光照值,距離大于設(shè)置的距離,開啟遠(yuǎn)光燈。
圖5-2-2遠(yuǎn)光燈開啟
第四步:在光照大于設(shè)置的光照值時(shí),遠(yuǎn)近燈關(guān)閉。
9
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖5-2-3遠(yuǎn)近光關(guān)閉
5.3產(chǎn)品使用說明
1.將產(chǎn)品放在桌面,讓LCD1602顯示屏面向自己。
2.將USB接口和DC電源座連通,接通電源后,顯示屏第一行會(huì)顯示距離,
第二行顯示光照值。
3.第一個(gè)按鍵可以設(shè)置距離和光照閾值,進(jìn)入設(shè)置頁面后;第二個(gè)和第三
個(gè)按鍵可以加減距離和光照閾值;再按第一個(gè)按鍵可以退出設(shè)置界面。
4.第三個(gè)按鍵可以切換自動(dòng)和手動(dòng)模式。
5.自動(dòng)模式下,通過超聲波和光敏電阻測(cè)量光照是否小于設(shè)置的光照值,
距離是否小于設(shè)置的距離,如果小于會(huì)開啟近光燈;反之在光照小于設(shè)置的光
照值,距離大于設(shè)置的距離,則會(huì)開啟遠(yuǎn)光燈;在光照大于設(shè)置的光照值,燈光
全部關(guān)閉。
6.手動(dòng)模式下,通過第一個(gè)按鍵,開啟遠(yuǎn)光燈;第二個(gè)按鍵,開啟近光燈。
7.通過LCD1602顯示屏來查看當(dāng)前距離和光照值。
6、產(chǎn)品設(shè)計(jì)技術(shù)標(biāo)準(zhǔn)
[1]J-STD-001E電氣與電子組件的焊接要求
10
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
[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計(jì)算機(jī)軟件文檔編制規(guī)范。
7參考資料
[1]單片機(jī)技術(shù)在智能家具中的應(yīng)用與發(fā)展[J].李立文,彭森.家庭生活指南.2019(07)
[2]基于單片機(jī)的車載酒精含量自檢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].廖梅花.現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化.2021(10)
[3]基于單片機(jī)的可拼車出租車計(jì)價(jià)系統(tǒng)的設(shè)計(jì)[J].王淑嬌,楊寶山.信息技術(shù)與信息化.2017(07)
[4]基于51單片機(jī)的智能酒駕預(yù)防系統(tǒng)[J].徐昊元,曹誠(chéng)偉,舒煜喬,周家樂,史志鵬.電子制
作.2022(21)
[5]基于單片機(jī)技術(shù)的汽車遠(yuǎn)近光自動(dòng)切換裝置分析[J].王銳.農(nóng)家參謀.2020(04)
[6]基于單片機(jī)的自平衡小車設(shè)計(jì)與實(shí)現(xiàn)[J].曹杰,藍(lán)賢桂,周書民,劉琦,謝冬輝,肖靜.科技廣
場(chǎng).2017(06)
[7]《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》2021年總目次[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用.2021(12)
[8]單片機(jī)技術(shù)在電子技術(shù)創(chuàng)新模塊中的應(yīng)用[J].周行政.造紙裝備及材料.2021(07)
[9]單片機(jī)技術(shù)在電氣傳動(dòng)系統(tǒng)中的應(yīng)用策略[J].嚴(yán)棟梁.信息記錄材料.2021(12)
11
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄
附錄1元器件清單
12
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄2電路原理圖
13
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄3PCB設(shè)計(jì)圖
14
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄4產(chǎn)品實(shí)物圖
15
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
16
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
附錄5主程序代碼
#include<reg52.h>//調(diào)用單片機(jī)頭文件
#defineucharunsignedchar//無符號(hào)字符型宏定義變量范圍0~255
#defineuintunsignedint//無符號(hào)整型宏定義變量范圍0~65535
#include<intrins.h>
sbitCS=P2^0;//CS定義,連接ADC0832CS腳
sbitSCL=P2^2;//SCL定義,連接ADC0832SCL腳
sbitDO=P2^3;//DO定義,連接ADC0832DO腳
//這三個(gè)引腳參考資料
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;//用來保存定時(shí)器0的時(shí)候的
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è)計(jì)
uchara_a;
#defineRdCommand0x01//定義ISP的操作命令
#definePrgCommand0x02
#defineEraseCommand0x03
#defineError1
#defineOk0
#defineWaitTime0x01//定義CPU的等待時(shí)間
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;/*寫入硬件延時(shí)*/
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è)計(jì)
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í)函數(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è)計(jì)
}
*****************把設(shè)置溫度數(shù)據(jù)保存到單片機(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ù)從單片機(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);
}
/**************開機(jī)自檢eeprom初始化*****************/
voidinit_eeprom()
{
read_eeprom();//先讀
if(a_a!=2)//新的單片機(jī)初始單片機(jī)內(nèi)問eeprom
{
set_d=70;
a_a=2;
ruo_gx=20;
write_eeprom();
}
}
/********************************************************************
*名稱:delay()
*功能:延時(shí),延時(shí)時(shí)間大概為5US。
*輸入:無
*輸出:無
********************************************************************
20
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
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上顯示兩位十進(jìn)制數(shù)***********************/
voidwrite_sfm2(ucharhang,ucharadd,uchardate)
21
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
{
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初始化,請(qǐng)參考1602的資料
*輸入:無
*輸出:無
********************************************************************/
voidinit_1602()
{
write_com(0x38);//
write_com(0x0c);
write_com(0x06);
}
/********************************************************************
*名稱:write_string(ucharhang,ucharlie,uchar*p)
*功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開始顯示"abcd
ef",調(diào)用該函數(shù)如下
write_string(1,5,"abcdef;")
22
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
*輸入:行,列,需要輸入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;
/********************獨(dú)立按鍵程序*****************/
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個(gè)
case0xb0:key_can=2;break;//左邊第2個(gè)
case0xd0:key_can=1;break;//左邊第3個(gè)
}
}
}
else
key_new=1;
}
/***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)***********************************/
23
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
//請(qǐng)先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來讀本函數(shù),主要是對(duì)應(yīng)時(shí)序圖
來理解,本函數(shù)是模擬0832的串行協(xié)議進(jìn)行的
//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í)函數(shù)*****************************/
24
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
voiddelay()
{
_nop_();//執(zhí)行一條_nop_()指令就是1us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/*********************超聲波測(cè)距程序*****************************/
voidsend_wave()
{
c_send=1;//10us的高電平觸發(fā)
delay();
c_send=0;
TH0=0;//給定時(shí)器0清零
TL0=0;
TR0=0;//關(guān)定時(shí)器0定時(shí)
while(!c_recive);//當(dāng)c_recive為零時(shí)等待
TR0=1;
while(c_recive)//當(dāng)c_recive為1計(jì)數(shù)并等待
{
flag_time0=TH0*256+TL0;
if((flag_time0>40000))//當(dāng)超聲波超過測(cè)量范圍時(shí),顯示3個(gè)888
{
TR0=0;
flag_csb_juli=2;
distance=888;
break;
}
else
{
flag_csb_juli=1;
}
}
if(flag_csb_juli==1)
{
TR0=0;//關(guān)定時(shí)器0定時(shí)
distance=flag_time0;//讀出定時(shí)器0的時(shí)間
distance*=0.017;//0.017=340M/2=170M=0.017M
算出來是米
25
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
if((distance>500))//距離=速度*時(shí)間
{
distance=888;//如果大于3.8m就超出超聲波的量程
}
}
}
/*********************定時(shí)器0、定時(shí)器1初始化******************/
voidtime_init()
{
EA=1;//開總中斷
TMOD=0X11;//定時(shí)器0、定時(shí)器1工作方式1
ET0=1;//開定時(shí)器0中斷
TR0=1;//允許定時(shí)器0定時(shí)
ET1=1;//開定時(shí)器1中斷
TR1=1;//允許定時(shí)器1定時(shí)
}
/*******************按鍵執(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)移動(dòng)到
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==2)
{
write_sfm2(2,7,ruo_gx);//設(shè)置光線的參數(shù)
write_com(0x80+0x40+6);//將光標(biāo)移動(dòng)到
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1>=3)
{
menu_1=0;
26
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
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++;//加超聲波距離報(bào)警數(shù)據(jù)
if(set_d>=500)
set_d=500;
key_can=0;
}
if(key_can==3)//
{
set_d--;//減超聲波距離報(bào)警數(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)移動(dòng)到
write_com(0x0f);//顯示光標(biāo)并且閃爍
write_eeprom();//保存數(shù)據(jù)
}
if(menu_1==2)//設(shè)置弱光報(bào)警
{
if(key_can==2)//
{
ruo_gx++;//加弱光報(bào)警數(shù)據(jù)
if(ruo_gx>=99)
ruo_gx=99;
key_can=0;
}
if(key_can==3)//
{
ruo_gx--;//減強(qiáng)光報(bào)警數(shù)據(jù)
if(ruo_gx<=1)
ruo_gx=1;
27
1湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
key_can=0;
}
write_sfm2(2,7,ruo_gx);
write_com(0x80+0x40+6);//將光標(biāo)移動(dòng)到
write_com(0x0f);//顯示光標(biāo)并且閃爍
write_eeprom();//保存數(shù)據(jù)
}
}
/********************************************************************
*名稱:Main()
*功能:主函數(shù)
*輸入:無
*輸出:無
********************************************************************
voidMain()
{
delay_1ms(150);
P0=P1=P2=P3=0xff;//初始化單片機(jī)IO口為高電平
init_1602();
time_init();//定時(shí)器初始化程序
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è)計(jì)
}
if(flag_shou==0)
{
write_com(0x80+0x40+1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州工商學(xué)院《譜學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 終止合同書協(xié)議書
- 作業(yè)之道模板
- 二零二五版店面轉(zhuǎn)讓協(xié)議書樣板
- 二零二五版執(zhí)業(yè)藥師租賃合同書范例
- 二零二五版汽車運(yùn)輸合同書標(biāo)準(zhǔn)文本
- 二零二五版電子商務(wù)公司股權(quán)分配協(xié)議書
- 二零二五股權(quán)轉(zhuǎn)讓回購(gòu)協(xié)議范例
- 音樂時(shí)光穿梭
- 常用擔(dān)保貸款合同模板
- 外研版(一起)二年級(jí)英語下冊(cè)全冊(cè)教案教學(xué)設(shè)計(jì)版
- 農(nóng)村建房安全合同書參考
- 橋梁工程梁板的預(yù)制和安裝監(jiān)理實(shí)施細(xì)則
- 施工電梯租賃合同及安全協(xié)議
- 加油站臨時(shí)用電專項(xiàng)方案
- 青島農(nóng)業(yè)大學(xué)畢業(yè)實(shí)習(xí)鑒定表
- MTBF測(cè)試驗(yàn)證規(guī)范文件和報(bào)告
- 2019第五版新版PFMEA 注塑實(shí)例
- (完整word版)計(jì)算機(jī)社團(tuán)活動(dòng)記錄
- 水池滿水試驗(yàn)記錄表(自動(dòng)計(jì)算)
- 2020年安徽省中考英語試題及參考答案與解析
評(píng)論
0/150
提交評(píng)論