91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 65KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-18
  • 語言: 其他
  • 標簽: 等精度??51單片機??

資源簡介

利用51單片機的兩個計數器測頻率 可對1~40KHZ的信號進行精確測量,誤差小于1/65536.

資源截圖

代碼片段和文件信息

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

void?delay(uchar?iuchar?j)???//延時子程序延時時間為?i*(j*8+6)+10?us
{
?while(i--)
?while(j--);
}

//以下為測頻子程序
sbit?OnOff=P1^3;???//74LS74?的D端
sbit?Reset=P1^4;???//74LS74?的R端異步置0
sbit?flag=P3^2;????//用flag作為一次測量數據完成與否的標志
uchar?n;
uchar?pinlv[11];
float?N1N0;
unsigned?long?Fx;

void?cepin()//測頻程序
{
?n=0;???????//n用于記錄T0的溢出次數
?TMOD=0x59;?//設定89C51兩個計數器的工作方式T1工作于定時模式T0工作于計數模式均為方式1T0的門控位置1
?TH0=0;?????//兩個計數器都置初值為0
?TL0=0;
?TH1=0;
?TL1=0;
?EA=1;??????//總中斷允許
?ET0=1;?????//T0中斷允許
?Reset=0;???//將?74LS74?Q端置0定時器T0不工作;同時?Q非?置1?74LS02?關閉T1不對被測信號計數
?OnOff=0;??//將?74LS74?D端置0以使D和Q保持一致這樣即使?74LS74?的CLK有效也不改變Q的狀態
?delay(128);?//延時約1?ms以完成上面兩個指令
?Reset=1;?????//74LS74?的R端置1清0無效
?TR0=1;???????//T0計時開
?TR1=1;???????//T1計時開
?OnOff=1;?//將?74LS74?D端置1使D和Q相異一旦?74LS74?的CLK有效Q即為1(T0定時開始)Q非?為0(T1計時開始)
?while(flag==0);?//從將?74LS74?D端置1到?74LS74?的CLK第一次有效之間flag即P3^2為0定時未開始
?while(flag==1);?//74LS74?的CLK第一次有效之后flag即P3^2為1(定時開始)直至定時結束
?if(flag==0)?????//flag再次為0表示本次測量已結束
???{
????TR0=0;????//T0計時關(要注意計數及定時的開與關直接由?被測信號?的上升沿決定而不是這兩個命令)
????TR1=0;????//T1計時關
????N1=TH1*256+TL1;???????????//取T1計數器中的值(注意N1N0都為float型這樣計算結果準確度高)
????N0=n*65536+TH0*256+TL0;???//取T0計數的總值
???}
}

void?timer0()?interrupt?1?using?1??????//T0中斷服務
{
?n++;??????//T0記滿65535之后n加1以確定一次測量中T0的總定時時間
?OnOff=0;??//將?74LS74?D端置0待?74LS74?的CLK下次有效Q非?為1(T1計時結束)Q即為0(T0定時結束)
}

void?PinlvtoStr()
{
?Fx=N1*1000000/N0*100000;?//被測結果的實際值為N1*1000000/N0,但為了顯示5位小數,故有?*100000
?pinlv[0]=Fx/1000000000;
?Fx=Fx%1000000000;
?pinlv[1]=Fx/100000000;
?Fx=Fx%100000000;
?pinlv[2]=Fx/10000000;
?Fx=Fx%10000000;
?pinlv[3]=Fx/1000000;
?Fx=Fx%1000000;
?pinlv[4]=Fx/100000;
?Fx=Fx%100000;
?pinlv[5]=0x2e;
?pinlv[6]=Fx/10000;
?Fx=Fx%10000;
?pinlv[7]=Fx/1000;
?Fx=Fx%1000;
?pinlv[8]=Fx/100;
?Fx=Fx%100;
?pinlv[9]=Fx/10;
?pinlv[10]=Fx%10;
}
//以上為測頻子程序

//以下為1602顯示子程序
sbit?DS1602_RS=P1^0;
sbit?DS1602_RW=P1^1;
sbit?DS1602_EN=P1^2;

void?Write1602_com(uchar?com)
{
?P0=com;
?DS1602_RS=0;?????//RS為0輸入指令
?DS1602_RW=0;?????//向LCD寫入(指令或數據)
?DS1602_EN=1;?????//以下3行產生一個EN下降沿以供1602執行指令
?delay(15);??????//該延時不可省略具體延時長短可由調試確定
?DS1602_EN=0;
}

void?Write1602_data(uchar?dat)
{
?P0=dat;
?DS1602_RS=1;?????//RS為1輸入數據
?DS1602_RW=0;?????//向LCD寫入(指令或數據)
?DS1602_EN=1;?????//以下3行產生一個EN下降沿以供1602執行輸入
?delay(15);??????//該延時不可省略具體延時長短可由調試確定
?DS1602_EN=0;
}

void?init1602()????????//初始化1602
{
?Write1602_com(0x38);??//數據總線為8位顯示兩行5*7點陣
?Write1602_com(0x0c);??//顯示功能開無光標不閃爍
?Write1602_com(0x06);??//寫入新數據后光標右移
?Write1602_com(0x01);??//清除液晶顯示器
}

void?displaypinlv()????//顯示頻率
{
?uchar?i;
?Write1602_com(0x80);
?for(i=0;i<11;i++)
????{
?????if(i!=5)
????????Write1602_data(pinlv[i]+0x30);
?????else
????????Write1602_data(pinlv[i]);
????}
}

void?main()
{
?init1602();
?while(1)
??????{
???????cepin();
???????PinlvtoStr();
???????displaypinlv();

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????8781??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd

?????文件???????3638??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.c

?????文件?????113911??2009-11-29?18:37??等精度測頻-LCD\djdcp-lcd.DSN

?????文件???????4833??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.hex

?????文件?????????66??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.lnp

?????文件??????31380??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.LST

?????文件??????12565??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.M51

?????文件???????8866??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.OBJ

?????文件???????1055??2009-09-02?13:53??等精度測頻-LCD\djdcp-lcd.Opt

?????文件????????357??2009-09-02?13:53??等精度測頻-LCD\djdcp-lcd.plg

?????文件????????742??2009-11-29?18:37??等精度測頻-LCD\djdcp-lcd.PWI

?????文件???????2211??2009-08-15?21:11??等精度測頻-LCD\djdcp-lcd.Uv2

?????文件?????????44??2009-09-02?13:52??等精度測頻-LCD\djdcp-lcd.__i

?????文件???????1056??2009-09-01?23:46??等精度測頻-LCD\djdcp-lcd_Opt.Bak

?????文件??????????0??2009-08-15?21:06??等精度測頻-LCD\djdcp-lcd_Uv2.Bak

?????文件?????113945??2009-09-07?15:17??等精度測頻-LCD\Last?Loaded?djdcp-lcd.DBK

?????文件???????6376??2005-03-22?15:22??等精度測頻-LCD\STARTUP.A51

?????文件??????14049??2009-08-15?21:08??等精度測頻-LCD\STARTUP.LST

?????文件????????749??2009-08-15?21:08??等精度測頻-LCD\STARTUP.OBJ

?????目錄??????????0??2009-11-29?18:37??等精度測頻-LCD

-----------?---------??----------?-----??----

???????????????324624????????????????????20


評論

共有 條評論