标题:
单片机灭火小车源程序
[打印本页]
作者:
2983606955
时间:
2020-9-20 10:24
标题:
单片机灭火小车源程序
单片机源程序如下:
#include<reg52.h>
#include <intrins.h>
/********IO引脚定义***********************************************************/
sbit SPK=P3^7; //蜂鸣器驱动引脚
sbit LED1=P0^0; //LED
sbit LED2=P0^1; //
sbit gy=P1^2; //光敏电阻 右
sbit g0=P1^3; // 中
sbit gz=P1^4; // 左
sbit d1=P1^0; //对管 右 黑线高电平(==1)
sbit d2=P1^1; // 左
sbit a1=P2^0; //电机驱动
sbit a2=P2^1;
sbit b1=P2^2;
sbit b2=P2^3;
sbit f1=P2^4; //风扇驱动
sbit f2=P2^5; //
/************************************************
延时函数
************************************************/
void DelayMs(unsigned int timer) //参数 整型timer 大小范围 0-65536,决定延时时间长短
{
int x,y;
for(x=timer;x>0;x--)
for(y=120;y>0;y--);
}
/************************************************
电机转动函数定义
************************************************/
/*** 前进 ***/
void QianJin()
{
a1=0;
a2=1;
b1=0;
b2=1;
}
/*** 后退***/
void HaoDu()
{
a1=1;
a2=0;
b1=1;
b2=0;
}
/*** 左转 ***/
void ZuoZhuan()
{
a1=1;
a2=0;
b1=0;
b2=1;
}
/*** 右转 ***/
void YouZhuan()
{
a1=0;
a2=1;
b1=1;
b2=0;
}
/*** 停止 ***/
void Stop()
{
a1=1;
a2=1;
b1=1;
b2=1;
}
/************************************************
风扇函数定义
************************************************/
void Feng()
{
f1=1;f2=0;
DelayMs(3000);//风扇转3秒
f1=1;f2=1;
SPK=0;
DelayMs(1000);
SPK=1;
}
/************************************************
循迹子程序
************************************************/
void xunjin()
{
Stop();
LED1=1;LED2=1;
while(d1==0&&d2==0)
{
LED1=1;LED2=1;
QianJin();
}
while(d1==1&&d2==0)
{ LED1=0;
YouZhuan();DelayMs(200);
}
while(d1==0&&d2==1)
{ LED2=0;
ZuoZhuan();DelayMs(200);
}
while(d1==1&&d2==1)
{
Stop();LED1=1;LED2=1;
}
}
/*
******************************************************************************************
** 函数名称: main
** 函数功能: 主函数
** 入口参数: 无
** 出口参数: 无
******************************************************************************************
*/
void main()
{
while(1)
{
Stop();
LED1=1;LED2=1;
while(d1==0&&d2==0)//两个对管检测到白纸前进
{
LED1=1;LED2=1;
QianJin();
/*如果右边光敏检测到光源右转对准光源则前往光源执行灭火程序 */
if(gy==0){
while(g0==1)YouZhuan();DelayMs(50);
QianJin();DelayMs(2000);//前进距离
Stop();
Feng();//如果灭灯模拟灭火则用while(g0==0){f1=1;f2=0;}f1=1;f2=1;SPK=0;DelayMs(1000);SPK=1;
while(d1==0&&d2==0)HaoDu();
QianJin();DelayMs(500);
while(d1==0)ZuoZhuan();
while(1)xunjin();
}
/*如果左边光敏检测到光源右转对准光源则前往光源执行灭火程序 */
if(gz==0){
while(g0==1)ZuoZhuan();DelayMs(50);
QianJin();DelayMs(2000);//前进距离
Stop();
Feng();//如果灭灯模拟灭火则用while(g0==0){f1=1;f2=0;}f1=1;f2=1;SPK=0;DelayMs(1000);SPK=1;
while(d1==0&&d2==0)HaoDu();
QianJin();DelayMs(500);
while(d2==0)YouZhuan();
while(1)xunjin();
}
}
while(d1==1&&d2==0)//右对管检测到黑线右转
{ LED1=0;
YouZhuan();DelayMs(200);
}
while(d1==0&&d2==1)//左对管检测到黑线左转
{ LED2=0;
ZuoZhuan();DelayMs(200);
}
while(d1==1&&d2==1)//两个对管检测到黑线停止
{
Stop();LED1=1;LED2=1;
}
}
}
复制代码
hex文件:
灭火小车程序.zip
(35.34 KB, 下载次数: 17)
2020-9-20 10:24 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
yao药
时间:
2022-4-12 18:24
求源码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1