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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3372|回復: 2
打印 上一主題 下一主題
收起左側

求大佬給個電路圖 附上程序(脈沖計數)

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg51.h>

//--定義使用的IO--//
#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//--定義全局變量--//
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
unsigned char DisplayData[8];
//用來存放要顯示的8位數的值

//--聲明全局函數--//
void DigDisplay(); //動態顯示函數
void TIMER_Configuration();        //初始化定時器

//--定義全局變量--//
unsigned long   Freq;        //用來存放要顯示的頻率值
unsigned long        TimeCount;   //用于計算1S鐘的
/*******************************************
*函數名                :main
*功  能         :主函數
*輸         入         :無
*輸  出                :無
*******************************************/

void main()
{

        TIMER_Configuration();
       
        while(1)
        {
                if(TR0 == 0)         //當計數器停下的時候,表明計數完畢
                {
                        Freq = Freq + TL1;         //讀取TL的值
                        Freq = Freq + (TH1 * 256); //讀取TH的值

                        //--求頻率的個十百千萬十萬位--//
                        DisplayData[0] = ~DIG_CODE[Freq%1000000/100000];       
                        DisplayData[1] = ~DIG_CODE[Freq%100000/10000];       
                        DisplayData[2] = ~DIG_CODE[Freq%10000/1000];       
                        DisplayData[3] = ~DIG_CODE[Freq%1000/100];       
                        DisplayData[4] = ~DIG_CODE[Freq%100/10];       
                        DisplayData[5] = ~DIG_CODE[Freq%10];
                       
                        //--顯示完,重新計算下一次頻率。--//       
                        Freq = 0;//將計算的頻率清零
                        TH1 = 0; //將計數器的值清零
                        TL1 = 0;
                        TR0 = 1; //開啟定時器
                        TR1 = 1; //開啟計數器       
                }

                //--顯示求得的數值--//
                DigDisplay();
        }
}

/*******************************************
*函數名                :TIMER_Configuration
*功  能         :配置定時/計數器T0和T1
*輸         入         :無
*輸  出                :無
*******************************************/

void TIMER_Configuration()
{
        //--定時器T1做計數器,工作方式1(16位定時器),只由TRx打開計數器--//
        //--定時器T0做定時器,工作方式1(16位定時器),只由TRx打開定時器--//       
        TMOD=0x51;

        //--設置定時器晶振為12MHZ時定時50ms--//
        TH0=0x3C;
        TL0=0xB0;

        //--打開中斷-//
        ET0=1;
        ET1=1;
        EA=1;

        //--打開定時器*/
        TR0=1;
        TR1=1;
}
/*******************************************
*函數名                :Timer0
*功  能         :定時器0的中斷函數
*輸         入         :無
*輸  出                :無
*******************************************/

void Timer0()        interrupt 1
{
        TimeCount++;
        if(TimeCount==20)//計時到1S
        {
                TR0=0;
                TR1=0;
                TimeCount=0;               
        }

        //--12MHZ設置定時50ms的初值--//
        TH0=0x3C;
        TL0=0xB0;       
}
/*******************************************
*函數名                :Timer1
*功  能         :定時器1的中斷函數
*輸         入         :無
*輸  出                :無
*******************************************/

void Timer1()        interrupt 3
{       
        //--進入一次中斷,表明計數到了65536--//
        Freq=Freq+65536;               
}

/*******************************************************************************
* 函 數 名         : DigDisplay
* 函數功能                   : 使用數碼管顯示
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void DigDisplay()
{
        unsigned char i;
        unsigned int j;
        for(i=0;i<8;i++)
        {
                switch(i)         //位選,選擇點亮的數碼管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//顯示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//顯示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//顯示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//顯示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//顯示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//顯示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//顯示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//顯示第7位       
                }
                GPIO_DIG=DisplayData[i];//發送段碼
                j=50;                                                 //掃描間隔時間設定
                while(j--);       
                GPIO_DIG=0x00;//消隱
        }
}

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

使用道具 舉報

沙發
ID:111634 發表于 2017-6-11 13:14 | 只看該作者
本帖最后由 zl2168 于 2017-6-11 13:15 編輯

實例71  統計T0引腳上10分鐘內的脈沖數
實例71 統計T0引腳上10分鐘內脈沖數.rar (52.96 KB, 下載次數: 20)

Proteus仿真一下,確認有效。
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版. 書中電路和程序設計有詳細說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。


回復

使用道具 舉報

板凳
ID:209833 發表于 2017-6-12 11:54 | 只看該作者
zl2168 發表于 2017-6-11 13:14
實例71  統計T0引腳上10分鐘內的脈沖數

謝謝大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线播放一区 | 欧美日韩不卡 | 国产高清免费 | 精品熟人一区二区三区四区 | 亚洲一区二区在线 | 亚洲精品免费观看 | 国产视频在线一区二区 | 91麻豆精品国产91久久久久久 | 毛片黄片免费看 | 久久国产日韩 | 视频在线一区二区 | 国产精品无码久久久久 | 成人免费黄视频 | 日本不卡一区 | 日韩欧美精品一区 | 亚洲欧洲一区 | 六月成人网 | 日本视频免费观看 | 精产国产伦理一二三区 | 性做久久久久久免费观看欧美 | 国产ts人妖系列高潮 | 不卡一区二区三区四区 | 国产精品一区二区三区在线 | 亚洲精品99 | a级毛片国产| 久久久久久久久久久久一区二区 | 国产精品国产成人国产三级 | 亚洲国产二区 | 二区三区av | 国产精品视频网 | 亚洲网在线 | 精品粉嫩aⅴ一区二区三区四区 | 国产精品久久久久久久午夜片 | 久草视频在线播放 | 久久精品一区二区 | 国产精品不卡视频 | 国产精品久久久久一区二区 | 午夜理伦三级理论三级在线观看 | 久久久人成影片一区二区三区 | 久久一二三区 | 国产精品成人在线 |