AT89C51 汇编程序实现投币机功能
AT89C51 汇编程序实现投币机功能
本程序使用 AT89C51 微控制器,实现投币机功能。程序模拟四个投币口,根据开关状态判断投入硬币数量,并将总数显示在数码管上。如果总数超过给定值,LED 发光管闪烁。
功能需求
- 每个开关看作是一个投币口,取值为高,表示投入了对应数值的硬币。四个开关的取值分别为 1、1、2、5。
- 在数码管上显示已投币值总数。
- 如果已投币值总数超过给定值(在程序中设定),则 LED 发光管闪烁,否则不亮。
汇编程序代码
; Processor: AT89C51
; Compiler: ASEM-51 (Proteus)
;====================================================================
$NOMOD51
$INCLUDE (8051.MCU)
;====================================================================
; DEFINITIONS
;====================================================================
;====================================================================
; VARIABLES
;====================================================================
coin1 equ P1.0 ; 第一个投币口开关
coin2 equ P1.1 ; 第二个投币口开关
coin3 equ P1.2 ; 第三个投币口开关
coin4 equ P1.3 ; 第四个投币口开关
total equ R0 ; 已投币值总数
;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================
; Reset Vector
org 0000h
jmp Start
;====================================================================
; CODE SEGMENT
;====================================================================
org 0100h
Start:
; 初始化已投币值总数为0
clr total
; 无限循环
Loop:
; 检测第一个投币口开关,如果为高表示投入1个硬币
jnb coin1, Coin2
inc total
Coin2:
; 检测第二个投币口开关,如果为高表示投入1个硬币
jnb coin2, Coin3
inc total
Coin3:
; 检测第三个投币口开关,如果为高表示投入2个硬币
jnb coin3, Coin4
add total, #2
Coin4:
; 检测第四个投币口开关,如果为高表示投入5个硬币
jnb coin4, Display
add total, #5
Display:
; 在数码管上显示已投币值总数
mov P2, total
; 检测已投币值总数是否超过给定值,如果超过则闪烁LED发光管,否则不亮
cjne total, #10h, NoBlink
mov P3.0, #0
sjmp Loop
NoBlink:
mov P3.0, #1
; 延时函数
call DELAY
; 重新开始循环
sjmp Loop
DELAY:
mov R1, #0FFH
DELAY_1:
mov R2, #0FFH
djnz R2, $
djnz R1, DELAY_1
ret
;====================================================================
END
原理图绘制
根据程序中的代码,需要连接四个投币口开关到 P1 口的相应引脚(P1.0 ~ P1.3),并将数码管连接到 P2 口,LED 发光管连接到 P3.0 口。此外,还需要连接外部晶振、电源等。具体的原理图绘制可以使用电子设计软件(如 Proteus)来完成。
总结
本程序使用 AT89C51 微控制器,模拟了四个投币口,并根据投入的硬币数量显示总数,以及判断是否超过给定值而控制 LED 发光管的闪烁。程序设计简单易懂,方便学习和理解 AT89C51 的基本应用。
原文地址: https://www.cveoy.top/t/topic/fHzo 著作权归作者所有。请勿转载和采集!