单片机课程设计之脉冲周期的测量.docx
《单片机课程设计之脉冲周期的测量.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之脉冲周期的测量.docx(18页珍藏版)》请在冰豆网上搜索。
单片机课程设计之脉冲周期的测量
一.概述················································3
二、课程设计的目的及具体要求································4
三、总原理图及硬件资源分配··································4
3.1复位电路
3.2时钟电路
3.3信号源的产生
3.4数码管的显示电路
3.5单片机
3.6总体框图
四、单元电路设计与参数计算········································7
4.1总程序框图
4.2单元电路设计
4.3单元程序模块
4.4参数计算
五、程序清单····················································12
六、软硬件的调试···············································15
七、心得体会····················································15
八.致谢·······························································16
九、参考文献····················································16
十、附件·································································17
概述
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新,目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
科技越发达,智能化的东西就越多,使用的单片机就越多。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
本系统采用单片机AT89C51为中心器件来设计脉冲宽度测量器,系统实用性强、操作简单、扩展性强。
在现有的单片机仿真机系统上掌握相关软硬件设计与调试知识,根据所选择题目,焊接好硬件电路,正确进行元器件的测试与调试,并在计算机上编写汇编程序调试运行,并实现参考选题中要求的设计。
二、课程设计的目的及具体要求
目的:
1、通过单片机课程设计,熟练掌握汇编语言的编程方法,巩固和加深“单片机原理与应用”中的理论知识,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过脉冲周期的测量的设计,掌握AT89C51定时/计数的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
具体要求:
利用单片机AT89C51单片机的T0、T1的定时/计数功能,完成对待测信号的周期进行测量,测量的结果通过8位动态数码管显示出来。
设计要求的技术指标有:
1、输入脉冲幅度:
0-5v
2、周期量测量范围:
0.1ms—50ms
3、测量精度:
正负1%
4、显示方式:
四位数字显示
三、总原理图及硬件资源分配
3.1复位电路
MCS-51单片机的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位:
上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。
为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
电路图如下:
上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
3.2时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:
一种是内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式。
电路图如下:
单片机使用12m的晶振
晶振和C1、C2组成振荡器,使单片机内部产生产生周期为1us的脉冲信号
MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
3.3信号源的产生:
信号源电路由RC振荡器构成,电阻选510欧姆,电容选择0.1uf,,产生矩形波后通过非门整形,非门由与非门74LS00构成,实际电路中用到四个与非门,使得整形更好,波形更稳定。
根据公式T=2.2*RC,计算可得周期为112.2ms
3.4数码管显示电路
LED是由若干个发光二极管组成的。
当发光二极管导通时,相应的一个点或一个笔划发亮。
控制不同组合的二极管导通,就能显示出各种字符。
这种笔划式的七段显示器,能显示的字符数量少,但控制简单、使用方便。
发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。
这里我们采用的为共阴极。
其他一些字形的段选码如下表:
在我们设计的电路中由P0口来送段选信号,P0口内部并没有带上拉电阻,在接收数码管时需要在两者之间加一排阻,降低电流来保护P0口。
利用了P2.7~P2.4来送位选信号即哪一个数码管来亮,且送低电平时有效,数码管用动态显示的方式来显示测量的周期值。
在单片机与数码管之间我们采用了7407来驱动,7407为位6输入高压缓冲器。
3.5单片机
3.6.总体框图
四单元电路设计与参数计算
4.1总程序框图
4.2单元电路设计
本设计由单片机、测量控制电路、键盘及显示电路几个组成部分,各部分采用的电路形式及主要器件确定如下:
(1)单片机部分
选用89C51作为主机,同时要设计89C51单片机的晶振电路和复位电路。
单片机部分框图
(2)测量电路部分
直接利用单片机内部的定时/计数器实现频率的测量。
测量电路框图
显示部分:
选用4个共阴极数码管显示,每个数码管的选通是由P2.7~P2.4来控制
每位点亮时间为2048us,采用延时子程序,有四个数码管,用扫描的方式显示,每一个时刻只选通一个数码管。
不带小数0~9的数据
带小数0~9的数据
0
77H
F7H
1
41H
C1H
2
3BH
BBH
3
6BH
EBH
4
4DH
CDH
5
6EH
EEH
6
7EH
FEH
7
43H
C3H
8
7FH
FFH
9
6FH
EFH
由于单片机显示的是10进制的数,所以需要将2进制数转换为10进制数来显示
二进制—十进制转换的流程图如下:
因为有16位的二进制,故循环次数为16次,放在R7中。
38H37H中的十六位二进制数转换为十进制后放在34H35H36H单元中
4.3单元程序模块
1主程序如下所示:
MAIN:
MOVSP,#60H
MOVTMOD,#01H;计数器T0工作在方式1
MOVTH0,#00H
MOVTL0,#00H;计数器TO清零
MOVIE,#81H;开总中断外部中断0
SETBTR0;T0允许计数且当外部中断输入为高时计数外部中断0为边沿触发
SETBIT0
外中断0服务子程序如下:
INTR_0:
MOV41H,TH0
MOV40H,TL0;将计数器T0中的数转移到40H,41H中
MOVTH0,#00H
MOVTL0,#00H;重新将定时器T0清零
QQ:
RETI
2数码转换
USBCD:
MOVA,34H
CJNEA,#00H,PD;判断第五位数值是否为0为零则按四位有效值处理不为零按5位有效值处理
MOVR0,#36H;当有4位有效效值时取后四位显示小数点加在第一位
MOVA,#00H
XCHDA,@R0
MOV33H,A;将36H中的低4位转换为非压缩BCD码存到33H
XCHDA,@R0
SWAPA
MOV32H,A;高4位转换为非压缩BCD码存到32H
MOVR1,#35H
MOVA,#00H
XCHDA,@R1
MOV31H,A;将35H中的低4位转换为非压缩BCD码存到31H
MOVA,@R1
SWAPA
ADDA,#0AH;加小数点显示(如果显示us为单位可以不加小数点)
MOV30H,A;高4位转换为非压缩BCD码存到30H
RET
PD:
MOVR0,#34H;当有5位有效值时取前四位显示小数点加在第二位
MOVA,#00H
XCHDA,@R0
MOV30H,A;将34H中的低4位转换为非压缩BCD码存到30H
MOVR1,#35H
MOVA,#00H
XCHDA,@R1
MOV32H,A;将35H中的低4位转换为非压缩BCD码存到32H
MOVA,@R1
SWAPA
ADDA,#0AH加小数点显示(如果显示us为单位可以不加小数点)
MOV31H,A;高4位转换为非压缩BCD码存到31H
ANL36H,#0F0H
MOVA,36H将36H中的高4位转换为非压缩BCD码存到33H
SWAPA
MOV33H,A
RET
4数码管显示子程序
LEDS:
MOVA,30H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,#7FH;位选信号第一个数码管
MOVP2,A
LCALLDELAY
MOVA,31H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0BFH;位选信号第二个数码管
MOVP2,A
LCALLDELAY
MOVA,32H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0DFH;位选信号第三个数码管
MOVP2,A
LCALLDELAY
MOVA,33H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0EFH;位选信号第四个数码管
MOVP2,A
LCALLDELAY
RET
5延时程序
DELAY:
MOVR7,#08H
DELA:
MOVR6,#80H
DJNZR6,$
DJNZR7,DELA
RET
采用软件延时,延时时间为8*128*2=2048us
4.4参数计算
计算脉宽:
d=1/[f(输入信号频率)*2]
测量脉宽:
d=计数值×TC(机器周期)(μs),d(μs)÷1000→d(ms)
五、程序清单
下面的程序是本次课程设计的源程序:
ORG0000H
AJMPMAIN
ORG0003H
AJMPINTR_0;外部中断低电平触发处理
ORG0033H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#00H
MOVTL0,#00H
MOVIE,#81H
SETBTR0
SETBIT0
LOOPS:
LCALLBCD;二进制转十进制
LCALLUSBCD;压缩BCD码,转非压缩BCD码
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
LCALLDELAY
LCALLLEDS
AJMPLOOPS;循环处理显示
INTR_0:
MOV41H,TH0
MOV40H,TL0
MOVTH0,#00H
MOVTL0,#00H
GJ:
RETI
BCD:
CLRA;十进制转换,
;将41H42H中的数值转换成BCD码分别按高低存储在34H35H36H中
MOV38H,41H
MOV37H,40H
MOV34H,A
MOV35H,A
MOV36H,A
MOVR7,#10H
LOOPS1:
CLRC
MOVA,37H
RLCA
MOV37H,A
MOVA,38H
RLCA
MOV38H,A
MOVA,36H
ADDCA,36H
DAA
MOV36H,A
MOVA,35H
ADDCA,35H
DAA
MOV35H,A
MOVA,34H
ADDCA,34H
DAA
MOV34H,A
DJNZR7,LOOPS1
RET
USBCD:
MOVA,34H
CJNEA,#00H,PD
MOVR1,#35H
MOVR0,#36H
MOVA,#00H
XCHDA,@R0
MOV30H,A
MOVA,@R0
SWAPA
MOV31H,A
MOVA,#00H
XCHDA,@R1
MOV32H,A
MOVA,@R1
SWAPA
ADDA,#0AH
MOV30H,A
RET
PD:
MOVR1,#34H
MOVR0,#35H
MOVA,#00H
XCHDA,@R0
MOV31H,A
MOVA,@R0
SWAPA
ADDA,#10
MOV32H,A
MOVA,#00H
XCHDA,@R1
MOV33H,A
MOVA,@R1
SWAPA
ANL36H,#0F0H
MOVA,36H
SWAPA
MOV30H,A
RET
LEDS:
MOVA,30H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,#7FH
MOVP2,A
LCALLDELAY
MOVA,31H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0BFH
MOVP2,A
LCALLDELAY
MOVA,32H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0DFH
MOVP2,A
LCALLDELAY
MOVA,33H
MOVCA,@A+DPTR
MOVP0,A
MOVA,#0EFH
MOVP2,A
LCALLDELAY
RET
DELAY:
MOVR7,#08H
DELA:
MOVR6,#80H
DJNZR6,$
DJNZR7,DELA
RET
TAB:
DB77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH
DB0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH
END
六、软硬件的调试
硬件调试:
拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。
若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。
将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。
然后给板子接上正负电源,观察数码管是否亮,在检测数码管各个显示部分是否正常,都检查完毕后,将信号源的输出脚接在示波器上,并加上正负电源,观察波形,如果得到的波形不太好,可将74LS00的4个与非门全部串联,并将对应的周期记录下来。
软件的测试:
在软件测试的时候,先将串口测试下,并逐次将各子程序分别进行调试,数码管显示可先编一段小程序来验证,不能利用数码管显示的程序部分可以利用软件上添加观察程序来实现观察结果是否正确。
七、课程设计的体会
短短两周的课程设计已经结束了,这两周的时间说短不短说长不长,可是却让我巩固的大学三年所学的单片机方面的知识,并对知识有了进一步的了解,通过这次的课程设计锻炼了我们的实践能力,也是对我们以后的实际工作能力的具体训练和考察过程。
现在是一个高科技的时代,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在的。
因此对于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。
此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。
同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。
设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
本系统是以单片机AT89C51芯片为核心部件,此次在软件上是花费很多的精力,我们上网找资料,上图书馆,尽可能的了解有关于这方面的知识。
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。
单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。
相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。
八.致谢
通过本次毕业设计,我在黄老师和陈老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域这对我今后进一步学习这方面的知识有极大的帮助。
在此,忠心感谢黄老师和陈老师以及许多同学的指导和支持。
九.参考文献:
《单片微型机原理应用与实验》张友德赵志英涂时亮复旦大学出版社
《51系列单片机高级实例开发指南》李军北京航空航天大学出版社
附件: