版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
单片机原理的运用实践1单片机技术的应用范围广、通用性强、工程应用的创新成果较多,并且在各类电子设计大赛中扮演着重要的角色.学习单片机技术必须与实验和工程实践紧密相结合,从入门到精通,首先需要学习其原理知识,再进行实际的动手实验;工程经验积累到一定程度,就能运用自如.*初学者要掌握单片机技术,可以结合有代表性的应用实例学习和实践,进行模仿、理解和体验,有助于尽快尝试到学习和成功的乐趣.*单片机技术的应用,都不同程度用到定时器/计数器、中断系统和串行口通信三大核心功能,灵活运用就能营造出有特色的结果.*本章展示的代表性原创实例,均围绕这三大核心功能而作,采取精简巧妙却富针对性的电路构思,旨在阐明所涉及的技术原理和相关思路.*所展示的可执行的硬件软件范例,融合了诸多工程实施经验和资料,使读者在实践中领悟技术要领并受到启迪,培养分析电路原理能力,养成查阅元器件数据手册习惯和积累工程经验.2*文中实例的电路装置,按具体情况附有不同形式的源程序供参考,旨在提供一些对比以体验汇编语言对底层功能控制的简洁,以及C语言所显出的对运算能力的优势,据情况互补运用能有助于单片机编程技术的学习和提高.8.1
定时器/计数器实现的答辩倒计时51子系列单片机有两个定时器/计数器,可作片外输入信号的计数器,也可作片内定时器,还可与其他技术结合发挥功能.利用单片机的定时器技术实现的答辩倒计时装置,能直观地控制3诸如答辩﹑演讲等活动的时间,克服超时现象,消除主持者人工干预的尴尬,提高效率和体现文明品位.8.1.1
基本思路主要体现对定时器的定时中断基本功能的运用,其中包括倒计时值预置、实时显示、定时时基产生等组成部分.构思如下:预置值设置:10min位(10分键)和min位(1分键)共两档,由独立按键分别键入,单片机检测对应键的口线电平,籍以记录从0至9之间的循环键45入次数,并由两位LED数码管作10min位和min位的预置值静态显示.运行键设置:一经启动,便以秒为闪动速率作倒计时实时显示.定时时基:采取定时中断方式产生,每10ms产生一次定时器中断,每当内部累计到1
min
时,则从min位开始依次递减一次显示缓冲区数据,直至10min
位和min
位均显示“零值”为止,并发出提示音.复位键设置:该键按动,可重复上述倒计时过程.硬件方案硬件组成定时器/计数器实现的答辩倒计时电路见图8-1.*以单片机芯片U1
为控制核心.*由两位“7段LED共阴极数码管”DG1
和DG2作10min位和min位的静态显示,由“7段锁存/译码/锁存/驱动芯片”U2
和U3
作段控制.*预置值由两个独立按键Q1和Q2输入,独立按键Q3
和Q4
分别担任倒计时启动和系统复位.67定时器/计数器实现的答辩倒计时电路(图8-1)2.电路原理系统上电后,各独立按键的低电平被U1顺序检测并计算次数,产生数字0~9(可循环键入)的10min位和min位预置值,经由P1口低4位送至U2和U3进行7段译码,由P1.4口和P1.5口的高电平分别锁存10
min位和min位作静态显示.运行键启动后,由U1内部定时器中断进行计时,每累计1min预置值减1,数据从P1口低4位送出使显示更新一次,其中min位以秒速率闪动显示,直到显示位DG1和DG2全为零,此时P3.7送出低电平,晶体管导通驱动蜂鸣器发声,倒计时结束.83.主要器件U1为AT89C51(40脚DIP封装),
U2和U3为CD4511(16脚DIP封装),DG1和DG2为超高亮数码管GF5101AS,V为PNP型晶体管9015,蜂鸣器为自振型TMB12A05,Q1~Q4为常开触点按键开关.定时器/计数器实现的答辩倒计时电路装置见图8-2.9定时器/计数器实现的答辩倒计时电路装置(图8-2)10118.1.3
软件方案1.软件框架定时器/计数器实现的答辩倒计时软件框架,分为主程序和定时中断程序两大部分,见图8-3.主程序实现倒计时值预置、定时启动、显示缓冲区递减到零值的检测.定时中断程序对定时时基进行累计、进位,每
当进满1min时,把显示缓冲区中倒计时值递减1.显示部分采取硬件译码的LED静态显示方式(可参考5.2.2节).定时器/计数器实现的答辩倒计时软件框架(图8-3)122.程序流程以软件框架为基础具体实现的主程序流程图见图8-4,中断服务程序流程图见图8-5.内部设置有10ms、100ms、1s、10s共4个中断次数累计缓冲区,逢十进一,用以更新min位和10min位的两个显示缓冲区的倒计时值.min位的显示以s为单位闪动,具体措施就是使显示以500ms间隔作交替亮/熄.13主程序流程图(图8-4)14中断服务程序流程图(图8-5)15汇编语言源程序按照程序流程图的逻辑关系来编写源程序,可轻松地看成是一种运用指令语句的反复操作.可运行的完整源程序见书(P.138~143).C语言源程序用C语言实现相同功能的程序供对比,对于某些底层控制功能的实现,汇编语言显得更为简洁.可运行的完整源程序见书(P.143~150).16178.1.4
演示说明答辩倒计时电路装置(图8-2)上电后:*显示状态DG1(x10位)显示零,DG2(x1位)熄灭.*预置值x10键和x1键可由短按方式输入或长按
(连续)方式输入所需的分钟数(未输入分钟数之前,按动运行键无效).*按动运行键,蜂鸣器发出倒计时单声提示音且
DG2(x1位)按秒速率作闪动显示.*当DG1(x10位)和DG2(x1位)的倒计时显示值到达零值时,蜂鸣器连续发声提示计时结束.*按动复位键,可重复上述过程.注:汇编程序中用10s而非60s的进位方式替代
实际值,旨在便于快速演示倒计时的全过程.8.2
外部中断实现的双向移动识别51系列单片机中断系统的结构和功能详见3.2节,具有两个外部中断源INT0和INT1,可以单独用作外部事件的中断控制,也可以联合起来运用以发挥更多功能.8.1.1
基本思路181.物体双向移动识别的应用物体双向移动方向识别有具体的工程应用价值.例如基于安全目的公共场馆清场所涉及的进/出人数问题,人数统计的装置必须具备进/出方向识别的能力才能达成.例如办公室、实验室和家居等场合的灯光通/断节能控制装置.具体来说就是对人员做进/出的双向识别判断:检测到有人进去,统计值加1;检测到有人出来,统计值减1.统计值大于零为灯光开启并保持的依据,等于零为关灯的依据.19也就是说,只要房间里还有人都不能关灯,直到房间里完全没有人才可以关灯.其他环境和场合,如公交车客流量的统计等也有潜在的应用价值.以单片机两个外部中断源的联合控制为基础,结合标志位的运用,就能发挥双向移动识别的效用.2.外部中断触发信号的来源要进行双向移动识别,必须向单片机提供两路外部中断信号,可利用红外透射式对管(由红外发射管和红外接收管配对组成)来实现.正常情2021况下只要红外发射管信号被遮挡,红外光就不能被红外接收管接收,对管的输出端便产生负脉冲信号,该信号能够用来触发单片机的外部中断.3.物体双向移动识别方法的构思示意图见图8-6.两组红外透射对管并列水平放置,物体沿图中虚线方向水平移动时,必有一路红外透射光首先被遮挡,接着另一路被遮挡.从外部进入的物体首先触发外部中断0,接着触发外部中断1.对中断触发的先后次序作标记,用以识别物体的移动方向.22从内部出来的物体,中断触发的次序与上述情况相反.把判断的移动方向转换为加减运算,根据运算结果执行相应的控制,如开灯、关灯或超限报警等.物体双向移动识别方法的示意图(图8-6)238.2.2
硬件方案1.硬件组成外部中断实现的双向移动识别电路见图8-7.*单片机芯片U1为控制核心.*两组红外透射对管U3和U4检测物体的移动方向,其反映方向变化的信号通过脉冲整形芯片U2整形,输出的负跳变信号作为单片机两个外部中断口的中断触发信号.*U1
对移动方向作识别和运算处理,其结果送至执行机构,用固体继电器SSR作电子开关,连接交流市电以控制交流LED灯HL
的点亮或熄灭.外部中断实现的双向移动识别电路(图8-7)242.电路原理25在图8-7电路中,VD1为U3的红外发射二极管(R3为限流电阻),V1为光敏接收管(R4为集电极负载电阻),VD2为U4的红外发射二极管(R1为限流电阻),V2为光敏接收管(R2为集电极负载电阻),两路均以透射方式并列装在移动物体通道的两侧.系统上电后,VD1和VD2发射红外光,没有物体遮挡的情况下,V1和V2均接收到红外光而导通,集电极呈低电平,经施密特触发反相器芯片U2整形后变为高电平,对U1的两个外部中断口无作用.任一组红外透射对管受到物体的遮挡时,光敏接收管接收不到红外光而截止,集电极电平从低变高,经整形反相后产生从高到低的脉冲下降沿,从而触发单片机的外部中断.移动物体从外部进入的情况,图中U3首先被遮挡,
U4后续被遮挡;对于移动物体从内部出来的情况,
U4变为首先被遮挡,U3为后续被遮挡.程序的统计关系的依据为:物体每进入一次,U1的计数值增1;物体每出来一次,计数值减1.只要计数值大于0,P3.5口便一直保持低电平使指示26灯VL点亮;反之当计数值为0时则变为高电平使
VL熄灭,可直观反映出计数值的状态.开使HL熄灭.U1由C3和R7实现自动上电复位.27固体继电器SSR同步控制交流LED灯HL的亮/熄,并把单片机系统与交流电隔离.具体控制状态:当计数值大于0
时,SSR的控制线
P3.4变为低电平,使VD3导通(R5为限流电阻),继而SSR的双向光控晶闸管VT导通,接通交流市电回路使HL点亮;反之当计数值等于0时,P3.4变为高电平使VD3截止,导致VT截止,交流市电回路断3.主要器件
U1为AT89C51(40脚DIP封装),作为原理验证,U3和U4采用普通槽型红外透射式对管(如型号GK122,H2010WYC等),也可用两组聚焦型红外发光二极管和光敏接收管组装.U2为74HC14(芯片内含6个施密特触发反相器).
SSR为交流固体继电器GTJ24-1A
(直流输入端
3~14V,交流输出端240V/1A).HL为交流LED灯(2W).外部中断的双向移动识别电路装置见图8-8.28外部中断实现的双向移动识别电路装置(图8-8)软件方案软件框架外部中断的双向移动识别软件框架见图8-9.2930外部中断实现的双向移动识别软件框架(图8-9)31物体移动的方向判断是利用两个外部中断触发的先后关系,并设置标志位作为计数的依据.以的操作应在 的中服程序中完成.位地址30H(即26.0H)和31H(即26.1H)作为INT0和INT1
的触发标志.物体进入时,首先触发INT0,在其中服程序中把标志置为1后中断返回;随后物体触发INT1,在其中服程序中若查到INT0
的标志为1,可确认物体是从“进入方向”进入,计数缓冲区的数值增1,清INT0除的标I志NT后1
中断返回.可见缓冲区数值增132体从“出来方向”上离开的特殊情况(如器件受到物体离开时,首先触发INT1
,在其中服程序中把标志置为1后中断返回;随后物体触发INT0
,在其中服程序中若查到INT1
的标志为1,可确认物体是从“出来方向”离开,计数缓冲区的数值减1,清INT1除 的标志IN后T0中断返回.可见缓冲器数值减1的操作,应在 的中断服务程序中完成.主程序的工作,主要是对计数缓冲区的结果进行判断并作出相应的控制操作.实验装置的实施,缓冲区数值已为0,仍需考虑物干扰,或有人从窗户非正常进入却从大门离开).为避免特殊现象的出错,当计数缓冲区已经为0时,若检测到有物体从“出来方向”离开,程序不作“减1”处理而应继续保持计数缓冲区为0.2.程序流程主程序流程图见图8-10.初始化设定两个外部中断标志,计数缓冲区清零.程序段的主要任务是循环判断计数缓冲区的数值.若数值大于0则通过P3.4和P3.5口分别驱动VL和执行机构,使VL和HL灯点亮;若数值等于0则使VL和HL灯熄灭.33外部中断实现的双向移动识别主程序流程图(图8-10)34INT0中断服务程序流程见图8-11.判断之一:若INT0自身被触发,则INT1的标志未被置位,可以把INT0的标志位30H置为1,表示物体从“进入方向”进入,然后中断返回.判断之二:若INT1的标志已置位,表明INT0是随后被触发的,可确认物体从“出来方向”离开.缓冲区处理:把“个位”单元减1(最高为“千位”),不够减向高位单元借位,且把当前被减单元变
09H;若“千位”单元25H为0,清0所有单35元,INT136双向移动识别的INT0中断服务程序流程图(图8-11)37INT1中断服务程序流程见图8-12.与ITA类似.判断之一:若INT1自身被触发,则INT0的标志未被置位,可以把INT1的标志位31H置为1,表示物体从“出来方向”离开,然后中断返回.判断之二:若INT0的标志已置位,表明INT1是随后被触发的,可确认物体从“进入方向”进入.缓冲区处理:把“个位”单元增1,满10向高位单元进位,若“千位”单元25H满10,上限溢出,清0所有单元,并对25H写入1,以维持执行的现状,把INT0双向移动识别的INT1中断服务程序流程图(图8-12)38汇编语言源程序可运行的完整源程序见书(P.156~159).C语言源程序可运行的完整源程序见书(P.159~161).8.2.4
演示说明外部中断实现的双向移动识别电路装置见图8-8.*首先在HL插座中接入2W交流LED灯.*槽型红外透射对管由U3代表物体进入端、U4代表物体出离端,反之亦然.39*用条状纸板作遮挡物,从U3向U4(由外往内)沿凹槽移动,使两路红外光先后被遮挡,经U1判断后记进入次数为1,此时指示灯VL和灯HL均点亮;从U3向U4的方向把纸板移动多次(如:3次,进入次数被记为3),红色指示灯VL和灯HL维持点亮.*再把条状纸板改从U4向U3(由内往外)沿凹槽移动,U1判断属相反方向,记录次数被减1,此时指示灯VL和灯HL仍然发亮,直到从U4向U3重复移动
3次其结果减为零时,指示灯VL和灯HL便熄灭.上述过程可反复进行.40注:这种双向移动识别技术运用到实际场合,则需要进一步结合考虑透射距离和红外光调制的抗干扰措施等工程因素.8.3
串行口实现的双向多机通信51单片机串行通信口的结构和功能祥见3.3节.内部的全双工串行通信口有两个独立的发送/接收缓冲器,共用一个缓冲器地址,可以采取查询或中断方式或两者混合方式同时收/发.此间由一台主机与两台从机通过混合方式作串行收/发实验,用以体验串行口的多机通信过程.418.3.1
基本思路主机通过按键方式来选择与两个从机中的任一个进行通信,1号从机采用中断方式接收,2号从机采用查询方式接收,实施混合方式通信.主机先发送从机地址帧,然后转为等待接收状态,被选中的从机向主机发送回应标志,主机收到回应标志后指示灯点亮,并向从机发送数据帧,从机收到数据帧后执行自身指示灯循环点亮的操作,然后转为初始待机状态.主机经过相当于从机操作所需的时间延时之后,42使指示灯熄灭,以示一轮主从通信过程完成,然后返回查询按键的初始状态.硬件方案硬件组成串行口实现的双向多机通信电路见图8-13.*单片机芯片MU1作主机,SU1和SU2分别作从机,并采用相同频率的晶体振荡器Y1、Y2、Y3.*按键S1作主机与从机1的通信启动,按键S2作主机与从机2的通信启动.43*指示灯VL1作从机1的回应指示,指示灯VL2作从机2的回应指示.*指示灯VL3、VL4作从机1的动作演示,指示灯
VL5、VL6作从机2的动作演示.*主机串行发送口TXD与各从机的串行接收口
RXD连接.*各从机的串行发送口TXD则连接到主机的串行接收口RXD.*主机和从机共用复位电路.44串行口实现的双向多机通信电路(图8-13)45462.电路原理系统复位后主机处于按键查询状态,两从机处于接收的待机状态.若按下键S1并接续判断已松手,主机向从机送出标志为“1”的地址帧,被选中的SU1在中断服务程序中向MU1回送标志为“1”的数据帧.MU1收到后点亮VL1,并向SU1发送内容为“1”的数据帧.SU1收到后执行VL3和VL4循环点亮演示,然后恢复初始待机状态.为使主从通信往返的过程简明,MU1不采取等待
SU1演示结束的回应方式,而是等待相当于SU1演示所需的延时时间后,直接使指示灯VL1熄灭,然后返回查询按键的初始状态.若按下键S2并接续判断已松手,SU2采取查询程序实现,其对应的地址帧标志、数据帧标志、通信往返过程等与SU1类雷同,只是数据内容变为“2”,点亮VL2,执行VL5和VL6循环点亮演示.键S1和S2可循环按动,使通信过程相互执行,按动PB键可使通信重新开始.473.主要器件MU1为AT89C51(40脚DIP封装),
SU1和SU2为AT89C2051(20脚DIP封装),Y1、Y2、Y3为12MHz晶体振荡器,
S1、S2、Q为常开触点按键开关,
VL1、VL2为绿色LED灯,VL3~VL6为红色LED灯.串行口实现的双向多机通信电路装置见图8-14.48串行口实现的双向多机通信电路装置(图8-14)49软件方案软件框架串行口实现的双向多机通信软件框架见图8-15.主机主程序根据被按动的按键序号进入与对应从机的通信,先发送地址帧,收到从机回应后以指示灯点亮表示连接成功,然后发送数据帧让从机启动所需的演示,主机延时等待到从机的演示时长后便直接使指示灯熄灭,表示一轮通信完成,返回按键查询的初始状态.50从机1中断服务程序中接收到自身符合的地址帧后,向主机发送回应帧表示连接成功;接收到后续主机发来的数据帧后,作指示灯循环点亮演示,然后中断返回待机状态.从机2查询程序中与主机上述的通信过程雷同.2.程序流程多机通信主程序流程图见图8-16,从机1中断方式流程图见图8-17.从机2查询方式流程图见图8-18.51主程序向从机发送数据帧,并经从机演示所需的延时后,直接返回按键查询的初始状态.串行口实现的双向多机通信软件框架(图8-15)52多机通信主程序流程图(图8-16)53从机1中断方式流程图(图8-17)从机2查询方式流程图(图8-18)543.汇编语言源程序可运行的完整源程序见书(P.164~169).8.3.4
演示说明电路装置见图8-14,能体验中断方式和查询方式相混合的串行双向多机通信收发过程.*上电复位后,主机MU1进入按键查询状态.*按下启动键S1,主机发出从机SU1地址帧,收到从机SU1回发信号后,主机的绿灯VL1亮.*主机接续发出从机SU1数据帧,从机SU1收到信5556号后,轮流点亮红灯VL3和VL4,完成后红灯全熄并恢复初始待机状态.*主机的绿灯VL1随之熄灭并回复按键查询状态.*按下启动键S2,主机发出从机SU2地址帧,收到从机SU2回发信号后,主机的绿灯VL2亮.*主机接续发出从机SU2数据帧,从机SU2收到信号后,轮流点亮红灯VL5和VL6,完成后红灯全熄并恢复初始待机状态.*主机的绿灯VL2随之熄灭并回复按键查询状态.*上述操作过程可连续进行.8.4
待机节能与键盘唤醒的实现矩阵键盘是人机交互最常用界面(见5.1节),单
片机通过调用键盘子程序来输入信息.而待机方式(见1.5.2节)能使单片机在空闲时进入休眠状态以降低能耗,并可通过中断触发方式使之唤醒.把键盘输入与中断触发相结合,组成带有中断触发功能的键盘输入方式,就能在键盘键入的同时使单片机从待机状态中唤醒,键盘输入完毕后单片机又自动返回待机节能状态.下述实验电路可以体验两者结合的运用.578.4.1
基本思路键盘输入三步骤是:断有否键按下、属何键按下和确定键值,按下和释放均适当延时去抖,还可配以声光提示,诸如键按下时发声或灯亮,键释放时消声或灯熄,以便于判断操作状态.键盘可按具体需要选择键盘扫描法、键盘反极法和键盘位操作法(见5.1.1~5.1.3
节),这里采用键盘扫描法.把矩阵键盘的列线与逻辑门电路结合,按动任何键,门电路均提供单片机外中断触发低电平,使58之从待机中唤醒,执行中服程序,完成键盘子程调用后,退出中服,返回主程序再执行待机指令.硬件方案硬件组成实验电路见图8-19.CHMOS工艺的单片机具有待机功能,U1作控制核心,4行3列矩阵键盘的行列线接单片机P1口,3条列线还分别接与门芯片U2输入端,U2输出端接单片机外中断口.晶体管V作蜂鸣器发声驱动,指示灯VL1和VL2指示工作状态.直流电流表作单片机VCC
端的电流指示.59待机节能与键盘唤醒实验电路(图8-19)602.电路原理单片机初始化:上电复位后,矩阵键盘的行线全置低电平,而列线全置高电平,此时逻辑与门的输出为高电平,外中断不被触发.运用待机指令使系统进入待机状态,VCC端串接的电流表显示的是节能待机电流.键盘任一键被按下,都能把行线的低电平引至与门输入端,使与门输出低电平触发外部中断,单片机从待机状态中被唤醒,并执行中断服务程序,VCC端串接的电流表显示正常工作电流.6162在中断服务程序中调用键盘扫描子程序,进入正常接收键盘输入信息.键盘设置成键按下发声、键释放消声,并一直伴有指示灯发亮,使操作清晰明了.矩阵键盘的键字定为0~9,0A和0B(0A对应于键符“*”,0B对应于键符“#”).在中断服务程序中判断只要按动的是键“#”,程序就能中断返回,并使单片机再次进入待机状态,伴以指示灯熄灭作提示.3.主要器件
U1为AT89C51(40脚DIP封装).U2为“四输入端与门”芯片CD4082.键盘采用4行3列矩阵结构,或用12个双触点式按键开关构建.V为PNP型晶体管9015.蜂鸣器为自振型蜂鸣器TMB12A05.VL1为红色LED,VL2为绿色LED.电流表采用满量程为30mA的直流表头.待机节能与键盘唤醒实验电路装置见图8-20.63待机节能与键盘唤醒实验电路装置(图8-20)6465软件方案程序流程图主程序流程图见图8-21,只需执行一条置待机方式位为1的指令就能进入待机状态(详见1.5.2节),可由外部中断给予唤醒,中断返回后执行一条跳转指令,就能再次进入待机状态.中断服务程序流程图见图8-22,内含键盘扫描法键盘子程序,由“#”键按下使中断返回主程序.66主程序流程图(图8-21)中断服务程序流程图(图8-22)67扫描法键盘子程序流程图见图8-23,主要环节包括:判断有键按下并再确认(其中加入延时去抖动和发声提示),逐行置零扫描判断何键被按下,判断键被释放并再确认(其中加入延时去抖动和消声环节),采用远程查表方法确定键值(其中累加器因被借用,需入栈保护).扫描法键盘子程序流程图(图8-23)68692.汇编语言源程序可运行的完整源程序见书(P.172~175).8.4.4
演示说明实验电路装置(图8-20)上电复位后:*红色指示灯VL1一直发亮表示系统状态正常.蜂鸣器短暂发声且绿色指示灯VL2短暂发亮然后熄灭,单片机进入待机节能状态,电流表指示约2mA(图8-20a).*从矩阵键盘键入任意键(按下发声、释放消声)7071就能触发中断,待机状态唤醒为工作状态,电流表指示约11mA(图8-20b),绿色指示灯VL2发亮.*按动“#”键则绿灯VL2熄灭,中断返回然后再次进入待机态,电流表指示约2mA.*在待机状态下只要按动复位按钮,也能从待机中唤醒,电路的反应与上电复位的反应相同.电流表的量值表明,待机态节能明显,待机方式很适合在只需短暂操作而长时间闲置的电路系统中运用,对电路工作的稳定性、抗干扰和低热耗方面均有益处.8.5
机器人用舵机的转角控制舵机,又称伺服电动机,类别有传统舵机、数值舵机和纯数字舵机.本节针对传统舵机,它可以根据外加指令在0°~180°之间旋转,并可精确地停留在任何角度,适用于要求角度变化和角度保持的控制系统.舵机的应用范围十分广泛,诸如作为动作部件应用于多自由度小型机器人的设计,作电子应用设计中的转动力臂,以及多路伺服航模控制等.舵机外观可看到有外壳、传动轴、轴上套有十72字形或圆形舵盘(可作为扩伸连接转动臂之用)和引出线,舵机内部含有变速齿轮组、可调电位器、直流电动机和控制电路板等,但应用上只需了解外部控制方法就行.市售舵机从力矩看有普通型、超小型和强力型.一般舵机是三线控制的,包括正负电源线和一条
I/O口控制线,舵机外形及引出线如图8-24所示.单片机系统能够方便地和它组成接口电路并对其实行控制.73舵机外形及引出线(图8-24)74基本思路舵机的工作原理舵机由脉冲信号控制.信号通过I/O口进入舵机内部控制电路板上的信号调制芯片,使其获得直流偏置电压.内置的信号基准电路产生周期为20ms、宽度为
1.5ms的脉冲,将获得的直流偏置电压与内部电位器电压相比较,输出电压差.该电压差的正负输出到电动机驱动芯片以决定电动机的正反转.75当电动机转动时,通过齿轮组带动电位器一并旋转,使得电压差最后为0,舵机便停止转动.2.舵机的控制方式舵机的输入控制脉冲是PWM(脉宽调制)信号,改变脉冲占空比可以控制舵机的转动角度位置.舵机通电后,持续输入周期为20ms(频率50Hz)、宽度0.5~2.5ms之间的高电平脉冲,舵机就能转动到指定的角度位置并且在该位置停留.以无负载情况下转过60°所需的时间来衡量,其速度一般在0.11s/60°~0.21s/60°之间.舵机转76动角度位置与输入脉冲宽度的关系如图8-25.*
图中从左到右依次表示:当占空比为0.5ms时,舵机的摆臂旋转至0°(舵机左满舵);当占空比为1ms时,舵机旋转至45°;当占空比为1.5ms时,舵机旋转至90°;当占空比为2ms时,舵机旋转至135°;当占空比为2.5ms时,舵机旋转至180°(舵机右满舵).77舵机转动角度位置与输入脉冲宽度的关系
(图8-25)硬件方案硬件组成一般小型舵机的工作电压为4.8V或6V.51系列单78片机与舵机的接口很简单,一个通用I/O口可实现控制.单片机对舵机控制实验电路见图8-26.单片机对舵机控制的实验电路(图8-26)792.主要器件
U1为AT89C51(40脚DIP封装),配用12MHz晶体振荡器.舵机为普通型Futaba
S3003,外部尺寸为40.4mm×19.8
mm×36.0mm,重量为37.2g.工作速度为0.19s/60°(4.8V工作电压时)和
0.23s/60°(6V工作电压时).输出力矩为0.31N.m
(4.8V工作电压时)和
0.40N.m
(6V工作电压时).单片机对舵机控制的实验电路装置见图8-27.80单片机对舵机控制的实验电路装置(图8-27)818.5.3
软件方案舵机的控制是通过改变周期脉冲的占空比实现的,利用单片机的定时器/计数器的定时溢出功能产生脉冲波,即可精确控制舵机.下面通过两个实例介绍舵机的软件设计思路.1.控制舵机转动到任意指定角度此方式属舵机控制的最基本操作.只要根据指定角度所对应的脉冲占空比,计算出定时器/计数器的定时常数,就能产生相应的脉冲波.设角度为α(取值范围是0°~180°),可以得到周82期脉冲高电平延时时长th和脉冲低电平延时时长tl
,见表达式(8-1)和式(8-2):th
=0.5ms+α/180°×2mstl
=20ms-th(8-1)(8-2)再根据3.1.2节的方法计算定时器/计数器在工作模式1的预置初值Xh和Xl(晶振频fOSC=12MHz),机器周期T=1μs,预置值Xh由表达式(8-3)计算:(216-Xh)
×1μs=th(8-3)代入th的表达式(8-1),并统一用微秒表示,得:Xh=216-500+α/180°×2000≈FE0CH-α×11(8-48)3Xl
=216-20000-Xh
=1B1E0H-Xh84(8-5)舵机转动到指定角度的控制函数流程图见图8-28,源程序用C语言实现.*
软件设计思路为:构造函数Servo_Rotate_to_Angle(角度值),输入角度值为0°~180°之间任一指定角度,代入上述关系式计算高电平、低电平的定时预置值,调用舵机动作函数Servo_Action(),执行相应操作,具体软件流程如图8-28a所示.*
在舵机动作函数Servo_Action()中,装载定时器/计数器的高电平定时时间预置值,启动定时器/计数器并在舵机I/O端口置1,等待定时器溢出标志置位并将其清零;舵机I/O口产生低电平的定时时间预置值方法与之类似,具体软件流程图如图8-28b
所示.85舵机转动到指定角度的控制函数流程图(图8-28)86872.在0°~180°转动范围内控制舵机转动速度上例方法是控制舵机转动至某个指定的角度位置,这种方法受控的舵机在其最高转动速度(舵机标称的转动速度)下运行,但现实情况中往往需要调节舵机的转速来适应具体任务的需求.基于舵机转动角度与周期脉冲的高电平宽度有着一对一的关系,假设舵机的摆臂要从角度β转动到角度γ,则两者角度差θ为:θ=|β-γ|(8-6)引入变量△θ作为每周期的角度增量,k代表周期脉冲个数的整数,则有:θ=k△θ88(8-7)因此,当△θ↑,舵机在下一周期到达的角度↑,转速↑,需要输入的脉冲个数↓;反之,当△θ↓,舵机在下一周期到达的角度↓,转速↓,需要输入的脉冲个数↑.本例中受控舵机从0°旋转至180°,由输入速度参数调整舵机的转动速度.程序设计的关键在于把角度增量△θ转化为定时器/计数器预置值增量.设s为速度参数,相应修改高电平、低电平预置值,得到与第n
个周期的关系为:(8-8)(8-9)其中n与s的乘积不大于2000(对应角度180°).构造函数Servo_Horizontal_Rotation(速度增量),设置变量time(取值范围0≤time≤2000),每次循环中都根据上述关系计算高电平、低电平的定时器/计数器预置值,并传递至舵机动作函数执行相关操作,在0°~180°按不同速度转动的控制函数流程图见图8-29.89在0°~180°按不同速度转动的控制函数流程图(图8-29)903.主程序流程主程序结合上述两种运转方式,软件流程构思:*首先舵机按例1的方式以标准速度(快速)从初始角度转至56°,延时1s,再转至112°;*接着以标准速度(快速)回转到0°;*按例2的方式,以速度3(慢速)从0°转至180°,延时1s,接着以标准速度(快速)回转到0°;*最后以速度9(中速)从0°转至180°,完成.舵机多方式运转的主程序流程图见图8-30.91舵机多方式运转的主程序流程图(图8-30)924.C语言源程序可运行的完整源程序见书(P.179~183).8.4.5
演示说明单片机对舵机控制的实验电路装置(图8-27),能演示多种运转方式,用以体验单片机对控制脉冲的综合运用.*电路上电复位,LED灯点亮1s后熄灭.*舵机随即以标准速度(快速)转动至56°位置,停留1s.*其后以同样的速度转动至112°位置,停留1s,93接着以同样的速度回转到0°位置.*然后以速度3(慢速)从0°转动到180°位置,停留1s,再以标准速度(快速)回转到0°位置.*接着以速度9(中速)从0°转动到180°位置,程序结束.*按动复位按钮,可重复上述运转过程.8.6
非接触式的电动机转速测定在电路实验或电子设计竞赛中常常用到小型直流电动机,不管是采用新品还是采用拆卸代用品,94先要知道的指标就是电动机转速,通常范围在每分钟几十转到几千转不等,而这一参数往往在电动机外壳上不一定能直接得到.本节把单片机的定时和中断技术融合运用,并结合BCD码乘/除算法,构建一种非接触式测速装置,在1s内可测定电动机的1min转速,为电机的选用提供判别依据.基本思路转速信号的产生和采集由反射式红外对管和黑白光栅转盘组成信号传感95系统,黑白光栅转盘附着在电动机的轴心上,反
射式红外对管的接收面对着转盘的平面,红外对管的发射管把红外光投射到转盘,随着电动机的转动,白光栅反射红外光而黑光栅不反射红外光,红外对管的接收管便输出高低相间的脉冲电平,供作后续统计.2.脉冲计数的定时门限设定以1ms作定时器中断的时基,对3个内部存储器进行逢十进一计数,用以实现1s溢出的定时门限.采用一个外中断口作为转速脉冲的输入口,并把96脉冲下降沿作为启动定时门限的同步信号,此后就能采取查询脉冲高低电平的方式对进入门限内的脉冲进行统计.3.完整脉冲计数的门限校正和换算如果定时门限到达1s发生溢出之时立刻停止定时器,不一定正好能对应于末位的完整脉冲周期边缘,可能是对应于脉冲的其中高电平或低电平某一部位,为了消除这段被截断的脉冲部分所引起的测量误差,让门限接续开启直到末位脉冲完整过渡并止于下降沿时才正式关闭定时器,所得97的此段门限校正值加上1s溢出值,即为实际的定时门限值,这方式所统计到的脉冲数必为整数值.实际门限的构成见图8-31.实际门限的构成(图8-31)*为扩展成1min的转速,换算顺序宜先进行脉冲数的60倍BCD码乘法运算,得到整数结果;再对实98际定时门限值BCD码作除法运算,得到的非整数商值误差最小,四舍五入处理得1min整数转速.*转盘只有1对黑白光栅线,每转1圈只产生1个脉冲,倍乘为60.增加光栅线组数,使每转能产生多个脉冲,可提高精度,其倍乘值需作相应减少,本实验装置采用12组黑白相间光栅线.硬件方案硬件组成非接触式的电动机转速测定实验电路见图8-32.99*单片机芯片U1作为控制核心.*反射式红外对管U4采集电动机转动信号.*信号经U5作脉冲整形后送入U1作运算处理.*输出的分钟转数(从个位到千位)送至4位一体共阴极数码管U6作显示.*7段硬件译码芯片U2作段驱动.*电流驱动器芯片U3作动态位驱动.*独立开关Q用来启动测量过程.100非接触式的电动机转速测定电路(图8-32)1011022.电路原理电动机转动时白光栅反射红外信号经U4的光电管接收,输出低脉冲,经两级施密特反相器U5整形后,脉冲信号送入单片机U1的外中断口P3.2.按下启动键Q,脉冲下降沿便启动U1的外中断服务程序,执行1s的定时计数和1min的换算处理.分钟转数测量结果以动态方式显示,4位BCD码从
U1的段译码口送出,经7段锁存/译码/驱动芯片
U2作硬件译码,送至4位一体共阴极数码管U6作为段信号,U1的位扫描口逐位送出低电平信号,经电流驱动器U3作显示位驱动.3.主要器件电动机光栅转盘采用直径约7cm的薄铝片作为白光栅基底,其上均匀贴上约6mm宽的12条黑胶布作为黑光栅.U4为反射式红外对管RPR220或ITR20001.U1为单片机芯片AT89C52.U5为施密特反相器74HC14(内含6个独立单元).
U2为“7段锁存/译码/驱动器”CD4511.U3为电流驱动器7407.
U6为共阴极数码管TOF-3461AE.103非接触式的电动机转速测定电路装置(图8-33)104非接触式的电动机转速采样图(图8-34)1051068.6.3
软件方案1.软件框架非接触式电动机转速测定的软件框架见图8-35.主程序经启动键进入外中断服务程序(内含1ms时基的优先级定时中服程序,形成1s定时门限.门限内用查询方式作脉冲数统计,但门限到达时最末统计的不一定对应于一个完整脉冲.实际门限值需计及该完整脉冲边缘的校正值.由BCD码乘/除法换算为1min的转数,然后外部中断返回,接续显示结果.107非接触式的电动机转速测定的软件框架(图8-35)2.程序流程主程序流程图见图8-36,定时中断服务程序流程图见图8-37,外部中断服务程序流程图见图8-38.主程序流程图(图8-36)定时中服程序流程(图8-37)108外中断服务程序流程图(图8-38)1091103.汇编语言源程序可运行的完整源程序见书(P.187~195).4.C语言源程序用C语言实现相同功能的程序供对比,对于运算类功能,C语言实现起来显得简捷.可运行的完整源程序见书(P.195~200).8.6.4
演示说明如图8-33和图8-34所示,把光栅转盘固定在待测电动机的轴上,红外对管的端面正对转盘的距离约1~3cm范围.*电动机未接通电源之前若按动“启动”键,显示屏显示全零.*按动“复位”键,显示屏全熄.*接通电动机电源,待电动机转动到稳定状态时按动“启动”键,约1s数码管即显示出电动机在1min的转数值.*按下“复位”键可重复上述测速过程.用转速600r/min的12V直流电动机作统计试验,111测量误差约0.97%~1.1%.8.7
I2C总线器件的密码门禁应用I2C总线是二线制串行总线,一条是串行数据线
SDA,另一条是串行时钟线SCL,I2C器件可以作为外围从设备与作为主设备的单片机进行同步双向串行数据传输.应用最广的一种典型I2C器件是串行E2PROM,其可在线擦写和掉电数据保留的性能被广泛用到需要保留数据尤其是涉及密码保留的场合,单片机控制的密码门禁系统是对该器件的一种结合运用.1128.7.1
基本思路I2C总线属串行同步传输总线,其数据与时钟完全同步.基本传输协议包括:启动总线、传输数据、应答和停止总线.串行E2PROM器件的数据传输方法包括:器件寻址、读/写方式等(详见4.3.1节).利用51系列单片机的两条I/O口线通过软件模拟I2C总线,与串行E2PROM器件组成串行接口电路,用来保存密码.单片机通过并行接口与矩阵键盘组成人机交互113输入电路,进行密码存取的操作.通过单片机进行识别处理后,输出控制信号实现对密码门禁执行机构的启/闭控制.硬件方案硬件组成
I2C总线器件的密码门禁电路见图8-39.*以单片机芯片U1为控制核心.*串行E2PROM器件U2作密码不失性保留.*4行3列矩阵键盘作密码设置和识别的键入操作.114*晶体管V2和V3驱动继电器对门禁机构实行启/闭控制.*晶体管V1作蜂鸣器的发声驱动.*指示灯VL1、VL2和VL3作相应工作状态的指示.*按键(开关)S2作读/写操作模式的转换.*按键(开关)S1作系统复位.115I2C总线器件的密码门禁电路(图8-39)1162.电路原理I2C总线器件的密码门禁电路(图8-39)设有两种工作模式,即设置密码模式和开启操作模式.系统上电或复位后,读/写键S2处于不按动的断开状态时,电路执行的是开门操作.与之相反,只要上电或复位后读/写键S2被检测到处于闭合状态,程序便转入密码设置(编码)模式,由灯VL1常亮作提示.4x3矩阵键盘与单片机P1口连接,采用键盘反极法(见5.1.2节)确定按键的键值(伴以键按下发117声、键释放消声作操作提示).初次使用时电路需先选择密码设置模式,矩阵键盘上的任何键可作密码键入(设定为6位).单片机U1通过读/写线(P3.7和P3.6)模拟的I2C总线,把6个密码字节(键值)写入串行E2PROM器件U2,作不失性密码保留,编码过程完成后由VL1熄灭作提示,然后转为开启操作模式.开启模式是从键盘键入6位密码,U1通过模拟的
I2C总线读取U2中存放的6位密码,并与键入的密码逐个字节进行比较.118如果完全相符:VL3发亮,P3.4口送出低电平,晶体管V2和V3导通,驱动继电器使触点S吸合,开门机构启动(用“模拟负载”绿色大直径LED点亮来替代,图中未画出).如果密码不符:继电器不动作,P0.0口使VL2闪亮和P3.0口使蜂鸣器断续发声,需重新键入密码.*需着重说明的细节:继电器用作V3集电极负载的这种接法,电源电压扣除集-射间饱和压降后,能最大幅度地提供给继电器,使工作稳健.但因单片机上电或复位后P3.4口为高电平,如果直接119120用来控制V3的基极,继电器会因V3导通而发生误动作,需加入PNP型极性的晶体管V2来与V3进行复合,改变成PNP型极性,使继电器在系统复位时不动作,在执行程序时才发生动作响应.*二极管VD1用来消除继电器截流时出现的反向感生电压,保护V3免受击穿.3.主要器件U1为AT89C51(40脚DIP封装).U2为24C04(8脚).键盘采用4行3列矩阵结构成品,或用12个双触点式按键开关组构.继电器为5V直流继电器,型号(OJE-SH-105DM)为常开单触点,容量为5AAC250V/DC30V,可根据具体负载选定所需触点容量的型号.V1和V2为PNP型晶体管9015.V3为NPN型晶体管9013.蜂鸣器为自振型TMB12A05.VL1为黄色LED.VL2为红色LED.VL3为绿色LED,“模拟负载”为绿色大直径LED.S1和S2为常开触点按键(开关).
I2C总线器件的密码门禁电路装置见图8-40.121I2C总线器件的密码门禁电路装置(图8-40)122软件方案软件框架I2C总线器件的密码门禁电路软件框架见图8-41.主程序中主要含反极法键盘程序和串行E2PROM的读/写程序(具体由9个程序模块组成).51系列单片机内部没集成有I2C总线,可用两条口线由软件进行模拟.123I2C总线器件的密码门禁电路软件框架(图8-41)1242.程序流程I2C总线器件的密码门禁
电路主程序
流程(图8-42)其中用作信息键入的反极法键盘子程序流程图
(图8-43)125反极法键盘子程序流程图(图8-43)126串行E2PROM读/写程序模块(共9块)流程图详见4.3.1节,可以直接移植使用(其中从设备随机写N字节模块和从设备随机读N字节模块基本上是对其余模块的综合调用).3.汇编语言源程序可运行的完整源程序见书(P.203~209).8.7.4
演示说明
I2C总线器件密码门禁电路装置(图8-40)上电后:*同时按下复位键S1和读/写键S2,先松开复位键127后松开读/写键,黄灯VL1亮表示系统进入设置密码(编码)模式.*从键盘输入6个数字密码(键按下发声,键释放消声),黄灯VL1熄表示编码完成,然后自动转为开启模式.*开门时只需从键盘输入6个密码(键按下发声,键释放消声),绿灯VL3亮表示密码正确,且继电器触点闭合执行开门动作(由模拟负载的大直径绿色LED发亮替代).2s后绿灯VL3和大直径绿色LED均熄灭且触点断开.128*如果红灯VL2闪亮且蜂鸣器断续发声数秒,表示密码错误,需重新输入密码.*如果上电或只按动复位键而不按动读/写键,系统进入的是键入密码的开门操作.8.8
单总线器件电子标识的读取单总线只需要一条信号线和一条地线,就能以普通双绞线的方式实行半双工串行通信.单条信号线既能传输时钟,又能双向传输数据,同时还充当总线所挂从设备的电源线.每个单总线器件内129部固化了全球唯一的64位器件ID码(标识码).通过单片机一条I/O口线直接读取单总线器件的ID码,是单片机串行扩展和学习单总线基本信号时序的一种具体体验.8.8.1
基本思路Dallas-MAX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球光学透明粘合带行业调研及趋势分析报告
- 2025合同范本劳务派遣合同模板书人力资源和企业新
- 2025用户服务合同
- 2025委托律师代理合同范本范文
- 土地转让居间合同
- 2025【合同范本】运输道路交通货物合同
- 美容师劳动合同书
- 消杀服务合同范文
- 2025公司用工合同范本
- 战略合作协议书合同
- 小区监控改造方案
- 第1课+古代亚非(教学设计)【中职专用】《世界历史》(高教版2023基础模块)
- 新教科版六年级下册科学全册教案
- 物业客服管家的培训课件
- 2024年房地产行业的楼市调控政策解读培训
- 《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测
- 装饰定额子目(河南省)
- 【高速铁路乘务工作存在的问题及对策研究9800字】
- 北师大版英语课文同步字帖三年级下册课文对话原文及翻译衡水体英语字帖三年级起点
- GB/T 2550-2016气体焊接设备焊接、切割和类似作业用橡胶软管
- GB/T 21295-2014服装理化性能的技术要求
评论
0/150
提交评论