小车计数实验

单片机实验

27人已加入

描述

小车计数实验

一、实验目的
单片机的计数功能可以用于对记录脉冲数量和测量频率。本实验用红外发射模块连续
发射10 个脉冲,用计数器记录接受到的反射脉冲数量,从而判断是否有障碍物。通过实验
应掌握以下知识点:
1.计数器的使用方法和相关特殊功能寄存器的使用。
2.使用红外传感器模块结合计数器检测障碍物的方法。
二、实验预备知识
1.计数器使用方法
P89V51RD2 单片机的T0、T1、T2 定时/计数器都可以设置成计数器,设置成计数器
时,他们分别对来自P3.4、P3.5、P1.0 的外部输入脉冲信号计数。本实验中只要求掌握T0、
T1 计数的方法。定时器/计数器设置为计数器的方法是对特殊功能寄存器TMOD 中的两个
C/T 位置1 即可。通过把TR0、TR1 置1 就可以启动计数器,计数器工作时,每当对用的
输入端输入一个脉冲,其值从初值开始加1,到0FFFH(或1FFFH、或0FFH)后再输入
一个脉冲就产生中断触发信号,如果中断被允许就可以产生中断。
计数器经常用于记录输入脉冲的数量,这时候就要求将其初值设置成0,便于计算。
思考:结合定时器的工作情况,分析当计数器所计的脉冲数量超过计数范围FFFFH 时
会出现什么情况?此时应采取什么措施才能保证计数结果不会出错?
2.频率测量方法
用计数器记录单位时间内某一信号源产生的脉冲数量,就可以测量出该脉冲信号的频
率。用单片机的两个定时/计数器配合就可以测量信号频率、转速等物理量。
把一个定时/计数器设置为定时器,用于产生时间基准,把另外一个定时计数器设置为
计数器,用于记录脉冲数量。程序示例如下:
ORG 0000H
SJMP MAIN
ORG 000BH
SJMP T0IN
ORG 0030H
MAIN: MOV TMOD ,#51H ;T0 定时,T1 计数
MOV TH1 ,#00H ;计数器初值设置为“0”
MOV TL1 ,#00H
MOV TH0 ,# ;设置时间
MOV TL0 ,#
SETB EX0 ;允许T0 中断
SETB TR0 ;启动定时器

SETB TR1 ;启动计数器
……
……
;定时中断服务程序如下:
T0INT:CLR TR1 ;时间到停止计数
CLR TR1 ;停止定时器
MOV 30H ,TL1 ;计数结果存入30H 和31H
MOV 31H ,TH1
MOV TL1 ,#00H ;计数器清零
MOV TH1 ,#00H
MOV TL0 ,# ;设定定时器初值
MOV TH0 ,#
SETB TR0 ;重新启动定时器、计数器进行下一次测量
SETB TR0
RETI
程序中定时时间应确定为一个便于计算的值,比如要测量频率,则可以把定时时间设
定为50ms,把计数结果乘20 就可以得到频率值。
三、硬件连接
把红外接收模块与电路板的J5 连接,接收模块与J8 连接。跳线JP11、JP12 短接右端,
JP8、JP13 短接左端。
四、实验内容
1.根据硬件连接绘制实验电路。
2.用计数器实现对障碍物的检测。
把红外发射模块接接口就J4,接收模块接就J5,发射模块每次发射10 个脉冲,用计
数器对发射信号计数,当接收到的脉冲数大于6 时就显示有障碍物,否则显示没有障碍物。
程序流程图如3-14 所示。
在初始化程序中,要把T0 设置成计数器,由于只计10 个脉冲,因此其工作方式可以
设置为方式2。计数结果只在TL0 中,因此在取计数结果时只需把TL0 中的数据取出即可。
思考:计数器的工作方式是否可以选择方式0 或方式1?为什么?
程序中可以选择D1~D8 中的一个发光二极管来指示是否有障碍物。
五、扩展内容
1.利用计数器中断方式编成实现障碍物检测功能。
2.测量脉冲信号的频率
在P3.4 端用信号发生器加入一定频率的脉冲信号,利用定时器和计数器配合工作,测
量该脉冲信号的频率,并用十六进制数把频率显示在数码管上。要求输入信号频率小于
255Hz。

六、思考题
1.比较计数与定时的区别。
2.在程序框图中为什么计数器要清零?

小车

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分