单片机蓝桥杯——NE555频率测量
原理:
对蓝桥杯单片机板子上NE555电路进行频率测量时,不需要任何的配置,整个单片机测量频率的过程中,跟NE555芯片没什么关系,归根结底考察的还是定时/计数器。但需要注意:
(1)当用到NE555时,需要用跳线帽将J3的SIGNAL与P34短接,将NE555发生的信号输入到单片机的P34引脚。
(2)NE555电路是一个信号发生电路,其信号输出接到单片机的P34引脚,即单片机的T0引脚。
(3) 该信号的频率大小可以通过Rb3可调电位器改变。
题目:
单片机测量信号频率,并显示在数码管中,频率数据显示用6位数码管,单位是Hz,当显示长度不足6位时,未使用到的数码管熄灭(第十届省赛的一个要求)。
难点:TOMD的配置,设置定时器模式
设置T0为计数器,工作在方式3,为不可屏蔽的16位自动重装
设置T1为定时器,工作在方式0,为可屏蔽的16位自动重装
此时TMOD=0x07
代码实现:
#include "STC15F2K60S2.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned intuchar segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //0~9的段码(不带小数点)0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff}; //0.~9.的段码(带小数点) 以及0xff全灭
uchar segVal[]={20,20,20,20,20,20,20,20}; //数码管初始化全灭void SelectHC573(uchar val)
{switch(val){case 4 : P2 = (P2 & 0x1f) | 0x80; break;case 5 : P2 = (P2 & 0x1f) | 0xa0; break;case 6 : P2 = (P2 & 0x1f) | 0xc0; break;case 7 : P2 = (P2 & 0x1f) | 0xe0; break;default: P2 = (P2 & 0x1f); break; }
}
void InitSystem()//系统初始化关闭蜂鸣器、继电器、LED
{SelectHC573(5);P0 = 0xbf; //由于不同板子的引脚接法不同,此时的初始值也不同SelectHC573(4); P0 = 0xff; //LED全灭
}
void TimerInit(void) //1毫秒@12.000MHz
{TMOD = 0x07; //设置定时器模式TL0 = 0xff; //设置定时初值TH0 = 0xff; //设置定时初值 TL1 = 0x18; //设置定时初值TH1 = 0xFC; //设置定时初值 TF0 = 0; //清除TF0标志TF1 = 0; //清除TF1标志ET1 = 1; ET0 = 1;TR0 = 1; //计数器0开始工作TR1 = 1; //定时器1开始计时 EA = 1;
}
uint count_f=0; //T0计数值
uint dat_f; //所测频率值
uchar segFlag=0;
uint count1s=0; //定时1s标志位
void ServiceTimer0() interrupt 1
{count_f++;
}
void ServiceTimer1() interrupt 3
{uchar pushp0,pushp2;pushp0 = P0;pushp2 = P2;//入栈
//数码管显示 SelectHC573(6); P0=(0x01<<segFlag);SelectHC573(7); P0=segCode[segVal[segFlag]];segFlag++;if(segFlag==8) segFlag=0;
//频率测量 count1s++;if(count1s==1000) //1s定时到了,刷新频率{count1s=0; dat_f=count_f; //将count_f计数赋值给dat_f,dat_f值即为频率值count_f=0; //计数器重新计数}P2 = pushp2;//出栈P0 = pushp0;
}
void main()
{InitSystem();TimerInit();while(1){if(dat_f>9999){segVal[3] = dat_f/10000;segVal[4] = dat_f%10000/1000;segVal[5] = dat_f%1000/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10; }else if(dat_f>999){segVal[3] = 20;segVal[4] = dat_f/1000;segVal[5] = dat_f%1000/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10; }else if(dat_f>99){segVal[3] = 20;segVal[4] = 20;segVal[5] = dat_f/100;segVal[6] = dat_f%100/10;segVal[7] = dat_f%10; }else if(dat_f>9){segVal[3] = 20;segVal[4] = 20;segVal[5] = 20;segVal[6] = dat_f/10;segVal[7] = dat_f%10; }else {segVal[3] = 20;segVal[4] = 20;segVal[5] = 20;segVal[6] = 20;segVal[7] = dat_f; } }
}
结果显示:
频率范围大致从80到20000多Hz。
单片机蓝桥杯——NE555频率测量相关推荐
- 蓝桥杯单片机篇:NE555 频率测量
主要是配置定时器0为外部脉冲计数模式 main.c #include "mycode.h" unsigned char key_value=0,len=0; unsigned sh ...
- **决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02
**决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02 I2C作为一种多用于板内同步串行通信方式,有一根SCL时钟线负责收发双方的时钟节拍,和一根SDA数据线负责传输数据, ...
- 蓝桥杯单片机----NE555频率测量
NE555 (Timer IC)为8脚时基集成电路,NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度.省电.可产生的振 ...
- 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量
一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...
- [蓝桥杯单片机] - 蓝桥杯单片机CT107D竞赛板各模块代码分析
蓝桥杯笔记 "免责声明" ( •̀ ω •́ )✧ 代码未全部验证,也许存在BUG,如发现错误欢迎指正,不愿意指正那就当作没看见也行 所有说明文字仅代表笔者个人想法 修正日志 从2 ...
- 蓝桥杯NE555模块编程
一.原理图: RB3:滑动变阻器 THR:高电平出发端 TRIG:低电平触发端 OUT:频率输出口 其中两者电压均小于各自的参考电压时放电管截至,两者电压均大于各自的参考电压时放电管导通,NE555是 ...
- 蓝桥杯单片机·蓝桥杯全国软件和信息技术专业人才大赛电子类单片机 常用代码笔记
蓝桥杯笔记 1. 基础模块调用模板 #include <stc15f2k60s2.h> //#include<intrins.h>#define uchar unsigned ...
- 单片机蓝桥杯——PWM呼吸灯
原理:调节高低电平的占空比 #include "STC15F2K60S2.h" #include "intrins.h" #define uchar unsig ...
- 单片机蓝桥杯准备:温度模块
51单片机的温度模块: main.c: #include"reg52.h" //头文件 #include"ds18b20.h" // 温度模块驱动 #inclu ...
最新文章
- 选择分集matlab程序,瑞利衰落信道下采用MRC分集误码性能Matlab程序
- Best Time to Buy and Sell Stock III O(n) 求解方法
- 正则表达式 Tricks
- python中属性与方法_python中属性和方法的动态绑定
- HDU5701 中位数计数【中位数+水题】
- 四大网络抓包神器,总有一款适合你~
- ESP32笔记(2) flash使用
- rocketmq 消费方式_详解RocketMQ中的Consumer
- 用Java实现美女选妃
- p2p终结者在交换机上的机器用P2P终结者
- vscode运行C程序
- JDBCDataSource
- 【转】PIC单片机的 程序存储器,数据存储器,EEPROM区别
- 制作ROS移动机器人地盘
- python利用jieba实现中文分词
- 我的世界java甘蔗机_萌新如何建造我的世界自动化甘蔗收割机攻略
- 使用Eric构建使用Caffe应用程序
- 12. 自制操作系统: risc-v ACLINT
- 十进制转换为十六进制-八进制-二进制的进制转换计算
- 卢沟桥对于古代北京的作用