资源简介

单片机课程设计自己做的频率计,可以在1602显示占空比和频率,已经通过老师答辩,频率误差在万分之5。

资源截图

代码片段和文件信息

#include
#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit FreIn = P3^4;//P3.4口输入方波
uint time=0cnt=0;
unsigned long fre = 0qt1t2;
uchar code date[]=“t1=    t2=      “;
uchar code freq[]=“f=       q=  %  “;

void clock_init()
{
uchar ij;
for(i=0;i<16;i++)
{
write_data(date[i]);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_data(freq[j]);
}
}


void Timer_Ini()
{
TMOD = 0x15;
TH1 = 0x4c;
TL1 = 0x00;
TH0 = 0x00;
TL0 = 0x00;
ET0 =1;
ET1 = 1;
EA = 1;
}


void fre_write( uint f)
{
  uchar a[6];
uint i;
a[0]=f/100000;
a[1]=(f/10000)%10;
a[2]=(f/1000)%10;
a[3]=(f/100)%10;
a[4]=(f/10)%10;
  a[5]=f%10;
  write_com(0x80+0x42); //数据指针位置调整
  for(i=0;i<6;i++)
{
write_data(0x30+a[i]);
}
}
void q_write( unsigned long q )
{
uchar b[2];
uint i;
b[0]=(q/10)%10;
  b[1]=q%10;
write_com(0x80+0x4B); //数据指针位置调整
for(i=0;i<2;i++)
{
write_data(0x30+b[i]);
}
}
void t1_write(unsigned long t1)
{
uchar c[3];
uint i;
c[0]=t1/100;
c[1]=(t1/10)%10;
  c[2]=t1%10;
write_com(0x80+0x03); //数据指针位置调整
for(i=0;i<3;i++)
{
write_data(0x30+c[i]);
}
}
void t2_write(unsigned long t2)
{
uchar d[3];
uint i;
d[0]=t2/100;
d[1]=(t2/10)%10;
  d[2]=t2%10;
write_com(0x80+0x0A); //数据指针位置调整
for(i=0;i<3;i++)
{
write_data(0x30+d[i]);
}
}
 void main()
 {
 init1602();
 clock_init();
 Timer_Ini();
 while(FreIn==1);
 while(FreIn==0);
 TR1 = 1;
 TR0 = 1;
 while(1)
 {
 if(time==20)
 {
   while(FreIn==1);
     while(FreIn==0);
   TR1 = 0;
   TR0 = 0;
   fre = TH0*256 + TL0 + cnt*65536;
 fre_write(fre);
 
 TH1 = 0x00;
     TL1 = 0x00;
   while(FreIn==1);
     while(FreIn==0);
       TR1 = 1;
   while(FreIn==1);
 t1=TH1*256 + TL1;
     while(FreIn==0);
 t2=TH1*256 + TL1;
 TR1=0;
 t1_write(t1);      //一个周期中高电平所占时间
 t2_write(t2);      //一个周期
 q=t1*100/t2;
 q_write(q);
 
 time = 0;
   cnt = 0;
   TH0 = 0x00;
     TL0 = 0x00;
 TH1 = 0x4c;
     TL1 = 0x00;
 while(FreIn==1);
     while(FreIn==0);
 TR0=1;
 TR1=1;
 
}
 }

 }
 void T0_Ser() interrupt 1
 {
  cnt++;
 }
 void T1_Ser() interrupt 3
 {
  time++;
TH1 = 0x4c;
TL1 = 0x00;

 }

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       12038  2018-06-11 19:06  FreTest\FreTest
     文件        1063  2018-06-11 19:06  FreTest\FreTest.build_log.htm
     文件        2418  2018-06-11 19:06  FreTest\FreTest.c
     文件        4782  2018-06-11 19:06  FreTest\FreTest.hex
     文件          31  2018-06-11 19:06  FreTest\FreTest.lnp
     文件        5744  2018-06-11 19:06  FreTest\FreTest.LST
     文件       16631  2018-06-11 19:06  FreTest\FreTest.M51
     文件       14100  2018-06-11 19:06  FreTest\FreTest.OBJ
     文件        4918  2016-07-07 09:55  FreTest\FreTest.plg
     文件      167131  2018-06-11 19:06  FreTest\FreTest.uvgui.Administrator
     文件        5414  2018-05-31 23:01  FreTest\FreTest.uvopt
     文件       13847  2018-06-07 20:27  FreTest\FreTest.uvproj
     文件           0  2016-07-07 08:40  FreTest\FreTest_uvproj.bak
     文件         979  2018-06-07 20:23  FreTest\lcd1602.h

评论

共有 条评论