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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2668|回復(fù): 13
收起左側(cè)

單片機(jī)一直輸出低電平怎么回事

[復(fù)制鏈接]
ID:1087674 發(fā)表于 2023-8-19 09:36 來自觸屏版 | 顯示全部樓層 |閱讀模式
剎車程序一直沒弄好,測(cè)量了下輸出口P5.5,不知道為什么一直輸出了低電平。難道是這個(gè)STC15W204S單片機(jī)P5.5是默認(rèn)是輸出低電平。剛學(xué),不懂這些。
或是程序錯(cuò)了?
#include"intrins.h"
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sfr P5 =0xC8;//P5地址
sbit key  = P5^4;
sbit led  = P5^5;

/***********************200ms延時(shí)函數(shù)*****************************/
void Delay200ms()                //@12.000MHz
{
        unsigned char data i, j, k;

        _nop_();
        _nop_();
        i = 10;
        j = 31;
        k = 147;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

/***********************10ms延時(shí)函數(shù)*****************************/
void Delay10ms()                //@12.000MHz
{
        unsigned char data i, j;

        i = 20;
        j = 113;
        do
        {
                while (--j);
        } while (--i);
}

/***********************等待剎車松開函數(shù)*****************************/
void keyscan()
{
   while(key!= 0);
   if(key == 0)                  //剎車
         {                           
            Delay10ms();              //阻塞式延時(shí)消抖,10ms
            if(key == 0)              //如果真剎車,不是誤動(dòng)作
            {        
              led=0;                  //輸出低電平
              Delay200ms();           //輸出延時(shí)
              while(!key);        //等待按鍵松開
             }
          }
    if(key == 1)                //按鍵松開
         {
            Delay10ms();             //等延時(shí)消抖,10ms
            if(key == 1)             //按鍵真松開
            {
              led=0;                 //輸出低電平
              Delay200ms();          //輸出延時(shí)
              led=0;                 //再次輸出低電平
              Delay200ms();          //輸出延時(shí)
            }
          }
}
/******************主程序**********************/
void main()
{
        while(1)
        {
          keyscan();                //按鍵掃描
         }
}
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-19 10:01 來自觸屏版 | 顯示全部樓層
沒按按鍵P5.5都一直輸出低電平,光耦一直閉合。P5.5是不是要加上拉電阻呢?這個(gè)芯片的這個(gè)I/O口也不知道默認(rèn)怎樣的
回復(fù)

使用道具 舉報(bào)

ID:712097 發(fā)表于 2023-8-19 15:24 | 顯示全部樓層
有電路圖嗎?IO默認(rèn)是弱上拉的準(zhǔn)雙向口,可以輸出高低電平。如果LED負(fù)載電流較大,可以把IO設(shè)置成推挽模式試一下。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-8-19 18:09 | 顯示全部樓層
農(nóng)民阿伯 發(fā)表于 2023-8-19 10:01
沒按按鍵P5.5都一直輸出低電平,光耦一直閉合。P5.5是不是要加上拉電阻呢?這個(gè)芯片的這個(gè)I/O口也不知道默 ...

你的代碼不論按鍵是否按下,P5.5都是 led=0;不知道為什么一直輸出了低電平怎么回事只能問自己了。
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-19 20:21 來自觸屏版 | 顯示全部樓層
chxelc 發(fā)表于 2023-8-19 15:24
有電路圖嗎?IO默認(rèn)是弱上拉的準(zhǔn)雙向口,可以輸出高低電平。如果LED負(fù)載電流較大,可以把IO設(shè)置成推挽模式 ...

手機(jī)上搞的圖有點(diǎn)小,不知道為什么VCC與P5.5間總是存是電壓差等于電源電壓,那么說等于P5.5等于一直存在低電平了。而且輸出光耦一直閉合了。
1.png
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-19 20:23 來自觸屏版 | 顯示全部樓層
chxelc 發(fā)表于 2023-8-19 15:24
有電路圖嗎?IO默認(rèn)是弱上拉的準(zhǔn)雙向口,可以輸出高低電平。如果LED負(fù)載電流較大,可以把IO設(shè)置成推挽模式 ...

我這個(gè)輸出是用來控制后面的LED屏的。代替手動(dòng)按鍵?之前的貼有說。不直接驅(qū)動(dòng)負(fù)載,只需使按需輸出低電平。但這個(gè)一直是輸出低電平
回復(fù)

使用道具 舉報(bào)

ID:1080935 發(fā)表于 2023-8-19 22:55 | 顯示全部樓層
代碼有問題,不用按鍵,直接輸出高低電平延時(shí)看下就知道了。
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-20 01:31 來自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2023-8-19 18:09
你的代碼不論按鍵是否按下,P5.5都是 led=0;不知道為什么一直輸出了低電平怎么回事只能問自己了。

是這樣的,按一下剎車輸出低電平一會(huì),使光耦導(dǎo)通一下馬上又?jǐn)嚅_,松開剎車又輸出一會(huì)低電平,然后光耦又導(dǎo)通一下又?jǐn)嚅_,然后又再輸出一會(huì)低電平,使光耦再導(dǎo)通一下后又?jǐn)嚅_,然后循環(huán)回去剎車前…
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-8-20 06:46 | 顯示全部樓層
農(nóng)民阿伯 發(fā)表于 2023-8-20 01:31
是這樣的,按一下剎車輸出低電平一會(huì),使光耦導(dǎo)通一下馬上又?jǐn)嚅_,松開剎車又輸出一會(huì)低電平,然后光耦又 ...

你這個(gè)需求怪怪的:健按下輸出低電平一次,等健松開再輸出低電平兩次。
  1. /***********************等待剎車松開函數(shù)*****************************/
  2. void keyscan()
  3. {
  4.         static bit key_sign=0;       //按鍵狀態(tài)標(biāo)志
  5. //        while(key!= 0);
  6.         if(key == 0)                 //剎車
  7.         {                           
  8.                 Delay10ms();              //阻塞式延時(shí)消抖,10ms
  9.                 if(key == 0)              //如果真剎車,不是誤動(dòng)作
  10.                 {        
  11.                         key_sign=1;                   //確認(rèn)按鍵狀態(tài)
  12.                         led=0;                 //輸出低電平
  13.                         Delay200ms();          //輸出延時(shí)
  14.                         led=1;                 //按一下剎車輸出低電平一會(huì),使光耦導(dǎo)通一下馬上又?jǐn)嚅_
  15.                         while(!key);           //等待按鍵松開
  16.                 }
  17.         }
  18.         if(key == 1)                 //按鍵松開
  19.         {
  20.                 Delay10ms();              //等延時(shí)消抖,10ms
  21.                 if(key && key_sign)       //確認(rèn)是先按下后松開
  22.                 {
  23.                         key_sign=0;            //按鍵狀態(tài)標(biāo)志復(fù)位
  24.                         led=0;                 //輸出低電平
  25.                         Delay200ms();          //輸出延時(shí)
  26.                         led=1;                 //然后光耦又導(dǎo)通一下又?jǐn)嚅_
  27.                         Delay200ms();          //輸出延時(shí)
  28.                         led=0;                 //然后又再輸出一會(huì)低電平,使光耦再導(dǎo)通一下后又?jǐn)嚅_
  29.                         Delay200ms();          //輸出延時(shí)
  30.                         led=1;                 //斷開
  31.                 }
  32.         }
  33. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-21 00:31 | 顯示全部樓層
wulin 發(fā)表于 2023-8-20 06:46
你這個(gè)需求怪怪的:健按下輸出低電平一次,等健松開再輸出低電平兩次。

這個(gè)程序可以哦,終于有個(gè)實(shí)用的程序了。真太感謝了。不過屏幕反應(yīng)有點(diǎn)慢,還要調(diào)整下LED屏的顯示速度和程序的時(shí)間。
回復(fù)

使用道具 舉報(bào)

ID:427868 發(fā)表于 2023-8-21 08:10 | 顯示全部樓層
程序中有LED=0的執(zhí)行,但沒有LED=1的恢復(fù),那么只要執(zhí)行一次LED=0,就始終LED=0了。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2023-8-21 10:22 | 顯示全部樓層
可能性:
1、未給出1,或給的時(shí)間太短,來不及測(cè)量。
2、引腳配置不對(duì),出不了1。
3、被外部分硬件強(qiáng)制拉低了(例:通過一個(gè)較小的電阻接地)。
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-21 11:24 | 顯示全部樓層
劉佑紅 發(fā)表于 2023-8-21 08:10
程序中有LED=0的執(zhí)行,但沒有LED=1的恢復(fù),那么只要執(zhí)行一次LED=0,就始終LED=0了。

為什么執(zhí)行回復(fù)呢?他原來是高電平的,不會(huì)自動(dòng)回復(fù)到高電平的嗎?
回復(fù)

使用道具 舉報(bào)

ID:1087674 發(fā)表于 2023-8-21 11:26 | 顯示全部樓層
wulin 發(fā)表于 2023-8-20 06:46
你這個(gè)需求怪怪的:健按下輸出低電平一次,等健松開再輸出低電平兩次。

請(qǐng)教下:static bit key_sign=0;和if(key && key_sign)的具體意思是什么呢?為什么要用按鍵狀態(tài)標(biāo)志。語(yǔ)句和后面的led=1;,為什么要寫回復(fù)執(zhí)行高電平呢,原來是高電平的,不會(huì)自動(dòng)回復(fù)的嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 最新日韩欧美 | 国精产品一品二品国精在线观看 | 久久久免费 | 欧美精品一区二区三区蜜臀 | 日韩精品久久 | 久久久精品综合 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 日韩高清一区 | 日韩视频在线免费观看 | 国产精品久久久久aaaa九色 | 日韩精品一区二区三区久久 | 欧美一区二区三 | 超碰在线人人 | 全免一级毛片 | 欧美日韩看片 | 国产色网站 | 国产精品久久久久久久模特 | 亚洲视频一区二区三区 | av一区二区三区 | 别c我啊嗯国产av一毛片 | 午夜亚洲 | 中文字幕二区 | 在线色网| 国产精品视频一二三区 | 亚洲成人综合网站 | 精久久久久 | 欧美视频在线观看 | 羞羞的视频免费看 | 看亚洲a级一级毛片 | 久久69精品久久久久久久电影好 | 成人免费观看视频 | 国产一区二区观看 | 99re视频在线| 午夜色播 | 国产1区在线 | 亚州综合在线 | 日本一区二区三区在线观看 | 亚洲成人一区 | 精品久久中文 | 日韩一区二区三区精品 | 欧美一区二区激情三区 |