基于80C51的的程序设计及仿真

本文章实现基于80C51的4路抢答器程序设计以及使用proteus 8.13软件仿真实现


一、Proteus的安装

(1)首先下载Proteus的安装压缩包,下载资源在微信公众号,csdn上都能找到。
(2)解压安装包后进入安装
(3)更改路径后,点击next在这里插入图片描述
(4)等待安装
在这里插入图片描述
(5)安装完成
在这里插入图片描述

二、Proteus的熟悉与使用

1.新建工程

在这里插入图片描述
命名和修改路径
在这里插入图片描述
创建原理图与否
在这里插入图片描述
选择芯片系列型号
在这里插入图片描述
完成
在这里插入图片描述

2.添加元器件

直接在元件库里面搜索关键字,网上查找元件缩写。
在这里插入图片描述
添加元件后,直接鼠标拖动引脚连接线路。


三.四路抢答器原理图

在这里插入图片描述

四.四路抢答器程序代码

#include <reg51.h>
#include <stdio.h>
#include <intrins.h>

void Delay1000ms();   //延时函数
 
//按位操作
sbit but_clr = P3^2;  //清空置零按钮
sbit but_on  = P3^1;  //开始倒计时按钮
sbit but1 = P3^4;     //选手1、2、3、4
sbit but2 = P3^5;
sbit but3 = P3^6;
sbit but4 = P3^7;
sbit lit1 = P1^0;     //四位选手前的指示灯
sbit lit2 = P1^1;
sbit lit3 = P1^2;
sbit lit4 = P1^3;

unsigned char tag=0; //定义全局变量标签,用来记录是否有人抢答;
unsigned char code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴极数码管编码

void main(void)
 { 
   unsigned char i;
   P0 = 0x00;
   P2 = 0x00;
   while (1)
   {
        if(but_on==0) //识别按钮
	{  
	   for(i=4;i>0;i--)  //倒计时程序 
	   {P2=seg[i-1];
	    Delay1000ms();}
	   while(but_on==0);
	}
	if(but_clr==0&&tag!=0) //将抢答结果置零,并将抢答标签置0 。
	{
     	   P0=0x00;
	   switch(tag)
	   {
	      case 1:lit1=1;
	      case 2:lit2=1;
	      case 3:lit3=1;
	      case 4:lit4=1;
	   }
	   tag=0;
	   
	}
	if(but1==0&&tag==0)  //识别选手抢答按钮,并显示选手编号,将抢答标签置1.
	{
	   P0=seg[1];
	   lit1=0;
	   tag=1;
	   while(but1==0);
	}
	if(but2==0&&tag==0)
	{
	   P0=seg[2];
	   lit2=0;
	   tag=2;
	   while(but2==0);
	}
	if(but3==0&&tag==0)
	{
	   P0=seg[3];
	   lit3=0;
	   tag=3;
	   while(but3==0);
	}
	if(but4==0&&tag==0)
	{
	   P0=seg[4];
	   lit4=0;
	   tag=4;
	   while(but4==0);
	}
	   
   }
      ;
 }
 void Delay1000ms()  //延时程序代码
 {
    unsigned char i,j,k;
    _nop_();
    i=8;
    j=154;
    k=122;
    do
    {
       do
       {
	  while(--k);
       }while(--j);
    }while(--i);
 }

五.仿真结果

在这里插入图片描述

六.总结

通过本次实验熟悉和理解了Proteus软件的安装流程和使用方法,并能够设计一个简单的51单片机程序并实现功能仿真。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值