51单片机驱动超声波测距模块C51程序
时间:11-30
来源:互联网
点击:
#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; //低电平触发 EA=0; EX0=0; //关外部中断1 } /************************************************************************************** * 名 称 :void inter_T0() interrupt 1 * 功 能 :定时器T0中断函数产生40KHZ的方波 * 入 口 参 数 :NULL * 全 局 变 量 :NULL * 返 回 值 :NULL **************************************************************************************/void inter_T0() interrupt 1 { send=~send; } /************************************************************************************** * 名 称 :void inter_T1() interrupt 3 * 功 能 :定时器T1中断函数 * 入 口 参 数 :NULL * 全 局 变 量 :NULL * 返 回 值 :NULL **************************************************************************
51单片机超声波测距模块C51程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)