单片机原理及系统课程设计报告
够进一步增加测速模块以及速度显示,该避障小车的功能将更加强大。
在本次设计过程中遇到不少问题,在王思明老师和同学的帮助和配合下才顺利的完成了本次课程设计。王思明老师给予了我们极大的帮助,不仅从知识方面引导了我们的设计思路,同时,在人生观上也给了我们不少的启示。
6 参考文献
[1] 王思明.单片机原理及应用系统设计[M].北京:科学出版社,2012 [2] 胡辉.单片机原理与应用[M].北京:中国水利水电出版社,2007:10-38. [3] 林志琦.单片机原理接口及应用[M].北京:中国水利水电出版社,2007:25-54. [4] 赵克林.C语言实例教程[M].北京:人民邮电出版社,2007:48-96.
[5] 姜承昊.应用与制造新技术新工艺[M].北京:中国科学技术文献出版社,2008:37-95.
5
单片机原理及系统课程设计报告
附录1
开始程序初始化NTime>=100ms?Y延时变量归零启动检测程序计算距离SS<20cm?Y小车停止NNS>30cm?Y小车前行判别方向并动作
图2 系统总流程图
6
单片机原理及系统课程设计报告
附录2
//名称:基于51单片机的避障小车
#include #include
={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};//定义表 unsigned char const positon[3]={ 0xfe,0xfd,0xfb}; unsigned char disbuff[4]={ 0,0,0,0,};
unsigned char posit=0; //全局变量 unsigned char pwm_val_left = 0; //变量定义 unsigned char push_val_left =14; //舵机归中,产生约,1.5MS 信号 unsigned long S=0; unsigned long S1=0; unsigned long S2=0; unsigned long S3=0; unsigned long S4=0; unsigned int time=0; //时间变量 unsigned int timer=0; //延时基准变量 unsigned char timer1=0; //扫描时间变量
/************************************************************************/ void delay(unsigned int k) //延时函数,输入外循环变量k {
unsigned int x,y; //总延时时间,(若晶振12MHZ)延时时间(t=2*k)ms for(x=0;x /************************************************************************/ void Display(void) //扫描数码管 { if(posit==0) {P0=(discode[disbuff[posit]])&0x7f;} //产生点 7 单片机原理及系统课程设计报告 else {P0=discode[disbuff[posit]];} if(posit==0) {P2_1=0;P2_2=1;P2_3=1;} if(posit==1) {P2_1=1;P2_2=0;P2_3=1;} if(posit==2) {P2_1=1;P2_2=1;P2_3=0;} if(++posit>=3) posit=0; } /************************************************************************/ void StartModule() //启动测距信号 { TRIG=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TRIG=0; } /***************************************************/ void Conut(void) //计算距离 { 8 单片机原理及系统课程设计报告 while(!ECHO); //当RX为零时等待 TR0=1; //开启计数 while(ECHO); //当RX为1计数并等待 TR0=0; //关闭计数 time=TH0*256+TL0; //读取脉宽长度 TH0=0; TL0=0; S=(time*1.7)/100; //算出来是CM disbuff[0]=S00/100; //更新显示 disbuff[1]=S000/10; disbuff[2]=S00 ; } /************************************************************************/ void run(void) //前速前进 { Left_moto_go ; //左电机往前走 Right_moto_go ; //右电机往前走 } /************************************************************************/ void backrun(void) //前速后退 { Left_moto_back ; //左电机往前走 Right_moto_back ; //右电机往前走 } /************************************************************************/ void leftrun(void) //左转 { Left_moto_back ; //左电机往前走 Right_moto_go ; //右电机往前走 } /************************************************************************/ void rightrun(void) //右转 { Left_moto_go ; //左电机往前走 Right_moto_back ; //右电机往前走 } /************************************************************************/ void stoprun(void) //停止前进 { Left_moto_Stop ; //左电机停走 Right_moto_Stop ; //右电机停走 9 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于51单片机的避障小车设计(2)在线全文阅读。
相关推荐: