找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9534|回復: 1
收起左側(cè)

51單片機4路搶答器的原理及C語言源程序

[復制鏈接]
ID:51773 發(fā)表于 2013-7-19 02:22 | 顯示全部樓層 |閱讀模式
 單片機,當然不只是51,51單片機是一種稍通用型的單片機,通過I/O口的定義,可以實現(xiàn)多種控制功能。
搶答器,原理:如果為四路,當其中任一路控下后,其他幾路即失效,結(jié)果為第一次按下的,可以用數(shù)碼管或是LED燈來顯示,當然這里只是講原理與編程,具體可以根據(jù)搶答器路數(shù)及顯示方式更改程序即可。
源程序如下:
  1. <div class="blockcode"><blockquote>/*用的是AT89S52開發(fā)板,獨立按鍵接口如下,就用這四路。先按下的用LED燈來顯示,對應(yīng)第一個到第四個LED燈,其他再按無效,如果想再次實現(xiàn),可手動復位單片機*/
  2. #include <reg52.h>
  3. sbit key1=P3^0;     //定義按鍵,根據(jù)需要連接線路,如獨立按鍵(4路)
  4. sbit key2=P3^1;
  5. sbit key3=P3^2;
  6. sbit key4=P3^3;
  7. /*void delay(unsigned int cnt)       //如果有抖動或是干擾,可以用個小延時去抖
  8. {
  9. while(--cnt);
  10. }*/
  11. void main()
  12. {
  13. bit Flag;
  14. while(!Flag)
  15. {
  16. if(!key1)
  17. {
  18. P1=0xFE;
  19. Flag=1;
  20. }               
  21. /*LED燈來顯示按下的鍵,第一個燈,我這里是8位LED燈,即:0111 1111,反過來讀數(shù)為:1111 1110      即:0xFE *,P1口對應(yīng)LED燈,給P1賦值*/
  22.    else if(!key2)
  23. {
  24. P1=0xFD;
  25. Flag=1;
  26. }         
  27. //第二個燈亮   
  28. else if(!key3)
  29. {P1=0xFB;Flag=1;}        
  30. //第三個燈亮   
  31. else if(!key4)
  32. {
  33. P1=0xF7;
  34. Flag=1;
  35. }      
  36. //第四個燈亮,意味著第四路首先按下
  37. }
  38. while(Flag);         //可以再加個I/O,控制Flag,這樣初始化,繼續(xù)搶答,還可以設(shè)計按下時的聲音
  39. }
復制代碼
回復

使用道具 舉報

ID:110278 發(fā)表于 2019-11-19 13:59 | 顯示全部樓層
程序不齊。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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