找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數(shù): 2605 | 評論數(shù): 13 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2023-8-19 09:36

正文摘要:

剎車程序一直沒弄好,測量了下輸出口P5.5,不知道為什么一直輸出了低電平。難道是這個STC15W204S單片機P5.5是默認是輸出低電平。剛學,不懂這些。 或是程序錯了? #include"intrins.h" #include <reg52.h ...

回復

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

請教下:static bit key_sign=0;和if(key && key_sign)的具體意思是什么呢?為什么要用按鍵狀態(tài)標志。語句和后面的led=1;,為什么要寫回復執(zhí)行高電平呢,原來是高電平的,不會自動回復的嗎?
ID:1087674 發(fā)表于 2023-8-21 11:24
劉佑紅 發(fā)表于 2023-8-21 08:10
程序中有LED=0的執(zhí)行,但沒有LED=1的恢復,那么只要執(zhí)行一次LED=0,就始終LED=0了。

為什么執(zhí)行回復呢?他原來是高電平的,不會自動回復到高電平的嗎?
ID:123289 發(fā)表于 2023-8-21 10:22
可能性:
1、未給出1,或給的時間太短,來不及測量。
2、引腳配置不對,出不了1。
3、被外部分硬件強制拉低了(例:通過一個較小的電阻接地)。
ID:427868 發(fā)表于 2023-8-21 08:10
程序中有LED=0的執(zhí)行,但沒有LED=1的恢復,那么只要執(zhí)行一次LED=0,就始終LED=0了。
ID:1087674 發(fā)表于 2023-8-21 00:31
wulin 發(fā)表于 2023-8-20 06:46
你這個需求怪怪的:健按下輸出低電平一次,等健松開再輸出低電平兩次。

這個程序可以哦,終于有個實用的程序了。真太感謝了。不過屏幕反應(yīng)有點慢,還要調(diào)整下LED屏的顯示速度和程序的時間。
ID:213173 發(fā)表于 2023-8-20 06:46
農(nóng)民阿伯 發(fā)表于 2023-8-20 01:31
是這樣的,按一下剎車輸出低電平一會,使光耦導通一下馬上又斷開,松開剎車又輸出一會低電平,然后光耦又 ...

你這個需求怪怪的:健按下輸出低電平一次,等健松開再輸出低電平兩次。
  1. /***********************等待剎車松開函數(shù)*****************************/
  2. void keyscan()
  3. {
  4.         static bit key_sign=0;       //按鍵狀態(tài)標志
  5. //        while(key!= 0);
  6.         if(key == 0)                 //剎車
  7.         {                           
  8.                 Delay10ms();              //阻塞式延時消抖,10ms
  9.                 if(key == 0)              //如果真剎車,不是誤動作
  10.                 {        
  11.                         key_sign=1;                   //確認按鍵狀態(tài)
  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;            //按鍵狀態(tài)標志復位
  24.                         led=0;                 //輸出低電平
  25.                         Delay200ms();          //輸出延時
  26.                         led=1;                 //然后光耦又導通一下又斷開
  27.                         Delay200ms();          //輸出延時
  28.                         led=0;                 //然后又再輸出一會低電平,使光耦再導通一下后又斷開
  29.                         Delay200ms();          //輸出延時
  30.                         led=1;                 //斷開
  31.                 }
  32.         }
  33. }
復制代碼



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

是這樣的,按一下剎車輸出低電平一會,使光耦導通一下馬上又斷開,松開剎車又輸出一會低電平,然后光耦又導通一下又斷開,然后又再輸出一會低電平,使光耦再導通一下后又斷開,然后循環(huán)回去剎車前…
ID:1080935 發(fā)表于 2023-8-19 22:55
代碼有問題,不用按鍵,直接輸出高低電平延時看下就知道了。
ID:1087674 發(fā)表于 2023-8-19 20:23
chxelc 發(fā)表于 2023-8-19 15:24
有電路圖嗎?IO默認是弱上拉的準雙向口,可以輸出高低電平。如果LED負載電流較大,可以把IO設(shè)置成推挽模式 ...

我這個輸出是用來控制后面的LED屏的。代替手動按鍵?之前的貼有說。不直接驅(qū)動負載,只需使按需輸出低電平。但這個一直是輸出低電平
ID:213173 發(fā)表于 2023-8-19 18:09
農(nóng)民阿伯 發(fā)表于 2023-8-19 10:01
沒按按鍵P5.5都一直輸出低電平,光耦一直閉合。P5.5是不是要加上拉電阻呢?這個芯片的這個I/O口也不知道默 ...

你的代碼不論按鍵是否按下,P5.5都是 led=0;不知道為什么一直輸出了低電平怎么回事只能問自己了。
ID:712097 發(fā)表于 2023-8-19 15:24
有電路圖嗎?IO默認是弱上拉的準雙向口,可以輸出高低電平。如果LED負載電流較大,可以把IO設(shè)置成推挽模式試一下。
ID:1087674 發(fā)表于 2023-8-19 10:01
沒按按鍵P5.5都一直輸出低電平,光耦一直閉合。P5.5是不是要加上拉電阻呢?這個芯片的這個I/O口也不知道默認怎樣的

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

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

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