设计分享|单片机抢答器(汇编)

2022-07-27 18:47:26 浏览数 (1)

具体实现功能:

主持人按下抢答按键后,进入抢答模式,8位选手开始抢答,数码管显示抢答成功的选手号码,主持人按键再次按下后复位。

设计介绍

单片机介绍

51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

设计思路

文献研究法:搜集整理相关单片机智能手环系统相关研究资料,认真阅读文献,为研究做准备;

调查研究法:通过调查、分析、具体试用等方法,发现单片机智能手环系统的现状、存在问题和解决办法;

比较分析法:比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景;

软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。

资料内容

01

仿真实现

本设计利用protues8.7软件实现仿真设计,具体如图。

Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。

02

汇编程序

本设计由汇编语言编写,主代码具体如下:

代码语言:javascript复制
    ORG  000            
  JMP   BEGIN                  
TABLE:                                 ; 共阴极数码管显示代码表
DB    3FH,06H,5BH,4FH,66H     ; 01234
DB    6DH,7DH,07H,7FH         ; 46789
DELAY:    MOV  R5,  #20                ; 延时20×20ms子程序 
LOOP4:      MOV  R6,  #50            
LOOP5:    MOV  R7,  #100
  DJNZ  R7,  $
  DJNZ  6,   LOOP5
  DJNZ  R5,   LOOP4
  RET
BEGIN:     MOV  P2,   #0FFH         ;P2口置高电平,准备接收信号
         MOV   R4,  #0             ; "R4"的位标志值清零。
    MOV  A,   R4             ; "R4"位标志值送A寄存
AGAIN:      MOV   DPTR,  #TABLE        ;共阴极数码管代码表首址送                                                                                         
         MOVC  A,   @A DPTR      ;取出显示"0"的代码送P口显示
         MOV   P1,   A        
LOOP1:    MOV  A,  P3            ;接收P3口的抢答信号。
         CPL    A               ;抢答信号求反
  JZ      LOOP1                   ;如果没有抢答信号再返回LOOP1
LOOP2:     RRC   A            ;有抢答信号则逐次移动判断是那一位抢答
  INC    R4                ;每移一次位,R4位标志值加1
  JNC   LOOP2            ;如果没有遇到抢答信号返回LOOP1继续移位
  MOV   A,  R4              ;遇到抢答信号把R4位标志的只送A          MOVC  A,  @A DPTR               ;找到相应位的显示代码
  MOV  P1,  A          ;送P1口显示
LOOP3:     JNB     P2.2, BEGIN            ;若主持人按了复位信号健则转向程序复位
CPL   P2.0                     ;若没按复位信号键,则通过P2.2给出高低信号驱动蜂鸣器
  LCALL  DELAY              ;调用延时程序
  SJMP   LOOP3               ;P2.2口反复间隔0.4秒变化,驱动蜂鸣器     
            END  

0 人点赞