第三章单片机翅味实脸的编写设计模块概述单片机SCM(SingleChipMicrocomputer),即MicroController,是把微型计算机主要部分都集成在一个芯片上的单芯片微型计算机。主要包括了微处理器(CPU)、存储器(ROM,RAM),输入/输出口(I/O口)和定时器/计数器、中断系统等功能部件。单片机自20世纪70年代出现以来,已经有了很大的发展,被广泛应用于机械、测量控制、工业自动化、智能接口和智能仪表等许多领域。例如:单片机与传统的机械产品相结合后简化产品结构,实现控制智能化,成为新一代的机、电一体化产品;利用单片机来构成各种工业控制系统、数据采集系统等;在大型工业测控系统中,单片机进行接口的控制与管理,与计算机主机并行工作,可以大大提高系统运行速度。为了使单片机初学者更好地了解单片机的简单应用,本章介绍六个简单实验电路的设计。下一页第三章单片机翅味实脸的编写设计教学目标1.掌握对单片机的I/O端口控制、各中断的具体应用设计方法。2.掌握单片机产生音乐的设计方法、发光二极管和多位七段数码管显示的控制方法。3.了解键盘输入的控制设计方法以及模拟信号到数字信号的简单转换控制设计方法等。下一页第三章单片机翅味实脸的编写设计3.1单片机声控LED灯控制器3.2可控制的LED闪烁灯3.3LED流水灯效果的控制3.4LED复杂显示效果的实验3.5单片机输出音频信号的方法3.6单片机LED数码显示器3.7练习3.1单片机声控LED灯控制器单片机声控LED灯控制器也是利用计算机中断口来进行信号输入的。学生通过本节的学习,可以进一步理解中断过程及其原理。一、实验组织要求1.实验目的.进一步了解计算机中断产生的机理;.了解中断接口电路在实际中的应用。2.实验器材下一页返回3.1单片机声控LED灯控制器下一页上一页返回3.1单片机声控LED灯控制器3.教学节奏与方式下一页上一页返回3.1单片机声控LED灯控制器二、实验内容1.声控前置放大电路与声控原理本声控LED灯闪亮控制器是利用单片机的中断系统实现控制的,为了使较小的声响触发脉冲也能触发单片机的中断系统,必须有一个合适的音频放大器,以便于将微弱的声音信号得到放大,其放大电路如图3一1所示。这里采用的是驻极体话筒,三极管几乎可以使用任何一个NPN型三极管。其工作原理是:话筒MIC拾取了外界的声音之后,将音频信号变为电气信号,经过C4传送给VT2进行放大处理,并由VT2的集电极输出。在话筒刚刚拾取声音的一瞬间,由于三极管的放大作用,使得VT2导通,C极的电位下降,从而触发了单片机的中断请求。电路中C5的作用是为了稳定P3.5端线的电压不发生瞬间的跳变,以保证中断请求所需要的时间。在实下一页上一页返回3.1单片机声控LED灯控制器际的实验中可根据单片机的设置,适当n调整C5和R34的参数值。2.工作原理与电路制作由图可知,音频放大的输出端与89C51单片机的P3.5接口连接,P3口是一个具有第二功能的接口,P3.5端的第二功能为定时器/计数器1(T1)的外部脉冲信号输入端。如果单片机内部相关设置被许可,当外部有脉冲信号输入到该脚时,定时器/计数器的计数值将逐一累加,当累加后的数值大于计数器的最大值时,定时器/计数器便向CPU发出中断请求,进而去执行中断程序。在这里以交通路口的红绿灯为例进行说明:当有汽车驶入路口时,该路口为红灯,而另外的路口又没有车辆,此时红灯路口汽车的驶进而发出声响,此声响由单片机控制器接收到,并控制路口交通灯切换。单片机声控LED灯控制器元器件列表如表3一1所示。下一页上一页返回3.1单片机声控LED灯控制器本制作也可以选用万用电路板。这里使用了本教材配套的成品印制电路板(PCB板),装配好的电路板如图3一2所示,图中线框内的电路即为声控电路元件。用一条连接线将PCB板上的“A',点与“B”点(见图3-2中白圈处)连接起来,将声控放大电路的输出端与单片机的T1端连接,即完成本电路的全部制作过程。下一页上一页返回3.1单片机声控LED灯控制器3.单片机声音控制程序本程序可以在交通灯程序的基础上加以改制。由于使用了定时器/计数器的中断资源,因此中断入口地址为001BH。但目前有一个新的问题,定时器/计数器要通过计数脉冲来工作的,怎样才能使其变为外部中断端口使用呢?其实只要将定时器/计数器的预置初值设置为FFH,那么,只要再增力口一个脉冲,就可使定时器/计数器因记满数字而发生溢出现象,进而向CPU发出中断请求。因此,本实验的中心内容是综合训练中断系统与定时器/计数器的参数设置及编程技巧,具体程序如表3一2所示。下一页上一页返回3.1单片机声控LED灯控制器4.单片机声控LED灯的调试电路的供电电压为5V,电阻器和电容器除了阻值和容量有要求外,其他参数随意,在以上条件下本实验的制作和调试过程如下:.接通5V电源,可以看到交通灯在按照正常的流程进行。将万用表拨至lOV直流电压档,黑表笔接地,红表笔与89C51单片机的15脚连接,目的是测量该脚的电压值;.进行测量,此时表指针应大于3V,对于单片机来说,此电压值为高电平,说明一切准备就绪;.对着话筒,两手猛然合击,此时万用表的指针会随之快速摆动,说明前级放大电路工作正常,如果程序编写正确,那么可以看到路口上的实物交通灯会发生翻转,则本训练顺利完成。上一页返回3.2可控制的LED闪烁灯通常情况下,单片机根据程序流程自动运行,还可根据传感器接收到的外界信息进行自动控制,但有时也需要人工输入一些参数甚至强行加以控制,这时单片机就需要有人机对话功能。单片机人机对话功能即根据单片机的输入/输出等功能引脚,将控制指令或数据输入到单片机内部,从而对系统运行进行控制等。本节将就上述情况的实现进行讲解。一、实验组织要求1.实验目的.学会利用查询方式进行输入控制信息的方法;.了解中断过程及其简单指令的使用;.掌握中断子程序的编写方法。下一页返回3.2可控制的LED闪烁灯下一页上一页返回3.2可控制的LED闪烁灯二、实验内容可控LED流水灯是通过外接开关与单片机的输入/输出接口相连,利用开关通、断的变化,来改变程序的运行状态,一般来说,有两种控制方式:查询方式和中断方式。下面将结合实际,介绍单片机信息的输入与控制原理。1.按键的查询方式顾名思义,查询方式就是通过主动检查和询问的方式来获取端口信息的方式,是一个事先安排好了的计划和步骤的行为。因此,单片机的程序运行时,中央处理器CPU的注意力将定时在既定的窗口上出现,并检查端口状态。当查询窗口时间内,如果该引脚出现电平的变化,将被CPU发现,进而执行相应的开关程序,单片机端口作为输入端口使用时的结构示意图如图3-3所示。当开关管VT截止时,端口因电阻R的存下一页上一页返回3.2可控制的LED闪烁灯在而显现出高电平;当开关S闭合时,端口的电位被强行下拉至0V,端口变为低电平,此时若有指令查询端口状态,那么开关被按下的信息将被CPU获取,进而可依据预期安排执行相应程序。(1)单片机按键查询方式的控制电路原理在本节中,单片机按键实验的输入电路如图3-4所示。89C51单片机的12脚和14脚分别是属于P3.2端口和P3.4端口,通过开关S1和S2与地相连接。如果12脚和14脚原来为高电平,当开关S1或S2被按下时,相应的引脚因与地相连而变成低电平,这里就有一个量的变化;反过来说,如果该引脚出现量的变化,就说明该引脚上的开关被按下,根据程序的预先设置要求,CPU将作出相应的程序处理,进而完成了开关的预置使命。下一页上一页返回3.2可控制的LED闪烁灯(2)单片机按键查询方式的程序流程以12脚开关S1为例,当按键按下时,12脚的电平应由高电平变为低电平,这就要求在按键S1被按下来之前,12脚必须为高电平,因此在使用查询方式作为开关输入量的输入时,要通过软件将该脚置为高电平。查询方式的按键流程图如图3-5所示,显然,程序将根据S1的状态来选择不同的执行路线,最终也就有了不同的运行结果。下面以LED流水灯为例,通过修改程序,加入相应的查询指令,通过软件的判断,使原本固定的程序流程方向发生转向。修改后的程序如表3一3所示。下一页上一页返回3.2可控制的LED闪烁灯将程序编译完成和烧录到芯片中之后,就等待接插电路实验了。(3)按键控制电路的制作本节中所使用的开关没有什么特殊要求,可以选用任何一种常开开关。这里使用了微型按键式开关,如图3一6所示,它有两组开关,在使用时一定要使用万用表的电阻挡测量,分清楚常开开关点和常闭开关点。由于此微型开关是由塑料壳体组成,不宜过长时间地焊接,以免出现开关接触不良的现象。焊接完毕的万用板正、反面情况焊接完毕之后,利用万用表的电阻挡,在单片机电路板断电的情况下,对电路进行检查。开关电路S1和S2的检查流程如表3一4(1)所示。如图3一7所示。下一页上一页返回3.2可控制的LED闪烁灯经过电路的制作和程序的修改,使本节中的流水灯具有可人工控制LED点亮效果,其操作过程与演示效果如下:.接通单片机电源之后,LED灯开始流动闪烁;.按下S1开关,LED开始反向流动闪烁;.按下S1开关,停止流动闪烁;.再按S1开关,程序又返回初始状态。(4)程序去除按键抖动的工作原理将写好程序的单片机芯片插入集成电路插座上之后,程序运行正常。但按下开关之后,有时LED流水灯能反向点亮,而有时会出现跳跃式的控制结果,给使用带来不便,其原因是:尽管开关结构一切正常,但在开关接通的一瞬间,在开关触电的两端会出现火花现象,如图3一8所示,其结果好似开关接触和断开多次,CPU会认为连续按下几次开关。这主要是因为按键是一个机械器件,下一页上一页返回3.2可控制的LED闪烁灯在进行按键操作时由于按键的机械特性,按键在闭合与断开的瞬间都存在一个抖动期,抖动期的长短与按键质量有关,一般为5-20ms。如果任其不管,程序将出现多次跳转的结果。那么如何才能去除开关上的火花现象而造成CPU误判的问题呢?方法有两种:一是采取改进硬件电路来消除此现象;二是可以通过软件的形式来消除影响。软件消除开关触电抖动程序如图3一9所示。当CPU查询到有按键按下之后,延时一段时间之后再回头查询一下该按键是否还是被按下,如状态未变,则说明开关为被按下状态;否则,程序将跳过开关程序,继续执行主程序。下一页上一页返回3.2可控制的LED闪烁灯图3一9中t1和t3按键均为抖动期时的开关触电接触状态波形,t2为按键被按下而可靠接触的时间。目前MCS51单片机处理与判断事件的速度为μs级,而按键的抖动期是ms级的。显然,若不加以处理,这个抖动期对按键操作的识别是有影响的。(5)位数据判断转移指令①JNBbit,STRAT若位地址(bit)=0时,则立即转移到指定的地址“STRAT“.②JBbit,STRAT;若位地址(bit)=1时,则立即转移到指定的地址“STRAT.(6)位置位指令SETBbit;将位“bit',置1。下一页上一页返回3.2可控制的LED闪烁灯2.按键的中断方式(1)中断技术概况中断是在执行或做某件事的过程中,被随机出现的某一情况而打断了的现象。中断现象可形象地比喻成如下情况:.一个人在看书;.突然有人敲门;.你会放下书,在书页间夹好标签;.起身去开门,并在门口与人交谈;.电话铃响了;.让客人稍等片刻;.转而去接电话;.然后又回到门口与来人继续交谈;下一页上一页返回3.2可控制的LED闪烁灯.结束交谈后,关好门,回到书桌前,接着之前做标签的地方继续阅读。上述片段是人们在日常生活中经常遇到的情景,可以说,在日常生活中,我们经常被外界某一事件所打断。这就是我们日常生活中的中断现象。同样,在计算机的运行过程中,中央处理器每时每刻都在不停地忙碌着,它既要主持主程序的工作流程,还经常被外部其他事件所打断。这种被打断的情况是随机性的,在这样的环境下,CPU将根据所接收到的中断信息的轻重