单片机应用技术 课件 项目3、4 汽车转向灯设计与实现、产品计数器设计与实现_第1页
单片机应用技术 课件 项目3、4 汽车转向灯设计与实现、产品计数器设计与实现_第2页
单片机应用技术 课件 项目3、4 汽车转向灯设计与实现、产品计数器设计与实现_第3页
单片机应用技术 课件 项目3、4 汽车转向灯设计与实现、产品计数器设计与实现_第4页
单片机应用技术 课件 项目3、4 汽车转向灯设计与实现、产品计数器设计与实现_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

项目3汽车转向灯设计与实现素质目标1.通过汽车转向灯项目分析,培养学生安全意识和遵守规则意识。2.通过分支选择语句的学习,树立学生正确的人生观、价值观和世界观。知识目标1.掌握独立式键盘的工作原理与应用。2.掌握C语言选择语句的使用。3.掌握典型分支结构程序设计和调试方法。能力目标1.能够根据设计要求,选择参数、性能合理的电子元器件,使用Proteus进行硬件电路仿真设计。2.熟悉C51对并行I/O端口作输入口操作的编程方法。3.熟练使用典型分支结构程序设计和调试方法。设计要求:

设计制作以MCS-51单片机为主控芯片,外接键盘电路、LED电路,通过编程实现汽车转向灯控制系统。基于单片机的汽车转向灯控制系统键盘知识开关(switch)按键/按钮(button)键盘工作原理1、键输入信号判断:通过按键的接通与断开,产生两种相反的逻辑状态低电平“0”与高电平“1”。2、键功能的实现:对于一组键或一个键盘,需通过接口电路与单片机相连。可采用查询或中断方式测试有无键按下,再确定是哪一个键按下,转入执行该键的功能程序,执行完后再返回主程序按键结构与特点机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如右图所示,抖动时间的长短与开关的机械特性有关,一般为5

10ms。若有抖动,按键按下会被错误地认为是多次操作。按键触点的机械抖动

为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。键数较少时,采用硬件去抖(R-S触发器构成的去抖动电路)键数较多时,采用软件去抖(延时去抖)

软件上采取的措施是在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动的影响。按键防抖动措施键盘与单片机的连接方式1.独立式键盘2.矩阵式键盘键盘扫描方式

在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。

键盘扫描程序一般应包括以下内容:(1)判别有无键按下。(2)键盘扫描取得闭合键的行、列值。(3)用计算法或查表法得到键值。(4)判断闭合键是否释放,如没释放则继续等待。(5)将闭合键键号保存,同时转去执行该闭合键的功能。

本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制功能等。汽车信号灯控制系统以单片机AT89C52、电源电路、复位电路及时钟电路构成的最小系统模块和外围接口电路组成,外围接口电路主要由LED显示电路、按键输入电路构成。系统通过单片机并行I/O口构成键盘输入和LED显示输出电路,可实现汽车转弯灯中各信号灯的功能操作。汽车转向灯系统方案设计LED电路按键输入电路复位电路时钟电路电源电路单片机硬件方案确定最小系统

电路单片机硬件方案按键输入电路LED显示电路

硬件电路设计汽车转向灯参考仿真电路图C语言知识1、运算符和表达式2、选择(分支)语句

软件设计运算符及表达式运算类型运算符优先级结合性括号运算符()1从左至右逻辑非和按位取反!~2从右至左算术运算*/%3从左至右+-4从左至右左移、右移运算<<>>5从左至右关系运算<<=>>=6从左至右==!=7从左至右位运算&8从左至右^9从左至右|10从左至右逻辑与&&11从左至右逻辑或||12从左至右赋值运算与复合赋值运算

=+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=14从右至左选择分支语句1、if语句2、if……else语句3、if-elseif-else语句

if选择语句基本if语句的格式如下:if(表达式){

语句组;

}if语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组”,否则跳过该语句组,继续执行下面的语句。

if语句中的“表达式”通常为逻辑表达式或关系表达式,在if语句中,“表达式”必须用括号括起来。在if语句中,花括号“{}”里面的语句组如果只有一条语句,可以省略花括号。如“if(P3_0==0)P1_0=0;”语句,但是为了提高程序的可读性和防止程序书写错误,建议读者在任何情况下,都加上花括号。if-else选择语句if-else语句的一般格式如下:if(表达式) {

语句组A;

} else{

语句组B;

}if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组1”,否则执行“语句组2”图6-if-else语句执行流程if……elseif……else语句

if-elseif-else是ifelse语句组成的嵌套,用于实现多个条件分支的选择。其一般格式如下:if(表达式){语句1;}elseif(表达式){语句2;}elseif(表达式){语句3;}elseif(表达式){语句4;}else{语句N;}

if-elseif-else语句执行流程

在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。键盘扫描程序一般应包括以下内容:(1)判别有无键按下。(2)键盘扫描取得闭合键的行、列值。(3)用计算法或查表法得到键值。(4)判断闭合键是否释放,如没释放则继续等待。(5)将闭合键键号保存,同时转去执行该闭合键的功能。

键盘扫描方式主程序算法及流程图开始初始化:LED全灭,正常行驶;输入端口初始化;键盘扫描程序Y有键按下N主程序设计流程图

主程序主要完成硬件初始化、键盘扫描与键位功能处理程序、延时功能函数调用等功能。1.判别有无键按下(延时去抖)

方法:实时读取I/O口状态,取反后测试,若有键闭合,则x≠0;若无键闭合,则x=0。当测试有键闭合时,需要进行延时去抖动处理,按键消除抖动仍采用延时函数。即在发现有键盘按下后,延时10ms再进行逐行扫描。因为键被按下时的闭合时间远远大于10ms,所以延时后再扫描再判断。若某键闭合则相应单片机引脚输入低电平。if(x==0)continue;//如果无键按下则认为是按键抖动,重新扫描键盘。2.采用查询方式确定键位,根据键值转去执行该闭合键的功能方法:如果有键按下,则根据按键的不同执行相应的按键操作。键值处理程序为选择(分支)结构,使用了if-elseif-else语句。

键盘扫描程序分析键盘扫描程序分析开始左转信号读取键值是否有键按下?P1.0按下YYP1.4按下P1.2按下P1.6按下YYNNN右转信号刹车信号紧急信号NNYwhile(1) {/**************键盘扫描*************************************************/P1=0xff; //键盘初始化

x=P1;//读键盘状态

x=~x;//键盘状态取反

if(x==0)continue;//如果无键按下则认为是按键抖动,重新扫描键盘

delay(250);//延时去抖动

if(x==0)continue;//如果无键按下则认为是按键抖动,重新扫描键盘/*****************根据键值相应执行功能*******************************************/

if(K1==0)//K1键:左转

{P0=tab[0];delay(100);P0=0x00;delay(100);}elseif(K2==0) //K2键:右转

{P0=tab[1];delay(100);P0=0x00;delay(100);}elseif(K3==0) //K3键:刹车

{while(k3==0)P0=tab[2];P0=0x00;}elseif(K4==0) //K4键:紧急

{P0=tab[3];delay(100);P0=0x00;delay(100);

}elseP0=0x00;//正常}键盘扫描程序分析1.独立式按键采用每个按键单独占用一根I/O口线结构。当按下和释放按键时,输入到单片机I/O端口的电平是不一样的,因此可以根据不同端口电平的变化判断是否有按键按下以及是哪一个按键按下。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大。2.C51语言供给了4种形式的条件语句:C51提供三种形式的if语句:①if(表达式){语句;}②if(表达式){语句1;}else{语句2;}③if(表达式1){语句1;}elseif(表达式2){语句2;}elseif(表达式3){语句3;}……else{语句n;}一键多功能按键识别电路设计设计要求:用一键多功能的实现花样流水灯的控制。即同一个键位通过按下次数选择控制不同的LED流水灯效果。项目4产品计数器设计与实现素质目标1.通过数码管低功耗节能显示培养学生节约意识。2.培养学生的代码编写规范、勇于实践的劳动精神和精益求精的工匠精神。知识目标1.能说出数码管常见型号和类型和数码管静态显示方式。2.能提供数码管静态电路设计。3.能说出C语言一维数组的使用。能力目标1.能分析电路原理图和能使用常用元器件设计数码管静态显示电路模块。2.能够基于C语言,熟练使用一维数组的查表功能,学会数码管静态显示的程序编写调试。设计要求:设计一个产品计数器的单片机应用系统,即单片机的某个I/O口作输入口,外接红外线光电传感器作为实时产品计数,1个独立按键为计数值复位清零的功能按钮;单片机的某些I/O口作输出口,接2个1位数码管,通过编程实现产品计数显示效果。基于单片机的产品计数器产品计数器简介计数器是一种可以用在不同工作、生活场合,对超市、停车场、公交汽车、银行、图书馆、快递业、印刷业等场合的人数、车数或者产品数量进行统计和管理。产品计数器利用单片机技术和光电传感器、按键、数码管等组成系统,通过光电传感器检测已加工的产品,并将这一自动检测信息送入单片机系统中;通过独立按键完成复位清零操作;通过数码管显示计数数量信息,采用数码管静态显示方式,可以保证其长时间运作,也具备了高亮度、可视性、小功耗、使用寿命长等优点。数码管简介数码管是一种用于显示数字和一些字母符号的电子元件,通常由LED或荧光灯组成,其基本单元是发光二极管。通过对其不同的管脚输入相对应的电流,会使其发亮,从而能够显示时间、日期、温度等所有可用数字表示的参数。由于它的价格便宜,被广泛用作数字仪器仪表、自动化控制装置、计算机的数显器件,特别是在家用电器领域应用极为普遍,如空调、热水器、冰箱等。数码管实物图常见的数码管包括七段数码管和十六段数码管。七段数码管由七个LED灯组成,分别表示数字0-9以及一些字母符号。十六段数码管则由16个LED灯组成,除了数字0-9以外,还可以表示更多的字母符号和图形。数码管可以作为一种节能的显示器件来使用,它的功耗通常比液晶显示器等其他显示器件要低得多,数码管是固态器件,使用寿命比其他显示器件要长,数码管通常只显示数字和字母,而不需要显示复杂的图形和图像,因此它们可以使用较低的分辨率和较少的像素。这意味着数码管所需的计算和图形处理能力更低,从而减少了能源消耗。数码管的主要特点是:(1)驱动发光只需要低电压、小电流的条件,并且其能与CMOS电路、TTL电路兼容。(2)数码管的响应时间非常短(<0.1µs),它的高频特性好,单色性好,亮度高。(3)数码管的体积小,重量轻,抗冲击能力高。数码管的结构和分类LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管,如图所示。数码管内部电路图数码管字形编码要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推。如使用共阴极数码管,数据为0表示对应字段灭,数据为1表示对应字段亮。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段灭;如要显示“0”,共阴极数码管的字型编码应为:00111111B(即3FH),共阳极数码管的字型编码应为:11000000B(即C0H)。数码管字形编码显示数字共阴顺序小数点灭共阳顺序小数点亮共阳顺序小数点灭Dpgfedcba16进制0001111113FH40HC0H10000011006H79HF9H2010110115BH24HA4H3010011114FH30HB0H40110011066H19H99H5011011016DH12H92H6011111017DH02H82H70000011107H78HF8H8011111117FH00H80H9011011116FH10H90H根据LED显示的硬件设计方法的不同,LED显示驱动分为静态显示和动态显示两种方法。1.静态显示方式所谓静态显示方式,就是当显示某一个数字时,代表相应笔划的发光二极管恒定发光,例如7段数码管的a、b、c、d、e、f笔段亮时显示数字0;b、c亮时显示1;a、b、d、e、g亮时显示2等。数码管的显示方式静态显示电路数码管的静态显示方式连接所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。特点原理简单;显示亮度强,无闪烁;占用I/O资源较多。数码管的动态显示方式连接

所有LED的段选线共同连接在一起共用一个8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。动态显示电路红外线光电传感器红外线光电传感器是一种利用人肉眼看不见的、波长为780nm-1mm的近红外线和红外线的反射在介质中传播后经过长距离后返回接收信息来自动检测和判别物体的传感器。红外线光电传感器是由发射器、接收器和检测电路三部分组成。红外线光电传感器数组数组:构造数据类型,是一组有序数据的集合数据类型基本类型构造类型指针类型空类型整型实型字符型数组结构联合枚举单精度型双精度C语言的数据类型数组的概念数组是构造数据类型,是一组有序数据的集合,数组中的每个元素都属于同一种数据类型,不允许在同一数组中出现不同类型的变量,数组元素的数据类型就是该数组的基本类型。例如,整型数据的有序集合称为整型数组,字符型数据的有序集合称为字符型数组。数组分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。数组的基本特点构造类型数据:由基本类型数据按照一定规则组成。数组:同类型数据的一个有序集合。数组用一个名字来标识,称为数组名。数组中各元素的顺序用下标表示,下标为n的元素可以表示为数组名[n]。改变[]中的下标就可以访问数组中所有的元素。应用场合:需要处理的数据为数量已知的若干相同类型的数据时。注意:数组先定义,后使用。一维数组的定义和引用一维数组的定义:一般格式:类型标识符数组名[常量表达式];

int

array[10];

unsignedcharnum[7];说明:数组名——见名知意;数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。方括弧而非圆括弧;常量表达式:可以是常量或符号常量;表示数组元素的个数(也称数组长度)。不允许对数组大小作动态定义。数组元素下标从0开始。array[0],array[1],…array[9];遵循标识符命名规则一维数组的定义和引用一维数组的初始化:一般格式:数据类型数组名[常量表达式]={初值表};说明:定义时赋初值;intscore[5]={1,2,3,4,5};给一部分元素赋值;intscore[5]={1,2};不对数组全部元素赋值,则全部元素被赋值为0;

intscore[5];给全部数组元素赋初值时,可以不指定数组长度;

intscore[]={1,2,3,4,5};一维数组的定义和引用一维数组的查表功能:数组的一个非常有用的功能之一就是查表。表可以事先计算后装入程序存储器中。如:unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定义数组tab[],并初始化unsignedchark;

while(1){ for(k=0;k<10;k++) {P2=tab[k];//查表取数}

}二维数组或多维数组数组的下标具有两个或两个以上,则称为二维数组或多维数组。定义二维数组的一般形式如下:

类型说明符数组名[行数][列数];其中,数组名是一个标识符,行数和列数都是常量表达式。例如:floatdemo2[3][4];//demo2数组有3行4列共12个实型元素二维数组也可以在定义时进行整体初始化,也可以在定义后单个地进行赋值。例如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化intb[3][4]={{1,2,3,4},{5,6,7,8},{}};//部分初始化,未初始化的个元素为0字符数组若一个数组的元素是字符型的,则该数组就是一个字符数组。例如:chara[12]={“ChongQing”};//字符数

charadd[3][6]={"weight","height","width"};//字符串数组

本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制。与数码管电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C52主控模块、数码管静态显示电路模块等。其中AT89C52主要完成外围硬件的控制以及一些运算功能,传感器电路完成计数,按键完成复位功能,数码管完成数字00到99的显示功能。本系统软件主要实现产品计数显示功能。产品计数器方案设计单片机数码管显示电路复位电路时钟电路电源电路红外光电传感器电路按键电路硬件方案确定最小系统单片机传感器电路设计硬件方案按键复位设计数码管显示设计硬件电路设计产品计数器系统硬件结构包括最小系统、按键电路(其中一个按键模拟传感器信号,另一个按键为复位按钮)及数码管显示电路。产品计数器的计数由按键电路完成,利用P1口的P1.0~P1.1端口分别模拟外部传感器信号和实现计数值复位清零功能。采用2个1位共阳极数码管为显示器。单片机的P2口、P3口分别与两个数码管的段码连接,其中P2口连接显示计数的十位,P3口连接显示计数的个位。P2口、P3口的八个引脚刚好对应P2、P3口特殊功能寄存器的八个二进位,当P2、P3口某个引脚输出高电平“1”时,对应数码管段码熄灭;当P2、P3口某个引脚输出低电平“0”时,对应数码管段码点亮。若将计数值进行十进制数分离,再分别给P2、P3口送入不同的数字,就能在两个数码管上看到数值的显示了。产品计数器的硬件原理图算法分析对于数码管而言,要显示数字或字母,首先应该选中该数码管,然后点亮相应字段。例如:显示数字“3”,应当是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、Dp不亮。可以列出数码管显示数字的段码表(以两位数码管显示的个位数为例)。产品计数器系统程序设计段名称DPGFEDCBA对应段码对应引脚P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0数字011000000C0H数字111111001F9H数字210100100A4H数字310110000B0H数字41001100199H数字51001001092H数字61000001082H数字711111000F8H数字81000000080H数字91001000090H共阳数码管显示数字的段码表算法分析由于数码管显示的数字“0~9”的字型码“C0H、F9H、A4H、B0H、99H、92H、82H、F8H、80H、90H”没有规律可循,只能采用查表的方式来完成我们所需的要求。在程序设计中可以设计一个变量,每隔一定时间在“0~9”之间变化,然后按照这个数据去查找段码表,把查到的数据送到P3口。

所谓表格(数组)是指在程序中定义的一串有序的常数,如平方表、字形码表、键码表等。因为程序一般都是固化在程序存储器(通常是只读存储器ROM类型)中,因此可以说表格(数组)是预先定义在程序的数据区中,然后和

温馨提示

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

评论

0/150

提交评论