资源简介
本设计利用定时器中断功能实现了频率测量的功能,模块化的程序可读性强。
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[11] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
long uint pulse=0;//计数输入的方波的个数;
long uint freq=0;//频率
uchar temp=0; //临时变量
uchar f;
void delay_1ms(uint i) //延时函数,约1ms
{
uint xj;
for(j=0;j for(x=0;x<=148;x++);
}
void Time0_Init()//定时器和计数器的初始化函数
{
EA=1; //打开全局中断
TMOD = 0x15;//设定定时器1和计数器0的工作方式为方式1
TH0 = 0xff;//计数器0的初值
TL0 = 0xff;//计数器0的初值
ET0=1; //允许计数器0中断
TR0=1; //打开计数器0,开始计数
TH1 = 0x3c;//定时器1的初值
TL1 = 0xb0;//定时器1的初值
ET1=1; //允许定时器1中断
TR1 = 1;//打开定时器1,开始计数
}
void main()
{
Time0_Init(); //初始化定时器和计数器
while(1)
{
P2=0xf7; //以下为数码管显示函数
P0=0x00;
P0=table[freq/1000%10];
delay_1ms(2);
P2=0xfb;
P0=0x00;
P0=table[freq/100%10];
delay_1ms(2);
P2=0xfd;
P0=0x00;
P0=table[freq/10%10];
delay_1ms(2);
P2=0xfe;
P0=0x00;
P0=table[freq%10];
delay_1ms(1);
}
}
void ISQ_timer0(void) interrupt 1 //用来计数脉冲数,每一个方波脉冲,计数器进入中断,脉冲数加一
{
TR0 = 0;
pulse++;
TH0 = 0xff;
TL0 = 0xff;
TR0 = 1;
}
/****************************************************************
用来设定时间,定时器的周期为50ms,当经过20次后,
也即1s后,关断定时器和计数器,将一秒内计数的脉冲数赋给频率pulse
一秒内采集的脉冲数即为输入方波的频率
****************************************************************/
void ISQ_time1() interrupt 3
{
TH1 = 0x3c;
TL1 = 0xb0;
temp++;
if(temp==20)
{
TR0 = 0;
TR1 = 0;
temp=0;
freq=202642400/pulse*100/pulse;
pulse=0;//将脉冲数清零,重新计数
TR0 = 1;//打开计数器0,进入下一个循环
TR1 = 1;//打开定时器1,进入下一个循环
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-15 23:53 test_fre_x\
文件 6376 2009-05-07 14:37 test_fre_x\STARTUP.A51
文件 14070 2018-07-08 15:12 test_fre_x\STARTUP.LST
文件 749 2018-07-08 15:12 test_fre_x\STARTUP.OBJ
文件 2429 2018-07-06 17:02 test_fre_x\day5_tf.c
文件 1490 2018-07-08 15:12 test_fre_x\frequence.LST
文件 2034 2018-07-08 15:12 test_fre_x\frequence.OBJ
文件 293 2018-07-06 22:45 test_fre_x\frequence.c
文件 131 2018-07-06 22:51 test_fre_x\frequence.h
文件 894 2018-07-06 22:50 test_fre_x\it.LST
文件 592 2018-07-06 22:50 test_fre_x\it.OBJ
文件 52 2018-07-06 22:50 test_fre_x\it.__i
文件 53 2018-07-06 22:51 test_fre_x\it.c
文件 4113 2018-07-08 15:18 test_fre_x\lcd.LST
文件 6832 2018-07-08 15:18 test_fre_x\lcd.OBJ
文件 53 2018-07-08 15:18 test_fre_x\lcd.__i
文件 1499 2018-07-08 15:18 test_fre_x\lcd.c
文件 322 2018-07-08 14:52 test_fre_x\lcd.h
文件 6213 2018-07-06 21:03 test_fre_x\main.LST
文件 8590 2018-07-06 21:03 test_fre_x\main.OBJ
文件 3451 2018-07-06 21:03 test_fre_x\main.c
文件 4060 2018-07-08 15:23 test_fre_x\test_freq.LST
文件 4858 2018-07-08 15:23 test_fre_x\test_freq.OBJ
文件 59 2018-07-08 15:23 test_fre_x\test_freq.__i
文件 1464 2018-07-08 15:23 test_fre_x\test_freq.c
文件 12740 2018-07-08 15:23 test_fre_x\test_frequency
文件 4390 2018-07-05 23:37 test_fre_x\test_frequency.LST
文件 14749 2018-07-08 15:23 test_fre_x\test_frequency.M51
文件 0 2018-08-15 23:11 test_fre_x\test_frequency.build_log.htm
文件 1573 2018-07-05 20:28 test_fre_x\test_frequency.c
文件 2471 2018-07-08 15:23 test_fre_x\test_frequency.hex
............此处省略9个文件信息
- 上一篇:电机测速程序的实现很使用 可读性强
- 下一篇:电工学答案电工学答案.rar
相关资源
- 操作系统 实验 模拟分页式虚拟存储管
- 使用定时中断方式与ds18b20通信
- labview串口中断控制例程
- uni-app定时器
- 555定时器芯片资料,PDF格式
- 51单片机秒表定时器实验
- linux下中断处理程序,含驱动和应用程
- 操作系统-时钟中断-模拟时钟中断的产
- mcgs定时器操作函数设置方法
- stm32多路超声波模块测距多路定时器输
- OLED12864显示屏,12位ADC,按键中断,
- 一个可以定时运行电脑上的程序或者
- 基于单片机的电子定时器的课程设计
- TMS320F28335_SCI.rar
- 串口空闲中断+DMA收发(基于STM32F103
- arduino 定时器库
- 交通灯定时控制系统实验报告 含Mul
- N76E003呼吸灯程序PWM中断重设占
- 电子节拍器
- 通过STM32F103单片机通用定时器TIM3同时
- 通过STM32F103单片机高级定时器TIM1同时
- 实验四:定时器、计数器实验.zip
- QMA7981数据手册及检测倾斜角度和震动
- STC单片机定时器(1T_12T)初值计算器
- stm32 USART接收总线空闲中断--USART_IT_
- HT66F018时基中断例程
- 课程设计题三:日历和数字钟.zip
- 基于stm32f4定时器触发双ADC多通道规则
- 多功能数字时钟设计报告 用555定时器
- STM32F103 定时器触发ADC+DMA中断+双缓冲
评论
共有 条评论