找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教一下51單片機引腳電壓

[復制鏈接]
跳轉到指定樓層
樓主
ID:1002173 發(fā)表于 2022-2-26 18:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
各位大佬好,目前我需要實現的功能是通過51單片機對方波脈沖進行計數這是方波的發(fā)生電路:


這是產生的波形,方波峰值分別為-0.68V和3.24V:


這是單片機連接圖,這里我選擇P3.4/T0口作為輸入方波的端口:


但當我把方波產生電路的輸出端和單片機連接時,輸出端的電平會被單片機拉高并且保持在3.38V左右:




這種情況下方波電路似乎就失效了,我不太明白為什么會導致這種結果,希望各位大佬能夠幫我解答疑惑,謝謝。



代碼如下,由于電壓問題未解決,代碼還沒有完善:
/***************   writer:shopping.w   ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define DATA P1
sbit OE  = P2^5;
sbit EOC = P3^3;
sbit ST  = P2^7;

sbit C1  = P3^0;
sbit C2  = P3^1;
sbit C3  = P3^2;

sbit OUT1 = P3^7;
sbit IN1 = P3^4;

uint display_data = 0;  /*顯示數據*/
uchar code LEDData[]=
{
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
uint count = 1;

//void T0Init()
//{
//        TMOD=0x05;
//        TH0=0XFF;
//        TL0=0xFD;
//        EA=1;
//        ET0=1;
//        TR0=1;
//}
void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}

void Display_Result(uint d)
{
       
        P2 = 0xf7;
        P0 = LEDData[d%10];
        DelayMS(5);
        P2 = 0xfb;
        P0 = LEDData[d%100/10];
        DelayMS(5);
        P2 = 0xfd;
        P0 = (LEDData[d/100]| 0x80);
        DelayMS(5);
       
        P2 = 0xfe;
        P0 = LEDData[0];
        DelayMS(5);
       
}


void main()
{
//        T0Init();

        C1  = 1;
        C2  = 1;
        C3  = 0;
        OUT1 = 0;
        IN1=1;

        while(1)
        {
                OUT1 = ~OUT1;
                 ST = 0;
                ST = 1;
                ST = 0;
                while(EOC == 0);
                OE = 1;
                display_data = ((5.0/255) * DATA) * 100;
                //Display_Result(display_data);
                Display_Result(count);
               
                OE = 0;
                //count = count+1;

        }
}

//void T0_time() interrupt 1
//{
//        count = count+1;
//        TH0 = 0XFF;
//        TL0 = 0XFD;
//}



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

使用道具 舉報

來自 2#
ID:1002173 發(fā)表于 2022-3-3 00:30 | 只看該作者
發(fā)現在單片機和方波電路中間加個最簡單的跟隨電路就行了,應該是起到隔離的作用。
回復

使用道具 舉報

板凳
ID:1006852 發(fā)表于 2022-2-26 20:12 | 只看該作者
單片機輸出口的輸出模式你設置了嗎?
回復

使用道具 舉報

地板
ID:1002173 發(fā)表于 2022-2-27 01:09 | 只看該作者
percy 發(fā)表于 2022-2-26 20:12
單片機輸出口的輸出模式你設置了嗎?

我查資料看51單片機設置I/O口輸入是要把端口設置成1,我把P3.4設置成1了但是沒效果,可能是我理解的不太對?
回復

使用道具 舉報

5#
ID:1007030 發(fā)表于 2022-2-27 11:10 | 只看該作者
這個電壓測量值是正常的,與你選擇的表有關。通常萬用表測量的電壓對頻率的要求是50Hz,而你現在的頻率遠超過了萬用表所測的頻率范圍。

評分

參與人數 1黑幣 +5 收起 理由
1134549525 + 5 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:8222 發(fā)表于 2022-2-27 11:37 | 只看該作者
把R10改為1000歐就行了,另外還要加上負脈沖嵌位。你現在只有正向嵌位穩(wěn)壓二極管。

評分

參與人數 1黑幣 +5 收起 理由
1134549525 + 5 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:8222 發(fā)表于 2022-2-27 11:39 | 只看該作者
不用加負脈沖嵌位了,這穩(wěn)壓管已經有正反向嵌位功能。
回復

使用道具 舉報

8#
ID:965189 發(fā)表于 2022-2-27 18:28 | 只看該作者
本帖最后由 君工創(chuàng) 于 2022-2-27 18:36 編輯

如果方波發(fā)生器輸出能力足夠的話,R10應在100歐到1K之間。

評分

參與人數 1黑幣 +5 收起 理由
1134549525 + 5 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:1006852 發(fā)表于 2022-3-1 12:19 | 只看該作者
1134549525 發(fā)表于 2022-2-27 01:09
我查資料看51單片機設置I/O口輸入是要把端口設置成1,我把P3.4設置成1了但是沒效果,可能是我理解的不太 ...

STC單片機輸出口是有4種模式,如下是P0口我的設置。其它口看手冊。
//P1M1=0X00;
//P1M0=0XFF;
P0M1=0X00;
P0M0=0XFF;

評分

參與人數 1黑幣 +5 收起 理由
1134549525 + 5 謝謝,我查資料看看

查看全部評分

回復

使用道具 舉報

10#
ID:1002173 發(fā)表于 2022-3-2 14:32 | 只看該作者
溫xyz 發(fā)表于 2022-2-27 11:37
把R10改為1000歐就行了,另外還要加上負脈沖嵌位。你現在只有正向嵌位穩(wěn)壓二極管。

我把R10改成1000Ω之后還是有這個問題
回復

使用道具 舉報

11#
ID:1002173 發(fā)表于 2022-3-3 00:31 | 只看該作者
過程中還查閱了張志良老師編著的《80C51單片機實驗實訓100例 基于Keil C和Proteus》。問題已解決!
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表