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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4892|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機獨立鍵盤控制動態(tài)數(shù)碼管顯示 程序代碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:511857 發(fā)表于 2019-9-30 10:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
注意:此程序需要用到單片機74H138模塊,才能通過獨立鍵盤控制動態(tài)數(shù)碼管

  1. #include<reg52.h> //此文件中定義了單片機的一些特殊功能
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit k1=P1^0; //定義 P10 口是 k1
  5. sbit k2=P1^1; //定義 P11 口是 k2
  6. sbit k3=P1^2; //定義 P12 口是 k3
  7. sbit k4=P1^3; //定義 P13 口是 k4
  8. sbit k5=P1^4; //定義 P14 口是 k5
  9. sbit k6=P1^5; //定義 P15 口是 k6
  10. sbit k7=P1^6; //定義 P16 口是 k7
  11. sbit k8=P1^7; //定義 P17 口是 k8

  12. sbit LSA=P0^0;
  13. sbit LSB=P0^1;
  14. sbit LSC=P0^2;
  15. uchar code smgduan[17]={0x06,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  16. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯 示0~F 的值
  17. void delay(uint i)
  18. {
  19. while(i--);
  20. }

  21. void keypros1()
  22. {
  23. if(k1==0) //檢測按鍵 K1 是否按下
  24. {
  25. delay(1000); //消除抖動 一般大約 10ms
  26. if(k1==0) //再次判斷按鍵是否按下
  27. {
  28. LSA=0;LSB=0;LSC=0;//顯示第 0 位;
  29. }
  30. while(!k1); //檢測按鍵是否松開
  31. }
  32. }
  33. void keypros2()
  34. {
  35. if(k2==0) //檢測按鍵 K2 是否按下
  36. {
  37. delay(1000); //消除抖動 一般大約 1ms
  38. if(k2==0) //再次判斷按鍵是否按下
  39. {
  40. LSA=1;LSB=0;LSC=0;//顯示第 1 位
  41. }
  42. while(!k2); //檢測按鍵是否松開
  43. }
  44. }
  45. void keypros3()
  46. {
  47. if(k3==0) //檢測按鍵 K3 是否按下
  48. {
  49. delay(1000); //消除抖動 一般大約 1ms
  50. if(k3==0) //再次判斷按鍵是否按下
  51. {
  52. LSA=0;LSB=1;LSC=0;//顯示第 2 位
  53. }
  54. while(!k3); //檢測按鍵是否松開
  55. }
  56. }
  57. void keypros4()
  58. {
  59. if(k4==0) //檢測按鍵 K4 是否按下
  60. {
  61. delay(1000); //消除抖動 一般大約 1ms
  62. if(k4==0) //再次判斷按鍵是否按下
  63. {
  64. LSA=1;LSB=1;LSC=0; //顯示第 3 位
  65. }
  66. while(!k4); //檢測按鍵是否松開
  67. }
  68. }
  69. void keypros5()
  70. {
  71. if(k5==0) //檢測按鍵 K5 是否按下
  72. {
  73. delay(1000); //消除抖動 一般大約 1ms
  74. if(k5==0) //再次判斷按鍵是否按下
  75. {
  76. LSA=0;LSB=0;LSC=1;//顯示第 4 位
  77. }
  78. while(!k5); //檢測按鍵是否松開
  79. }
  80. }
  81. void keypros6()
  82. {
  83. if(k6==0) //檢測按鍵 K6 是否按下
  84. {
  85. delay(1000); //消除抖動 一般大約 1ms
  86. if(k6==0) //再次判斷按鍵是否按下
  87. {
  88. LSA=1;LSB=0;LSC=1;//顯示第 5 位
  89. }
  90. while(!k6); //檢測按鍵是否松開
  91. }
  92. }
  93. void keypros7()
  94. {
  95. if(k7==0) //檢測按鍵 K7 是否按下
  96. {
  97. delay(1000); //消除抖動 一般大約 1ms
  98. if(k7==0) //再次判斷按鍵是否按下
  99. {
  100. LSA=0;LSB=1;LSC=1;//顯示第 6 位
  101. }
  102. while(!k7); //檢測按鍵是否松開
  103. }
  104. }
  105. void keypros8()
  106. {
  107. if(k8==0) //檢測按鍵 K8 是否按下
  108. {
  109. delay(1000); //消除抖動 一般大約 1ms
  110. if(k8==0) //再次判斷按鍵是否按下
  111. {
  112. LSA=1;LSB=1;LSC=1;//顯示第 7 位
  113. }
  114. while(!k8); //檢測按鍵是否松開
  115. }
  116. }


  117. void DigDisplay()
  118. {
  119. uchar i;
  120. for(i=0;i<8;i++)
  121. {
  122. switch(i) //位選,選擇點亮的數(shù)碼管,
  123. {
  124. case(0):
  125. keypros1();
  126. break;//顯示第 0 位
  127. case(1):
  128. keypros2();
  129. break;//顯示第 1 位
  130. case(2):
  131. keypros3();
  132. break;//顯示第 2 位
  133. case(3):
  134. keypros4();
  135. break;//顯示第 3 位
  136. case(4):
  137. keypros5();
  138. break;//顯示第 4 位
  139. case(5):
  140. keypros6();
  141. break;//顯示第 5 位
  142. case(6):
  143. keypros7();
  144. break;//顯示第 6 位
  145. case(7):
  146. keypros8();
  147. break;//顯示第 7 位
  148. }
  149. P2=smgduan[i];//發(fā)送段碼
  150. delay(10000); //間隔一段時間掃描
  151. P2=0x00;//消隱
  152. }
  153. }
  154. void main()
  155. {
  156. while(1)
  157. {
  158. DigDisplay(); //數(shù)碼管顯示函數(shù)
  159. }
  160. }


復制代碼

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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