本文适用于
CT107D
竞赛板+
IAP15
转接板
电路原理
模块特性
NE555
是一种时钟芯片,输出一定频率的脉冲信号。就其模块特性,简单点来说,该模块会根据Rb3
电位器的阻值,在SIG
脚输出相应的频率的脉冲信号。
第十届竞赛中对该模块设置了考点,要求测量其脉冲信号的频率,测量周期小于1
秒。
赛方要求将该模块的输出脚SIGNAL
与P34
,用一块与比赛无关的短接片接起来(如红外/超声波的)如下图。通过查阅芯片手册,可知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
的这个。新学期开始后,才买来一块竞赛板来练习,适应蓝桥杯竞赛也就不到两周时间。
个人觉得,本次比赛准备的挺充分的,主要是有一个半周熟悉CT107D
、IAP15
以及驱动代码,也是因此能在比赛中直接想到P34
是T0
,于是能很快的将大题调出来。唯一不足的也就是选择题,因为专业课还没学到,做题完全靠知识储备。
关于这个博客,我本来打算把自己从准备蓝桥杯的资料全部整理成博客,也就是CT107D
常用模块的使用方法。但是,做起来发现有点多,也是这篇稿子拖到知道成绩了才发布的原因。于是,我就先把第十届考到的NE555
发布出来,那么,后续再把其他资料一个一个整理发布出来。