|
基于單片機(jī)的數(shù)字頻率計(jì)的設(shè)計(jì),包括仿真和代碼,仿真用的proteus,有興趣的同學(xué)可以看看。
單片機(jī)源程序如下:
- #include "reg51.h"
- #include "absacc.h"
- #define LED4 XBYTE[0x1FFF]
- #define LED3 XBYTE[0X3FFF]
- #define LED2 XBYTE[0X5FFF]
- #define LED1 XBYTE[0X7FFF]
- #define uint unsigned int
- unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- int i=0,counter=0;
- unsigned char l4,l3,l2,l1;
- uint frequency;
- void t0ser(void);
- void int1ser(void);
- sbit P3_7=P3^7;
- void Display()
- {
-
- // unsigned char l4,l3,l2,l1;//定義數(shù)的各個(gè)位
- l4=frequency/1000;//千位
- l3=(frequency-l4*1000)/100;//百位
- l2=(frequency-l4*1000-l3*100)/10;//十位
- l1=frequency-l4*1000-l3*100-l2*10;//個(gè)位
- while(1)
- {
- LED4=table[l4];//送顯千位
- LED3=table[l3];//送顯百位
- LED2=table[l2];//送顯十位
- LED1=table[l1];//送顯個(gè)位
- if(P3_7==1) break;//對顯示屏上的頻率進(jìn)行鎖定
- }
- }
- void main() //主函數(shù)
- {
- TMOD=0x51;//T0 記時(shí) T1計(jì)數(shù)
- TH0=0x3c;//定時(shí)50ms
- TL0=0xB0;
- TH1=0x00;//計(jì)數(shù)
- TL1=0x00;
- TR0=1; //開T0
- TR1=1;//開T1
- ET0=1;//開中斷
- EA=1;//打開總中斷
- while(1)
- {
- Display();
- }
- }
- void t0ser(void) interrupt 1 using 1 //中斷源1 “interrupt 1”:定時(shí)器0溢出中斷
- {
- counter++;
- if(counter<20)//記不滿一秒
- {
- TH0=0x3C; //重置T0時(shí)間常數(shù)高8位
- TL0=0xB0; //重置T0時(shí)間常數(shù)低8位
- }
- else
- { TR0=0; //啟動(dòng)定時(shí)器T0
- TR1=0; //啟動(dòng)定時(shí)器T1
- frequency=TH1*256+TL1; //計(jì)算頻率值
- TH1=0;//清T1高8位
- TL1=0;//清T1低8位
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
單片機(jī)的簡易頻率計(jì)設(shè)計(jì).zip
(63.77 KB, 下載次數(shù): 111)
2017-5-25 13:15 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|