历史上的今天
返回首页

历史上的今天

今天是:2024年09月21日(星期六)

2020年09月21日 | 两轮巡线小车源程序 2个红外传感器

2020-09-21 来源:51hei

传感器:2个红外传感器


程序如下:

#include //52头文件

unsigned char pwm_left_val; //左电机占空比值 取值范围0-170,0最快

unsigned char pwm_right_val; //右电机占空比值取值范围0-170 ,0最快

unsigned char pwm_t;//周期

////////////////////////////////////

/*电机驱动IO定义*/

sbit IN1 = P1^0; //为1 左电机反转

sbit IN2 = P1^1; //为1 左电机正转

sbit IN3 = P1^2; //为1 右电机正转

sbit IN4 = P1^3; //为1 右电机反转

sbit EN1 = P1^6; //为1 左电机使能

sbit EN2 = P1^7; //为1 右电机使能

sbit left_led = P2^0;//左寻迹信号,为0没有识别到黑线,为1识别到黑线

sbit right_led = P2^3;//右寻迹信号,为0没有识别到黑线,为1识别到黑线


#define left_motor_en  EN1 = 1 //左电机使能

#define right_motor_en  EN2 = 1 //右电机使能


#define left_motor_stops IN1 = 0, IN2 = 0//左电机停止

#define right_motor_stops IN3 = 0, IN4 = 0//右电机停止

#define left_motor_go  IN1 = 0, IN2 = 1//左电机正传

#define left_motor_back  IN1 = 1, IN2 = 0//左电机反转

#define right_motor_go  IN3 = 1, IN4 = 0//右电机正传

#define right_motor_back IN3 = 0, IN4 = 1//右电机反转

///////////////////////////////////////////////////////////////////

/*延时*/

void delay(unsigned int z)//毫秒级延时

{

        unsigned int x,y;

        for(x = z; x > 0; x--)

                for(y = 110; y > 0 ; y--);

}        

/*小车前进*/

void forward()

{

        pwm_left_val= pwm_right_val=100;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}

/*小车左转*/

void xiaoleft_run()

{

        pwm_left_val=170;

        pwm_right_val=100;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}

/*小车右转*/

void xiaoright_run()

{

        pwm_left_val=100;

        pwm_right_val=170;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}


void timer0_init()

{

TMOD |= 0x02;//8位自动重装模块

TH0 = 220;

TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ

TR0 = 1;//启动定时器0

ET0 = 1;//允许定时器0中断

EA  = 1;//总中断允许


}

int main()

{

timer0_init();

delay(100);//延时1秒

while(1)

{

  //为0 没有识别到黑线 为1识别到黑线

  if(left_led==0&&right_led==0)

  {

   forward();//前进

   delay(100);

  }

  else if( left_led == 1 && right_led== 0 )//左边触线,小左转修正

  {

   xiaoleft_run();

   delay(200);

  }

  else if(left_led == 0 && right_led== 1  )//右边触线,小右转修正

  {

   xiaoright_run();

   delay(200);

  }        

}               

}

//定时器0中断

void timer0() interrupt 1

{

        pwm_t++;//周期计时加

        if(pwm_t == 155)

                pwm_t = EN1 = EN2 = 0;

        if(pwm_left_val == pwm_t)//左电机占空比        

                EN1 = 1;               

        if(pwm_right_val == pwm_t)//右电机占空比

                EN2 = 1;                        

}


推荐阅读

史海拾趣

Elprotronic Inc.公司的发展小趣事

在Elprotronic Inc.公司创立的初期,面临着电子元器件市场竞争激烈、技术更新迅速的挑战。公司创始人凭借对电子元器件市场的深刻理解和敏锐的洞察力,决定专注于提供高质量和可靠的嵌入式MCU闪存编程解决方案。他们深知,在电子行业,产品质量和技术创新是企业生存和发展的关键。因此,Elprotronic Inc.从一开始就注重技术研发和产品质量控制,逐渐在市场上树立了良好的口碑。

General Cable公司的发展小趣事
内部集成振荡器与定时发生器、地址产生电路、控制逻辑电路和编码产生电路等,最多可提供12位地址或6位数据编码,提供高达531441(3^12)种码,适用于复杂的遥控系统。
Herley New York公司的发展小趣事
YN5103支持射频输出和红外遥控输出。射频输出时,工作频率在VHF(48.5MHz~223MHz)频段范围内;红外遥控时,红外载波频率为38MHz~40kHz。
Gamewell-FCI ( Honeywell )公司的发展小趣事
在红外遥控应用中,通信距离可能受到发射功率、接收灵敏度、环境光干扰等因素的影响。解决方法包括增加发射功率(在允许范围内)、使用更高灵敏度的接收头、优化发射和接收角度等。
Hong Kong X'Tals Ltd公司的发展小趣事
由于环境温度和元件参数的变化,实际定时时间可能会有所偏差。在设计时需要考虑这一因素,并留出适当的裕量。
三环(CCTC)公司的发展小趣事

三环(CCTC)公司自1970年成立以来,便致力于电子基础材料、电子元件和通信器件的研发与生产。在创立初期,公司面临着技术落后和资金短缺的困境,但通过不懈的努力和持续的研发投入,逐渐在电子行业中崭露头角。公司积极引进国外先进技术和设备,同时培养了一支高素质的研发团队,为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

电子设计大赛题目征集

本帖最后由 paulhyde 于 2014-9-15 09:31 编辑 各位大虾能帮着想一些电子设计大赛的题目吗?主要针对单片机控制类的,不甚感激,  …

查看全部问答>

Msp430F449时钟各模块运用例程

Msp430F449各种模块运用例程,包含了:Basictimer,Timer_A,Timer_B,ADC12,时钟模块FLL+操作,…

查看全部问答>

wince下如何编译armv6的程序

使用ce6.0,平台cpu是armv6指令集的。 vs2005的工程设置中只有armv4和armv5,怎么编armv6的应用? 或者vs2008可以编armv6吗…

查看全部问答>

广州招聘 嵌入式开发人员 重分找顶!!

名称:广州市百家汇技术研发中心 地址:广州市天河区 简介:本中心是集软件系统、单片机、模型等设计和开发为一体的研发机构。公司拥有多名技术过硬的高级工程师。并且与北京航天航空大学进行学术联盟,各种新技术都在这里不断的产生和应用。公司 ...…

查看全部问答>

WinCE ping 的问题

定制了一个CE6.0的映像,从设备可以ping 主机,但是从主机不能够ping到设备, 如果换一个ce5.0,则没有问题,请问是定制时哪方面的问题?…

查看全部问答>

Operational amplifier gain stability Part 1 General system analysis

本帖最后由 dontium 于 2015-1-23 13:38 编辑  Operational amplifier gain stability Part 1 General system analysis …

查看全部问答>

如何查找STM32和STM8的官方文档

1)进入ST中文主页:http://www.stmicroelectronics.com.cn/ 2)在“产品”栏目点击“微控制器”,就可以看到下面的界面: 下载 (55.5 KB) 2010-2-4 16:55 ----------------------------------------------- 还可以 ...…

查看全部问答>

有关三极管饱和区间的疑问

1、深度饱和是不是三极管介于截止区和饱和区的临界点? 2、深度饱和Uce是不是一定为0.3V?还是不同的管子有不同的值。 3、当Ube大于开启电压,Uce小于0.3V(或深度饱和电压)时,三极管处于什么样的工作状态?…

查看全部问答>

国行iPhone4S拆机——内部构造详解

一部iPhone4s国行16GB就这样牺牲了,掉海里了,主板全烧,我来发挥下它最后的价值。拆了吧!以前拆了就扔了,这次我想拆了再装回去。 工具 卸下电池螺丝,就可以把插口拔出来,电池就下来了 本人是新手,所以只能用这个方法不让零件遗失,WIFI模 ...…

查看全部问答>

【MXCHIP Open1081】哪有可用的IAR工程???

本帖最后由 dontium 于 2014-11-17 21:53 编辑 打开官方提供的IAR工程,好多文件,特别是关键文件不存在。 如上图中,只有system_smt32f2xx.c及startup_stm32f2xx.s能打开,其它的都不存在! 更可恶的是,项目中指定的一个关键文件 ---- mxch ...…

查看全部问答>