当前位置:首页 > 基于单片机的超声波测距仪设计
齐鲁工业大学毕业2013届本科毕业设计(论文)
2. 系统主程序
//DYP-ME007 超声波测距模块 DEMO 程序
============================================================== SMC1602A(16*2)模拟口线接线方式 连接线图[8]:
LCM------51 | RW-------P3.4 | RS-------P3.3 | E--------P3.5 | VLCD接1K电阻到GND|
--------------------------------------------------- |LCM-----51 | LCM-----51 | |DB0-----P1.0 | DB4-----P1.4 | |DB1-----P1.1 | DB5-----P1.5 | |DB2-----P1.2 | DB6-----P1.6 | |DB3-----P1.3 | DB7-----P1.7 |
--------------------------------------------------|
---------------------------------------------------
接线:模块TRIG接 P2.6 ECH0 接P2.7 模块TRIG接 P2.4 ECH0 接P2.5 [注:AT89x51使用12M或11.0592M晶振,实测使用11.0592M]
=============================================================*/ #include
/*-------------------------------------------------------------------------- INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__ #define __INTRINS_H__
extern void _nop_ (void); extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
21
//器件配置文件
齐鲁工业大学毕业2013届本科毕业设计(论文)
extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); #endif
#define RX1 P2_7 #define TX1 P2_6 #define RX2 P2_5 #define TX2 P2_4
#define LCM_RW P2_1 //定义LCD引脚 #define LCM_RS P2_0 #define LCM_E P2_2 #define LCM_Data P0
#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 WCLCM,BuysC);
22
齐鲁工业大学毕业2013届本科毕业设计(论文)
unsigned char ReadDataLCM(void); unsigned char ReadStatusLCM(void);
unsigned char code mcustudio[] ={%unsigned char code email[] = {%unsigned char code Cls[] = {%unsigned char code ASCII[17] =
{'0','1','2','3','4','5','6','7','8','9','.','-','M','q','z','f',};
static unsigned char DisNum = 0; //显示用指针 unsigned int time1=0; //写数据
void WriteDataLCM(unsigned char WDLCM) { } //写指令
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测 {
unsigned int time2=0; unsigned long S1=0; unsigned long S2=0; bit flag1 =0; bit flag2 =0;
unsigned char disbuff[8] ={ 0,0,0,0,0,0,0,0,};
ReadStatusLCM(); //检测忙 LCM_Data = WDLCM; LCM_RS = 1; LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在这后加小的延时 LCM_E = 0; //延时 LCM_E = 1;
if (BuysC) ReadStatusLCM(); //根据需要检测忙
23
齐鲁工业大学毕业2013届本科毕业设计(论文)
}
LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0; LCM_E = 0; LCM_E = 0; LCM_E = 1;
//读数据
unsigned char ReadDataLCM(void) { } //读状态
unsigned char ReadStatusLCM(void) { }
void LCMInit(void) //LCM初始化 {
24
LCM_RS = 1; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; return(LCM_Data);
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);
共分享92篇相关文档