版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、作者:佚名来源:本站原创点击数:302更新时间:2010年08月08日【字体:大中小】/晶振:12M/实验方法:首先要把51hei单片机开发板上的ne555的方波输出信号J7的第一脚用杜邦线/引入P3.2口,数码管即可显示ne555震荡电路当前的频率值,旋动PR1电位器可/发现数字有变化./原理:1秒钟内计数外部脉冲个数,如计数1000次,则表示频率为1000Hz/1秒钟定时采用51单片机定时器0实现,外部脉冲由外部中断0引脚接入#include<reg51.h>#include"51hei.h"#defineucharunsignedcharucharcoun
2、ter1;sbitduan=P2A6;/74HC573的LE端U5LED的段选端sbitwei=P2A7;/74HC573的LE端U4LED的位选端unsignedintcounter2,tmp;uchartable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阳型数码管09显示unsignedintdis6;ucharcon=0xfe,0xfd,0xfb,0xf7,0xef;/共阳型数码管控制端init();delay(uchar);display();jishu();voidmain()guandz();init();while(
3、1)jishu();/定时器0和外部中断0的初始化init()EA=1;EX0=1;ET0=1;IT0=1;TMOD=0x01;TH0=0x3c;TL0=0xaf;TR0=1;/延时程序delay(ucharx)uchara,b;for(a=x;a>0;a-)for(b=20;b>0;b-);/外部中断0中断程序voidexternal0()interrupt0tmp;/定时器0中断程序voidtimer0()interrupt1TH0=0x3c;TL0=0xaf;counter1;/显示程序display()获取计数值的万位获取计数值的千位uchari;dis0=counter2
4、/10000;/dis5=counter2000;dis1=dis5/1000;/dis5=dis500;dis2=dis5/100;/dis5=dis50;dis3=dis5/10;/dis4=dis5;/for(i=0;i<5;i)/P0=0xff;P0=coni;wei=1;wei=0;P0=tabledisi;duan=1;duan=0;delay(1);P0=0;duan=1;duan=0;获取计数值的百位获取计数值的十位获取计数值的个位依次显示万、千、百、十、个位,动态显示jishu()if(counter1=20)counter2=tmp;display();tmp=0;c
5、ounter1=0;elsedisplay();/定时器定时50ms故20次中断就表示1秒钟到达/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间、速度、频率、脉宽、提供定时脉冲信号等。相对于一般8位单片机而言,AVM仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大。ATmega128-共配置了2个8位和2个16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍。5.9.1预分频器定时/计数器最基本的功能就是对脉冲信号计数,当计数器计满后(8位为255,16位为65535),再来一个脉冲它就翻转到0,并产生中
6、断信号。同其他单片机类似,AVR勺定时/计数器的计数脉冲可以来自外部的引脚,也可以由从内部系统时钟获得;但AVR的定时/计数器在内部系统时钟和计数单元之间增加了一个预分频器,利用预分频器,定时/计数器可以从内部系统时钟获得不同频率的信号。表5-1为系统时钟为4MH敌用定时/计数器0的最高计时精度和时宽范围。表5-1T/C0计时精度和时宽(系统时钟4MHz)分频系数计时频率最高计时精度(TCNT0=25)5最宽时宽(TCNT0=)014MHz0.25us64us8500KHz2us512us32125KHz8us2.048ms6462.5KHz16us4.096ms12831.25KHz32us
7、8.192ms25615.625KHz64us16.384ms10243906.25Hz256us65.536ms从表中看出,在系统时钟为4MHz寸,8位的T/C0最高计时精度为0.25us,最长的时宽可达到65.536ms。而使用16位的定时/计数器时,不需要辅助的软件计数器,就可以非常方便的设计一个时间长达16.777216秒(精度为256us)的定时器,这对于其它的8位单片机是做不到的。AVR单片机的每一个定时/计数器都配备独立的、多达10位的预分频器,由软件设定分频系数,与8/16位定时/计数器配合,可以提供多种档次的定时时间。使用时可选取最接近的定时档次,即选8/16位定时/计数器与
8、分频系数的最优组合,减少了定时误差。所以,AVR苣时/计数器的显著特点之一是:高精度和宽时范围,使得用户应用起来更加灵活和方便。止匕外,AVR勺USARTSPI、I2C、WD曲都不占用这些定时/计数器。5.9.2输入捕捉功能ATmega128的两个16位定时/计数器(T/C1、T/C3)具有输入捕捉功能,它是AVR色时/计数器的又一个显著的特点。其基本作用是当一个事件发生时,立即将定时/计数器的值锁定在输入捕捉寄存器中(定时/计数器保持继续运行)。利用输入捕捉功能,可以对一个事件从发生到结束的时间进行更加精确,如下面的示例中精确测量一个脉冲的宽度。测量一个脉冲的宽度,就是测量脉冲上升沿到下降之
9、间的时间。不使用输入捕捉功能,一般情况往往需要使用两个外围部件才能完成和实现。如使用1个定时/计数器加1个外部中断(或模拟比较器):定时/计数器用于计时;而外部中断方式设置成电平变化触发方式,用于检测脉冲的上升和下降沿。当外部中断输入电平由低变高,触发中断,读取时间1;等到输入电平由高变低时,再次触发中断,读取时间2;两次时间差既为脉冲宽度。这种实现方式不仅多占用了一个单片机的内部资源,而且精度也受到中断响应时间的限制。因为一旦中断发生,MCU向应中断需要时间,在中断中可能要进行适当的中断现场保护,才能读取时间值。而此时的时间值比中断发生的时间已经滞后了。而使用ATmega128勺1个定时/计
10、数器,再配合其输入捕捉功能来测量脉冲的宽度就非常方便,下面是实现的程序示例。#include<mega128.h>#defineICP1PIND.4/脉冲输入由ICP1(Pind.4)输入unsignedcharov_counter;unsignedintrising_edge,falling_edge;unsignedlongpulse_clocks;interruptTIM1_OVFvoidtimer1_ovf_isr(void)/T/C1溢出中断ov_counter;/记录溢出次数interruptTIM1_CAPTvoidtimer1_capt_isr(void)/T/C1
11、捕捉中断if(ICP1)/上升沿中断rising_edge=ICR1;/记录上升沿开始时间TCCR1B=TCCR1B&0xBF;/设置T/C1为下降沿触发捕捉ov_counter=0;/清零溢出计数器else/下降沿中断falling_edge=ICR1;/记录下降沿时间TCCR1B=TCCR1B|0x40;/设置T/C1为上升沿触发捕捉pulse_clocks=(unsignedlong)falling_edge-(unsignedlong)rising_edge(unsignedlong)ov_counter*0x10000/500;/计算脉冲宽度voidmain(void)TCC
12、R1B=0x42;/初始化T/C1,1/8分频,上升沿触发捕捉TIMSK=0x24;/允许T/C1溢出和捕捉中断#asm("sei")while(1);这段程序是在CVAV和实现的。在T/C1的捕捉中断中,先检查ICP1的实际状态,以确定是出现了上升沿还是下降沿信号。如果中断是由上升沿触发的(ICP1为高电平),程序便开始一次脉冲宽度的测量:记录下上升沿出现的时间,把T/C1的捕捉触发方式改为下降沿触发,并清空溢出计数器。如果中断由下降沿触发(ICP1为低电平),表示到达脉冲的未端,程序记录下降沿出现时间,计算出脉冲的宽度,再将T/C1的捕捉触发方式改为上升沿触发,以开始下一次的测量。脉冲的实际宽度(毫秒格式)是根据T/C1的计数时钟个数来计算的。本例中T/C1的计数时钟是系统时钟(4MHz的8分频,即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年榆林市第一医院医护人员招聘考试参考题库及答案详解
- 2026年陕西省人民医院医护人员招聘考试备考试题及答案详解
- (2026版)学校矛盾纠纷排查管理制度
- 2026年平安银行(上海分行)人员招聘笔试参考题库及答案详解
- 2026年天津市传染病医院医护人员招聘笔试备考试题及答案详解
- 2026年亦庄同仁医院医护人员招聘笔试参考题库及答案详解
- 2026年牡丹江市第二人民医院医护人员招聘考试参考试题及答案详解
- 2026年南京银行人员招聘考试参考题库及答案详解
- 2026年沈阳铁路局沈阳中心医院医护人员招聘考试参考试题及答案详解
- 2026年无锡市精神卫生中心槐树巷门诊部医护人员招聘笔试备考题库及答案详解
- 2026年医院中药师(药学专业)高频面试题包含详细解答
- 江宁区秣陵街道招聘社区网格员考试试题附答案详解
- 2026内蒙古乌兰察布察哈尔右翼后旗人民医院招聘备案制专业技术人员20人笔试备考试题及答案解析
- 2026年高考新高考一卷英语真题及答案
- 《电气控制与S7-1200PLC应用》课件 第9章步进电动机控制
- 2026年高考作文素材积累之《给阿嬷的情书》(含教材衔接):一纸牵家万里连国
- 2025年江苏苏州高铁新城国有资产控股(集团)有限公司及下属子公司公开招聘11人笔试历年参考题库附带答案详解
- 2026上海中考生物知识点总结训练含答案
- 2025年中考语文现代文阅读小说人物分析:小说人物的心理困境
- 2026年高考英语天津卷试卷附答案
- JCT682-2022水泥胶砂试体成型振实台
评论
0/150
提交评论