原理:

对蓝桥杯单片机板子上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频率测量相关推荐

  1. 蓝桥杯单片机篇:NE555 频率测量

    主要是配置定时器0为外部脉冲计数模式 main.c #include "mycode.h" unsigned char key_value=0,len=0; unsigned sh ...

  2. **决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02

    **决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02 I2C作为一种多用于板内同步串行通信方式,有一根SCL时钟线负责收发双方的时钟节拍,和一根SDA数据线负责传输数据, ...

  3. 蓝桥杯单片机----NE555频率测量

    NE555 (Timer IC)为8脚时基集成电路,NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度.省电.可产生的振 ...

  4. 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量

    一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...

  5. [蓝桥杯单片机] - 蓝桥杯单片机CT107D竞赛板各模块代码分析

    蓝桥杯笔记 "免责声明" ( •̀ ω •́ )✧ 代码未全部验证,也许存在BUG,如发现错误欢迎指正,不愿意指正那就当作没看见也行 所有说明文字仅代表笔者个人想法 修正日志 从2 ...

  6. 蓝桥杯NE555模块编程

    一.原理图: RB3:滑动变阻器 THR:高电平出发端 TRIG:低电平触发端 OUT:频率输出口 其中两者电压均小于各自的参考电压时放电管截至,两者电压均大于各自的参考电压时放电管导通,NE555是 ...

  7. 蓝桥杯单片机·蓝桥杯全国软件和信息技术专业人才大赛电子类单片机 常用代码笔记

    蓝桥杯笔记 1. 基础模块调用模板 #include <stc15f2k60s2.h> //#include<intrins.h>#define uchar unsigned ...

  8. 单片机蓝桥杯——PWM呼吸灯

    原理:调节高低电平的占空比 #include "STC15F2K60S2.h" #include "intrins.h" #define uchar unsig ...

  9. 单片机蓝桥杯准备:温度模块

    51单片机的温度模块: main.c: #include"reg52.h" //头文件 #include"ds18b20.h" // 温度模块驱动 #inclu ...

最新文章

  1. 选择分集matlab程序,瑞利衰落信道下采用MRC分集误码性能Matlab程序
  2. Best Time to Buy and Sell Stock III O(n) 求解方法
  3. 正则表达式 Tricks
  4. python中属性与方法_python中属性和方法的动态绑定
  5. HDU5701 中位数计数【中位数+水题】
  6. 四大网络抓包神器,总有一款适合你~
  7. ESP32笔记(2) flash使用
  8. rocketmq 消费方式_详解RocketMQ中的Consumer
  9. 用Java实现美女选妃
  10. p2p终结者在交换机上的机器用P2P终结者
  11. vscode运行C程序
  12. JDBCDataSource
  13. 【转】PIC单片机的 程序存储器,数据存储器,EEPROM区别
  14. 制作ROS移动机器人地盘
  15. python利用jieba实现中文分词
  16. 我的世界java甘蔗机_萌新如何建造我的世界自动化甘蔗收割机攻略
  17. 使用Eric构建使用Caffe应用程序
  18. 12. 自制操作系统: risc-v ACLINT
  19. 十进制转换为十六进制-八进制-二进制的进制转换计算
  20. 卢沟桥对于古代北京的作用

热门文章

  1. 05【结构面通关】?大厂校招常见组织形式,面试筛选底层逻辑,面试常见错误,面试应对方法 问题解答
  2. 订单数据库设计(sql server)
  3. rust官方封禁ip_RUST基本操作与IP
  4. 第一次当招聘者-----如何考察一个测试人员测试思维和测试基础功
  5. 使用js替换文本中的换行符
  6. Unix朝代歌《精通Unix下C语言与项目实践》读书笔记(7)
  7. 排名前10的vue前端UI框架框架值得你掌握
  8. 一个中间继电器引发的损失
  9. windows服务器许可
  10. 电缆载流量估算口决 如何根据电流选择电缆?