資源簡介
HC-SR04 超聲波測距 C51 精度2MM,調試通過

代碼片段和文件信息
/*?SMC1602A(16*2)模擬口線接線方式
連接線圖:
???????---------------------------------------------------
???????|LCM-----51???| LCM-----51???| LCM------51??????|
???????--------------------------------------------------|
???????|DB0-----P1.0?| DB4-----P1.4?| RW-------P3.4????|
???????|DB1-----P1.1?| DB5-----P1.5?| RS-------P3.3????|
???????|DB2-----P1.2?| DB6-----P1.6?| E--------P3.5????|
???????|DB3-----P1.3?| DB7-----P1.7?| VLCD接1K電阻到GND|
???????---------------------------------------------------
接線:模塊TRIG接?P2.6??ECH0?接P2.7
本程序源碼只供學習參考,不得應用于商業用途,如有需要請聯系作者。
[注:AT89x51使用12M或11.0592M晶振實測使用11.0592M]
=============================================================*/
#include? //器件配置文件
#include?
#define??RX??P3_3
#define??TX??P3_4
#define?LCM_RW??P1_1?//定義LCD引腳
#define?LCM_RS??P1_0
#define?LCM_E???P1_2
#define?LCM_Data??P0
#define?Key_Data?P2_0?//定義Keyboard引腳
#define?Key_CLK??P3_2
#define?Busy????0x80?//用于檢測LCM狀態字中的Busy標識
void?LCMInit(void);
void?DisplayOneChar(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?WCLCMBuysC);
unsigned?char?ReadDataLCM(void);
unsigned?char?ReadStatusLCM(void);
unsigned?char?code?mcustudio[]?={“Code?By?ChenBin“};
unsigned?char?code?email[]?=????{“McuCore@163.com?“};
unsigned?char?code?Cls[]?=??????{“????????????????“};
unsigned?char?code?ASCII[15]?=????{‘0‘‘1‘‘2‘‘3‘‘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?disbuff[5] ???={?00000};
//寫數據
void?WriteDataLCM(unsigned?char?WDLCM)?
{
ReadStatusLCM();?//檢測忙
LCM_Data?=?WDLCM;
LCM_RS?=?1;
LCM_RW?=?0;
LCM_E?=?0;?//若晶振速度太高可以在這后加小的延時
LCM_E?=?0;?//延時
LCM_E?=?1;
}
//寫指令
void?WriteCommandLCM(unsigned?char?WCLCMBuysC)?//BuysC為0時忽略忙檢測
{
if?(BuysC)?ReadStatusLCM();?//根據需要檢測忙
LCM_Data?=?WCLCM;
LCM_RS?=?0;
LCM_RW?=?0;
LCM_E?=?0;
LCM_E?=?0;
LCM_E?=?1;
}
//讀數據
unsigned?char?ReadDataLCM(void)
{
LCM_RS?=?1;?
LCM_RW?=?1;
LCM_E?=?0;
LCM_E?=?0;
LCM_E?=?1;
return(LCM_Data);
}
//讀狀態
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);?//檢測忙信號
return(LCM_Data);
}
void?LCMInit(void)?//LCM初始化
{
LCM_Data?=?0;
WriteCommandLCM(0x380);?//三次顯示模式設置,不檢測忙信號
Delay5Ms();?
WriteCommandLCM(0x380);
Delay5Ms();?
WriteCommandLCM(0x380);
Delay5Ms();?
WriteCommandLCM(0x381);?//顯示模式設置開始要求每次檢測忙信號
WriteCommandLCM(0x081);?//關閉顯示
WriteCommandLCM(0x011);?//顯示清屏
WriteCommandLCM(0x061);?//?顯示光標移動設置
WriteCommandLCM(0x0F1);?//?顯示開及光標設置
}
//按指定位置顯示一個字符
void?DisplayOneChar(uns
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-07-05?17:16??超聲波測距LC1602顯示\
?????文件???????17312??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量
?????文件????????7587??2011-07-05?16:25??超聲波測距LC1602顯示\脈寬測量.c
?????文件????????6442??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.hex
?????文件??????????33??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.lnp
?????文件???????15131??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.LST
?????文件???????18157??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.M51
?????文件???????19274??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.OBJ
?????文件????????1154??2011-07-05?11:37??超聲波測距LC1602顯示\脈寬測量.opt.bak
?????文件???????18630??2011-07-05?17:16??超聲波測距LC1602顯示\脈寬測量.plg
?????文件????????2095??2011-07-05?11:37??超聲波測距LC1602顯示\脈寬測量.Uv2.bak
?????文件???????68294??2011-07-05?17:16??超聲波測距LC1602顯示\脈寬測量.uvgui.Administrator
?????文件???????68294??2011-07-05?16:25??超聲波測距LC1602顯示\脈寬測量.uvgui_Administrator.bak
?????文件????????6444??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.uvopt
?????文件???????13250??2011-07-05?16:55??超聲波測距LC1602顯示\脈寬測量.uvproj
?????文件????????1149??2011-02-15?18:23??超聲波測距LC1602顯示\脈寬測量_Opt.Bak
?????文件????????1691??2011-02-18?13:22??超聲波測距LC1602顯示\脈寬測量_Uv2.Bak
?????文件????????6431??2011-07-05?16:54??超聲波測距LC1602顯示\脈寬測量_uvopt.bak
?????文件???????13231??2011-07-05?11:37??超聲波測距LC1602顯示\脈寬測量_uvproj.bak
- 上一篇:淘寶天貓秒殺助手瀏覽器插件.zip
- 下一篇:IT十八掌徐培成HADOOP筆記
評論
共有 條評論