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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機io口如何通過電阻分壓電路檢測外部電壓?

查看數: 8764 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-3-18 20:03

正文摘要:

我想讓這個單片機P1端口能檢測外部電壓從而判斷高低電平,但是這樣接上以后,電壓就側成4.99v了,求大神告知問題在哪里?

回復

ID:493480 發表于 2019-3-19 10:34
meihua 發表于 2019-3-18 22:48
單片機IO口要設置成輸入,你現在P1全部為輸出高電平,當然是檢測不了外部電壓的。

代碼里沒有對P1口進行設置呀,不知道哪里有錯誤?
ID:493480 發表于 2019-3-19 10:33
這個是我程序代碼,圖上R11最后要換成光敏電阻,意思是我無光的時候,分壓很低,P1口能判斷為低電平即可。
#include<AT89X52.h>
     #define KeyPort P1
     unsigned char High,Low;         //定時器預裝高低八位
     sbit SPK=P3^7;                                 //蜂鳴器
     sbit ps=P0^0;                                 //蜂鳴器
     sbit RS=P2^0;                                 //暫時無用
     sbit RW=P2^1;                                 //暫時無用
     unsigned char code freq[][2]={                 //音階頻率
     0xD8,0XF7,
     0xBD,0XF8,
     0x87,0xF9,
     0xE4,0xF9,
     0x90,0xFA,
     0x29,0xFB,
     0xB1,0xFB,
     0xEF,0xFB,
     };
     unsigned char Time;
     unsigned char code YINFU[9][1]={{'0'},{'1'},{'2'},{'3'},{'4'},{'5'},{'6'},{'7'},{'8'}};
     unsigned char MUSIC[]={6,2,3, 5,2,1, 3,2,2 , 5,2,2, 1,3,2, 6,2,1, 5,2,1,
     6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
     6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
     5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
     2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};
     unsigned char code FREQH[ ]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
     0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,
     0xFC,0xFD,0xFD,0xFD,0xFD,0xFD,0xFE,
     0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
     };
     unsigned char code FREQL[ ]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
     0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,
     0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
     0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
     };
     void Init_timer0(void);           //定時器初始化
     void delay2xus(unsigned char z)         //延時
     {
     while(z--);
     }
     void delayms(unsigned char x)           //延時
     {
     while(x--)
     {
     delay2xus(245);
     delay2xus(245);
     }
     }
     void delaytips(unsigned char t)         //延時
     {
     unsigned char i;
     for(i=0;i<t;i++)
    {
    delayms(250);
}
TR0=0;
}

void PlaySong()
{
TH0=High;
TL0=Low;
TR0=1;
delaytips(Time);
}

void Init_Timer0(void)                         //定時器初始化
{
TMOD |=0x01;
EA=1;
ET0=1;                                                  
}
void Timer0_isr(void)interrupt 1         //定時中斷
{
TH0=High;
TL0=Low;
SPK=!SPK;
}

int main(void)                                                //主函數
{
unsigned char num,k,i;
Init_Timer0();
SPK=0;
while(1)
{
switch(KeyPort)                                         //P1口判斷,是否有低電平
{
case 0xfe:num=1;break;
case 0xfd:num=2;break;
case 0xfb:num=3;break;
case 0xf7:num=4;break;
case 0xef:num=5;break;
case 0xdf:num=6;break;
case 0xbf:num=7;break;
case 0x7f:num=8;break;
default:num=0;break;
}
P2=KeyPort; //暫時無用
if(num==0)
{
TR0=0;
SPK=0;
}
else
{
High=freq[num-1][1];
Low=freq[num-1][0];
TR0=1;
}
if(ps==0)
{
delayms(10);
if(ps==0)
{
i=0;
while(i<100)
{
k=MUSIC[i]+7*MUSIC[i+1]-1;
High=FREQH[k];
Low=FREQL[k];
Time=MUSIC[i+2];
i=i+3;
if(P1!=0xff)
{
delayms(10);
if(P1!=0xff)
i=101;
}
PlaySong();
}
TR0=0;
}
}
}
}
ID:493480 發表于 2019-3-19 10:32
zhb2004xp 發表于 2019-3-19 00:16
你通過掃描P1.0端口,來查詢外部電路是高電平還是低電平,這種分壓方式檢測是不對的,因為89C52單片機的IO ...

您好,我并不像知道具體電壓多少,我這個設計其實就是想讓單片機判斷電壓0/1,比如分壓0.2V時不應該判斷為0嗎?
ID:234075 發表于 2019-3-19 00:16
你通過掃描P1.0端口,來查詢外部電路是高電平還是低電平,這種分壓方式檢測是不對的,因為89C52單片機的IO口不能檢測模擬量,只能檢測到高電平(1)、低電平(0),這個兩個值是相對的。應該將R2換成按鍵,按鍵沒有按下時,在R11的上拉作用下,掃描P1.0端口的結果為1,按鍵按下后,掃描P1.0端口的結果為0
ID:493618 發表于 2019-3-18 22:48
單片機IO口要設置成輸入,你現在P1全部為輸出高電平,當然是檢測不了外部電壓的。
ID:493618 發表于 2019-3-18 22:47
單片機IO口要設置成輸入,你現在P1

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久一区 | 黄色在线观看网址 | 欧美韩一区二区三区 | 精品久久久久久久久久久久 | 精品一二三区在线观看 | 免费亚洲网站 | 成人免费毛片片v | 这里有精品 | 日本在线精品视频 | 三级av在线| 国产欧美视频一区 | 毛片1 | 少妇一级淫片免费播放 | 国产精品视频一区二区三区不卡 | 国产精品一区二区三区久久久 | 欧美日韩视频在线 | 天天操天天干天天爽 | 美女视频h | 污污的网站在线观看 | 一区二区视频 | 日韩在线一区二区三区 | 亚洲欧美国产精品久久 | 国产精品99久久久久久久vr | 久久久久久久久国产成人免费 | 欧美一卡二卡在线 | 亚洲视频一区二区三区 | 国产精品 欧美精品 | 亚洲欧美中文日韩在线v日本 | 国产成人免费 | 久久久久久久久久一区 | 韩国av电影网| 伊人伊人 | 日韩久久综合 | 国产一区二区久久 | 亚洲精品中文字幕 | 成人在线视频免费看 | 亚洲欧美在线一区 | 伊人激情综合网 | 亚洲欧美v | 不卡在线视频 | 亚洲一区二区三区免费视频 |