精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用8051微控制器測量任何信號頻率的方式

科技觀察員 ? 來源:circuitdigest ? 作者:沙希·庫馬爾 ? 2022-11-17 17:50 ? 次閱讀

頻率定義為每秒的周期數。它也可以定義為總時間“T”的倒數。在本項目中,我們將計算進入8051微控制器端口3.5的脈沖數,并將其顯示在16 * 2 LCD顯示屏上。所以基本上我們測量了8051端口3.5的信號頻率。這里我們使用了AT89S528051芯片,在非穩(wěn)定模式下使用555 IC來生成采樣脈沖進行演示。

所需組件:

8051 微控制器 (AT89S52)

16*2液晶顯示屏

頻率源(555 定時器

電位計

連接線

電路圖:

poYBAGN2A5iAO2I8AAGVrS21tOE088.png

poYBAGN2A-KAfzu6AAAhVuCJoI8290.png

使用 8051 定時器測量頻率:

8051微控制器是一款8位微控制器,具有128字節(jié)的片上RAM,4K字節(jié)的片上ROM,兩個定時器,一個串行端口和四個8位端口。8052微控制器是微控制器的擴展。要將端口 3.5 配置為計數器,TMOD 寄存器值設置為 0x51。下圖顯示了TMOD寄存器。

C / T M1 M0 C / T M1 M2
定時器 1 定時器 0

GATE- 設置 GATE時,僅當 INTx 引腳為高電平且 TRx 控制引腳設置為 TRx 控制引腳時,才會使能定時器或計數器。當 GATE 被清除時,只要 TRx 控制位設置為 U,定時器就會啟用。

C / T– 當C / T= 0時,它充當計時器。當 C/T = 1 時,它充當計數器。

M1 和M0表示工作模式。

對于 TMOD = 0x51,定時器1充當計數器,并在模式1(16位)下運行。

16 * 2 LCD用于以赫茲(Hz)顯示信號的頻率。如果您不熟悉 16x2 LCD,請在此處查看有關 16x2 LCD 引腳及其命令的更多信息。另請查看如何將液晶屏與8051連接。

555定時器作為頻率源:
頻率源應產生方波,最大幅度限制為5V,因為8051微控制器的端口無法處理大于5V的電壓。它可以測量的最大頻率為655.35 KHz,因為TH1和TL1寄存器的內存限制(每個8位)。在 100 毫秒內,TH1 和 TL1 最多可容納 65535 個計數。因此,可以測量的最大頻率為 65535 * 10 = 655.35 KHz。

在這個 8051 頻率計項目中,我在非穩(wěn)定模式下使用 555 定時器來產生可變頻率方波。555 IC產生的信號頻率可以通過調整電位計來改變,如本項目結束時給出的視頻所示。

在本項目中,Timer1 (T1) 對進入 8051 微控制器端口 3.5 的脈沖數進行 100 毫秒的計數。計數值將分別存儲在 TH1 和 TL1 寄存器中。為了組合TH1和TL1寄存器的值,使用以下公式。

Pulses = TH1 * (0x100) + TL1
現在,“脈沖”將在 100 毫秒內具有周期數。但信號的頻率定義為每秒的周期數。要將其轉換為頻率,請使用以下公式。

Pulses = Pulses * 10
工作和代碼解釋:
本項目結束時給出了該頻率計的完整 C 程序。代碼被分成有意義的小塊,并在下面解釋。

對于與8051微控制器的16 * 2 LCD接口,我們必須定義16 * 2 LCD連接到8051微控制器的引腳。16*2 LCD 的 RS 引腳連接到 P2.7,16*2 LCD 的 RW 引腳連接到 P2.6,16*2 LCD 的 E 引腳連接到 P2.5。數據引腳連接到 8051 微控制器的端口 0。

sbit rs=P2^7;
sbit rw=P2^6;
sbit en=P2^5;
接下來,我們必須定義一些在程序中使用的函數。延遲功能用于創(chuàng)建指定的時間延遲。Cmdwrt功能用于向16 * 2 LCD顯示器發(fā)送命令。Datawrt功能用于將數據發(fā)送到16 * 2 LCD顯示器。

void delay(unsigned int) ;
void cmdwrt(unsigned char);
void datawrt(unsigned char);
在代碼的這一部分中,我們將命令發(fā)送到 16*2 lcd。清除顯示、遞增光標、強制光標以 1 開頭等命令圣在指定的時間延遲后,線被一一發(fā)送到16 * 2液晶顯示器。

for(i=0;i<5;i++)?
{
cmdwrt (cmd[i]);
delay (1);
}
在代碼的這一部分中,定時器1配置為計數器,操作模式設置為模式1。

定時器0配置為定時器,操作模式設置為模式1。定時器1用于計算脈沖數,定時器0用于產生延時。TH1 和 TL1 值設置為 0,以確保計數從 0 開始。

TMOD=0x51;
TL1=0;
TH1=0;
在代碼的這一部分中,計時器運行 100 毫秒。使用延遲功能生成 100 毫秒的延遲。TR1=1 用于啟動計時器,TR1=0 用于在 100 毫秒后停止計時器。

TR1=1;
delay(100);
TR1=0;
在代碼的這一部分中,將 TH1 和 TL1 寄存器中存在的計數值組合在一起,然后乘以 10 以獲得 1 秒內的總周期數。

Pulses = TH1*(0x100) + TL1;
Pulses = pulses*10;
在代碼的這一部分中,頻率值被轉換為單個字節(jié),以便于在16 * 2 LCD顯示器上顯示。

d1 = pulses % 10;
s1 = pulses % 100;
s2 = pulses % 1000;
s3 = pulses % 10000;
s4 = pulses % 100000;
d2 = (s1-d1) / 10;
d3 = (s2-s1) / 100;
d4 = (s3-s2) / 1000;
d5 = (s4-s3) / 10000;
d6 = (pulses-s4) / 100000;
在代碼的這一部分中,頻率值的各個數字被轉換為ASCII格式,并顯示在16 * 2 LCD顯示屏上。

If (pulses>=100000)
datawrt ( 0x30 + d6);
if(pulses>=10000)
datawrt( 0x30 + d5);
if(pulses>=1000)
datawrt( 0x30 + d4);
if(pulses>=100)
datawrt( 0x30 + d3);
if(pulses>=10)
datawrt( 0x30 + d2);
datawrt( 0x30 + d1);
在代碼的這一部分中,我們將命令發(fā)送到 16*2 LCD 顯示器。該命令將復制到 8051 微控制器的端口 0。對于命令寫入,RS 設置為低電平。對于寫入操作,RW 設置為低電平。在使能 (E) 引腳上施加高到低脈沖以啟動命令寫入操作。

void cmdwrt (unsigned char x)
{
P0=x;
rs=0;
rw=0;
en=1;
delay(1);
en=0;
}
在代碼的這一部分中,我們將數據發(fā)送到16 * 2 LCD顯示器。數據將復制到 8051 微控制器的端口 0。RS 設置為高電平以進行命令寫入。對于寫入操作,RW 設置為低電平。在使能(E)引腳上施加高到低脈沖以啟動數據寫入操作。

void datawrt (unsigned char y)
{
P0=y;
rs=1;
rw=0;
en=1;
delay(1);
en=0;
}

pYYBAGN2A-SARL3zAAEGU8ofNNY166.jpg

這就是我們使用8051微控制器測量任何信號頻率的方式。

#include



sbit rs=P2^7;

sbit rw=P2^6;

sbit en=P2^5;



void delay(unsigned int) ;

void cmdwrt(unsigned char);

void datawrt(unsigned char);



void main (void)

{

unsigned long int pulses;

unsigned char i;

unsigned int s1,s2,s3,s4;

unsigned char d1,d2,d3,d4,d5,d6;

unsigned char cmd[]={0x38,0x01,0x06,0x0c,0x82};

unsigned char msg[]={"Freq: "};

unsigned char msg2[]={" Hz"};



for(i=0;i<5;i++)?

{

cmdwrt(cmd[i]);

delay(1);

}



while(1)

{

TMOD=0x51;

TL1=0;

TH1=0;



TR1=1;



delay(100);



TR1=0;



pulses= TH1*256 + TL1;

pulses=pulses*10;



d1=pulses%10;

s1=pulses%100;

s2=pulses%1000;

s3=pulses%10000;

s4=pulses%100000;



d2=(s1-d1)/10;

d3=(s2-s1)/100;

d4=(s3-s2)/1000;

d5=(s4-s3)/10000;

d6=(pulses-s4)/100000;



cmdwrt(0x01);

delay(1);



for(i=0;msg[i]!='';i++)

datawrt(msg[i]);



if(pulses>=100000)

datawrt(0x30+d6);

if(pulses>=10000)

datawrt(0x30+d5);

if(pulses>=1000)

datawrt(0x30+d4);

if(pulses>=100)

datawrt(0x30+d3);

if(pulses>=10)

datawrt(0x30+d2);

datawrt(0x30+d1);



for(i=0;msg2[i]!='';i++)

datawrt(msg2[i]);

delay(1000);

}

}





void cmdwrt (unsigned char x)

{

P0=x;

rs=0;

rw=0;

en=1;

delay(1);

en=0;

}



void datawrt (unsigned char y)

{

P0=y;

rs=1;

rw=0;

en=1;

delay(1);

en=0;

}



void delay(unsigned int z)

{

unsigned int p;

for(p=0;p

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7487

    瀏覽量

    151044
  • 8051
    +關注

    關注

    3

    文章

    309

    瀏覽量

    51452
  • 信號頻率
    +關注

    關注

    0

    文章

    21

    瀏覽量

    1941
收藏 人收藏

    評論

    相關推薦

    8051微控制器架構的簡要說明

    此前已經介紹了關于8051微控制器基礎知識和引腳圖說明等相關知識,而在本文中,將重點介紹8051微控制器的硬件方面內容,如 I/O 端口、RAM、ROM、定時
    發(fā)表于 08-23 14:45 ?2766次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>架構的簡要說明

    8051微控制器的基礎知識

    8051微控制器是嵌入式系統(tǒng)、消費電子、汽車等各個領域中最流行和最常用的微控制器之一,技術上稱為Intel MCS-51架構。8051微控制器
    發(fā)表于 09-12 17:32 ?3302次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的基礎知識

    8051微控制器指令集和尋址模式

    任何微控制器編寫程序包括以特定順序向微控制器發(fā)出命令,這些命令必須按特定順序執(zhí)行才能執(zhí)行特定任務。微控制器的命令稱為微控制器指令集。
    發(fā)表于 10-11 17:07 ?5538次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>指令集和尋址模式

    #硬聲創(chuàng)作季 微控制器原理:8051微控制器的技術發(fā)展

    微控制器mcu8051
    Mr_haohao
    發(fā)布于 :2022年11月02日 14:47:16

    基于XCCV3004HQ240芯片的8051微控制器接口設計

    接口芯片主要由以下模塊組成:地址解碼邏輯、總線接口狀態(tài)機、中斷邏輯、用戶可定義寄存組、數據輸出多路選擇。其內部結構框圖如圖2所示。 3.1 8051微控制器接口
    發(fā)表于 05-24 05:00

    討論AVR,ARM,8051和PIC微控制器之間的區(qū)別

    ,8051和PIC微控制器之間的區(qū)別。**AVR,ARM,8051和PIC微控制器之間的區(qū)別**微控制器之間的差異主要包括什么是
    發(fā)表于 11-23 07:24

    用新型微控制器降低8051系統(tǒng)的功耗

    用新型微控制器降低8051系統(tǒng)的功耗
    發(fā)表于 05-04 13:37 ?18次下載

    MAX6901 RTC與8051微控制器的接口

    要:該應用筆記演示了MAX6901與8051微控制器的連接方式,并提供了基本的接口程序例程。本文采用的微控制器是DS2250,軟件用C語言編寫。 MAX6901引腳配置
    發(fā)表于 04-21 11:12 ?744次閱讀
    MAX6901 RTC與<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的接口

    DS1302 RTC與8051微控制器的接口

    摘要:本應用筆記說明了DS1302 RTC通過3線接口與8051微控制器的連接方式,設計實例包括電路原理圖和C語言接口程序。 DS1302引腳配置
    發(fā)表于 04-21 11:14 ?2303次閱讀
    DS1302 RTC與<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的接口

    如何用微控制器測量電容

    微控制器廣泛用于測量各種物理變量。測量中涉及的技術對于單個變量類型可能有所不同,并且主要基于要測量的變量的特性。本教程介紹了一些使用微控制器
    的頭像 發(fā)表于 12-06 14:54 ?2902次閱讀
    如何用<b class='flag-5'>微控制器</b><b class='flag-5'>測量</b>電容

    如何使用微控制器測量電容

    微控制器已不是新興事物,對于微控制器,大家或許都有所了解。在往期文章中,小編對微控制器做過一定介紹。為進一步增進大家對微控制器的了解,本文將對微控制
    的頭像 發(fā)表于 06-27 16:04 ?3443次閱讀
    如何使用<b class='flag-5'>微控制器</b><b class='flag-5'>測量</b>電容

    C8051F330和C8051F331微控制器的數據手冊

    本文檔的主要內容詳細介紹的是C8051F330和C8051F331微控制器的數據手冊免費下載。
    發(fā)表于 03-03 17:29 ?15次下載
    C<b class='flag-5'>8051</b>F330和C<b class='flag-5'>8051</b>F331<b class='flag-5'>微控制器</b>的數據手冊

    8051微控制器引腳說明與基本電路

    此前已經介紹過8051微控制器的基礎知識,包括它的歷史、特性、封裝和一些實際應用。在本文中,小編將將繼續(xù)介紹關于8051微控制器引腳圖、引腳說明以及其他一些細節(jié)內容,包括
    發(fā)表于 08-23 15:53 ?8091次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>引腳說明與基本電路

    如何使用觸摸傳感8051微控制器控制LED燈

    在這個項目中,我們將觸摸傳感8051 微控制器 AT89S52 連接。如果您是 8051 微控制器的新手,那么您可以從LED 閃爍開始
    的頭像 發(fā)表于 09-07 15:13 ?3064次閱讀
    如何使用觸摸傳感<b class='flag-5'>器</b>和<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b><b class='flag-5'>控制</b>LED燈

    將基于8051微控制器連接到SCI端口

    本應用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的設備通信。它首先簡要討論了SCI和UART模塊之間的差異,并以一個實際示例結束,說明如何配置基于8051的達拉斯半導體
    的頭像 發(fā)表于 06-13 15:48 ?726次閱讀
    將基于<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>連接到SCI端口