- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务三 简易频率计 任务目标 具体目标是:利用单片机的T0、T1的定时/计数功能,完成对输入的信号的频率进行测量,测量的结果通过8位动态数码管显示出来。这里要求实现对0~200KHz的信号频率进行准确测量,测量误差不超过±1Hz。 课题分析 在一个单片机系统中,为了实现频率的测量,就是要对外部信号进行计数,每到1s时,将计数所得的数值送到显示器上。 单片机系统要做三件事: 一是要进行1s钟的定时, 二是要测量外部被测信号的周期数, 三是将频率显示出来。 单片机中的2个定时器/计数器既能进行定时,也能计数,因而在本课题中采用单片机内部的定时器来完成课题任务。 图8-1 简易频率计实物图 图6-6 频率计电路原理图 T0 程序设计分析 因实验电路晶振fOSC=11.0592MHz,所以T1的初值的装入语句如下: TH1=(65536-5*110592/12)/256; TL1=(65536-5*110592/12)%256; 每定时1s钟时间到了,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理,送到数码管显示出来。 由本课题中的任务二中可知,T1工作在定时状态下,最大定时时间约为65ms,达不到1s的定时,所以采用定时50ms,共定时20次,即可完成1s的定时功能。 一、 定时1s 二、输入的脉冲计数 作为定时器T0,为了得到1s内的频率值,需要在定时1s之前将其初始值赋为0。同时,由于T0的最大计数值为65536,小于要求计数的频率的最大值,所以,在1s内,完全有可能产生溢出,对此,采用与定时1s的类似的方法,使用软件来记录计数器有几次溢出。 初始化T0,T1开中断 启动T0,T1 计数值n=0; 数码管动态显示频率值 1s定时处理: 停止计数 读取计数值, 计算频率 重置计数器 启动计数 重装定时器初值 T1定时时间到了 中断结束 主程序 定时中断服务程序 记录溢出次数 T0计数溢出 中断结束 计数中断服务程序 提问: 定时计数器的本质是什么? 与定时计数器相关的SFR有哪些?作用是什么? 如何使用定时计数器? 本章小结 单片机中断系统、定时系统是单片机系统重要的内容。 单片机的中断系统能有效地解决慢速工作的外围设备与快速工作的CPU之间的矛盾,可以提高工作效率,提高实时处理功能,以便对随机发生的事件作出快速响应和及时处理。中断的处理过程包括:中断请求、中断响应、中断服务及中断返回。单片机对中断的处理主要通过中断寄存器TCON、 SCON、 IE、 IP实现。 MCS-51芯片中有定时器/计数器电路,它可以实现定时控制、延时 、脉冲计数、频率测量、脉宽测量、信号发生等功能。单片机有2个定时器/计数器,对机内脉冲计数实时定时器,对机外脉冲计数器时计数器,主要由控制寄存器TCON、TMODS实现编程控制。定时器/计数器由4种工作方式,即方式0、方式1、方式2和方式3,以对应不同的定时/计数范围和使用方式。其中方式1定时/计数范围最大,数值为65536,方式2定时/计数值最小,但它可以实现处自动恢复。 8051有几个中断源?几级优先级? 中断源对应的中断入口是多少? 中断源自然优先级的顺序? 关键字interrupt的作用? 与中断相关的SFR有哪些? 复习“中断” 简述中断响应过程。 中断源B向CPU提出中断请求,CPU暂时中断原来工作A,转去处理事件B,处理完成后,再回到原来被中断的地方,继续工作A的执行 能用RET指令代替RETI指令吗? 不可以。RET虽然也能控制PC返回到原来中断的地方,但RET指令没有清零中断优先级状态触发器的功能。中断系统会任务中断仍在进行,同级或低级中断请求将不会被相应 课题五 定时/计数器 任务一 输出1000Hz的方波 任务二 每秒闪烁一次的LED 任务三 简易频率计 任务一 输出1000Hz的方波 任务目标 任务的目标是利用定时中断实现从P1.0输出1000Hz的方波。 程序设计分析 从P1.0输出1000Hz的方波,实际上就是要求从P1.0输出周期为1ms的方波。则高电平和低电平的时间各为1ms的一半,即各为500μs。 也就是在单片机中实现500μs的定时,每次定时时间到了的时候,将P1.0的电平改变就可以了。一个引脚的电平的改变,使用取反指令就可以完成,具体的指令如“P10=~P10;” 延时500μs P1.0电平取反 P1.0电平取反 重装定时
文档评论(0)