为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

51单片机循迹小车程序

2019-02-12 9页 doc 22KB 411阅读

用户头像

is_215732

暂无简介

举报
51单片机循迹小车程序/*功能:寻迹小车 使用芯片:AT89S52 或者STC89C52 或AT89S51 STC89C51 晶振:12MHZ 编译环境:Keil 作者:MH~ */ #include // 引用标准库的头文件 #include #define uchar unsigned char #define uint unsigned int //=================电机驱动===================== sbit dianji_r = P3^0; //右边电机控制口,低电平转? sbi...
51单片机循迹小车程序
/*功能:寻迹小车 使用芯片:AT89S52 或者STC89C52 或AT89S51 STC89C51 晶振:12MHZ 编译环境:Keil 作者:MH~ */ #include // 引用库的头文件 #include #define uchar unsigned char #define uint unsigned int //=================电机驱动===================== sbit dianji_r = P3^0; //右边电机控制口,低电平转? sbit dianji_l = P3^7; //左边电机控制口,低电平转 //=============循迹感应接口====================== sbit xjmk_r = P3^2;// 右边寻迹模块检测口INT0 sbit xjmk_l = P3^3;// 左边寻迹模块检测口INT1 void check_righet();//右边时候检测到黑线测试程序 void check_left();//左边时候检测到黑线测试程序 void delay_50us(uint t); void delayms(uint Ms); uchar r_count;//右边传感器检测到的次数计数单元 uchar l_count; uint time; //***********************主程序****************************** main() { time=50; dianji_r=0;//上电时右侧电机运行 dianji_l=0;//上电时左侧电机运行 EA=1; EX1=1; EX0=1; IT1=0; IT0=0; xjmk_r=1;//置IO为1,准备读取数据 xjmk_l=1; _nop_(); r_count=0; l_count=0; while(1) { _nop_(); // check_righet();//调用右边寻迹检测传感器 // check_left();// if(r_count>=1) { delayms(time); dianji_r=0; dianji_l=0; r_count=0; _nop_(); } if(l_count>=1) { delayms(time); dianji_r=0; dianji_l=0; l_count=0; _nop_(); } } } void init0int() interrupt 2 { l_count=5; dianji_l=1; dianji_r=0; if(r_count>0) { EX0=0; delayms(20); if(time>=20)time-=19; EX0=0; } return; } void init1int() interrupt 0 { r_count=5; dianji_r=1; dianji_l=0; if(l_count>0) { EX1=0; delayms(20); if(time>=20)time-=19; EX1=1;} return; } //***************************************************************************** ** //函数名称: //功能:左边边时候检测到黑线测试程序 void check_left() { if(xjmk_l==0)//检测右边的传感器是否感应到黑线 { delay_50us(1);//延时,去除机械振动 _nop_(); if(xjmk_l==0)//再次检测 { delay_50us(1);//延时,去除机械振动 if(xjmk_l==0) { l_count++; xjmk_l=1; } } } } //***************************************************************************** ** //函数名称: //功能:右边时候检测到黑线测试程序 void check_righet() { if(xjmk_r==0)//检测右边的传感器是否感应到黑线 { delay_50us(1);//延时,去除机械振动 if(xjmk_r==0)//再次检测 { delay_50us(1);//延时,去除机械振动 if(xjmk_r==0) { r_count++; xjmk_r=1; } } } } //***************************************************************************** ** //函数名称:void delay_50US(unsigned int t) //功能:延时50*t(us) void delay_50us(uint t) { uchar j; for(;t>0;t--) { for(j=19;j>0;j--); } } /*==================================================================== 设定延时时间:x*1ms ====================================================================*/ void delayms(uint Ms) { uint i,TempCyc; for(i=0;i
/
本文档为【51单片机循迹小车程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索