仿真毕设分享 单片8路抢答器仿真设计

简介

Hi,大家好,今天向大家介绍一个学长做的单片机项目

毕设课设 单片8路抢答器仿真设计

大家可用于 课程设计 或 毕业设计

🔥 项目分享:
https://gitee.com/feifei1122/simulation-project

一、电路设计

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

运行原理:

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

二、运行效果图

三、部分代码

  #include
​    #define uchar unsigned char
​    #define uint unsigned int//按键扫描,判断哪个人抢答
    void key()
    {
    		uint n, flag = 1;
    		n=2200;	
    		display(n);
    		keep=1;
    	

    		if(key2==0)
    		{
    				delay(5);
    				if(key2==0)
    				{
    					
    					 while(1)
    					 {
    							 n=2202;
    							 display(n);
    						  
    							 if(flag)
    								{
    										keep=0;			 //开启蜂鸣器
    										delay(80);
    										keep=1;			// 关闭蜂鸣器
    										delay(80);
    									  flag = 0;
    								}
    							 if(key9==0)
    							 {
    									 delay(5);
    									 if(key9==0)
    									 {
    											keep=1;
    											n=2200;	
    										  display(n);
    											while(1)return;
    									 }
    									 while(!key9);
    									 delay(5);
    									 while(1);    
    								}
    						} 
    			  }	 
    			  while(!key2);
    			  delay(5);
    	 }	  
    	 if(key3==0)
    	 {
    		  delay(5);
    		  if(key3==0)
    		  {
    					while(1)
    					{
    						  n=2203;
    					    display(n);
    						
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							if(key9==0)
    							{
    								 delay(5);
    								 if(key9==0)
    								 {
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    									while(!key9);
    									delay(5);
    									while(1);    
    							}
    					}
    		  }					
    		  while(!key3);
    		  delay(5);	 
    	 }
    	 if(key4==0)
    	 {
    		  delay(5);
    		  if(key4==0)
    		  {
    			   while(1)
    				 {
    							n=2204;
    			        display(n);
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							if(key9==0)
    							{
    									delay(5);
    									if(key9==0)
    									{
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    								while(!key9);
    								delay(5);
    								while(1);    
    							}
    					} 
    		  }					
    		  while(!key4);
    		  delay(5);	 
    	 }		
    	 if(key5==0)
    	 {
    		  delay(5);
    		  if(key5==0)
    		  {
    					 while(1)
    					{
    							n=2205;
    					    display(n);
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							if(key9==0)
    							{
    								 delay(5);
    								 if(key9==0)
    								 {
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    								 while(!key9);
    									 delay(5);
    								 while(1);    
    							}
    					}
    		  }					
    		  while(!key5);
    		  delay(5);	 
    	 }
    	 if(key6==0)
    	 {
    		  delay(5);
    		  if(key6==0)
    		  {
    			   while(1)
    					{
    							n=2206;
    							display(n);
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							 if(key9==0)
    							{
    								 delay(5);
    								 if(key9==0)
    								 {
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    								 while(!key9);
    								 delay(5);
    								 while(1);    
    							}
    					}
    		  }					
    		  while(!key6);
    		  delay(5); 
    	  }	
    	  if(key7==0)
    	  {
    				delay(5);
    				if(key7==0)
    				{
    					 while(1)
    					{
    							n=2207;
    					    display(n);
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							if(key9==0)
    							{
    								 delay(5);
    								 if(key9==0)
    								 {
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    								 while(!key9);
    								 delay(5);
    								 while(1);    
    							}
    					}
    				}					
    				while(!key7);
    				delay(5);	 
    	 }	
    	 if(key8==0)
    	 {
    		  delay(5);
    		  if(key8==0)
    		  {
    					 while(1)
    					{
    							n=2208;
    					    display(n);
    							if(flag)
    							{
    									keep=0;			 //开启蜂鸣器
    									delay(80);
    									keep=1;			// 关闭蜂鸣器
    									delay(80);
    									flag = 0;
    							}
    							if(key9==0)
    							{
    								 delay(5);
    								 if(key9==0)
    								 {
    										keep=1;
    										n=2200;	
    										display(n);
    										while(1)return;
    								 }
    								 while(!key9);
    								 delay(5);
    								 while(1);    
    							}
    					}
    		  }					
    		  while(!key8);
    		  delay(5);	 
    	 }	
    }
    
    //  主函数
    void main()
    {
       while(1)
       {
    			key();  // 判断按键
       }
    }  


​    
​    

🔥 项目分享:
https://gitee.com/feifei1122/simulation-project

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值