蔡正科2014单片机第四讲汽车模拟转向灯_单片机教学资料_第1页
蔡正科2014单片机第四讲汽车模拟转向灯_单片机教学资料_第2页
蔡正科2014单片机第四讲汽车模拟转向灯_单片机教学资料_第3页
蔡正科2014单片机第四讲汽车模拟转向灯_单片机教学资料_第4页
蔡正科2014单片机第四讲汽车模拟转向灯_单片机教学资料_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、机电工程学院机电工程学院 机电一体化教研室机电一体化教研室任务四任务四 模拟汽车转向灯模拟汽车转向灯机电一体化教研室复习回顾复习回顾v 单个LED闪烁的电路制作v 单个LED闪烁的程序编写v 任务1中的LED闪烁是不受控制的,实际生活中我们一般需要根据某些条件来决定LED是否闪烁。机电一体化教研室机电一体化教研室驾驶员操作命令无操作右转向操作左转向操作故障紧急操作转向灯状态左转灯灭灭闪烁闪烁右转灯灭闪烁灭闪烁机电一体化教研室工作任务工作任务采用单片机制作一个模拟汽车左右转向灯的控采用单片机制作一个模拟汽车左右转向灯的控制任务!制任务!机电一体化教研室工作任务工作任务v 根据电路原理图,正确完成

2、电路制作;v 输入模拟汽车转向灯程序并完成调试;v 根据要求修改程序,并观察运行结果;v 完成实训报告机电一体化教研室C C语言的基本语句语言的基本语句语言程序的执行部分由语句组成。C语言提供了丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。 相关知识点相关知识点机电一体化教研室C语言程序的构成语言程序的构成(P47) u C语言的程序是由一个或多个函数构成的,最简单的程序只有一个语言的程序是由一个或多个函数构成的,最简单的程序只有一个main函数函数 。u 一个函数由两部份组成一个函

3、数由两部份组成 u函数的首部、即函数的第一行;函数的首部、即函数的第一行; 包括函数名、函数类型、函数属性、函数参数(形参)名、参数包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。类型。 u函数体,即函数首部下面的大括号函数体,即函数首部下面的大括号“”内的部份。内的部份。函数体一般包函数体一般包括:括: 声明部份:定义所用到的变量,如声明部份:定义所用到的变量,如void Delay()中的中的unsigned char i, j;。 执行部份:由若干个语句组成。执行部份:由若干个语句组成。 机电一体化教研室标识符标识符 u C语言规定标识符只能由字母、数字和下划线三种字符组成

4、,且第一个语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。字符必须为字母或下划线。u 变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。u 标识符分为预定义标识符和用户标识符。标识符分为预定义标识符和用户标识符。 u 说明:说明:uC语言中大写字母与小写字母被认为是两个不同的字符。语言中大写字母与小写字母被认为是两个不同的字符。u标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。 机电一体化教研室关键字关键字 u 关键字

5、则是编程语言保留的特殊标识符,它们具有固定名称和含义,关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在在程序编写中不允许标识符与关键字相同。在Keil C中的关键字除了中的关键字除了有有ANSI C标准的标准的32个关键字外,还根据个关键字外,还根据51单片机的特点扩展了相关单片机的特点扩展了相关的关键字。的关键字。u 在在Keil C的文本编辑器中编写的文本编辑器中编写C程序,系统把保留字以不同颜色显示,程序,系统把保留字以不同颜色显示,缺省颜色为天蓝色。缺省颜色为天蓝色。 机电一体化教研室C语言基本语句语言基本语句(P52) u C语言的

6、程序是由一个或多个函数组成的,而函数又是由若干个语句语言的程序是由一个或多个函数组成的,而函数又是由若干个语句组成的。语句是由一些基本字符和定义符按照组成的。语句是由一些基本字符和定义符按照C语言的语法规定组成语言的语法规定组成的,每个语句以分号结束,分号是的,每个语句以分号结束,分号是C语句的必要组成部份。语句的必要组成部份。C语言的语言的语句可分为以下语句可分为以下5种类型:种类型:u表达式语句表达式语句u函数调用语句函数调用语句u控制语句控制语句u复合语句复合语句u空语句空语句 机电一体化教研室表达式语句表达式语句u 表达式语句表达式语句是由是由一个表达式一个表达式加加一个分号一个分号构

7、成一个语句,其作用是计算构成一个语句,其作用是计算表达式的值或改变变量的值。它的一般形式是:表达式的值或改变变量的值。它的一般形式是: 表达式表达式; 即在表达式末尾加上分号,就变成了表达式语句。最典型的表达即在表达式末尾加上分号,就变成了表达式语句。最典型的表达式语句是:在赋值表达式后加一个分号构成赋值语句。例如:式语句是:在赋值表达式后加一个分号构成赋值语句。例如: a=3 是一个赋值表达式是一个赋值表达式 a=3; 是一个赋值语句是一个赋值语句机电一体化教研室函数调用语句函数调用语句u 由由一个函数一个函数调用调用加一个分号加一个分号构成函数调用语句,其作用是完成特定的构成函数调用语句,

8、其作用是完成特定的功能。它的一般形式是:功能。它的一般形式是:函数名函数名(参数列表参数列表);u 例如例如mDelay(100); /调用延时函数,参数是调用延时函数,参数是100 机电一体化教研室控制语句控制语句u控制语句用于完成一定的控制功能,以实现程序的各种结构方式。控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言有语言有9种控制语句,可分为以下三类。种控制语句,可分为以下三类。1.条件判断语句:条件判断语句:if语句、语句、switch语句。语句。2.循环语句:循环语句:for语句、语句、while语句、语句、do-while语句。语句。3.转向语句:转向语句:bre

9、ak语句、语句、continue语句、语句、goto语句、语句、return语语句。句。 机电一体化教研室复合语句复合语句u复合语句是用一对大括号将若干条语句括起来的,也称复合语句是用一对大括号将若干条语句括起来的,也称为分程序,在语法上相当于一条语句。例如为分程序,在语法上相当于一条语句。例如1.main()2.3. t=x;4. x=y;5. y=t; /复合语句复合语句6. 机电一体化教研室空语句空语句u只有一个分号的语句称为空语句。它的一般形式是:只有一个分号的语句称为空语句。它的一般形式是: ; 空语句是什么操作也不执行,常用于作为循环语句中的循环空语句是什么操作也不执行,常用于作为

10、循环语句中的循环体,表示循环体什么也不做。体,表示循环体什么也不做。 机电一体化教研室注释注释 u注释内容可以单独写在一行上,也可以写在一个语句之后;注释内容可以单独写在一行上,也可以写在一个语句之后;u可以用可以用/*.*/的形式为的形式为 C 程序的任何一部份作注释;程序的任何一部份作注释;uKeil C也支持也支持 C+风格的注释,就是用风格的注释,就是用“/”引导的后面的引导的后面的语句是注释,例:语句是注释,例: P1_0=!P1_0; /取反取反 P1.0u这种风格的注释,只对本行有效,书写比较方便,所以在只这种风格的注释,只对本行有效,书写比较方便,所以在只需要一行注释的时候,我

11、们往往采用这种格式。需要一行注释的时候,我们往往采用这种格式。 机电一体化教研室v 图8-1 顺序结构机电一体化教研室v 图8-2 选择结构机电一体化教研室 if语句结构语句结构vC语言的if语句有3种形式:基本if形式、if-else形式、if-else-if形式。基本if形式语法结构如下:if(表达式)处理程序;处理机理是:如果表达式的值为“真”,则执行“处理程序”的语句内容,否则不执行该语句内容。例如:机电一体化教研室v void main( ) uchar sp0=0, buffer02=0, 0; if (sp0 = 0) buffer0sp0=RXBUF0; /接收串口数据 if-

12、else形式语法结构如下: if(表达式) 处理程序1; else 处理程序2;机电一体化教研室v 处理机理是:如果if表达式的值为“真”,则执行“处理程序1”的语句内容,否则执行“处理程序2”语句内容。例如:void main( ) uchar end,rev_flag; if (end = 1) rev_flag0=1; else rev_flag0=0;机电一体化教研室v if-else-if形式语法结构如下:if(表达式1) 处理程序1;else if (表达式2) 处理程序2;else (表达式n) 处理程序n;机电一体化教研室v 处理机理是:如果表达式1的值为“真”,则执行与之相对

13、应的“处理程序1”的语句内容;如果表达式2的值为“真”,则执行与之相对应的“处理程序2”的语句内容,依次判断表达式“x”是否为“真”,如果为“真”则执行与之相对应的“处理程序x”语句内容。例如:机电一体化教研室v void main( ) uchar sp0=0, rev_byte0, buffer02=0, 0, receive_frame10;if (sp0 = 0) buffer0sp0=RXBUF0; /接收串口数据 if (buffer00 = 0 xEB ) sp0+; 机电一体化教研室v /* 判断第二个字节 */ else if (sp0 = 1) buffer0sp0=RXB

14、UF0; if ( buffer00 = 0 xEB ) & ( buffer01 = 0 x90 ) sp0+; /数据为EB90 else sp0=0; else if (sp0 = 2) 机电一体化教研室 v receive_framerev_byte0=RXBUF0; rev_byte0+;机电一体化教研室v 2) switch语句结构C语言的switch语句又称开关语句,它可以从多种情况中选择满足条件的一种情况,是多分支选择结构语句。switch形式语法结构如下:机电一体化教研室switchv switch(表达式)case:处理序列1;breakcase:处理序列2;bre

15、akcase:处理序列n;breakdefault:处理序列n+1;机电一体化教研室v 处理机理是:计算表达式的值,并逐个与其后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等,即执行其后的处理序列语句,然后不再进行判断,继续执行后面所有case后的处理序列语句。如表达式的值与所有case后的常量表达式都不相同时,则执行default后的处理序列语句。C语言还提供了一种break语句,专用于跳出switch语句。例如:机电一体化教研室v void main( )uchar flag=0,up=0,down=0,left=0,right=0;switch(flag) case 1:u

16、p=1;break; /置标志case 2:down=1;break;case 3:left=1;break;case 4:right=1;break;default:error=1;break;机电一体化教研室v 本例中输入一个整数,经switch判断后,选择输出是一周中的星期几,整数不在17的范围内时就输出“Error”。可见此类多分支程序用switch语句可以很容易实现。机电一体化教研室3循环结构v 计算机的基本特征之一就是具有重复执行一组语句的能力循环能力。循环结构是程序中一种很重要的结构。其特点是:在给定条件成立时,反复执行某程序段,直到条件不成立时为止。循环结构有两种形式:当型循环

17、和直到型循环。机电一体化教研室v 1) 当型循环判断条件P是否成立,若成立,则重复执行A操作,直至某次判断条件P不再成立,就不再执行A操作而退出循环结构,见图8-3(a)。2) 直到型循环重复执行A操作,然后判断条件P是否成立,如果不成立再执行A操作,直到条件P成立,不再执行A操作,退出循环,见图8-3(b)。 机电一体化教研室v 图8-3 循环结构机电一体化教研室v 无论是顺序结构、选择结构,还是循环结构,它们有一个共同点,即只有一个入口且只有一个出口。从示意图中可以看到,如果把基本结构看做是一个整体(用虚线框表示),执行流程从a点进入基本结构,而从b点脱离基本结构。整个程序由若干个这样的基

18、本结构组合而成,必然有良好的可读性和可维护性。它包括for语句结构和while语句结构两种。机电一体化教研室v (1) for语句结构。C语言中,for语句是一种使用最为方便灵活的循环控制语句结构,它提供了一个应用非常灵活的控制部分,既可以实现计数循环程序设计,又可以实现条件控制循环程序设计。for形式语法结构如下:for(表达式1;表达式2;表达式3) 处理程序;机电一体化教研室v 处理机理是:首先计算“表达式1”的值;再计算“表达式2”的值,若值为“真”则执行循环体一次,否则跳出循环;然后再计算“表达式3”的值,转回第2步重复执行。在整个for循环过程中,“表达式1”只计算一次,作为for

19、的入口语句条件,“表达式2”和“表达式3”则可能计算多次。循环体也可能多次执行,也可能一次都不执行。例如:机电一体化教研室v void main( )int n, sum=0;for(n=0;n=50;n+)sum+=n;在使用for语句中有几点要特别注意: 循环体内的处理程序可以为空操作; for语句的各表达式都可以省,而分号不能省,在省略各表达式时要特别小心分析,防止造成无限死循环。机电一体化教研室v (2) while语句结构。while形式语法结构有当while形式和直到while形式两种。当while形式如下:while(表达式)处理程序; 处理机理是:计算“表达式”的值,若为“真”

20、则执行循环体的处理程序一次,然后再对表达式进行计算执行,直到表达式的值为“假”时停止循环。循环体也可能多次执行,也可能一次都不执行。例如:机电一体化教研室vvoid main( ) int n=0, sum=0; while(n50) n+=1; sum+=n; 机电一体化教研室v 直到循环do-while形式如下:do处理程序;while(表达式);处理机理是:先执行处理程序,到while时计算“表达式”的值,若为“真”则再次执行循环体的处理程序一次,直到表达式的值为“假”时停止循环。循环体至少会执行一次。例如:机电一体化教研室v void main( )int n=0, sum=0;don

21、+=1;sum+=n;while(n=50);机电一体化教研室表达式语句和复合语句表达式语句和复合语句 p表达式语句是最基本的C语言语句。表达式语句由表达式加上分号“;”组成,其一般形式如下: 表达式;表达式;执行表达式语句就是计算表达式的值。p在 C 语言中有一个特殊的表达式语句,称为空语句。空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。 机电一体化教研室表达式语句和复合语句表达式语句和复合语句 p把多个语句用大括号括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组

22、合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。p复合语句在程序运行时,中的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。 机电一体化教研室选择语句选择语句 基本if语句的格式如下:if (表达式) 语句组; if语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组”,否则跳过该语句组,继续执行下面的语句。 机电一体化教研室选择语句选择语句 pif语句中的“表达式”通常为逻辑表达式或关系表达式,也可以是任何其他的表达式或类型数据,只要表达式的值非0即为“真”。以下语句都是合法的: if(3) if(x=8) if(P3_0)p在

23、if语句中,“表达式”必须用括号括起来。p在if语句中,花括号“ ”里面的语句组如果只有一条语句,可以省略花括号。如“if (P3_0=0) P1_0=0;”语句,但是为了提高程序的可读性和防止程序书写错误,建议读者在任何情况下,都加上花括号。机电一体化教研室选择语句选择语句 if-else语句的一般格式如下:if (表达式) 语句组1; else 语句组2; if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组1”,否则执行“语句组2” 机电一体化教研室选择语句选择语句 if-else-if语句是由 if else 语句组成的嵌套,用来实现多个条件分支的选择,其一般格

24、式如下:if (表达式1) 语句组1; else if (表达式2) 语句组2; else if (表达式n) 语句组n; else 语句组n+1; 机电一体化教研室选择语句选择语句 机电一体化教研室选择语句选择语句 多分支选择的switch语句, 其一般形式如下: switch(表达式) case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; case常量表达式n: 语句组n;break; default : 语句组n+1; 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行

25、对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。机电一体化教研室whilewhile语句用来实现语句用来实现“当型当型”循环,循环,执行过程:首先判断表达式,执行过程:首先判断表达式, 当表达式的值为真(非当表达式的值为真(非0 0)时,)时,反复执行循环体。为假(反复执行循环体。为假(0 0)时)时执行循环体外面的语句。执行循环体外面的语句。循环体循环体循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环

26、体语句组while执行过程执行过程格式:格式:while(循环继续的条件表达式)(循环继续的条件表达式) 语句组语句组; 花括号不花括号不能丢掉!能丢掉!请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main( )main( ) intint i,sumi,sum=0;=0; while(iwhile(i=10)=10) sum= sum=sum+isum+i; ; i+; i+; 循环语句循环语句 机电一体化教研室do-while语句用来实现语句用来实现“直到型直到型”循环循环执行过程:先无条件执行一次循环体,执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值然

27、后判断条件表达式,当表达式的值为真(非为真(非0)时,返回执行循环体直)时,返回执行循环体直到条件表达式为假(到条件表达式为假(0)为止。)为止。绝对不能少分号!绝对不能少分号!循环体循环体格式:格式:dodo 循环体语句组;循环体语句组; while( while(循环继续条件循环继续条件) );花括号不花括号不能丢掉!能丢掉!循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main( )main( ) intint i,sumi,sum=0;=0; do do s

28、um= sum=sum+isum+i; ; i+; i+; while(iwhile(i=100);=100); 循环语句循环语句 机电一体化教研室总循环次数已确定总循环次数已确定的情况下,可采用的情况下,可采用forfor语句形式为:语句形式为:forfor语句的一般形式:语句的一般形式: for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增值循环变量增值 ) ) 循环体语句组;循环体语句组; 分隔符分隔符为分号为分号请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main( )main( ) intint i,yi,y=0;=0; for(ifor

29、(i=1;i=10;i+)=1;i=10;i+) y= y=y+iy+i; ; 循环语句循环语句 机电一体化教研室循环继续条件循环继续条件for的下一条语句的下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组循环变量赋初值循环变量赋初值循环变量增值循环变量增值forfor语句循环执行过程语句循环执行过程只求解一次只求解一次要执行若干次,要执行若干次,具体次数由具体次数由“循循环继续条件环继续条件”决决定定for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增值循环变量增值 ) ) 循环体语句组;循环体语句组; 机电一体化教研室任务导入任务导入 汽车在

30、不同位置都安装有信号灯,它们是汽车驾驶员之间及驾驶员向行人传递汽车行驶状况的表达工具,一般包括转向灯、刹车灯、倒车灯、雾灯等,其中转向灯包括左转灯和右转灯。本次任务是利用单片机设计一个模拟汽车左右转向灯的控制系统。任务二任务二 汽车转向灯控制汽车转向灯控制表2-10 汽车转向灯显示状态 驾驶员命令驾驶员命令转向灯显示状态转向灯显示状态左转向灯左转向灯右转向灯右转向灯驾驶员未发出命令灭灭驾驶员发出左转显示命令闪烁灭驾驶员发出右转显示命令灭闪烁驾驶员发出汽车故障显示命令闪烁闪烁机电一体化教研室任务分析任务分析驾驶员操作命令无操作右转向操作左转向操作故障紧急操作转向灯状态左转灯灭灭闪烁闪烁右转灯灭闪

31、烁灭闪烁机电一体化教研室任务分析:控制电路任务分析:控制电路机电一体化教研室任务分析任务分析任务二任务二 汽车转向灯控制汽车转向灯控制表2-11 用开关模拟汽车运行状态或显示命令 驾驶员命令驾驶员命令开关状态开关状态S0(P3.0)S1(P3.1)驾驶员未发出命令00驾驶员发出左转显示命令10驾驶员发出右转显示命令01驾驶员发出汽车故障显示命令11控制要求:开关P3.0接+5V电压时, 左转向灯点亮, 开关P3.1接+5V电压时, 右转向灯点亮, P3.0 、P3.1同时接+5V电压时,左、右转向灯同时点亮,P3.0 、P3.1同时接地时,左、右转向灯同时熄灭。 机电一体化教研室P1.0控制左转向灯P1.1控制右转向灯任务二任务二 汽车转向灯控制汽车转向灯控制表2-12 显示状态P1.0P1.1显示方式显示方式00全亮(故障)01左转向灯亮右转向灯灭10左转向灯亮右转向灯灭11左右转向灯灭机电一体化教研室任务分析:程序流程任

温馨提示

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

评论

0/150

提交评论