蓝桥杯单片机 赛后资料整理——NE555芯片模块与第十届省赛的总结

蓝桥杯单片机 赛后资料整理——NE555芯片模块


本文适用于 CT107D竞赛板+ IAP15转接板

电路原理

模块特性

在这里插入图片描述
NE555是一种时钟芯片,输出一定频率的脉冲信号。就其模块特性,简单点来说,该模块会根据Rb3电位器的阻值,在SIG脚输出相应的频率的脉冲信号。
第十届竞赛中对该模块设置了考点,要求测量其脉冲信号的频率,测量周期小于1秒。
赛方要求将该模块的输出脚SIGNALP34,用一块与比赛无关的短接片接起来(如红外/超声波的)如下图。通过查阅芯片手册,可知P34也是T0计数器的管脚。

在这里插入图片描述

驱动方法

编者当时的方法是用T0作计数器,T1作定时器计0.05*10秒中断一次,记录一次T0的值并清零,换算成Hz为单位的频率值(乘以二即可,因此误差是±1

代码模板

#include <STC15F2K60S2.H>

#ifndef u8
#define u8 unsigned char
#endif 

u8 code font[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u8 code y6=0xc0,y7=0xe0;
u8 dis[8],t_flag=0;
unsigned long int fval;

void delay100us()		//延时100us@12.000MHz
{
	unsigned char i, j;

	i = 2;
	j = 39;
	do
	{
		while (--j);
	} while (--i);
} 
void TimerInit(void)	//50*10毫秒@12.000MHz
{
	AUXR &= 0xBF;		//T1定时器时钟12T模式
	TMOD = 0x05;		//设置定时器模式
	TL0 = 0x00;			//设置计数初值
	TH0 = 0x00;			
	TL1 = 0xB0;			//设置定时初值
	TH1 = 0x3C;			
	TF0 = 0;			//清除TF0标志
	TF1 = 0;			//清除TF1标志
	EA = 1;				//设置中断
	ET1 = 1;
	TR0 = 1;			//计数器0开始计数
	TR1 = 1;			//定时器1开始计时
}
void fread() interrupt 3 using 1
{
	if(++t_flag>=10){
		t_flag=0;
		fval=TH0;		//记录计数器的值
		fval<<=8;
		fval|=TL0;
		fval<<=1;		//相当于fval*=2;
		TH0=0x00;
		TL0=0x00;
		TF1=0;
	}		
}
//数码管显示
void display(){
	u8 i;

	dis[0]=0x8e;					//显示“F”
	dis[1]=0xff;					//不显示
	dis[2]=font[fval/100000%10];	//显示频率值
	dis[3]=font[fval/10000%10];
	dis[4]=font[fval/1000%10];
	dis[5]=font[fval/100%10];
	dis[6]=font[fval/10%10];
	dis[7]=font[fval%10];

	for(i=2;dis[i]==font[0];i++)	//消去最高位前的零
		dis[i]=0xff;
	//数码管显示
	for(i=0;i<8;i++){
		P2&=0x1f;
		P0=1<<i;
		P2|=y6;
		P2&=0x1f;
		P0=dis[i];
		P2|=y7;
		delay100us();
		P0=0xff;//消隐
	}
	P2&=0x1f;
}
int main(){
	TimerInit();
	while(1){
		display();	
	}
}

个人总结

就今年的题来说,难度不大,就是NE555挺令人意外的,也是赛后跟学长们讨论较多的。NE555我本来就了解过,但没在CT107D上试过,因为不知道SIGNAL接什么。但当时调得挺顺利的,测量值也跟万用表的示数基本一致。大题都调出来了,选择题答得还可以,所以这次省一也算是稳定发挥。

我参加这届比赛时是大一下学期,所以也是第一次参加。我原本就有一定的C语言基础,从年后才开始自己学8051单片机,也就是花了两周的时间,熟悉了一块单片机的练习板,通读了一遍板子上大部分芯片的器件手册,尤其是STC89C52的这个。新学期开始后,才买来一块竞赛板来练习,适应蓝桥杯竞赛也就不到两周时间。

个人觉得,本次比赛准备的挺充分的,主要是有一个半周熟悉CT107DIAP15以及驱动代码,也是因此能在比赛中直接想到P34T0,于是能很快的将大题调出来。唯一不足的也就是选择题,因为专业课还没学到,做题完全靠知识储备。

关于这个博客,我本来打算把自己从准备蓝桥杯的资料全部整理成博客,也就是CT107D常用模块的使用方法。但是,做起来发现有点多,也是这篇稿子拖到知道成绩了才发布的原因。于是,我就先把第十届考到的NE555发布出来,那么,后续再把其他资料一个一个整理发布出来。

  • 39
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值