資源簡介
單片機課程設計自己做的頻率計,可以在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
- 上一篇:SPI協議Verilog實現
- 下一篇:MAU 4-55船用螺旋槳 圖譜
評論
共有 條評論