您好,欢迎访问三七文档
项目1信号灯控制泸州职业技术学院机电工程系《单片机应用技术》精品课程组《单片机应用技术》本讲主要内容4相关知识1教学目标2工作任务3项目实践5能力拓展6项目考核【教学目标】1、终极目标:制作一个彩灯闪烁的单片机控制系统。2、促成目标:(1)了解单片机的基本概念及MCS系列单片机结构特点;了解典型单片机系列的基本情况;了解MCS系列单片机的发展及应用领域;(2)了解MCS-5l单片机内部结构和功能;(3)掌握MCS-5l单片机引脚功能以及工作方式和单片机的存储器结构的特点、性能;(4)熟练掌握单片机的指令系统特点;(5)理解单片机应用系统开发的基本方法和设计流程;掌握MCS系列单片机的开发工具;掌握编程软件、编程器、虚拟设备和仿真器的基本操作方法;了解单片机开发过程中的操作技巧和注意事项;(6)掌握简单的顺序、分支、循环程序结构和子程序的编写和调用方法;(7)掌握延时子程序等典型程序的设计方法;(8)初步掌握单片机应用系统分析和软硬件设计的基本方法,建立单片机系统设计的基本概念;设计一个彩灯闪烁的单片机控制系统,在单片机的P0.0端口上接一个发光二极管L1,使L1不停地一亮一灭,一亮一灭的时间间隔为0.2秒,循环往复。【工作任务】【活动一】总体设计1.系统组成本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制功能等。本系统的硬件采用模块化设计,以AT89S52单片机为核心,与LED彩灯闪烁电路组成控制系统。该系统硬件主要包括以下几个模块:AT89S52主控模块、LED彩灯闪烁模块等。其中AT89S52主要完成外围硬件的控制以及一些运算功能,LED彩灯电路完成灯光的闪烁功能。系统组成方框图如图1.1所示。【项目实践】单片机LED彩灯电路复位电路时钟电路电源电路图1.1LED彩灯闪烁控制系统组成方框图【项目实践】模块化设计(Modulardesign)降低了程序设计的复杂性、便于修改、且使得支持系统不同部分的并行开发实现起来更容易。应用软件采用模块化设计方法,该系统软件主要由主程序、延时子程序模块等组成,系统软件结构框图如图1.2所示。延时子程序主程序图1.2单片机彩灯闪烁系统软件结构框图【项目实践】2.系统工作原理发光二极管简称为LED,由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。发光二极管是一种把电能转换成光能的半导体器件。它由PN节组成,在正向偏置的条件下导通,此时会发射出一定波长的光。发光二极管的发光功率近似的与导通电流成正比。目前大多数产品可以由集成电路直接驱动。【项目实践】图1.3发光二极管发光效果图图1.4发光二极管发光实物图【项目实践】与小白炽灯泡和氖灯相比,发光二极管的特点是:工作电压很低(有的仅一点几伏),工作电流很小(有的仅零点几毫安即可发光),抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。把它的管心做成条状,用7条条状的发光管组成7段式半导体数码管,每个数码管可显示0~9十个数目字。发光二极管有很多类,如图1.4所示为几种发光二极管,其电气原理图如图图1.5所示,当在它的A和K两个电极加上合适的电压的时候,它就会亮起来。说“合适的电压”,是因为不同的发光二极管工作电压并不相同,一般是在1.6~2.8V之间,而工作电流则一般在2~30mA之间,但是实际工作的选择范围一般是4~10mA之间。图1.5发光二极管电气的电路图形符号【项目实践】1.单片机选型51系列单片机包括许多类型,它们的内部结构基本相同。AT89S52是目前应用比较广泛的51系列兼容单片机中的代表产品。(1)主要性能:与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz~33Hz三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符【项目实践】【活动二】硬件设计(2)功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。(3)AT89S52标准功能8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。【项目实践】(4)AT89S52芯片引脚结构图1.6AT89S52芯片引脚结构图鉴于此,本项目选用AT89S52单片机作为主控制器。【注意】在后面的项目中,如无特殊说明,均以AT89S52单片机作为主控制器。【项目实践】2.主控模块设计电源、时钟信号以及复位电路是单片机工作的基本条件,缺一不可。单片机基本系统包括电源电路、时钟电路、复位电路。(1)电源电路模块设计电源模块为系统板上其它模块提供+5V电源,系统板为从USB接口获取+5V电源,只要用相应配套的USB线从电脑主机获取+5V直流电源。(2)时钟电路模块设计单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准。MCS-51的时钟信号可以由两种方式产生,一种是内部时钟方式,利用芯片内部的振荡电路;另一种方式为外部时钟方式。由于AT89S52单片机芯片内有时钟振荡电路,因此本项目中采用内部时钟方式,只要在单片机的XTAL1和XTAL2引脚外接石英晶体和微调电容,就构成了自激振荡器并在单片机内部产生时钟脉冲信号,具体电路设计如图1.3所示。图中电容C1和C2的作用是稳定频率和快速起振,电容置在5~30pF,在此选择30pF;晶振X1的振荡频率范围在1.2~12MHz间选择,本项目中选择12MHz。时钟电路为单片机产生时钟脉冲序列,作为单片机工作的时间基准,典型的晶体振荡频率为12MHz。【项目实践】(3)复位电路模块设计复位电路使单片机或系统中的其他部件处于某种确定的状态。当在51单片机的RST引脚引入高电平并保持2个机器周期,单片机内部就执行复位操作。实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是按键复位。本项目中采用按键复位方式,具体电路设计如图1.3所示。在单片机运行期间,可以利用此按键完成复位操作。【注意】在后面的项目中,如无特殊说明,主控模块的设计均按此方式设计,不再赘述。3.LED彩灯模块设计LED彩灯闪烁输出电路采用发光二极管LED,LED的K极通过限流电阻R与单片机的P0口的P0.0连接,LED的A极连接到+5V电源。系统供电为+5V,LED上串接的电阻是1KΩ,如果此时LED上的电压是2.0V,那么此时通过LED的电流为(5V-2V)/1000Ω=3mA。如果需要提高亮度,电流一般会控制在10mA左右,则此时电阻应该选择(5V-2V)/10mA=300Ω,所以可以就近选择330Ω。该模块与单片机的接口电路如图1.7所示。【项目实践】图1.7LED彩灯闪烁模块与单片机的接口电路原理图【项目实践】1.算法设计根据系统工作原理图1.7可知:当P0.0端口输出高电平,即P0.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;我们可以使用SETBP0.0指令使P0.0端口输出高电平;当P0.0端口输出低电平,即P0.0=0时,发光二极管L1亮;我们可以使用CLRP0.0指令使P0.0端口输出低电平。①延时程序设计由于单片机指令的执行时间很短,属于微秒级,而我们要求的彩灯闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行彩灯点亮和熄灭指令时,插入延时程序,来达到我们的要求。②循环程序结构设计【项目实践】【活动三】软件设计由于需要控制发光二极管反复的一亮一灭,在程序中需要反复执行该程序段,为了避免在程序中多次的编写,我们采用循环结构来实现该功能,可以通过利用条件转移或无条件转移指令LJMP或者AJMP来控制程序的跳转执行,达到发光二极管反复的一亮一灭的目的。③子程序设计由于发光二极管点亮的时间为0.2秒,熄灭的时间也为0.2秒,在程序中需要多次执行同样的计算和操作,如果每次都从头开始编制该段程序,不仅麻烦,而且浪费存储空间。对于这种在一个程序中反复出现的程序段,我们采用子程序结构来实现。当主程序在运行时,需要调用子程序时,只要执行调用子程序指令ACALL或者LCALL,使主程序跳转至子程序执行,子程序处理完毕,用RET指令返回主程序,继续执行主程序后面的操作。2.数据结构设计单片机的P0口线的P0.0用于发光二极管L1亮、灭的控制,当P0.0=0表示L1点亮,当P0.0=1表示L1熄灭;工作寄存器R5、R6、R7为延时子程序的循环变量。【项目实践】3.程序设计(1)主程序设计主程序主要完成硬件初始化、延时子程序调用等功能。①初始化通过初始化把P0.0设置为0,让发光二极管点亮。②循环闪烁调用延时子程序,使发光二极管点亮0.2秒;然后修改P0.0的状态为1,再调用延时子程序,使发光二极管熄灭0.2秒;最后使程序跳转到开始重新执行,就可以实现发光二极管循环闪烁。主程序设计流程图如图1.8所示。【项目实践】开始P0.0输出“1”,L1灯熄灭调用延时子程序P0.0输出“0”,L1灯点亮调用延时子程序图1.8主程序设计流程图【项目实践】(2)延时子程序设计延时子程序完成发光二极管L1点亮或熄灭的延时时间。延时程序是一种应用较为广泛的小程序,一般采用多条语句循环执行来实现延时。下面具体介绍其原理:系统所用的石英晶体振荡频率为11.0592MHz,因此,1个机器周期=1/石英频率*12,即为12/11.0592微秒。机器周期微秒MOVR6,#20;2个2LOOP1:MOVR7,#230;2个2DJNZR7,$;2个2DJNZR6,LOOP1;2个2因此,上面的延时程序时间为【2+R6*(2+2*R7+2)】*机器周期=9282*12/11.0592=10.072ms。由以上可知,当R6=10、R7=230时,延时约5ms;当R6=20、R7=230时,延时约10ms,以此为基本的计时单位。【项目实践】本项目要求延时0.2秒=200ms,10ms×R5=200ms,则R5=20,设计的延时子程序代码如下:;****************************************************************;功能:延时子程序,延时0.2秒;****************************************************************DELAY200ms:MOVR5,#20;设置外循环初始值LOOP1:MOVR6,#20;外循环结构开始,设置内循环初始值LOOP2:MOVR7,#230;内循环结构开始DJNZR7,$;反复执行本指令,指导R7=0为止DJNZR6,LOOP2;内循环结构判断条件DJNZR5,LOOP1;外循环结构判断条件RET;子程序返回【项目实践】初始化外层变量R5=20开始初始化中层变量R6=20初始化内层变量R7=230R7=0?NYR6=0?NYR5=0?NY子程序返回图1.9延
本文标题:项目1信号灯控制
链接地址:https://www.777doc.com/doc-803132 .html