《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务3_第1页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务3_第2页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务3_第3页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务3_第4页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务3_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

任务3

AGV搬运车指示灯设计与制作单片机技术与应用项目一智能车间指示系统设计与制作任务3

AGV搬运车指示灯设计与制作三诺生物传感有限公司【基础任务要求】采用两个发光二极管来AGV搬运车左转灯和右转灯,用单片机的P1.0和P1.1引脚控制发光二极管的亮、灭状态;用两个连接到单片机P3.0和P3.1引脚的拨动开关S0、S1,模拟发出左转、右转命令。任务3

AGV搬运车指示灯设计与制作任务实现四步骤绘制硬件电路图搭接硬件电路硬件设计调试硬件电路调试控制程序功能调试与实现绘制程序流程图按键控制指示灯编程方法程序设计01020304重点、难点难点绘制系统框图元器件选型分配资源方案设计对接单片机应用系统开发流程STC89C52单片机时钟电路复位电路电源电路发光二极管电路系统框图任务3

AGV搬运车指示灯设计与制作按键电路任务名:AGV搬运车指示灯设计与制作元件名称图片型号数量Proteus中的名称单片机芯片AT89C511用AT89C51代替STC89C52晶振12MHZ1CRYSTAL电容22pF2CAP电解电容22μf/16V1CAP-ELEC电阻1KΩ1RES电阻50Ω2RES发光二极管2LED-RED拨动开关2SW-SPDT按键1BUTTON元器件选型硬件电路图任务3

AGV搬运车指示灯设计与制作硬件设计-绘电路细致规范严谨小锦囊电路绘制规范:用统一规定的元件符号尽量避免导线的交叉导线要求横平竖直设置元器件参数元件放在编辑区内软件设计

1.如何编程实现发光二极管的亮灭?1

2.如何编程实现判断拨动开关的状态?2重点、难点控制程序设计控制左转向灯按键P3.0左转向灯P1.0控制右转向灯按键P3.1右转向灯P1.1闭合

0亮0闭合0

亮0断开1灭1断开1灭1开始右转按键是否按下?点亮左转向灯左转按键是否按下?点亮右转向灯延时熄灭左、右转向灯延时结束NY程序流程图YN知识链接-选择结构选择程序单分支if双分支if-else多分支重点、难点一、选择结构程序选择结构程序-对给定条件进行判断,并根据判断结果选择应执行的操作的程序。选择程序单分支双分支多分支1、单分支语句-if语句if(表达式){语句组;}后续语句;一、选择结构程序1、单分支语句-if语句表达式的值什么时候为真,什么时候为假呢?只有表达式的值为0,表示假;非0,表示真。if(表达式){语句组;}后续语句;一、选择结构程序开始右转按键是否按下?点亮左转向灯左转按键是否按下?点亮右转向灯延时熄灭左、右转向灯延时结束NY程序流程图YN关系运算(比较运算)是将两个数据进行比较,判定是否符合给定的关系。关系运算符是比较两个数据量的运算符。2.关系运算符

关系表达式是用关系运算符将两个表达式连接起来的式子。

关系表达式的一般形式为:表达式关系运算符表达式

关系表达式的值只有两种可能,即真和假。如果运算的结果是真,用”1”表示;如果运算的结果是假,则用”0”表示。假定a=5;b=3;a>b的结果是什么呢?a==b假0a!=b真1真1实例关系运算符的优先级a==b>ca==(b>c)>,<,>=,<=优先于==,!=#include<reg51.h>sbitleft_led=P1^0;sbitright_led=P1^1;sbitleft_sw=P3^0;sbitright_sw=P3^1;voiddelay(unsignedchari);voidmain(){

while(1){if(left_sw==0){left_led=0;}if(right_sw==0){right_led=0;}delay(200);left_led=1;right_led=1;delay(200);}}voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}控制程序设计程序代码编写规范:字母大小写一致标点符号必须在英文状态下输入

变量命名规则勤勉创新坚持2、双分支语句-if-else语句一、选择结构程序2.双分支语句-if-else语句一、选择结构程序#include<reg51.h>sbitleft_led=P1^0;sbitright_led=P1^1;sbitleft_sw=P3^0;sbitright_sw=P3^1;voiddelay(unsignedchari);voidmain(){

while(1){if(left_sw==0){left_led=0;}else{left_led=1;}delay(200);left_led=1;right_led=1;delay(200);}}voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}控制程序设计if(right_sw==0){right_led=0;}else{right_led=1;}3、多分支语句-ifelseif语句一、选择结构程序3、多分支语句-ifelseif语句一、选择结构程序#include<reg51.h>sbitleft_led=P1^0;sbitright_led=P1^1;sbitleft_sw=P3^0;sbitright_sw=P3^1;voiddelay(unsignedchari);voidmain(){while(1){

if(left_sw==0&&right_sw==0){

left_led=0;

right_led=0;delay(200);

left_led=1;

right_led=1;delay(200);

}elseif(left_sw==0){

left_led=0;delay(200);

left_led=1;delay(200);}elseif(right_sw==0){

right_led=0;delay(200);

right_led=1;delay(200);}voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}else{;}}}if语句的嵌套匹配原则

(1)if语句的嵌套在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。(2)else子句与if的匹配原则:与在它上面、距它最近、且尚未匹配的if配对。一、选择结构程序4、多分支语句-switch语句switch(变量)//变量只能是整型或字符型。{case

变量可能值1:分支1语句;break;case

变量可能值2:分支2语句;break;……case

变量可能值n:分支n语句;break;default:最后分支语句;

//default也可以省略。}#include<reg51.h>sbitleft_led=P1^0;sbitright_led=P1^1;sbitleft_sw=P3^0;sbitright_sw=P3^1;voiddelay(unsignedchari);voidmain(){unsignedcharsw;P3=0xff;while(1){

sw=P3;switch(sw){case0xfc:left_led=0;right_led=0;break;

case0xfe:left_led=0;break;case0xfd:right_led=0;break;default:;}delay(200);

left_led=1;

right_led=1;delay(200);}}voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}注:(1)switch后面的“表达式”的类型:int、char和枚举型中的一种。(2)每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象。(3)各case及default子句次序,不影响执行结果。(4)多个case子句,可共用同一语句(组)。(1)if后面的“表达式”:除关系(逻辑)表达式外,也允许是整型、实型、字符型等其它类型的数据。(2)在语句组1和语句组2中,每个语句后面的分号不可少!例如:if(num1>num2)max=num1;elsemax=num2;

关系表达式只能描述单一条件。如果需要同时描述多个条件时,就要借助于逻辑表达式。

①逻辑运算符C语言中提供了三种逻辑运算符:逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑表达式的一般形式为

逻辑与:表达式1&&表达式2逻辑或:表达式1||表达式2

逻辑非:!条件式5.逻辑运算符②逻辑表达式真真真逻辑与:&&表达式1&&表达式2&&=真&&=假假真&&=假假&&=假假假逻辑或:||表达式1||表达式2真真真||=真||=假真=假=假假假||||真真逻辑非:!!表达式真!=假!=假真逻辑与:&&逻辑或:

||逻辑非:!表达式1&&

表达式2表达式1||表达式2!表达式16<=age<18age>=6age<18&&5.逻辑运算符逻辑与:&&逻辑或:

||逻辑非:!表达式1&&表达式2表达式1||表达式2!表达式1例如:假定有两个开关K1和K2,开关闭合时连接的I/O引脚为低电平,否则为高电平,请问判断K1和K2同时闭合的表达式应该怎么写?K1==0&&K2==0能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式a>=10||a<=05.逻辑运算符逻辑与:&&逻辑或:

||逻辑非:!表达式1&&表达式2表达式1

||表达式2!表达式1!优先级别最高,其次是&&,最低是||!>算术运算符>关系运算符>&&>||5.逻辑运算符

调试运行1.看故障现象2.析故障原因3.查硬件故障4.查软件故障5.验功能效果故障排查步骤严谨规范精益求精进阶任务-键控多种花样LED灯显示设计要求:通过4个按键控制8个LED灯在4种显示模式之间切换。4种显示模式如下。第1种显示模式:全亮。第2种显示模式:交叉亮灭。第3种显示模式:高四位亮,低四位灭。第4种显示模式:低四位亮,高四位灭。知识点独立按键编程原理软件去抖编程思路:在检测到有键按下时,先执行10ms左右的延时程序,然后再重新检测该键是否仍然按下,以确认该键按下不是因为抖动引起的。同理,在检测到该键释放时,也采用先延时再判断的方法消除抖动的影响。软件去抖程序段如下:if(s1==0)//第一次检测到按键s1按下{

delay(1200);//延时10ms左右去抖if(s1==0)//再次检测到s1按下{

…//按键功能实现

while(!s1);//有键释放,跳出while循环

delay(1200);//延时10ms左右去抖while(!s1);//再次判断是否有键释放}}voiddelay(unsignedinti)//延时函数{

unsignedintk;for(k=0;k<i;k++);}#include<reg51.h>voiddelay10ms(unsignedintc);voidmain(){ unsignedcharkeyvalue; w

温馨提示

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

评论

0/150

提交评论