NE555是一種時鐘芯片,輸出一定頻率的脈沖信號。就其模塊特性,簡單點來說,該模塊會根據Rb3電位器的阻值,在SIG腳輸出相應的頻率的脈沖信號。
第十屆競賽中對該模塊設置了考點,要求測量其脈沖信號的頻率,測量周期小于1秒。
賽方要求將該模塊的輸出腳SIGNAL與P34,用一塊與比賽無關的短接片接起來(如紅外/超聲波的)如下圖。通過查閱芯片手冊,可知P34也是T0計數器的管腳
51hei截圖_20200303155451.png (172.36 KB, 下載次數: 29)
下載附件
2020-3-3 15:55 上傳
51hei截圖_20200303155613.png (45.09 KB, 下載次數: 28)
下載附件
2020-3-3 15:56 上傳
單片機源程序如下:
#include<STC15F2K60S2.H>
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
u16 count_t=0,count_f=0,F_Hz=0;
void Smg_Display(u8 wei,u8 duan);
void Delayms(u16 ms);
void Timer0Init();
void Timer1Init();
void Init()
{
P2 = (P2 & 0X1f) | 0x80;//打開LED鎖存
P0 = 0xff; //初始化
P2 = P2 & 0X1f; //恢復鎖存,避免影響其他位
P2 = (P2 & 0X1f) | 0xa0;//打開蜂鳴器、繼電器鎖存
P0 = 0x00;
P2 = P2 & 0X1f;////恢復鎖存,避免影響其他位
P2 = (P2 & 0X1f) | 0xc0;//打開位選鎖存
P0 = 0x00;
P2 = P2 & 0X1f;//恢復鎖存,避免影響其他位
P2 = (P2 & 0X1f) | 0xe0;//打開段選鎖存
P0 = 0xff;
P2 = P2 & 0X1f;//恢復鎖存,避免影響其他位
}
void main()
{
Init();
Timer0Init();
Timer1Init();
while(1)
{
Smg_Display(3,F_Hz/10000);
Smg_Display(4,F_Hz%10000/1000);
Smg_Display(5,F_Hz%1000/100);
Smg_Display(6,F_Hz%100/10);
Smg_Display(7,F_Hz%10);
}
}
void Smg_Display(u8 wei,u8 duan)
{
P2 = (P2 & 0X1f) | 0xe0;//消隱
P0=0XFF;
P2 = P2 & 0X1f;
P2 = (P2 & 0X1f) | 0xc0;//位選
P0 = 0x01<<wei;
P2 = P2 & 0X1f;
P2 = (P2 & 0X1f) | 0xe0;//段選
P0=smgduan[duan];
Delayms(1);//
P0=0XFF;
P2 = P2 & 0X1f;
}
void Delayms(u16 ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
void Timer0Init()
{
// AUXR &= 0x7F; //定時器時鐘12T模式
TMOD|=0x06;//8位重裝載計數模式2
TL0=0xff;
TH0=0xff;//1u中斷一次進行計數
ET0=1;
TR0=1;
TF0 = 0; //清除TF0標志
EA=1;
}
void Timer1Init()
{
// AUXR &= 0xBF; //定時器時鐘12T模式
TMOD|=0X10;// 16位
TL1=(65536-50000)%256;//給定時器賦初值,定時50ms
TH1=(65536-50000)/256;
TF1 = 0; //清除TF1標志
TR1 = 1; //定時器1開始計時
ET1 = 1; //打開定時器1中斷
EA=1;
}
void Timer0() interrupt 1
{
count_f++;//累計NE555輸出信號個數
}
void Timer1() interrupt 3
{
TL1=(65536-50000)%256;//給定時器賦初值,定時50ms
TH1=(65536-50000)/256;
count_t++;
if(count_t==20)//每1秒刷新一次頻率數據
{
//關閉定時器,取出T0里面的值,再打開進行計數
ET0=0;
TR0=0;
TR1=0;
F_Hz=count_f;//
TR0=1;
TR1=1;
ET0=1;
count_f=0;
count_t=0;
}
}
全部資料51hei下載地址:
NE555.zip
(24.64 KB, 下載次數: 34)
2020-3-3 15:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|