欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 這種按一下亮,再按一下滅的單片機程序,大家寫過么? [打印本頁]

作者: myemcu    時間: 2022-7-17 09:16
標題: 這種按一下亮,再按一下滅的單片機程序,大家寫過么?
參考圖片。

51hei截圖20220717091605.png (11.8 KB, 下載次數: 124)

51hei截圖20220717091605.png

作者: xianfajushi    時間: 2022-7-17 11:06
這樣電路無法實現,當低電平時點亮則再無法檢測按鍵操作,高電平時是可以檢測按鍵按下操作。
作者: myemcu    時間: 2022-7-17 11:40
xianfajushi 發表于 2022-7-17 11:06
這樣電路無法實現,當低電平時點亮則再無法檢測按鍵操作,高電平時是可以檢測按鍵按下操作。

編程實現呀,如果純硬件的話,還要單片機作甚。。
作者: hhdsdy    時間: 2022-7-17 12:21
myemcu 發表于 2022-7-17 11:40
編程實現呀,如果純硬件的話,還要單片機作甚。。

單片機是可以編程,但是還是得符合單片機的工作要求啊,沙發都告訴你不行了還爭辯
作者: myemcu    時間: 2022-7-17 12:25
hhdsdy 發表于 2022-7-17 12:21
單片機是可以編程,但是還是得符合單片機的工作要求啊,沙發都告訴你不行了還爭辯

人家項目已經量產了,就是采用的這種方案。。
作者: 雪玉寐影    時間: 2022-7-17 12:30
扔掉單片機,按鈕改成自鎖按鈕!
作者: mtdzok    時間: 2022-7-17 12:36
編程完全可以實現,要加限流電阻,每間隔10mS置端口高電平檢測按鍵,有鍵按下改變狀態,無按鍵恢復狀態。就是在發光管關閉的瞬間檢測按鍵狀態
作者: myemcu    時間: 2022-7-17 12:47
雪玉寐影 發表于 2022-7-17 12:30
扔掉單片機,按鈕改成自鎖按鈕!

項目要具有可擴展需求,比如再加個閃爍狀態啥的。
作者: myemcu    時間: 2022-7-17 12:55
mtdzok 發表于 2022-7-17 12:36
編程完全可以實現,要加限流電阻,每間隔10mS置端口高電平檢測按鍵,有鍵按下改變狀態,無按鍵恢復狀態。就 ...

還要用內部Timer?
作者: zhxiufan    時間: 2022-7-17 13:09
這個電路只能實現按下亮,抬起滅。要實現按一下亮再按一下滅,無法實現。除非你的LED和按鍵分開用不同的IO口。
作者: daemondong    時間: 2022-7-17 13:22
雪玉寐影 發表于 2022-7-17 12:30
扔掉單片機,按鈕改成自鎖按鈕!

這個才是正解,怎么方便怎么來。
作者: wulin    時間: 2022-7-17 13:30
myemcu 發表于 2022-7-17 12:25
人家項目已經量產了,就是采用的這種方案。。

沙發說得沒錯。一個IO口復用于LED和按鍵當然可以,但要有硬件條件支持的。樓主這個圖是有缺陷的,有損毀IO口的風險。




作者: myemcu    時間: 2022-7-17 13:53
wulin 發表于 2022-7-17 13:30
沙發說得沒錯。一個IO口復用于LED和按鍵當然可以,但要有硬件條件支持的。樓主這個圖是有缺陷的,有損毀I ...

Proteus不用過多考慮電氣特性,僅考慮邏輯實現即可,就像單片機最小系統一樣,都不用外加復位和時鐘啥的,直接設置就行。
作者: mtdzok    時間: 2022-7-17 14:49
myemcu 發表于 2022-7-17 12:55
還要用內部Timer?

用不用定時器隨意,本身按鍵就要加防抖,利用防抖延時即可,定時不要求準,太短了沒必要,太長了不易檢測到按鍵。實際就是發光管亮時是間斷顯示,是肉眼看不出來的,在熄滅瞬間檢測按鍵。在邏輯上和電器參數上都是沒有問題的。
作者: myemcu    時間: 2022-7-17 16:43
daemondong 發表于 2022-7-17 13:22
這個才是正解,怎么方便怎么來。

見8樓,老板會讓你這么干?
作者: wulin    時間: 2022-7-17 17:16
myemcu 發表于 2022-7-17 13:53
Proteus不用過多考慮電氣特性,僅考慮邏輯實現即可,就像單片機最小系統一樣,都不用外加復位和時鐘啥的 ...

不考慮其它因素,此功能很容易實現。

  1. #include<reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;

  4. sbit key=P3^7;

  5. bit LED;

  6. void Delay_ms(uint t)
  7. {
  8.         uint i,j;
  9.         for(i=t;i>0;i--)
  10.                 for(j=120;j>0;j--);
  11. }

  12. void main()
  13. {
  14.         LED=key;
  15.         while(1)
  16.         {
  17.                 key=1;
  18.                 if(!key)
  19.                 {
  20.                         LED=~LED;
  21.                         while(!key);
  22.                 }
  23.                 key=LED;
  24.                 Delay_ms(1);
  25.         }
  26. }

復制代碼




作者: myemcu    時間: 2022-7-17 17:28
wulin 發表于 2022-7-17 17:16
不考慮其它因素,此功能很容易實現。

判鍵不能采用阻塞方式。
作者: wulin    時間: 2022-7-17 17:40
myemcu 發表于 2022-7-17 17:28
判鍵不能采用阻塞方式。

示例只是給你一個邏輯關系的驗證,按鍵處理方式請自行補課。
作者: 溫xyz    時間: 2022-7-17 17:45
當LED這時,IO口低電平,你如何檢測開關動作?再說你的LED直接接IO口中,會燒掉單片機的。
作者: myemcu    時間: 2022-7-17 17:50
wulin 發表于 2022-7-17 17:40
示例只是給你一個邏輯關系的驗證,按鍵處理方式請自行補課。

阻塞和非阻塞的區別還是很大滴。。
作者: myemcu    時間: 2022-7-17 17:54
溫xyz 發表于 2022-7-17 17:45
當LED這時,IO口低電平,你如何檢測開關動作?再說你的LED直接接IO口中,會燒掉單片機的。

Proteus純屬邏輯驗證,邏輯通過后,到了電氣設計環節時,該加啥就加啥。
作者: hhdsdy    時間: 2022-7-17 19:33
myemcu 發表于 2022-7-17 17:54
Proteus純屬邏輯驗證,邏輯通過后,到了電氣設計環節時,該加啥就加啥。

不是我想杠,畫一個電阻這么難嗎?自己1樓就直接說了“參考圖片”,大家看圖的接法說是不行有什么錯?(很多初學者還是會忘了要加限流電阻)還說了已經量產了

作者: myemcu    時間: 2022-7-17 22:42
hhdsdy 發表于 2022-7-17 19:33
不是我想杠,畫一個電阻這么難嗎?自己1樓就直接說了“參考圖片”,大家看圖的接法說是不行有什么錯?( ...

Proteus實沒必要畫這個,又不是非要AD制板,那么機械作甚。
作者: 00云夢澤00    時間: 2022-7-17 23:11
可以實現這個功能 就是不斷的改變改變這個引腳的輸入輸出狀態  輸入時判斷引腳狀態 輸出時實際是脈沖驅動LED  圖是一回事 限流電阻是要加的
作者: lkc8210    時間: 2022-7-17 23:22
myemcu 發表于 2022-7-17 17:50
阻塞和非阻塞的區別還是很大滴。。

非阻塞





作者: myemcu    時間: 2022-7-18 08:42
我也想了一種:
  1. while(1)
  2. {
  3.         if(KY)
  4.         {
  5.    delay(1000);
  6.          if(!KY)
  7.    {
  8.     k_flag=1;
  9.                 d_Flag++;
  10.                 if(d_Flag>2)
  11.                  d_Flag=0;       
  12.    }          
  13.   }
  14.        
  15.         if(k_flag)       
  16.         {
  17.    k_flag=0;
  18.        
  19.          switch(d_Flag)
  20.          {
  21.                 case 0: D1= 0; break;
  22.                 case 1: D1 =1; break;
  23.                 case 2: for(i=0;i<6;i++)
  24.                         {
  25.                                                         D1 = !D1;
  26.                                                         delay(20000);
  27.                                                 }
  28.                 default:break;
  29.          }
  30.   }        
  31. }         
復制代碼

作者: 君工創    時間: 2022-7-18 08:55
用定時器中斷脈沖驅動這個IO口,在高電平期間檢測這個端口,如果是低電平,就是按下了按鍵。每次取反一次輸出狀態。
作者: zhangxl    時間: 2022-7-18 09:10
myemcu 發表于 2022-7-17 11:40
編程實現呀,如果純硬件的話,還要單片機作甚。。

他這個圖,輸入和輸出同一個引腳怎么實現啊
作者: myemcu    時間: 2022-7-18 11:23
zhangxl 發表于 2022-7-18 09:10
他這個圖,輸入和輸出同一個引腳怎么實現啊

參考26樓。
作者: jizhongbiao    時間: 2022-7-18 11:53
定時檢測按鍵,剩下時間驅動led。分時執行就可以了,利用led的視覺殘留效應可以做到。
作者: xianfajushi    時間: 2022-7-19 14:11
myemcu 發表于 2022-7-17 11:40
編程實現呀,如果純硬件的話,還要單片機作甚。。

那反問一下,難道提問之前就沒在本論壇搜索過有這樣的提問和例子?去看看這樣例子是哪年的了!
這樣電路無法實現,當低電平時點亮則再無法檢測按鍵操作,高電平時是可以檢測按鍵按下操作。這樣的拋磚引玉反問看不懂也罷了。
作者: 名字不是重點    時間: 2022-7-19 16:17
電路做些修改,軟件再規劃一下可以實現你說的功能,

基本原則樓上的都 說了,分時運行LED驅動和按鍵檢測。
作者: myemcu    時間: 2022-7-19 17:17
名字不是重點 發表于 2022-7-19 16:17
電路做些修改,軟件再規劃一下可以實現你說的功能,

基本原則樓上的都 說了,分時運行LED驅動和按鍵檢測 ...

我用的不是這種方法。
作者: 大漠落日    時間: 2022-7-20 09:06
分時驅動的方法可以實現這種功能




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1