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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9787|回復: 3
打印 上一主題 下一主題
收起左側

關于單片機按鍵Key1,每按一次數碼管加一遇到的問題,請大神老師指導

[復制鏈接]
跳轉到指定樓層
樓主
ID:233997 發表于 2017-11-17 23:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit LSA=P2^2;
  5. sbit LSB=P2^3;
  6. sbit LSC=P2^4;

  7. sbit Key1=P3^1;
  8. sbit Key2=P3^0;
  9. sbit Key3=P3^2;
  10. sbit Key4=P3^3;

  11. uchar num,num1,shi,ge;
  12. uint z,i,j;

  13. uchar code smgdisplay[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  14. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  15. void delayms(uint z);

  16. void keydown()
  17. {
  18.         if(Key1==0)
  19.         {
  20.                 delayms(5);
  21.                 if(Key1==0)     //再次確認按鍵按下
  22.                 {
  23.                         num++;
  24.                         if(num==60)
  25.                         num=0;
  26.                          while(!Key1);  //此處等待按鍵釋放 ,但不加該語句,程序依然能夠實現。這是為什么呢?
  27.                 }
  28.                         

  29.         }

  30. }   //關于該處語句的理解如此:按鍵按下松開,數碼管數值加一。開發板上的現象是按下數碼管不顯示任何數字,松開數值加一。

  31. void display(uchar num1)
  32. {
  33.         shi=num1/10;
  34.         ge=num1%10;
  35.         
  36.         LSA=1;
  37.         LSB=0;
  38.         LSC=0;
  39.         
  40.         P0=smgdisplay[shi];
  41.         delayms(10);
  42.         P0=0X00;

  43.         LSA=0;
  44.         LSB=0;
  45.         LSC=0;
  46.         
  47.         P0=smgdisplay[ge];
  48.         delayms(10);
  49.         P0=0X00;
  50.         
  51.                

  52. }

  53. void main()
  54. {
  55.         while(1)
  56.         {
  57.                 keydown();
  58.                 display(num);
  59.         }

  60.                

  61. }

  62. void delayms(uint z)
  63. {
  64.         for(i=z;i>0;i--)
  65.         for(j=110;j>0;j--);

  66. }




復制代碼

HC6800-ES V2.0 新版.pdf

759.71 KB, 下載次數: 7

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:149988 發表于 2017-11-18 04:35 | 只看該作者

RE: 關于按鍵Key1,每按一次數碼管加一遇到的問題,請大神老師指導

while(!Key1);是將鍵值取反,如果手已松開,鍵值等于1,取反后,鍵值等于0,while(0);跳出大循環,執行后面的程序。如果此時手沒有松開,鍵值等于0,取反后,鍵值等于1,while(1);繼續進行大循環,什么時候鍵值等于1,取反后,鍵值等于0,那時候跳出大循環。這也是為什么手松開數碼管才顯示加1的原因。

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:233997 發表于 2017-11-18 20:39 | 只看該作者
不倒翁.WZT 發表于 2017-11-18 04:35
while(!Key1);是將鍵值取反,如果手已松開,鍵值等于1,取反后,鍵值等于0,while(0);跳出大循環,執行后 ...

是,謝謝。但如果不加這一句程序依然能夠實現,不明白為什么
回復

使用道具 舉報

地板
ID:245899 發表于 2017-11-21 13:50 | 只看該作者
bai850107 發表于 2017-11-18 20:39
是,謝謝。但如果不加這一句程序依然能夠實現,不明白為什么

不加這一句就沒有松手檢測,那么按下去數碼管就會加一,但如果不加這句按鍵有抖動數碼管可能會連續加上
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91麻豆蜜桃一区二区三区 | 黄色大片毛片 | 国产在线精品一区二区 | 成人夜晚看av | 九九精品在线 | 国产精品一区二区三区四区五区 | 欧美一级片在线看 | 在线观看亚洲精品视频 | 国产精品999| 国产精品欧美日韩 | 久久久久久女 | 日韩在线播放网址 | 欧美一二三区 | 国产黄色免费网站 | 日韩在线播放第一页 | 久久久久久亚洲精品 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 欧美一区二区三区在线播放 | 欧美日韩国产在线观看 | 精品成人佐山爱一区二区 | 在线中文视频 | 天天干夜夜操 | 99精品国产一区二区三区 | 婷婷综合在线 | 好姑娘影视在线观看高清 | 亚洲精品日韩一区二区电影 | 久久国产99 | 亚洲一区二区不卡在线观看 | 99re6热在线精品视频播放 | 日本亚洲一区二区 | 久热国产在线 | 亚洲精品乱码久久久久久按摩观 | 在线国产中文字幕 | 91视频进入 | 亚洲欧美高清 | 高清视频一区二区三区 | 51ⅴ精品国产91久久久久久 | 久久综合伊人 | 春色av| 免费小视频在线观看 | 91精品在线播放 |