51单片机驱动超声波测距模块C51程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机驱动超声波测距模块C51程序
#include;
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//******************* 函数声明
**************************
void init_Total(); //总初始化
void init_T0(); //初始化定时器T0
void init_T1(); //初始化定时器T1
void init_inter0();//初始化外部中断1
void send_T();
void delay(uint z);//延时一段时间
void delay_300us();//延时300us
void delay_100us();//延时100us
//*********************************************** *********
sbit lcdrs=P1^7;
sbit lcdrw=P3^1;
sbit lcden=P1^5;//1602液晶控制端
sbit send=P1^0;
//sbit BEEP=P2^5;
sbit wei=P2^6;
sbit duan=P2^7;
volatile uchar Count_TH ,Count_TL;//分别读计数器T1的高位TH1,低位TL1
uchar t0,flag;
uint time;
uchar code table1[]=" distance "; uchar code table2[]=" ";//初始化显示
void write_com(uchar com)//1602写指令函数
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
void write_data(uchar datb)//1602写数据函数{
lcdrs=1;
P0=datb;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void distance(uchar addr,uint datb)
{
uchar bai,shi,ge ;
bai=datb/100;
shi=datb%100/10;
ge=datb%10;
write_com(0x80+0x40+addr);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
/************************************************ **************************************
* 名称:void init_Total()
* 功能:总初始化
* 入口参数:NULL
* 全局变量:NULL
* 返回值:NULL
************************************************* *************************************/
void init_Total()
{
init_T0(); //初始化定时器T0为工作方式2 init_T1(); //初始化定时器T1为工作方式1 init_inter0();//初始化外部中断1
EA=1; //开总中断
}
/************************************************ **************************************
* 名称:void init_T0()
* 功能:初始化定时器T0为工作方式2
* 入口参数:NULL
* 全局变量:NULL
* 返回值:NULL
************************************************* *************************************/
void init_T0()
{
TMOD=0X12;
TH0=0XE7;
TL0=0XE7;
EA=0;
ET0=1;
TR0=1;
}
/************************************************ **************************************
* 名称:void init_T1()
* 功能:初始化定时器T1为工作方式1
* 入口参数:NULL
* 全局变量:NULL
* 返回值:NULL
************************************************* *************************************/
void init_T1()
{
TMOD=0X12;
TH1=0;
TL1=0;
EA=0;
ET1=1;
TR1=1;
}
/************************************************ **************************************
* 名称:void init_inter1()
* 功能:初始化外部中断1为低电平触发方式
* 入口参数:NULL
* 全局变量:NULL
* 返回值:NULL
************************************************* *************************************/
void init_inter0()
{
IT0=0; //低电平触发