蓝桥杯单片机NE555编程

蓝桥杯单片机NE555编程

蓝桥杯单片机中的NE555模块的编程,其实是很简单。简单来说就是计算一秒钟之内有多少个频率响应。中间所谓的频率响应也就是计算定时器作为计数器时候溢出的个数而已。能够考察的点就是这样子了,也要稍微了解,之后进行编程,就能够熟练掌握了。

#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 t1_count;          // 定时一秒的计数变量
u16 t0_count;        // 存放临时得出的频率值
u16 t0_sum;          // 存放一秒的频率最终值
u8 code shuma[12] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xbf};
// 系统初始化函数
void init_system()
{

P2 = (P2 & 0x1f) | 0x80;
P0 = 0xff;
P2 = (P2 & 0x1f);
P2 = (P2 & 0x1f) | 0xa0;
P0 = 0x00;
P2 = (P2 & 0x1f);
P2 = (P2 & 0x1f) | 0xc0;
P0 = 0x00;
P2 = (P2 & 0x1f);
}
// 外设导通选择函数
void select(u8 local)
{

switch(local)
{

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;
}
}
void delay()
{

u8 t = 200;
while(t--);
}
void display(u8 local, u8 num)
{

select(6);
P0 = 0x80 >> (local - 1);
P2 = P2 & 0x1f;
select(7);
P0 = num;
P2 = P2 & 0x1f;
// 数码管简单延时函数
delay();
}
void close_display()
{

// 消隐数码管
select(6);
P0 = 0x00;
P2 = P2 & 0x1f;
}
void init_t1()
{

TMOD = 0x16;		//定时器 T1 16位定时模式,定时器T0 计数模式
TL0 = 0xff;
TH0 = 0xff;
TL1 = (65535 - 5000) % 256;		//5ms的定时
TH1 = (65535 - 5000) / 256;		//5ms的定时
EA = 1;
ET1 = 1;
TF1 = 0;		//溢出标志位
TR1 = 1;		//T1中断开始位
ET0 =1;
TR0 = 1;
}
void server_t0() interrupt 1         // T0计数器的服务中断函数
{

t0_count++;
}
void server_t1() interrupt 3        // 定时器T1的服务函数
{

TL1 = (65535 - 5000) % 256;		//重置低八位
TH1 = (65535 - 5000) / 256;		//重置高八位
if(++t1_count == 200)         // 定时时间为1S
{

t0_sum = t0_count;       // 把计算到的频率数保存到t0_sum变量中
t0_count = 0;
t1_count = 0;
}
}
void main()
{

init_system();
init_t1();
while(1)
{

display(8,0x8e);           // 最高位显示一个大写C
display(1, shuma[t0_sum%10]);
if(t0_sum > 9){
display(2, shuma[t0_sum/10%10]);}  // 判断频率是否大于二位数,大于才显示,不大于不显示,后面类似
if(t0_sum > 99){
display(3, shuma[t0_sum/100%10]);}
if(t0_sum > 999){
display(4, shuma[t0_sum/1000%10]);}
if(t0_sum > 9999){
display(2, shuma[t0_sum/10000%10]);}
close_display(); 
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115108.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pychon激活码[在线序列号]

    pychon激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • GCC 命令格式

    GCC 命令格式GCC命令格式gcc[options][filenames]常用选项含义-E只做预处理-c只编译不链接,生成目标文件“.o”-S生成汇编代码-ofile把输出生成到由file指定文件名的文件中-g在输出的文件中加入支持调试的信息-v显示输出详细的命令执行过程信息GCC的主要执行步骤ELF介绍1.ELF简介注:以上内容来源于:https://www.bilibili.com/video/BV1Q5411w7z5?p=5

    2022年10月13日
  • excel 汉字转拼音「建议收藏」

    excel 汉字转拼音「建议收藏」Functionpinyin(pAsString)AsString’*************************************’版本说明:转载请保留此段注释’更新时间:2018年8月28日’作者:上海五航航空技术有限公司李晓锋’感谢:“在线汉语字典”的中文转拼音功能http://xh.5156edu.com/conversion.html,大大的加快了拼音的转换速度。’说明:本代码几乎包含了Excel表中能够出现的所有汉字(20830个汉字),去除了无法使用“在线汉语

  • windows,远程开机,远程唤醒(WOL,Wake-on-LAN)

    windows,远程开机,远程唤醒(WOL,Wake-on-LAN)寞水

  • 滚动字幕特效大全代码 (转)

    滚动字幕特效大全代码 (转)滚动字幕特效大全代码把代码中的文字改为你的文字就可以了。1.阴影滚动字循环滚动:欢迎来到农夫空间代码:欢迎来到混吧人空间来回移动:欢迎来到农夫空间代码:欢迎来到混吧人空间2.投射阴影滚动字循环滚动:农

  • SPPnet

    SPPnet目录1.Motivation2.SPPnet2.1SPP层的原理2.2SPPnet的区域映射原理3.总结论文:SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognition.来源:ECCV20141.MotivationR-CNN模型存在很多缺点和可改进的地方,其中的两个缺点如下:CNN网络后面接的FC层需要固定的输入大小,导致CNN也需要固定大小的输入,即要求候选区域在进入CNN前需要c

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号