c语言超声波壁障源码,超声波避障源程序
#include //51头文件
#include //包含nop等系统函数
sbit RX = P2^0;//ECHO超声波模块回响端
sbit TX = P2^1;//TRIG超声波模块触发端
unsigned char pwm_left_val = 150;//左电机占空比值 取值范围0-170,0最快
unsigned char pwm_right_val = 150;//右电机占空比值取值范围0-170 ,0最快
unsigned char pwm_t;//周期
unsigned int time = 0;//传输时间
unsigned long S = 0;//距离
bit flag = 0;//超出测量范围标志位
void delay(unsigned int z)//毫秒级延时
{
unsigned int x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
void Delay10us(unsigned char i) //10us延时函数 启动超声波模块时使用
{
unsigned char j;
do{
j = 10;
do{
_nop_();
}while(--j);
}while(--i);
}
/*小车前进*/
void forward()
{
left_motor_go; //左电机前进
right_motor_go; //右电机前进
}
/*小车后退*/
void backward()
{
left_motor_back; //左电机后退
right_motor_back; //右电机后退
}
/*定时器1中断输出PWM信号*/
void timer1() interrupt 3
{
pwm_t++;//周期计时加
if(pwm_t == 255)
pwm_t = EN1 = EN2 = 0;
if(pwm_left_val == pwm_t)//左电机占空比
EN1 = 1;
if(pwm_right_val == pwm_t)//右电机占空比
EN2 = 1;
}
/*判断S2是否被按下*/
void keyscan()
{
for(;;) //死循环
{
if(key_s2 == 0)// 实时检测S2按键是否被按下
{
delay(5); //软件消抖
if(key_s2 == 0)//再检测S2是否被按下
{
while(!key_s2);//松手检测
beep = 0; //使能有源蜂鸣器
delay(200);//200毫秒延时
beep = 1; //关闭有源蜂鸣器
break; //退出FOR死循环
}
}
}
}
/*定时器0中断*/
void timer0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
void StartModule() //启动超声波模块
{
TX=1; //启动一次模块
Delay10us(2);
TX=0;
}
/*计算超声波所测距离并显示*/
void Conut()
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(float)(time*1.085)*0.17; //算出来是MM
if((S>=7000)||flag==1) //超出测量范围
{
flag=0;
}
}
/*超声波避障*/
void Avoid()
{
if(S > 150)//设置避障距离(单位毫米)
{
forward();
}
else
{
backward();
}
}
void main()
{
keyscan();//等待按键按下启动
delay(1000);//延时1秒
TMOD |= 0x20;//定时器1工作模式2,8位自动重装。用于产生PWM
TMOD |= 0x01;//定时器0工作模块1,16位定时模式。T0用测ECH0脉冲长度
TH1 = 220; //
TL1 = 220; //100HZ T1
TH0 = 0;
TL0 = 0;//T0,16位定时计数用于记录ECHO高电平时间
ET1 = 1;//允许T1中断
ET0 = 1;//允许T0中断
TR1 = 1;//启动定时器1
EA = 1;//启动总中断
while(1)
{
StartModule(); //启动模块测距
while(!RX); //当RX(ECHO信号回响)为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
Conut(); //计算距离
Avoid(); //避障
delay(65);
}
}
2018-4-27 18:09 上传
点击文件名下载附件
下载积分: 黑币 -5
46.42 KB, 下载次数: 60, 下载积分: 黑币 -5
c语言超声波壁障源码,超声波避障源程序相关推荐
- c语言超声波壁障源码,超声波避障小车源程序【精】
电子制作空间收集的这套入门级小车(只是入门级的,仅供参考)希望诸位入门智能车的吧友有所帮助.可以实现避障.寻迹.测距.寻找静态物体.做这个项目的经验,可分为四步. 第1步:根据实际情况确定智能小车所需 ...
- c语言超声波壁障源码,超声波避障小车源程序
#include int motorL1=6; //左边轮子 int motorL2=5; int motorR1=9; //右边轮子 int motorR2=11; int ledL=7; //转弯 ...
- 易语言窗口c_句柄取进程名,易语言窗口句柄取进程文件名源码
窗口句柄取进程文件名系统结构:句柄取进程文件名,CreateToolhelp32Snapshot,GetWindowThreadProcessId,CloseHandle,Module32First, ...
- 计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档
计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档 计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语 ...
- mysql数据库+易语言的应用_易语言mysql数据应用源码
易语言mysql数据应用源码 易语言mysql数据应用源码 系统结构:注册账号,连接Mysql,用户注册验证码,修改密码验证码,忘记密码验证码,修改密码,忘记密码, ======窗口程序集1 | | ...
- 易语言json置入_易语言json操作模块源码
易语言json操作模块源码 系统结构:初始化,解析,到文本,置属性,置属性对象,置属性数值,取属性数值,取属性对象,取通用属性,取属性,成员数,加成员,取成员,取成员文本,置成员,删成员,置类型,赋值 ...
- 易语言QQpost加好友源码
易语言QQpost加好友源码 以下是部分代码 .版本 2 .支持库 specGetQq (主动添加QQ) QQ空间页面 = 编码_Utf8到Ansi (网页_访问_对象 ("https:// ...
- c语言案例分析105,C语言实战105例源码
C语言实战105例源码 以下程序大家如有兴趣可在文件夹下载即可 第1部分 基础篇 实例1 一个价值"三天"的BUG 2 实例2 灵活使用递增(递减)操作符 5 实例3 算术运算符计 ...
- c语言贪吃蛇游戏源码下载,c语言贪吃蛇游戏源码.doc
c语言贪吃蛇游戏源码.doc /*运行是按任意键开始,不过呢,反向也算输哟*/include include include include include include include defin ...
最新文章
- java switch 表达式_尝鲜Java 12新特性:switch表达式
- 2017.4.2号总结
- 初学者python编辑器-面向初学者的Python编辑器Mu
- 牛客 - 配对(贪心+数学)
- 程序员的思考--终于确定了自己的技术发展方向
- Laravel核心代码学习--用户认证系统的实现细节
- ubuntu16.04利用SVN下载文件
- 华为外包软件公司集体罢工!
- 2013/06 事情发生之后都会显得云淡风轻
- 高级计算机网络(习题一加解析)
- 项目如行军——《孙子兵法》之九地篇
- SPA项目开发(首页导航左侧菜单)
- Web相关:Sublime如何安装ESLint插件?
- 8600 系列 VSM 用于磁性微型机器人以及韦根线研究
- 关于CC的完全非线性椭圆方程一书的一些小结
- Vrep中的视觉传感器添加,移动,旋转,和视图
- 查询英文期刊缩写的网站
- 北大CSAPP期末题
- 文化的影响:整体感知与分析感知
- 我的计算机制作幻灯片在哪,电脑ppt制作软件,电脑里制作PPT(幻灯片)的软件在哪?...
热门文章
- 网银支付(接入的是连连支付)
- js 年月日中文格式日期转换成Date
- win7c盘空间越来越小_技术员教你win7系统C盘空间越来越小导致C盘空间不足的设置方法...
- 【周易AIPU 仿真】在R329上部署VGG_16网络模型
- 【原创】2019.10.26模拟赛 Adore Confess Repulsed
- 魔兽世界服务器排队状态app,魔兽世界服务器排队插队软件-魔兽世界7.0服务器免排队辅助预约1.2.01[预约]-乐游网游戏...
- html 分页插件ajax,简易ajax生成分页插件
- 求一天是一年中的第几天
- Oracle锁表以及解表
- mysql创建数据库及中英文数据表--插入数据