<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用AVR單片機實(shí)現頻率計設計

用AVR單片機實(shí)現頻率計設計

作者: 時(shí)間:2012-10-17 來(lái)源:網(wǎng)絡(luò ) 收藏
//課程設計程序//名稱(chēng)://硬件:ATMEGA16_FHz-QLD100623產(chǎn)品  8MHz 晶振 三位數碼管顯示//程序說(shuō)明:程序初調階段,可測頻率范圍1Hz--65KHz 自動(dòng)換檔顯示//編寫(xiě)人:李春起#includeiom16v.h>  #include macros.h>//-------------位拉高--------------------------------------------#define LED1_H PORTD|=BIT(PD4) #define LED2_H PORTD|=BIT(PD5)   #define LED3_H PORTD|=BIT(PD6)  #define AT1_H PORTA|=BIT(PA0)  #define AT2_H PORTA|=BIT(PA1)  #define AT3_H PORTA|=BIT(PA2) //-------------位拉低--------------------------------------------#define LED1_L PORTD=~BIT(PD4)  #define LED2_L PORTD=~BIT(PD5)    #define LED3_L PORTD=~BIT(PD6)   #define AT1_L PORTA=~BIT(PA0)    #define AT2_L PORTA=~BIT(PA1)  #define AT3_L PORTA=~BIT(PA2)  #define NOP() asm("nop")#define uchar unsigned char #define uint unsigned int//==================聲明全局變量====================================uint data,F_data=0,F_data10K=0;F_data1M=0;//頻率分段儲存uint decimal1,decimal2,decimal3;//===================數據表==============================================__flash uchar SEG[]={0X03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//==================mS延時(shí)子程序=========================================void delayms(uint m){uint i,j;for(i=0;im;i++){for(j=0;j1141;j++);}}//==================IO口初始化=======================================void IO_init(void){DDRA = 0XFF;DDRB = 0X00;//PB0為頻率輸入,其它為按鍵DDRC = 0XFF;DDRD = 0XFF;}//====================定時(shí)器T0初始化===================================void timer0_init(void){TCCR0 = 0x0F;  //T0上升沿觸發(fā)CTC模式TCNT0 = 0x00;  //計數器清0OCR0  = 255;   //計數值達100中斷TIMSK |=0x02;  //使能OCIE0TIFR  |=0x02;  //清OCIF0中斷標識位}//====================定時(shí)器T1初始化===================================void timer1_Init(void)//用于產(chǎn)生標準1S時(shí)間{ TCCR1A=0x00;  //WGM1[3:0]=0100,OCR1ATCCR1B=0x0c;  //256 division,8M/256,CTC ModeTCNT1=0X00;   //Clear CounterOCR1A=31250;  //31250*256/8M=1STIMSK|=0X10; //比較匹配A中斷使能TIFR |=0X10; //中斷標志寫(xiě)1清0}//=====================使能全局中斷================================void Interrupt_init(void){SREG|=0x80;}//====================MCU初始化==========================================void MCU_init(void){IO_init();timer0_init();timer1_Init();Interrupt_init();}//=============================================================//-------------------------------------------------------------//---------------主函數----------------------------------------//-------------------------------------------------------------void main(void){MCU_init();PORTD=0XFF;while(1){PORTC=(SEG[(data%10)]-decimal1);AT3_H;delayms(5);AT3_L;PORTC=(SEG[(data/10)%10]-decimal3);AT2_H;delayms(5);AT2_L;PORTC=(SEG[(data/100)%10]-decimal2);AT1_H;delayms(5);AT1_L;}}//--------------------------------------------------------------//--------------------------------------------------------------//==============================================================//====================定時(shí)器T0中斷服務(wù)子程序==========================#pragma interrupt_handler Timer0_Interrupt:20void Timer0_Interrupt(void){TCNT0 = 0X00;//計數器清0if(++F_data10K>=65535){F_data10K=0;if(++F_data1M>=65535){F_data1M=0;}}}//=====================定時(shí)器T1中斷服務(wù)==============================#pragma interrupt_handler Timer1_Interrupt:7void Timer1_Interrupt(void){TCNT1 = 0X00;//計數數清0F_data = TCNT0;F_data |= F_data10K8; TCNT0 = 0X00;F_data10K = 0;if(F_data1000){decimal3=0;decimal2=0;decimal1=1;data=F_data;LED1_L;LED2_H;LED3_H;}if(F_data>=1000){decimal3=0;decimal2=1;decimal1=0;data=(F_data/10);LED1_H;LED2_L;LED3_H;}if(F_data>=10000){decimal3=1;decimal2=0;decimal1=0;data=(F_data/100);}//if(F_data>=65534){F_data = (F_data>>8);F_data |= F_data1M8;//                F_data=(F_data/1000);}}

單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理


關(guān)鍵詞: AVR 單片機 頻率計

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>