久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2522|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

NE555頻率計(jì)測頻率程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:130251 發(fā)表于 2016-7-16 11:03 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
部分程序,完整程序請下載 /****************************** (C) COPYRIGHT 2013  **************************
* 文  件  名      : NE555頻率計(jì).C
* 版      本      : V1.0
* 日      期      : 2013/08/20
* 主  控  MCU     : STC89C52
* 主      頻      : 12MHz
* 編  譯  器      : Keil C51 V4.22
* 描      述      : NE555產(chǎn)生方波,單片機(jī)采集方波頻率后,顯示在LCD1602上.
*                   在本設(shè)計(jì)方案中,T0工作在定時(shí)狀態(tài)下,設(shè)定T1工作在計(jì)數(shù)狀態(tài),
                                                                                        T1計(jì)數(shù)
*                   器對輸入信號進(jìn)行計(jì)數(shù),信號的頻率就是每秒鐘信號的脈沖個(gè)數(shù),
                                                T0工
*                   作在定時(shí)狀態(tài)下,定時(shí)時(shí)間為1秒。每定1秒鐘到,就停止T1的計(jì)數(shù),

*                   后從T1的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值,即完成了信號的頻率測量.
*********************************************************************************/
//#include"reg52.h"                                                                             /* 調(diào)用頭文件,單片機(jī)內(nèi)部寄存器都定義在此,用的時(shí)候需要先調(diào)用 */
#include"LCD1602.H"
#include <NEW_8051.h>

UINT8   CounterCnt;                                         /* 計(jì)數(shù)器次數(shù) */
UINT8   FreResultFlag;                                      /* 頻率計(jì)計(jì)算結(jié)果標(biāo)志 */

/******************************** 引腳定義 **************************************
                        單片機(jī)            NE555
                          P35              OUT
********************************************************************************/

/*******************************************************************************
* 函  數(shù)  名      : Init_Timer
* 描      述      : 初始化定時(shí)器T0,計(jì)數(shù)器T1.
* 輸      入      : 無.
* 返      回      : 無.
********************************************************************************/
void Init_Timer(void)
{
        TMOD |= 0x51;
                                                                                                  /* T0工作在定時(shí)器模式1,16位定時(shí)器,T1工作在計(jì)數(shù)器模式 */                     
        TH0 =        ( 65536 -50000 ) / 256;                                                      /* T0定時(shí)器初值,定時(shí)50ms */
        TL0 =        ( 65536 -50000 ) % 256;

        TH1 =   0;                                              /* T1從0開始計(jì)數(shù) */
    TL1 =   0;

    ET0 =        1;                                                               /* 定時(shí)器T0中斷打開 */
//         ET1 =   1;                                              /* 定時(shí)器T1中斷打開 */

        EA        =        1;                                                                /* 總中斷打開 */

//    PT1 =   1;                                              /* 定義T1為高優(yōu)先級 */

    TR0 =        1;                                                               /* T0開關(guān)打開 */
    TR1 =   1;                                              /* T1開關(guān)打開 */
}

/*******************************************************************************
* 函  數(shù)  名      : Timer0
* 描      述      : 中斷程序,定時(shí)時(shí)間到后重新賦值開始定時(shí),同時(shí)將LED的狀態(tài)取反.
* 輸      入      : 無.
* 返      回      : 無.
********************************************************************************/
void Timer0(void) interrupt 1
{
        static UINT8 Temp;

    TH0 =        ( 65536 -50000 ) / 256;                                                      /* 重新賦值 */
        TL0 =        ( 65536 -50000 ) % 256;

    Temp++;
    if( Temp == 20 )                                        /* 大概一秒計(jì)算一次 */
    {
        Temp = 0;     
                                                      
        TR0  = 0;                                           /* 關(guān)閉定時(shí)器T0,T1 */
        TR1  = 0;

        FreResultFlag = 1;                                  /* 準(zhǔn)備計(jì)算頻率 */                                          
    }   
}

/*******************************************************************************
* 函  數(shù)  名      : Timer1
* 描      述      : 計(jì)數(shù)器中斷程序.
* 輸      入      : 無.
* 返      回      : 無.
********************************************************************************/
void Timer1(void) interrupt 3
{
        CounterCnt++;                                                                        /* 計(jì)算脈沖個(gè)數(shù) */
}

/*******************************************************************************
* 函  數(shù)  名      : DisplayFre
* 描      述      : LCD1602顯示頻率.
* 輸      入      : UINT32 PulseCnt:
*                   脈沖數(shù).
* 返      回      : 無.
********************************************************************************/
void DisplayFre( UINT32 PulseCnt )
{
    UINT8 i;
    UINT8 DisplayBuf[6];

    for( i = 0; i < 5; i++ )                                /* 計(jì)算1-5位的每位數(shù)據(jù) */
    {
        DisplayBuf[i] = PulseCnt % 10 + 0x30;               /* 轉(zhuǎn)成成1602可以顯示的數(shù)值 */
        PulseCnt   =  PulseCnt / 10;
    }
    DisplayBuf[5] = PulseCnt + 0x30;                        /* 計(jì)算第6位數(shù)據(jù) */

    for( i = 5; i > 0; i-- )                                /* 處理高位為0時(shí)候的情況 */
    {
        if( DisplayBuf[ i ] == 0x30 )DisplayBuf[ i ] = 0x20;/* 檢測到高位為 0,不顯示高位,空格代替 */
        else break;
    }

    LCD1602_SetDisplayPosition( 7,2 );                      /* 設(shè)置顯示位置 */

    for( i = 5; i != 0xFF; i-- )
    LCD1602_WriteData(DisplayBuf[i]);                       /* 顯示頻率計(jì)字符 */

}

/*******************************************************************************
* 函  數(shù)  名      : main
* 描      述      : 主程序.
* 輸      入      : 無.
* 返      回      : 無.
********************************************************************************/
void main(void)
{
    UINT32 FreNum;                                          /* 計(jì)算頻率次數(shù) */



    Init_Timer();                                           /* 初始化定時(shí)器 */

//        P27 = 1;

    LCD1602_Init();                                         /* 初始化LCD1602 */



    LCD1602_SetDisplayPosition(0,1);                        /* 設(shè)置第一行顯示位置 */
    LCD1602_WriteString("FREQUENCY METER");                 /* 設(shè)置頻率計(jì)字符 */
    LCD1602_SetDisplayPosition(0,2);                        /* 設(shè)置第二行顯示位置 */
    LCD1602_WriteString("FRE:          Hz");                /* 設(shè)置FRE:   HZ字符 */

    while(1)
    {
        if( FreResultFlag )                                 /* 計(jì)算頻率 */
        {
            FreNum = ( CounterCnt * 65536 + TH1 * 256 + TL1);  /* 計(jì)算1秒后的脈沖個(gè)數(shù) */

            TH1    = 0;                                     /* 清計(jì)數(shù)次數(shù) */
            TL1    = 0;

            FreResultFlag = 0;                              /* 清標(biāo)志 */
//            CounterCnt = 0;
            TR1    = 1;
            TR0    = 1;                                     /* 開定時(shí)器 */
        }
        DisplayFre( FreNum );   

    }
}


120.NE555 頻率計(jì).zip

56.39 KB, 下載次數(shù): 18, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 97精品超碰一区二区三区 | 亚洲一区二区三区欧美 | 天天插天天狠天天透 | 欧美精品综合在线 | 欧美一级视频免费看 | 国产成人午夜电影网 | 日本小电影在线 | 日本黄色大片免费 | 久草.com | 亚洲精品视频免费看 | av影音在线 | 国产1区2区在线观看 | 国产一区亚洲二区三区 | 欧美精品一二三 | 成人精品国产一区二区4080 | 免费黄色大片 | 真人毛片| 国产美女一区二区 | 一级毛片大全免费播放 | 老外黄色一级片 | 久久综合影院 | 国产高清精品一区二区三区 | 欧美色欧美亚洲另类七区 | 国产亚洲欧美日韩精品一区二区三区 | 91免费在线看 | 日本一区二区影视 | 天天操网| 欧美日韩在线一区二区三区 | av日韩一区| 国产精品色一区二区三区 | 91精品国产99久久 | 这里精品| 欧美久久一级 | 天天操网| 亚洲天堂精品久久 | 欧美一区二区 | 日韩二区 | 99久久婷婷国产综合精品首页 | 中文字幕av在线一二三区 | 怡红院免费的全部视频 | 毛片在线看片 |