標(biāo)題: 基于單片機(jī)計(jì)時(shí)器實(shí)現(xiàn)的按鍵長(zhǎng)按功能無(wú)法正常使用 [打印本頁(yè)]

作者: 李小蟲(chóng)    時(shí)間: 2024-2-20 14:07
標(biāo)題: 基于單片機(jī)計(jì)時(shí)器實(shí)現(xiàn)的按鍵長(zhǎng)按功能無(wú)法正常使用
我的設(shè)想是在按鍵按下時(shí)按鍵計(jì)時(shí)的標(biāo)志量清零,然后一秒加一,按鍵抬起時(shí)記錄時(shí)間數(shù)據(jù)判斷,超過(guò)兩秒即為長(zhǎng)按,執(zhí)行語(yǔ)句,但是代碼寫(xiě)出來(lái)按按鍵沒(méi)有用,下面是代碼段這個(gè)是按鍵讀取的單片機(jī)代碼,按下按鍵flag_key置1,松手變成2
  1. unsigned char read_key()
  2. {
  3.         unsigned char line,row,key_value=0;
  4.         switch (key_sate)
  5.         {
  6.                 case 1:
  7.                 {
  8.                         P33=0;
  9.                         P32=0;
  10.                         P42=1;
  11.                         P44=1;
  12.                         if(P42==0||P44==0)
  13.                         {
  14.                         Delay_ms(5);
  15.                         if(P42==0||P44==0)
  16.                                 {
  17.                                 key_sate=2;
  18.                                 flag_key=1;
  19.                                 }
  20.                         }
  21.                 }
  22.                         break;
  23.                 case 2:
  24.                 {
  25.                         if(P44==0)
  26.                                 line=1;
  27.                         if(P42==0)
  28.                                 line=2;
  29.                         P33=1;
  30.                         P32=1;
  31.                         P42=0;
  32.                         P44=0;
  33.                         if(P33==0)
  34.                                 row=4;
  35.                         if(P32==0)
  36.                                 row=3;
  37.                         key_value=row*10+line;
  38.                         key_sate=3;
  39.                 }
  40.                         break;
  41.                 case 3:
  42.                 {
  43.                         if(P32==1&&P33==1&&P42==0&&P44==0)
  44.                         {
  45.                                         key_sate=1;
  46.                                         flag_key=2;
  47.                         }
  48.                 }
  49.                         break;
  50.         }
  51.         return key_value;
  52. }
復(fù)制代碼
然后是定時(shí)器計(jì)時(shí)的代碼,中間有幾句是讀取555頻率的
  1. void timer1_ms() interrupt 3
  2. {
  3.         time_1ms++;
  4.         if(flag_key==1)
  5.         {
  6.                 key_time=0;
  7.                 key_time_1s=0;
  8.         }
  9.         if(time_1ms>=1000)
  10.         {
  11.                 frequency_ne555=count_ne555;
  12.                 count_ne555=0;
  13.                 time_1s++;
  14.                 key_time_1s++;
  15.                 time_1ms=0;
  16.         }
  17.         if(flag_key==2)
  18.         {
  19.                 key_time=key_time_1s;
  20.         }
  21. }
復(fù)制代碼
最后就是判斷長(zhǎng)按的,然后執(zhí)行的代碼段
  1. void mod_re_time()
  2. {
  3.         unsigned char i,time_h_1,time_m_1,count_1;
  4.         time_h_1=time_h;
  5.         time_m_1=time_m;
  6.         count_1=count;
  7.         if(key==31)
  8.         {
  9.                 mod_re++;
  10.                 if(mod_re>=4)
  11.                         mod_re=1;
  12.         }
  13.         if(key==32)
  14.         {
  15.                 if(key_time>=2)
  16.                 {
  17.                 key=0;
  18.                 count=0;
  19.                 key_time=0;
  20.                 sum_tem=0;
  21.                 sum_hum=0;
  22.                 ave_tem=0;
  23.                 ave_hum=0;
  24.                 max_tem=0;
  25.                 max_hum=0;
  26.                 key_time_1s=0;
  27.                 }
  28.         }
復(fù)制代碼

屏幕截圖 2024-02-20 202359.png (39.87 KB, 下載次數(shù): 94)

按鍵接線

按鍵接線

作者: tyrl800    時(shí)間: 2024-2-20 17:11
鍵盤(pán)接口電路先畫(huà)出來(lái)才能檢查程序
作者: wulin    時(shí)間: 2024-2-20 19:17
這個(gè)示例里有你想要的內(nèi)容
4位冒號(hào)數(shù)碼管時(shí)鐘 單鍵調(diào)時(shí) 仿真.rar (128.22 KB, 下載次數(shù): 19)


作者: 李小蟲(chóng)    時(shí)間: 2024-2-20 20:41
tyrl800 發(fā)表于 2024-2-20 17:11
鍵盤(pán)接口電路先畫(huà)出來(lái)才能檢查程序

補(bǔ)上了,謝謝提醒了




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