超聲波測(cè)距1602顯示程序_第1頁(yè)
超聲波測(cè)距1602顯示程序_第2頁(yè)
超聲波測(cè)距1602顯示程序_第3頁(yè)
超聲波測(cè)距1602顯示程序_第4頁(yè)
超聲波測(cè)距1602顯示程序_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include <AT89x51.H>/器件配置文件#include <intrins.h>#define RX P2_7#define TX P2_6#define LCM_RW P3_4 /定義LCD引腳#define LCM_RS P3_3#define LCM_E P3_5#define LCM_Data P1#define Key_Data P2_0 /定義Keyboard引腳#define Key_CLK P3_2#define Busy 0x80 /用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)void LCMInit(void);void DisplayOneC

2、har(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,B

3、uysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned char code mcustudio ="mcustudio "unsigned char code email = "fhwxaoo163 "unsigned char code Cls = " "unsigned char code ASCII15 = '0','1','2','3','4'

4、,'5','6','7','8','9','.','-','M'static unsigned char DisNum = 0; /顯示用指針 unsigned int time=0; unsigned long S=0; bit flag =0; unsigned char disbuff4 = 0,0,0,0,;/寫數(shù)據(jù)void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /檢測(cè)忙LCM_Data = WD

5、LCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在這后加小的延時(shí)LCM_E = 0; /延時(shí)LCM_E = 1;/寫指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC為0時(shí)忽略忙檢測(cè)if (BuysC) ReadStatusLCM(); /根據(jù)需要檢測(cè)忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/讀數(shù)據(jù)unsigned char ReadDataLCM(void)LCM_RS = 1; LCM

6、_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);/讀狀態(tài)unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy); /檢測(cè)忙信號(hào)return(LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)Delay5M

7、s(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)WriteCommandLCM(0x08,1); /關(guān)閉顯示W(wǎng)riteCommandLCM(0x01,1); /顯示清屏WriteCommandLCM(0x06,1); / 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCM(0x0F,1); / 顯示開及光標(biāo)設(shè)置/按指定位置顯示一個(gè)字符void DisplayOneChar(unsigned char X,

8、unsigned char Y, unsigned char DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1if (Y) X |= 0x40; /當(dāng)要顯示第二行時(shí)地址碼+0x40;X |= 0x80; /算出指令碼WriteCommandLCM(X, 1); /發(fā)命令字WriteDataLCM(DData); /發(fā)數(shù)據(jù)/按指定位置顯示一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)unsigned char ListLe

9、ngth; ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListLength>0x19) /若到達(dá)字串尾則退出if (X <= 0xF) /X坐標(biāo)應(yīng)小于0xFDisplayOneChar(X, Y, DDataListLength); /顯示單個(gè)字符ListLength+;X+;/5ms延時(shí)void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/400ms延時(shí)void Delay400Ms(void)unsigne

10、d char TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/*/ void Conut(void) time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; /算出來(lái)是CM if(S>=700)|flag=1) /超出測(cè)量范圍顯示“-” flag=0; DisplayOneChar(0, 1, ASCII11); DisplayOneChar(1, 1, ASCII10);/顯示點(diǎn) DisplayOneChar(2, 1, AS

11、CII11); DisplayOneChar(3, 1, ASCII11); DisplayOneChar(4, 1, ASCII12);/顯示M else disbuff0=S%1000/100; disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; DisplayOneChar(0, 1, ASCIIdisbuff0); DisplayOneChar(1, 1, ASCII10);/顯示點(diǎn) DisplayOneChar(2, 1, ASCIIdisbuff1); DisplayOneChar(3, 1, ASCIIdisbuff2); Displa

12、yOneChar(4, 1, ASCII12);/顯示M /*/ void zd0() interrupt 1 /T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍 flag=1; /中斷溢出標(biāo)志 /*/ void StartModule() /啟動(dòng)模塊 TX=1; /啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _no

13、p_(); _nop_(); _nop_(); TX=0; /*/ void delayms(unsigned int ms)unsigned char i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);/*/void main(void)unsigned char TempCyc;Delay400Ms(); /啟動(dòng)等待,等LCM講入工作狀態(tài)LCMInit(); /LCM初始化Delay5Ms(); /延時(shí)片刻(可不要)DisplayListChar(0, 0, mcustudio);DisplayListChar(0, 1, email);ReadDataLCM();/測(cè)試用句無(wú)意義for (TempCyc=0; TempCyc<10; TempCyc+)Delay400Ms(); /延時(shí)DisplayListChar(0, 1, Cls);while(1) TMOD=0x01;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論