本文章实现基于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单片机程序并实现功能仿真。