資源簡介
改程序完美的實現了四段數碼管顯示測量信號的頻率大小單位,可測量1hz-10MHZ的方波,正弦波,鋸齒波,三角波,精度達到0.01

代碼片段和文件信息
? ???#include??
#define?Segment?P0
#define?sl?P2?
sbit?clear=P1^3;
sbit?fp2=P1^2;????//定義數據端口地址,0時分頻處理,1時不分頻
unsigned?char?count;??????//定時?1s?計數?
unsigned?char?d[4];???????//對應數碼管的各位?
unsigned?char?dangwei;????//檔位?
unsigned?int?timeN;???????//不同檔位計時值?
unsigned?int?fCount;??????//脈沖下降沿次數?
unsigned?int?regCount;????//脈沖次數暫存?
unsigned?int?pCount;??????//頻率顯示?
unsigned?char?Num[10]={0xC00xF90xA40xB00x990x920x820xF80x800x90};?
//七段數碼管代碼共陽極
void?Delay(unsigned?int?DelayTime)?
??{
???while(DelayTime--);
??}
void?dispbuf()?
{?
?{?
??if(dangwei==0)?????//檔位
????{?
?????d[3]=0;
?????d[2]=(pCount/100)%10;?
?????d[1]=(pCount/10)%10;?
?????d[0]=pCount%10;?
?????
?????sl=0x01;Delay(1);Segment=Num[d[3]];Delay(200);???
?????sl=0x02;Delay(1);Segment=Num[d[2]];Delay(200);
?????sl=0x04;Delay(1);Segment=Num[d[1]];Delay(200);
?????sl=0x08;Delay(1);Segment=Num[d[0]];Delay(200);?
????}
???else?if(dangwei==1)?
????{?
???????d[3]=pCount/1000;
???????d[2]=(pCount/100)%10;?
???????d[1]=(pCount/10)%10;?
???????d[0]=pCount%1;?
???????sl=0x01;Delay(1);Segment=Num[d[3]];Delay(200);???????
???????sl=0x02;Delay(1);Segment=Num[d[2]];Delay(200);??
???????sl=0x04;Delay(1);Segment=Num[d[1]]&0x7f;Delay(200);?//帶小數點?
???????sl=0x08;Delay(1);Segment=Num[d[0]];Delay(200);?
????}??
else?
??{?
????d[3]=0;
????d[2]=0;?
????d[1]=0;?
????d[0]=0;?
??}
?}?
}
void?intial()
??{
???clear=1;???????????//分頻器初始化
???fp2=1;
???timeN=20;??????????//檔位初始化為?Hz?檔
???dangwei=0;?
???TMOD=0x61;???????//定時器0,工作方式1,計數器1,工作方式1
???TH0=?(65536-50000)/256;?
???TL0=?(65536-50000)%256;?
????//計數器1計數初值
???TH1=0xff;?????????//?256-1;???????
???TL1=0xff;?????????//?256-1;
???TR0=1;???????????//開定時器0中斷?
???ET0=1;???????????//定時器0允許?
???TR1=1;???????????//開計數器1中斷?
???ET1=1;???????????//允許計數器1中斷
???EA=1;????????????//總中斷允許
??}?
void?main()?
??{?
intial();?
????while(1)?
???????{?
??dispbuf();
???????}?
??}
?void?timer0()?interrupt?1
??{
???count++;
???if(count==timeN)?
????{
?????ET1=0;??????//計時1s,暫停外部計數1
?????TR1=0;
?????count=0;
????regCount=fCount;????????//更新顯示
?????fCount=0;???????????????//頻率計數清零
?????clear=0;????????????????//硬件分頻器清零
?????clear=1;?
????}??
??if(dangwei==0)??????????//檔位切換
??{?
????pCount=regCount;
???if(regCount>999)?
????{
??????pCount=0;??????????????//顯示清零
??????dangwei=1;
??????timeN=1;???????????????//定時?50ms
??????fp2=0;?????????????????//硬件分頻處理
??????TH1=0xfb;??????????????//50分頻?256-5?
??????TL1=0xfb;??????????????//256-5
??????pCount=regCount*10;????//換算成相應的顯示:f=regCount*100
????}
??}
??else?if(dangwei==1)?
???{
????if(regCount<1)?
?????{?
??????dangwei=0;?
??????timeN=20;?????????????//定時?1s?
??????fp2=1;????????????????//不分頻?
??????TH1=0xff;?????????????//256-1?
??????TL1=0xff;?????????????//256-1
?????}?
????else?if(regCount<1000)???????//KHz?檔?
?????{
??????dangwei=1;
??????timeN=1;???????????????//定時?50ms
??????fp2=0;????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7555??2015-01-16?11:16??仿真真程序\0115
?????文件???????3636??2015-01-16?11:16??仿真真程序\0115.c
?????文件???????2271??2015-01-16?11:16??仿真真程序\0115.hex
?????文件?????????56??2015-01-16?11:16??仿真真程序\0115.lnp
?????文件???????6657??2015-01-16?11:16??仿真真程序\0115.LST
?????文件??????11397??2015-01-16?11:16??仿真真程序\0115.M51
?????文件???????8073??2015-01-16?11:16??仿真真程序\0115.OBJ
?????文件????????898??2015-08-13?14:07??仿真真程序\0115.Opt
?????文件???????2156??2015-01-15?11:32??仿真真程序\0115.Uv2
????.......??????1026??2015-01-16?11:16??仿真真程序\0115_Opt.Bak
?????文件??????????0??2015-01-15?10:22??仿真真程序\0115_Uv2.Bak
?????文件???????6376??2015-01-16?11:16??仿真真程序\STARTUP.A51
?????文件??????10753??2015-01-16?11:16??仿真真程序\STARTUP.LST
?????文件????????759??2015-01-16?11:16??仿真真程序\STARTUP.OBJ
?????文件?????156541??2015-01-16?11:16??簡頻計.DSN
?????目錄??????????0??2015-08-13?14:07??仿真真程序
?????文件????????167??2015-08-13?13:39??仿真真程序\0115.plg
-----------?---------??----------?-----??----
???????????????218321????????????????????17
- 上一篇:vue.js企業級架構設計demo
- 下一篇:多尺度c++版STC代碼
評論
共有 條評論