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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2416|回復: 13
收起左側

單片機一直輸出低電平怎么回事

[復制鏈接]
ID:1087674 發表于 2023-8-19 09:36 來自手機 | 顯示全部樓層 |閱讀模式
剎車程序一直沒弄好,測量了下輸出口P5.5,不知道為什么一直輸出了低電平。難道是這個STC15W204S單片機P5.5是默認是輸出低電平。剛學,不懂這些。
或是程序錯了?
#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延時函數*****************************/
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延時函數*****************************/
void Delay10ms()                //@12.000MHz
{
        unsigned char data i, j;

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

是這樣的,按一下剎車輸出低電平一會,使光耦導通一下馬上又斷開,松開剎車又輸出一會低電平,然后光耦又導通一下又斷開,然后又再輸出一會低電平,使光耦再導通一下后又斷開,然后循環回去剎車前…
回復

使用道具 舉報

ID:213173 發表于 2023-8-20 06:46 | 顯示全部樓層
農民阿伯 發表于 2023-8-20 01:31
是這樣的,按一下剎車輸出低電平一會,使光耦導通一下馬上又斷開,松開剎車又輸出一會低電平,然后光耦又 ...

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



回復

使用道具 舉報

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

這個程序可以哦,終于有個實用的程序了。真太感謝了。不過屏幕反應有點慢,還要調整下LED屏的顯示速度和程序的時間。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

為什么執行回復呢?他原來是高電平的,不會自動回復到高電平的嗎?
回復

使用道具 舉報

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

請教下:static bit key_sign=0;和if(key && key_sign)的具體意思是什么呢?為什么要用按鍵狀態標志。語句和后面的led=1;,為什么要寫回復執行高電平呢,原來是高電平的,不會自動回復的嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区视频在线 | 久草精品视频 | 欧美精品欧美精品系列 | 97精品超碰一区二区三区 | 视频在线一区二区 | 欧美一级黄色网 | 日韩免费av | 中文字幕在线视频免费观看 | 夜夜干夜夜操 | 999久久久久久久久6666 | 国产精品久久久久久久久久免费看 | 国产精品久久久久久久久久久免费看 | 欧美在线观看一区二区 | 国产一区三区视频 | 亚洲一区视频在线 | 久久精品国产99国产 | 久久av一区二区 | 日产精品久久久一区二区福利 | 精品视频一区二区 | av资源中文在线天堂 | 国产精品av久久久久久久久久 | 91精品国产综合久久久久久丝袜 | 成人在线中文字幕 | 精品一区二区三区在线观看 | 欧美精品久久久久 | 天天爽夜夜骑 | 四虎成人在线播放 | 亚洲一区二区三区四区在线观看 | 欧美性网 | 色综合一区二区 | 成人妇女免费播放久久久 | 日韩久久综合网 | 影音先锋成人资源 | 亚洲欧美成人影院 | 99在线国产| 成人免费看片网 | 久久另类| 久久精品久久久 | 久久男人 | 一区二区福利视频 | 在线免费观看成人 |