51单片机频率计

实验报告
实验名称基于8255的8LED数显频率计
课程名称_______ Protues软件设计(51单片机)_________
班级学号 __________
姓名 _________________
一、实验要求
基本要求:
用P1或P3 口,产生一方波信号,频率为1000Hz,用一组数码管或LCD显示频率和
周期以及脉宽等参数(也可用信号源或模拟信号源)。
功率放大器
将输出信号输入到另一端口(INT0/INT1 )作频率计的信号输入端,测量此方波信号的频率、周期和脉宽,在另一组数码管或LCD上将参数值显示出来。
(刷新时间1秒)o
发挥部分:
桑塔纳2000机油
1、设置一功能键,能将当前数码管或LCD上的信号参数值锁定。
2、通过键盘,可修改方显示参数,刷新时间。
3、按键时,蜂鸣器发出提示音,表示按键有效
4、用图形方式显示输入波形(用模拟示波器)动态显示格式:
自定
二、实验内容
实验内容为基于8255的简易8LED数字显示频率计,利用8255的扩展功能,来扩展51单片机的功能管脚,使其可以实现利用8255的A,B端口实现输入输出功能,从而实现51单片机管脚的扩展。
三、实验原理
频率计主要功能是测量频率。频率是指一秒内发生相同波形的次数,根据这一定义,可以初步得出测量频率的方法,就是通过计量一定时间的脉冲次数就可以通过计算累加获得频率的次数,然后通过数成功之路的动物
值译码输送的数显电路当中去。
根据实验假设,可以知道实验中需要用的两个定时装置,一个为定时装置,另一个为计数装置。而单片机中正好就设置了这样的计时器。
8051提供两个16位的内部定时器(计数器),分别为Time0, Time1 (简称T0,
T1)这两个定时器可以用作为内部定时器或者外部计数器,作为内部计时的时候是计算的是内部的脉冲,以12MHz的计时脉冲系统为例,将此计数器时钟脉冲除12后送入定时器,因此定时器所计数的脉冲周期为1us。若采用16位的
定时器,最多可以计数65536,约为0,065&因而我们选择0.05S作为单位计数时间长度。
若当成外部计数器时则计数由T0或T1管脚送入脉冲,同样地,若采用16 位的定时模式,则最多可以数65536个计数量,相当可观。
在51单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它们用于存放定时或计数的初始值。此外,内部还有一个8位的方式寄存器TMOD 和一个8位的控制寄存器TCON。用于选择和控制定时/计数器的工作。其格式见下面两表:
方式控制寄存器
根据定时时间要求或计数要求计算计数器初值;
将工作方式控制字写入TMOD寄存器;
将计数初值写入THX和TLX寄存器;
启动定时器/计数器,即将TRX置位。
如果工作于中断方式,需置位EA (中断总开关)及ETX (允许定时/计数器中断),并编写中断服务
程序。
实验当中规定要求为使用INT0/INT1作频率计的信号输入端,所以启用的是外部中断来执行计数过程。
外部中断有INTO和INT1两个,CPU通过两个外部引脚即可接受外部中断的请求。
外部中断信号的采样方式可分为电平触发(低电平)以及边缘触发(负边沿触发)两种。若采用电平触发,需要将TCON寄存器中的IT0 (或IT1)设定为0, 则只要INTO引脚为低电平,视为外部中断要求。若采用边缘触发,需要将TCON 寄存器中的IT0 (或
IT1)设定为1,则只要INTO引脚的信号由高电平转为低电平,则视为外部中断需求。这些中断需求将反映在IE0(IE1 )里,若IE寄存器
的EX0 (或EX1)=1,且EA=1,CPU则进入我们设定好的中断程序。
显示单路部分,因为要求使用8LED数码管显示电路,所以只用对数码管分别送入数据信号和扫描信号即可。显示原理如图所示
太阳是大家的教学设计
所以利用8255分别写入数据和扫描信号既可以是其产生所要显示的内容8255的控制字的设置也有不少问题需要解决,
根据设计的电路我设计的控制字为 D8255=0x80;
设定的各端口的地址为 #defi ne A8255 XBYTE[OxfffO] #defi ne B8255 XBYTE[0xfff1] #defi ne C8255 XBYTE[0xfff2] #defi ne D8255 XBYTE[0xfff3]
RESET
RD
巨削寄序器
GXD
P 屯〜肌
PC :〜PC :
Afll
;端口E 阚:
图九2 8255A 编程模型
需要对8255A 进行控制字的写入
0:方式0 1:方式1
图扎3方式控制字
四、设计思路及设计流程图
基本上可以分为三个阶段,第一阶段为读取外部指令,为测量频率,测量周期,测量脉宽。我采用了P1端口的P1.0,P1.1P1.2三个管脚来作为外部指令的输入方式。施米特
主程序流程图
纯棉纱测量函数部分我使用的是利用外部中断INTO管脚输入信号,设置为负边沿触发,利用
此来触发外部中断子程序void EX_INT0() interrupt 0 。同时计时器开始0.05s的计时程序,当
计时次数满二十次的情况是正好满1S则锁存实验所得数据然后送进显示电路进行显示。
中断程序部分为:
void EX_INT0() in terrupt 0
{
coun tA++;
}
若要做的便是将CountA的数值在计时中断满二十次时进行锁存而后输出即可

本文发布于:2024-09-23 20:20:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/158317.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   显示   信号   计数   要求   测量   方式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议