当前位置:   article > 正文

单片机设计_8路抢答器(AT89C51)

8路抢答器

想要更多项目私wo!!!

一、电路设计

        此电路由AT89C51最小系统、四位数码管、蜂鸣器电路和按键模块组成。

运行原理:

        该抢答器电路可同时进行八路优先抢答。按键按下后,蜂鸣器发声,同时数码管
显示优先抢答者的号码,抢答成功后,再按按键,显示不会改变,除非按主持人键。
复位后,显示清零,可继续抢答。

二、运行效果图

 

三、部分代码

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. //按键扫描,判断哪个人抢答
  5. void key()
  6. {
  7. uint n, flag = 1;
  8. n=2200;
  9. display(n);
  10. keep=1;
  11. if(key2==0)
  12. {
  13. delay(5);
  14. if(key2==0)
  15. {
  16. while(1)
  17. {
  18. n=2202;
  19. display(n);
  20. if(flag)
  21. {
  22. keep=0; //开启蜂鸣器
  23. delay(80);
  24. keep=1; // 关闭蜂鸣器
  25. delay(80);
  26. flag = 0;
  27. }
  28. if(key9==0)
  29. {
  30. delay(5);
  31. if(key9==0)
  32. {
  33. keep=1;
  34. n=2200;
  35. display(n);
  36. while(1)return;
  37. }
  38. while(!key9);
  39. delay(5);
  40. while(1);
  41. }
  42. }
  43. }
  44. while(!key2);
  45. delay(5);
  46. }
  47. if(key3==0)
  48. {
  49. delay(5);
  50. if(key3==0)
  51. {
  52. while(1)
  53. {
  54. n=2203;
  55. display(n);
  56. if(flag)
  57. {
  58. keep=0; //开启蜂鸣器
  59. delay(80);
  60. keep=1; // 关闭蜂鸣器
  61. delay(80);
  62. flag = 0;
  63. }
  64. if(key9==0)
  65. {
  66. delay(5);
  67. if(key9==0)
  68. {
  69. keep=1;
  70. n=2200;
  71. display(n);
  72. while(1)return;
  73. }
  74. while(!key9);
  75. delay(5);
  76. while(1);
  77. }
  78. }
  79. }
  80. while(!key3);
  81. delay(5);
  82. }
  83. if(key4==0)
  84. {
  85. delay(5);
  86. if(key4==0)
  87. {
  88. while(1)
  89. {
  90. n=2204;
  91. display(n);
  92. if(flag)
  93. {
  94. keep=0; //开启蜂鸣器
  95. delay(80);
  96. keep=1; // 关闭蜂鸣器
  97. delay(80);
  98. flag = 0;
  99. }
  100. if(key9==0)
  101. {
  102. delay(5);
  103. if(key9==0)
  104. {
  105. keep=1;
  106. n=2200;
  107. display(n);
  108. while(1)return;
  109. }
  110. while(!key9);
  111. delay(5);
  112. while(1);
  113. }
  114. }
  115. }
  116. while(!key4);
  117. delay(5);
  118. }
  119. if(key5==0)
  120. {
  121. delay(5);
  122. if(key5==0)
  123. {
  124. while(1)
  125. {
  126. n=2205;
  127. display(n);
  128. if(flag)
  129. {
  130. keep=0; //开启蜂鸣器
  131. delay(80);
  132. keep=1; // 关闭蜂鸣器
  133. delay(80);
  134. flag = 0;
  135. }
  136. if(key9==0)
  137. {
  138. delay(5);
  139. if(key9==0)
  140. {
  141. keep=1;
  142. n=2200;
  143. display(n);
  144. while(1)return;
  145. }
  146. while(!key9);
  147. delay(5);
  148. while(1);
  149. }
  150. }
  151. }
  152. while(!key5);
  153. delay(5);
  154. }
  155. if(key6==0)
  156. {
  157. delay(5);
  158. if(key6==0)
  159. {
  160. while(1)
  161. {
  162. n=2206;
  163. display(n);
  164. if(flag)
  165. {
  166. keep=0; //开启蜂鸣器
  167. delay(80);
  168. keep=1; // 关闭蜂鸣器
  169. delay(80);
  170. flag = 0;
  171. }
  172. if(key9==0)
  173. {
  174. delay(5);
  175. if(key9==0)
  176. {
  177. keep=1;
  178. n=2200;
  179. display(n);
  180. while(1)return;
  181. }
  182. while(!key9);
  183. delay(5);
  184. while(1);
  185. }
  186. }
  187. }
  188. while(!key6);
  189. delay(5);
  190. }
  191. if(key7==0)
  192. {
  193. delay(5);
  194. if(key7==0)
  195. {
  196. while(1)
  197. {
  198. n=2207;
  199. display(n);
  200. if(flag)
  201. {
  202. keep=0; //开启蜂鸣器
  203. delay(80);
  204. keep=1; // 关闭蜂鸣器
  205. delay(80);
  206. flag = 0;
  207. }
  208. if(key9==0)
  209. {
  210. delay(5);
  211. if(key9==0)
  212. {
  213. keep=1;
  214. n=2200;
  215. display(n);
  216. while(1)return;
  217. }
  218. while(!key9);
  219. delay(5);
  220. while(1);
  221. }
  222. }
  223. }
  224. while(!key7);
  225. delay(5);
  226. }
  227. if(key8==0)
  228. {
  229. delay(5);
  230. if(key8==0)
  231. {
  232. while(1)
  233. {
  234. n=2208;
  235. display(n);
  236. if(flag)
  237. {
  238. keep=0; //开启蜂鸣器
  239. delay(80);
  240. keep=1; // 关闭蜂鸣器
  241. delay(80);
  242. flag = 0;
  243. }
  244. if(key9==0)
  245. {
  246. delay(5);
  247. if(key9==0)
  248. {
  249. keep=1;
  250. n=2200;
  251. display(n);
  252. while(1)return;
  253. }
  254. while(!key9);
  255. delay(5);
  256. while(1);
  257. }
  258. }
  259. }
  260. while(!key8);
  261. delay(5);
  262. }
  263. }
  264. // 主函数
  265. void main()
  266. {
  267. while(1)
  268. {
  269. key(); // 判断按键
  270. }
  271. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/164338
推荐阅读
相关标签
  

闽ICP备14008679号