【普中】基于51单片机的四位抢答器设计( proteus仿真+程序+设计报告+讲解视频)


【普中开发板】基于51单片机的四位抢答器设计( proteus仿真+程序+设计报告+讲解视频)

Proteus 仿真:Proteus 8.15(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P19

1. 主要功能:

普中开发板实验设计

本设计旨在设计一个基于51单片机的四位竞赛抢答器设计。

以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮1-4号表示。

1.设置一个系统清除和抢答控制开关S,开关由主持人控制。

2.抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

3.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)。

4.当主持人启动“开始”键后,定时器进行减计时。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,选手对应的LED灯点亮,并保持到主持人将系统清除为止。

5.如果在主持人启动"开始"键前抢答 ,抢答无效。且显示器上会显示抢答选手编号,选手对应的LED灯点亮。

6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 (目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)

需注意本设计仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

2. 讲解视频:

讲解视频包含仿真运行讲解、实物运行讲解和代码讲解

IMG_20231218_020021_WH_1000x1000px

3. 设计说明书(报告)

随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。本文设计出以AT89C51单片机为核心的8位抢答器,采用了数字显示器直接指示,自动锁存显示结果,并自动复位的设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,充分利用了单片机系统结构简单、功能强大、可靠性好、实用性强的特点。

4. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

违规抢答

img

成功抢答

img

5. 实物烧录和现象

软件准备:

第一次使用务必先安装CH340驱动。

双击打开 STC-ISP.exe。

下载步骤:

0.板子先上电,接电源线到电脑USB口,先不上电,板子无灯光。

1.选择选择单片机型号

2.选择下载器的串口

3.打开编译生成的 HEX 文件

4.点击下载,单片机板子电源键按下接通电源,等待下载完成提示

IMG_20231218_020054_WH_1000x1000px

6. 程序代码

使用keil4或者keil5编译,代码有注释。

img

核心代码:

void main()

{
    
      

 TMOD = 0X12;   //初始化定时器

 TH0 = 6;

 TL0 = 6;

 TH1 = (65536-50000)/256;    //50ms计时初值

 TL1 =(65536-50000)%256;

 EA = 1;    //开总中断

 ET0 = 1;    //开T0中断

 ET1 = 1;    //开T1中断

 temp_fen=fen=10;  //设置抢答倒计时

 while(1)

 {
    
    

   ChangeFor(); 

  

 KeyScanf();

  if((start== 1)&&(flag == 0)) //如果开始键动作,且处于空闲状态

 {
    
    

  flag = 1;  //设置运行标志

  fen=temp_fen;

  TR1 = 1;  //启动定时器

 }

   

 if((add==1)&&(flag==0))//如果时间+键动作,且处于空闲状态

 {
    
    

  add=0; 

  key_flick++;

  if((key_flick%25)==0){
    
    //消抖

  key_flick=0;

  temp_fen++;  //时间+1

  fen=temp_fen;

  }

 } 

 

 if((dec==1)&&(flag==0))//如果时间-键动作,且处于空闲状态

 {
    
    

  dec=0;

  key_flick++;

  if((key_flick%25)==0){
    
    //消抖

  key_flick=0;

  temp_fen--;  //时间-1

  fen=temp_fen;

  }

 }  

 

 if((start==0)&&(flag==0))

 {
    
    

  if((key != 0))  //如果键值有效

  {
    
    

  xianshou = key;  //显示抢答键

  flag = 2;

  TR1 = 0;  //关闭T0 

  flaga = 8000;  //报警值,蜂鸣器响2秒

  TR0 = 1;  //启动T0 

  }

 } 

 while(flag == 1)   //如果运行标志有效,进入运行状态

 {
    
    

   ChangeFor();   //显示

  KeyScanf();  //扫描抢答键

  if((key != 0))  //如果键值有效

  {
    
    

  xianshou = key;  //显示抢答键

  flag = 2;

  TR1 = 0;  //关闭T0 

  flaga = 8000;  //报警值,蜂鸣器响2秒

  TR0 = 0;  //启动T0 

  }

 }

 if((end == 1)&&(flag==2)) //运行结束后复位键按下

 {
    
    

   flag = 0;  //回到初始状态

  xianshou = 0;  //变量归零

  fen = 0;

  TR0 = 0;

  TR1 = 0; 

  start=0;

  key=0;

  end=0;

 } 

 }

}

 

7. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1.程序代码

2.仿真

3.开题报告

4.功能要求

5.设计报告

6.讲解视频

7.烧录工具

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

普中-2&普中-3&普中-4开发板原理图.pdf

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接(可点击):

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1