單片機三路搶答器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
搶答器.png (48.05 KB, 下載次數: 66)
下載附件
2018-12-7 21:41 上傳
0.png (9.78 KB, 下載次數: 66)
下載附件
2018-12-8 01:49 上傳
單片機源程序如下:
- /*****************
- 三路搶答器
- ********************/
- #include "reg51.h"
- sbit led1=P2^0; //指示燈
- sbit led2=P2^1;
- sbit led3=P2^2;
- sbit key1=P2^3;//按鍵
- sbit key2=P2^4;
- sbit key3=P2^5;
- sbit key4=P3^2;
- int n=0;
- void delayms(int c)
- {
- char a,b;
- for(;c>0;c--)
- for(a=142;a>0;a--)
- for(b=2;b>0;b--);
- }
- void Int0Init()
- {
- IT0=1;
- EX0=1;
- EA=1;
- }
- void key_scan()
- {
- if(key1==0)
- {
- delayms(20);
- if(key1==0)
- {
- key4=1;
- delayms(20);
- n=1;
- key4=0;
- }
- }
- if(key2==0)
- {
- delayms(20);
- if(key2==0)
- {
- key4=1;
- delayms(20);
- n=2;
- key4=0;
- }
- }
- if(key3==0)
- {
- delayms(20);
- if(key3==0)
- {
- key4=1;
- delayms(20);
- n=3;
- key4=0;
- }
- }
-
- }
- void main()
- {
- Int0Init();
- led1=0;
- led2=0;
- led3=0;
- key4=1;
- while(1)
- {
- key_scan();
- }
- }
- void Int0() interrupt 0 //外部中斷0的中斷函數
- {
- switch(n)
- {
- case 1: led1=1;break;
- case 2: led2=1;break;
- case 3: led3=1;break;
- }
- delayms(10000);
- led1=0;
- led2=0;
- led3=0;
- }
復制代碼
所有資料51hei提供下載:
三路搶答器.zip
(111.63 KB, 下載次數: 71)
2018-12-7 21:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|