1单片机综合设计讲义薛晓书李克艰西安石油大学电子工程学院仪器系2前言在“单片微机原理及应用”课程中,我们学习了MCS-51单片机的基本知识和一些接口技术,了解和初步掌握了MCS-51单片的基本性能和使用方法。但仅凭此基础而进行单片机应用系统的开发研究是远远不够的,这个问题在毕业设计中表现比较突出。为此,我们在教学计划中设置了“单片机综合设计”这个教学环节,试图在学习“单片微机原理及应用”课程基础上,通过学习一个难度比较适中,而又实际的单片机应用系统的分析和设计实例,使学生了解和初步掌握单片机应用系统的分析和设计方法,以及所要求的基本的软、硬件开发环境和工具。以提高学生的工程实践开发能力。我们选择了简易数字频率计做为实例。这是1999年第三届全国大学生电子设计竞赛试题,其设计指标及难度适中,涉及到的硬件、软件均比较丰富,而且与其它几门功课的教学联系比较紧密,教学量容易把握。以此做为单片机综合设计的基本教学内容,可以达到我们希望的教学目的。本讲义由薛晓书同志编写,李克艰同志绘制了部分电路图,两同志一起制做了实验装置,并对硬、软件进行了调试。“单片机综合设计”课程设计由薛、李两同志合作开发完成,工作量比较大。在此做一说明。编者1999.11.253目录第三届全国大学生电子设计竞赛试题(1997)……………………………………(1)第一章简易数字频率计的硬件设计………………………………………………(2)第一节频率及周期的测量及误差分析…………………………………………(2)一、电子计数器测频原理与误差分析…………………………………………(2)二、电子计数器测周方法及误差分析…………………………………………(4)第二节简易数字频率计硬件设计的基本要求…………………………………(4)一、测频、测周、测脉宽、测占空比…………………………………………(5)二、闸门时间、时标脉冲、测频测周交界频率、计数器……………………(5)第三节简易数字频率计的硬件设计……………………………………………(7)一、方案确定……………………………………………………………………(7)二、简易频率计的工作状态及工作步骤………………………………………(9)三、部分硬件电路说明…………………………………………………………(9)第二章简易数字频率计的软件设计………………………………………………(16)第一节简易数字频率计的操作方法…………………………………………(16)第二节主要程序流程框图……………………………………………………(17)一、主程序流程框图……………………………………………………………(17)二、测频子程序流程框图………………………………………………………(18)三、测周子程序流程框图…………………………………………………………(19)4四、测脉宽子程序流程框图……………………………………………………(20)五、三字节二进制整数转三字节浮点数模块流程框图…………………………(20)六、测占空比子程序流程框图…………………………………………………(21)七、调整刷新时间子程序框图…………………………………………………(22)第三节简易数字频率计的程序及说明…………………………………………(22)一、主程序………………………………………………………………………(22)二、测频子程序…………………………………………………………………(23)三、测周子程序…………………………………………………………………(28)四、测脉宽子程序…………………………………………………………………(34)五、测占空比子程序……………………………………………………………(36)六、调整刷新时间子程序………………………………………………………(40)七、刷新时间延时子程序………………………………………………………(40)八、显示子程序…………………………………………………………………(41)九、通用规格化子程序…………………………………………………………(43)十、浮点数取数子程序…………………………………………………………(44)十一、浮点数存数子程序………………………………………………………(44)十二、16位二进制整数转换为浮点数子程序…………………………………(44)5十三、定点无符号双字节小数乘法子程序……………………………………(45)十四、三字节浮点数乘法子程序………………………………………………(45)十五、定点无符号双字节小数除法子程序……………………………………(46)十六、三字节浮点数除法子程序………………………………………………(47)十七、二进制浮点数转为十进制浮点数子程序………………………………(48)第四节简易数字频率计用到的三字节浮点数运算子程序说明………………(52)一、通用规格化子程序FSDT…………………………………………………(52)二、浮点数取数子程序FMLD…………………………………………………(52)三、浮点数存数子程序FSTR……………………………………………………(54)四、双字节二进制整数转换为三字节浮点数子程序INTF……………………(54)五、定点无符号双字节小数乘法子程序DMUL………………………………(55)六、定点无符号双字节小数除法子程序DDIV…………………………………(55)七、浮点数乘法子程序FMUL…………………………………………………(56)八、浮点数除法子程序FDIV……………………………………………………(56)九、二进制浮点数转换为十进制浮点数子程序FBTD…………………………(57)附图1简易数字频率计的原理图…………………………………………………(59)附图2、3电源原理图、简易数字频率计的面板图……………………………(60)第三届全国大学生电子设计竞赛试题(1997)一、题目简易数字频率计6二、任务设计并制作一台数字显示的简单频率计三、要求1、基本要求(1)频率测量a.测量范围:信号:方波、正弦波幅度:0.5V~5V频率:1Hz~1MHzb.测试误差≤0.1%(2)周期测量a.测量范围:信号:方波、正弦波幅度:0.5V~5V频率:1Hz~1MHzb.测试误差≤0.1%(3)脉冲宽度测量a.测量范围:信号:脉冲波幅度:0.5V~5V脉冲宽度≥100sb.测试误差≤1%(4)显示器:十进制数字显示,显示刷新时间1-10秒连续可调,对上述三种测量功能分别用不同颜色的发光二级管指示。(5)具有自校功能,时标信号频率为1MHz。(6)自行设计并制作满足本设计任务要求的稳压电源。2、发挥部分:(1)扩展频率测量范围为0.1Hz~10MHz(信号幅度0.5V~5V),测试误差提高到0.01%(最大闸门时间≤10S)。(2)测量并显示周期脉冲信号(幅度0.5V~5V,频率1Hz~10KHz)的占空比,占空比的变化范围为10%~90%,测试误差≤1%。(3)在1Hz~10MHz范围内测试误差≤0.1%的条件下,进行小信号的频率测量,提出并实现抗干扰的措施。四、说明(1)不能采用频率计专用模块(2)在设计报告前附一份400字以内的报告摘要。第一章简易数字频率计的硬件设计第一节频率及周期的测量及误差分析7一、电子计数器测频原理与误差分析所谓“频率”就是周期性信号在单位时间(1秒)内变化的次数。若在一定时间间隔T内计得这个周期性信号的重复变化次数N,则其频率可表达为TNf(1-1)电子计数器可以严格按照式(1-1)所表达的频率的定义进行测频,其原理方框图如图1-1所示,其工作波形图示于图1-2。我们来分析计数器测频的测量误差。从式(1-1)可知,上述测频方法的测量误差,一方面决定于闸门时间T准不准,另一方面决定于计数器计得数准不准。根据误差合成方法,从式(1-1)可得TTNNffxx(1-2)式(1-2)中,xf为被测频率,第一项NN是数字化仪器所特有的误差,而第二项TT是闸门时间的相对误差,这项误差决定于石英振荡器所提供的标准频率的准确度。现分析如下。(一)±1误差在测频时,主门开启时刻与计数脉冲之间关系是不相关的,所以它们在时间轴上的相对位置是随机的。这样,在相同的主门开启时间内,计数器所计得的数都不一定相同,当主门开启时间T接近甚至等于被测信号周期xT的整数(N)倍时,此项误差为最大。这个最大的计数误差为1N个数。所以考虑到式(1-1),可以写成:xTfNNN11(1-3)图1-1图1-2图1-1电子计数器测频原理方框图图1-2工作波形图8从上式可知,不管计数值N多少,其最大误差总是1个计数单位,故称“1个字误差”,简称“1误差”。从式(1-3)可知,当xf一定时,增大闸门时间T,可减少1误差对测频误差的影响。[例]xf=1MHz,选闸门时间T=1S,则由1误差产生的测频误差为6610110111xxff若T增加为10S,则测频误差为1×10-7,即可提高一个数量级。式(1-3)又告诉我们,当T选定后,xf越低,则由1误差产生的测频误差越大。(二)标准频率误差闸门时间T准不准,主要决定于由石英振荡器提供的标准频率的准确度,若石英振荡器的频率为cf,分频系数为k(例如,cf=1MHz,为了得到ST1的时基信号,k应等于106,),则cCfkkTT,而2ccffkT所以ccffTT(1-4)可见,闸门时间的准确度在数值上等于标准频率的准确度,式中负号表示由cf引起的闸门时间的误差为T。通常,对标准频率准确度ccff的要求是根据所要求的测频准确度提出来的,例如,当测量方案的最小计数单位为1Hz,而6x10fHz,在ST1时的测量准确度为6101(只考虑1误差),为了使标准频率误差不对测量结果产生影响,石英振荡器的输出频率准确度ccff应优于1×10-7,即比1误差引起的测频误差小一个数量级。(三)结论综上所述,可得如下结论:1、计数器直接测频的误差主要有两项:即1误差和标准频率误差。一般,总误差可采用分项误差绝对值合成,即ccxxxffTfff1(1-5)可把式(1-5)画成图1-3所示误差曲线,即xxff与xfT以及ccff的关系曲线。从图可见,在xf一定时,闸门时间T选的越长,测量准确度越高。而当T选定后,xf越高,则由于1误差对测量结果的影响减小,测量准确度越高。但是,随着1误图1-3计数器测频时的误差曲线9差的影响减小,标准频率误差ccff将对测量结果产生影响,并以ccff(图中以5×10-9为例)为极限,即测量准确度不可能优于5×10-9。2、测量低频时,由于1误差产生的测频误差大得惊人,例如,10xfHz,ST1,则由1误差引起的测频误差可达10%,所以,测量低频时不宜采用直接测频方法。二、电子计数器测周方法及误差分析(一)计数器测周的必要性及测周的基本原理正如前述,当xf较低时,利用计数器直接测频,由1误差所引起的测频误差将会大到不可允许的程度。所以,为了提高测量低频时的准确度,即减小1误差的影响,可改成先测周期xT,然后计算xxTf1。因为xT越大,计数器计得的数N越大,1误差对测量结果的影响自然减小。计数器测周的原理方框图如图1-4。(二)误差分析与分析电子计数器测频时的误差类似,根据误差传递公式,并结合图1-4,可得SSxxTTNNTT(1-6)根据图1-4测周原理kfTkTTTTNcXCXSX,而1N所以,式(1-6)可写成cccXcXxxfffTkTcTcfTkTT(1-7)从式(1-7)可见,测周时的误差表达式与测频的表达式形式相似,很明显xT愈大(即被测频率愈低)1误差对测周精确度的影响愈小。图1-5显示出了测周时的误差曲线。图中三条曲线,其中10xT和100xT两条曲线是采用多周期测量时的误差曲线。第二节简易数字频率计硬件设计的基本要求根据电子大赛试题基本要求和发挥部分要求,