智能寻迹避障小车系统软件设计方案_第1页
智能寻迹避障小车系统软件设计方案_第2页
智能寻迹避障小车系统软件设计方案_第3页
智能寻迹避障小车系统软件设计方案_第4页
智能寻迹避障小车系统软件设计方案_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能寻迹小车设计与制作(系统软件设计方案)湖南信息职业技术学院信息工程系辅讲:蒲 茂主讲:雷道仲要点 系统任务和功能分析系统任务和功能分析 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 单片机软件开放的一般流程介绍单片机软件开放的一般流程介绍 设计出智能寻迹避障小车的整体软件控制框图设计出智能寻迹避障小车的整体软件控制框图(软件设计方案)(软件设计方案)湖南信息职业技术学院信息工程系 智能寻迹避障小车软件控制系统的设计方案拟定从以下几个方面着手进行:1.1 系统任务和功能分析系统任务和功能分析湖南信息职业技术学院信息工程系 根据系统设计任务和要求可知,智能寻迹避障小车软

2、件控制系统要完成以下功能: 寻黑线行走功能 避障功能 遇障碍物报警提示功能 行走状态显示功能1.1 系统任务和功能分析系统任务和功能分析湖南信息职业技术学院信息工程系 根据系统设计任务和要求可知,智能寻迹避障小车软件控制系统要完成以下功能: 红外传感器踩黑线LED灯指示功能 电机调速功能 彩灯控制功能1.1.1 寻黑线行走功能 由于本设计中寻线采用红外发射对管作为寻线工具。左右红外接收控制引脚接单片机P3.5、P3.6;当左右检测到:P3.5=P3.6=0,寻黑线直走,如果:P3.5=1,P3.6=0,则右转弯,如果:P3.5=0,P3.6=1,则左转弯,湖南信息职业技术学院信息工程系1.1.

3、2 避障功能 本设计中避障同样采用红外发射对管作为避障工具。避障由单片机P3.7端口控制,当检测到:P3.7=0,表示无障碍,小车前行,反之:P3.7=1,表示有障碍,单片机应调用相应避障函数进行避障。湖南信息职业技术学院信息工程系1.1.3 遇避障物报警提示功能 报警电路由单片机的P0.6端口控制,当没有障碍物时,P0.6=1,报警电路关闭,当遇有障碍物时,P0.6输出一定频率的方波,扬声器发生,因此,报警电路实际就是编写某个频率的方波信号。可由定时器定时翻转产生。湖南信息职业技术学院信息工程系1.1.4 行走状态显示功能 行走状态显示电路由单片机控制的共阳数码管来完成,前进、后退、左转弯、

4、右转弯可分别用字符“1”、“2”、“3”、“4”显示,可以将显示代码存放在一个字符数组中,当智能小车处于某个状态便查相应的显示代码显示。湖南信息职业技术学院信息工程系1.1.51.1.5 红外传感器踩黑线红外传感器踩黑线LEDLED灯指示功能灯指示功能 左、右红外传感器踩黑线LED指示灯由单片机P1.0和P2.0分别控制,当左、右传感器未踩到黑线时,P1.0=P2.0=1,LED指示灯灭,当左传感器踩到黑线时,P1.0=0,左边LED灯亮,右边LED指示灯同理。湖南信息职业技术学院信息工程系1.1.61.1.6 电机调速功能电机调速功能 本设计中的电机调速有两种控制方法,一种是利用单片机的定时

5、器,产生PWM电机调速脉冲完成电机调速;另一种是控制电机使能端,本设计中,左、右电机使能端由单片机P1.0、P1.1控制,开始时,左右使能:P1.0=P1.1=1,电机全速旋转,随后,使使能端间歇为0,这样,电机的速度就会慢慢减下来。湖南信息职业技术学院信息工程系1.1.71.1.7 LEDLED彩灯控制彩灯控制 本设计中的彩灯电路由单片机的P1口控制,控制方法简单,当P1=0XFF时,彩灯全灭;当P1=0X00时,彩灯全亮。用户可以根据这一控制电平编写出任意多种彩灯控制方式。湖南信息职业技术学院信息工程系1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 为

6、了更好的了解单片机C语言程序的结构,我们先通过一个小小的设计实例加以说明。例如:如图1所示为彩灯控制原理图,图中按下KEY时,P3口彩灯熄灭;松开KEY时,P3口彩灯点亮。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成图1. 彩灯控制原理图1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 根据以上要求设计出程序如下: /*

7、程序名:cdkz.c 功能:使用开关KEY控制P3的彩灯LED /* #include /包含单片机寄存器的头文件 sbit KEY=P10; /*湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 函数功能:主函数 * void main(void) P3=0 xff; while(1) if(KEY=1) P3=0 x00; /彩灯亮 else P3=0 xff; /彩灯灭 湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序

8、构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 下面,我们通过分析上述程序来看看单片机C语言程序包括那些组成部分: 1、“文件包含”处理 程序的第一行是一个“文件包含”处理。所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。在上述程序中我们用到了P1口,但标准C中并没有定义P1口,这就要求在使用P1口之前,必需对它进行定义。由于此项工作已经由编译软件KEIL C完成,因此,编程时只要将这种定义“包含”进去即可。故程序中的第一行包含REG51.h文件的目的正是为了要使用P1这个端口,程序在编译时由它告知C编译器,程序中所写的P1是

9、指MCS51单片机的P1端口而不是其它变量。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 下面,我们通过分析上述程序来看看单片机C语言程序包括那些组成部分: 1、“文件包含”处理 程序的第一行是一个“文件包含”处理。所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。在上述程序中我们用到了P1口,但标准C中并没有定义P1口,这就要求在使用P1口之前,必需对它进行定义。由于此项工作已经由编译软件KEIL C完成,因此,编程时只要将这种定义“包含”进

10、去即可。故程序中的第一行包含REG51.h文件的目的正是为了要使用P1这个端口,程序在编译时由它告知C编译器,程序中所写的P1是指MCS51单片机的P1端口而不是其它变量。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 包含文件:REG51.h在所有的MCS51单片机C程序中都必需用到,也就是说每一个MCS51单片机程序中都必需用到此包含文件。该包含文件包含了MCS51单片机内部各寄存器的一些信息和定义,我们要用这些寄存器时,就必需用到此包含文件。该文件包含

11、以下内容: /*- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -*/湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 #ifndef _REG51_H_ #define _REG51_H_ /*

12、BYTE Register */ sfr P0 = 0 x80; sfr P1 = 0 x90; sfr P2 = 0 xA0; sfr P3 = 0 xB0; sfr PSW = 0 xD0; sfr ACC = 0 xE0; sfr B = 0 xF0; sfr SP = 0 x81; sfr DPL = 0 x82;湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 sfr DPH = 0 x83; sfr PCON = 0 x87; sfr TCON =

13、 0 x88; sfr TMOD = 0 x89; sfr TL0 = 0 x8A; sfr TL1 = 0 x8B; sfr TH0 = 0 x8C; sfr TH1 = 0 x8D; sfr IE = 0 xA8; sfr IP = 0 xB8; sfr SCON = 0 x98; sfr SBUF = 0 x99;湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 /* TCON */ sbit TF1 = 0 x8F; sbit TR1 = 0 x8E;

14、 sbit TF0 = 0 x8D; sbit TR0 = 0 x8C; sbit IE1 = 0 x8B; sbit IT1 = 0 x8A; sbit IE0 = 0 x89; sbit IT0 = 0 x88; /* IE */ sbit EA = 0 xAF; sbit ES = 0 xAC; sbit ET1 = 0 xAB;湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 sbit EX1 = 0 xAA; sbit ET0 = 0 xA9; sb

15、it EX0 = 0 xA8; /* IP */ sbit PS = 0 xBC; sbit PT1 = 0 xBB; sbit PX1 = 0 xBA; sbit PT0 = 0 xB9; sbit PX0 = 0 xB8;湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 /* P3 */ sbit RD = 0 xB7; sbit WR = 0 xB6; sbit T1 = 0 xB5; sbit T0 = 0 xB4; sbit INT1 = 0 xB3

16、; sbit INT0 = 0 xB2; sbit TXD = 0 xB1; sbit RXD = 0 xB0;湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 /* SCON */ sbit SM0 = 0 x9F; sbit SM1 = 0 x9E; sbit SM2 = 0 x9D; sbit REN = 0 x9C; sbit TB8 = 0 x9B; sbit RB8 = 0 x9A; sbit TI = 0 x99; sbit RI = 0 x98

17、; #endif湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 2.主函数main() C语言程序采用函数结构,每个C语言程序由一个或多个函数组成,在这些函数中至少应包含一个主函数main(),也可以包含一个main()函数和若干个其它的功能函数。不管main()函数放于何处,程序总是从main()函数开始执行,执行到main()函数结束则结束。在main()函数中调用其它函数,其它函数也可以相互调用,但main()函数只能调用其它的功能函数,而不能被其它的

18、函数所调用。 主函数main()后面一定有一对大括号“ ”,主程序的内容就书写在大括号里面。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 3.功能函数 功能函数可以是C语言编译器提供的库函数,也可以是由用户定义的自定义函数。 4.注释 C语言程序中的注释只是为了提高程序的可读性。在编译时,注释的内容不会生成可执行代码。因此,该部分内容是选择性的,即编程时只需对有重要意义或关键性的语句加以注释。注释的方法有两种:一种采用“/*/”的格式,另一种采用“/”的格

19、式。前者可以注释多行,后者只能注释一行内容。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 总之,单片机C语言程序主要包括以上几个部分;当然,不是所有的程序一定都要包含以上四个部分,不同的程序之间稍微有些不一样,比如:简单一点的程序可能不需要功能函数,而复杂一点又可能包含多个功能函数,这主要视系统具体的设计要求而定。 另外在编制单片机C程序时,程序的开始部分一般是预处理命令、函数说明和变量定义等。湖南信息职业技术学院信息工程系1.2 .1 1.2 .1 单片

20、机单片机C C语言程序构成语言程序构成1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 在C51中,用if语句实现选择结构有三种形式,分别是: 形式一形式一:if(表达式)语句 形式二:形式二:if (表达式)语句1; else 语句2; 形式三:形式三:if (表达式1)语句1; else if (表达式2)语句2; else if (表达式3)语句3; else if (表达式n-1)语句n-1; else 语句n;湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语

21、言程序构成及C C语言指令语言指令 例1: if语句的用法。 (1)if (P10!=1) y=8; 执行上面语句时,如果P10不等于1,则输出y=8; (2)if (ab) a=10; else a=5; 执行上面语句时,如果a大于b成立,则把10赋给变量a,如a大于b不成立,则把5赋给变量a。湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 (3)if (score=90) printf(“Your result is an An”); else if (score

22、=80) printf(“Your result is an Bn”); else if (score=70) printf(“Your result is an Cn”); else if (score=60) printf(“Your result is an Dn”); else printf(“Your result is an En”); 执行上面语句后,能够根据分数score分别打出A、B、C、D、E五个等级。湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令

23、 2、switch/case语句语句 switch/case语句的一般形式如下: switch(表达式) case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; case 常量表达式n:语句n; break; default :语句n+1; 湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 说明如下: (1)switch后面括号内的表达式,可以是整型或字符型表达式; (2)当switch括号内表达式的值与某一“case”后面的常量

24、表达式的值相等时,就执行该“case”后面的语句,然后遇到break语句退出switch语句。若表达式的值与所有case后的常量表达式的值都不相同,则执行default后面的语句,最后退出switch结构。 (3)每一个case常量表达式的值必须不同,否则会出现自相矛盾的现象。 (4)case语句和default语句的出现次序对执行过程没有影响。湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 (5)每个case语句后面可以有“break”,也可以没有。有break语句

25、,执行到break则退出switch结构,若没有,则会顺次执行后面的语句,直到遇到break或结束。 (6)每一个case语句后面可以带一个语句,也可以带多个语句,还可以不带。语句可以用花括号括起,也可以不括。 (7)多个case可以共用一组执行语句。 例2 : switch/case语句的用法。 用开关控制彩灯,如果按下开关key1,对应第一盏灯点亮;按下key2,对应第二盏灯点亮;依次下去,按下key8,对应第八盏灯点亮;可以通过下面的switch/case语句实现。湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C

26、语言程序构成及语言程序构成及C C语言指令语言指令 switch(key) case 1;P1=0 xfe;break; case 2;P1=0 xfd;break; case 3;P1=0 xfb;break; case 4;P1=0 xf7;break; case 5;P1=0 xef;break; case 6;P1=0 xdf;break; case 7;P1=0 xbf;break; case 8;P1=0 x7f;break; default; break; 湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C

27、语言程序构成及语言程序构成及C C语言指令语言指令 whilewhile循环语句循环语句 while语句的一般形式如下:while (条件表达式) 语句; while语句后面的表达式是能否循环的条件,后面的语句是循环体。当表达式为真时,就重复执行循环体内的语句;当表达式为假时,则中止while循环,程序将执行循环结构之外的下一条语句。它的特点是:先判断条件,后执行循环体。在循环体中对条件进行改变,然后再判断条件,如条件成立,则再执行循环体,如条件不成立,则退出循环。如条件第一次就不成立,则循环体一次也不执行。 湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基

28、本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 例3:while语句的用法。 while (i=10) /求110的和在sum中 sum=sum+i; i+; 湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 do-whiledo-while循环语句循环语句 do-while语句的一般形式如下: do 语句; while (条件表达式); 它的特点是:先执行循环体中的语句,后判断表达式。如表达式的值为真,则再执行循环体,然后又

29、判断,直到有表达式为假时,退出循环,执行dowhile结构的下一条语句。dowhile语句在执行时,循环体内的语句至少会被执行一次。湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 【例4】do-while语句的用法。 do /求110的和在sum中 sum=sum+i; i+; while (i=10);湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令

30、语言指令 5、forfor(表达式(表达式1 1;表达式;表达式2 2;表达式;表达式3 3) 语句;语句; /*循环体*/ for语句后面带三个表达式,它的执行过程如下: (1)先对表达式1赋初值,进行初始化; (2)判断表达式2的值,若表达式2的值为真,则执行循环休中的语句,然后执行下一步(3)的操作,若表达式2的值为假,则结束for循环,转到第(5)步; (3)若表达式2的值为真,则执行完循环体中的语句后,求解表达式3,然后转到第(4)步; (4)转到(2)继续执行; (5)退出for循环,执行下面一条语句;湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言

31、的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语言指令语言指令 在for循环中,一般表达式1为初值表达式,用于给循环变量赋初值;表达式2为条件表达式,对循环变量进行判断;表达式3为循环变量更新表达式,用于对循环变量的值进行更新,使循环变量能不满足条件而退出循环。 例5: 用for语句实现计算110的累加和。 int i,sum; sum=0; for (i=1;i=10;i+) sum=sum+i; /累加110之和在sum中湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及

32、语言程序构成及C C语言指令语言指令 6、转向语句、转向语句 (1)break 该语句主要用在循环语句和switch语句中,它的功能是:终止执行循环语句。通常break语句总是与if语句一起使用,即满足if语句中给出的条件时便跳出循环。Break语句对if-else的条件语句不起作用。在循环嵌套中,一个break语句只能向外跳一层。 例6:下面一段程序用于计算110的累加和,当和大于40时,由break语句跳出循环。 sum=0; for (i=1;i40) break; printf(“%fn”,sum); 湖南信息职业技术学院信息工程系1.2 .2 C1.2 .2 C语言的基本语句语言的基本语句1.2 1.2 单片机单片机C C语言程序构成及语言程序构成及C C语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论