基于multisim的八位抢答器

使用multisim设计八位抢答器
本文分享了如何利用multisim软件绘制八位抢答器的电路图,并提供了相关的代码模板,是程序设计与模拟电路结合的经验分享。

multisim电路图

电路图

代码模板

#include<reg51.h>
#define uchar unsigned char
#definr uint unsigned  int
sbit KEY1 =P1^0;
sbit KEY2 =P1^1;
sbit KEY3 =P1^2;
sbit KEY4 =P1^3;
sbit KEY5 =P1^4;
sbit KEY6 =P1^5;
sbit LED1 =P3^6;
sbit LED2 =P3^7;
sbit LED3 =P3^8;
uint uimoney_value;
uchar uckey_value;
void delay_ms(unit uicount);
void key_scan();
void key_function();
void disp();
void main(void)
{
   while(1)
   {
      key_scan();
	  key_function();
	  disp();
	}
}
void delay_ms(uint uicount)
{
    uint i,j;
	for(i=0;i<uicount;i++);
	   for(j=0;j<120;j++);
}
void key_scan()
{
    if(0==KEY1)
	 {
	   delay_ms(3);
	   if(0==KEY1)
	   {
	     while(0==KEY1);
	     uckey_value=1;
	    }
      }
     else if(0==KEY2)
	 {
	     delay_ms(3);
		 if(0==KEY2);
		 {
		      while(0==KEY2);
			  uckey_value=2;
		  }
	  }
	  else if(0==KEY3)
	  {
	       delay_ms(3);
		   if(0==KEY3)
		   {
		      while(0==KEY3);
			  uckey_value=3;
			}
		}
		else if(0==KEY4)
	    {
	       delay_ms(3);
		   if(0==KEY4)
		   {
		      while(0==KEY4);
			  uckey_value=4;
			}
	   	}
	    else if(0==KEY5)
	    {
	       delay_ms(3);
		   if(0==KEY5)
		   {
		      while(0==KEY5);
			  uckey_value=5;
			}
	   	}
        else if(0==KEY6)
	    {
	       delay_ms(3);
		   if(0==KEY6)
		   {
		      while(0==KEY6);
			  uckey_value=6;
			}
	   	}
		else
		{
		   uckey_value=0;
		 }
}
void key_function()
{ 
    if(1==uckey_value)
	{
	   uimoney_value+=5;
	   if(uimoney_value>995)
	   {
	      uimoney_value=995;
		}
	 }	 
   	 else if(2==uckey_value)
	{
	   uimoney_value=10;
	   if(uimoney_value>995)
	   {
	      uimoney_value=995;
		}
	 }	
	  else if(3==uckey_value)
	{
	   uimoney_value=0;
	 }
	  else if(4==uckey_value)
	{
	   if(uimoney_value>=10)
	   {
	      uimoney_value-=10;
		}
	 }	
	  else if(5==uckey_value)
	{
	   if(uimoney_value>=15)
	   {
	      uimoney_value-=15;
		}
	 }
	 else if(6==uckey_value)
	{
	   if(uimoney_value>=20)
	   {
	      uimoney_value-=20;
		}
	 }
	 else
	 {               ;}
}
void disp()
{
    if(uimoney_value>=20)
	{
	   LED1=0;	 
	   LED2=0;	
	   LED3=0;	
	 }
	 else if(uimoney_value>=15)
	 {
	 	LED1=0;	 
	    LED2=0;	
	    LED3=1;	
	  }
	  else if(uimoney_value>=10)
	 {
	 	LED1=0;	 
	    LED2=1;	
	    LED3=1;	
	  }
	  else
	  {
	    LED1=1;	 
	    LED2=1;	
	    LED3=1;	
	   }
	   P0=uimoney_value/100;
	   P2=(uimoney_value%100/10)*16+uimoney_value%10;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值