<微机原理>[汇编语言]-[实验九]电子时钟

实验九 电子时钟

一、实验目的

  1. 进一步掌握定时器的使用和编程方法
  2. 进一步掌握中断处理程序的编程方法

二、实验仪器

  1. 普中A2开发板(STC89C52)
  2. keil5
  3. stc-isp

三、实验内容

利用CPU的定时器定时,设计一个电子时钟,显示时分秒,由左向右分别为:时、分、秒,格式如下:

XX —XX— XX 由左向右分别为:时、分、秒

初始化的时间为学号后6位。开发板左边的八个数码管为共阴极数码管。

四、流程框图

在这里插入图片描述

五、实验程序

	ORG     0000H
    AJMP    START
    ORG     000BH
    AJMP    T0_INT
    ORG     0030H
START:
    SEC     EQU     R0          ;R0存放秒
    MIN     EQU     R1          ;R1存放分
    HOR     EQU     R2          ;R2存放时
    SEC_G   EQU     20H         ;秒的个位
    SEC_S   EQU     21H         ;
    MIN_G   EQU     22H         ;
    MIN_S   EQU     23H         ;
    HOR_S   EQU     24H         ;
    HOR_G   EQU     25H         ;
    ACALL   SEG_INIT            ;数码管初始化
    ACALL   T0_INIT             ;T0定时器初始
    MOV     SEC ,   #12         ;
    MOV     MIN ,   #40         ;
    MOV     HOR ,   #10         ;
MAIN:
    ACALL   DATA_GEN            ;将时间数据为6位
    ACALL   DTSEG               ;动态数码管显示
    AJMP    MAIN                ;MAIN循环
T0_INIT:
    ANL     TMOD,   #0F0H       ;初始化定时器0
    ORL     TMOD,   #01H        ;
    MOV     TL0 ,   #00H        ;
    MOV     TH1 ,   #4CH        ;
    CLR     TF0                 
    SETB    TR0
    SETB    ET0
    SETB    EA
    RET
SEG_INIT:
    MOV     DPTR,   #TAB1       ;
    MOV     P0  ,   #00H        ;
    RET
DATA_GEN:
    MOV     B   ,   #10         ;
    MOV     A   ,   SEC         ;
    DIV     AB                  ;
    MOV     SEC_G   ,   B       ;
    MOV     SEC_S   ,   A       ;
    MOV     B   ,   #10         ;
    MOV     A   ,   MIN         ;
    DIV     AB                  ;
    MOV     MIN_G   ,   B       ;
    MOV     MIN_S   ,   A       ;
    MOV     B   ,   #10         ;
    MOV     A   ,   HOR         ;
    DIV     AB
    MOV     HOR_G   ,   B       ;
    MOV     HOR_S   ,   A       ;
    RET 
DTSEG:
ONE:
    CLR     P2.2                
    CLR     P2.3
    CLR     P2.4
    MOV     A   ,   SEC_G       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H   
TWO:
    SETB    P2.2
    CLR     P2.3
    CLR     P2.4
    MOV     A   ,   SEC_S       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H   
THREE:
    CLR     P2.2
    SETB    P2.3
    CLR     P2.4
    MOV     A   ,   #16         ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H   
FOUR:
    SETB    P2.2
    SETB    P2.3
    CLR     P2.4
    MOV     A   ,   MIN_G       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H
FIVE:
    CLR     P2.2
    CLR     P2.3
    SETB    P2.4
    MOV     A   ,   MIN_S       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H
SIX:
    SETB    P2.2
    CLR     P2.3
    SETB    P2.4
    MOV     A   ,   #16         ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H
SEVEN:
    CLR     P2.2
    SETB    P2.3
    SETB    P2.4
    MOV     A   ,   HOR_G       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H
EIGHT:
    SETB    P2.2
    SETB    P2.3
    SETB    P2.4
    MOV     A   ,   HOR_S       ;
    MOVC    A   ,   @A+DPTR     ;
    MOV     P0  ,   A           ;
    ACALL   DELAY100US
    MOV     P0  ,   #00H

    RET

T0_INT:
    MOV     TL0 ,   #00H        ;重装定时器初值 50ms
    MOV     TH0 ,   #4CH        ;重装定时器初值
    INC     R3                   
    CJNE    R3  ,   #20 ,RETURN ;判断是否计数20次到达1S
    MOV     R3  ,   #00H        ;B清0
    INC     SEC                 ;秒+1
    CJNE    SEC ,   #60 ,RETURN ;60秒进位
    MOV     SEC ,   #0          ;
    INC     MIN                 ;
    CJNE    MIN ,   #60 ,RETURN ;60分进位
    MOV     MIN ,   #0          ;
    INC     HOR                 ;
    CJNE    HOR ,   #24 ,RETURN ;24小时清零
    MOV     HOR ,   #0          ;
RETURN:
    RETI
DELAY100US:			;@11.0592MHz
	PUSH 30H
	MOV 30H,#41
NEXT1:
	DJNZ 30H,NEXT1
	POP 30H
	RET
TAB1:;0 - F共阴极字形码
    DB      03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9
    DB      77H,7CH,39H,5EH,79H,71H
    DB      40H
    END

六、程序分析

很简单,没什么好讲的。😎😎😎

七、测试报告

在这里插入图片描述

《餐馆点餐管理系统——基于Java和MySQL的课程设计解析》 在信息技术日益发达的今天,餐饮行业的数字化管理已经成为一种趋势。本次课程设计的主题是“餐馆点餐管理系统”,它结合了编程语言Java和数据库管理系统MySQL,旨在帮助初学者理解如何构建一个实际的、具有基本功能的餐饮管理软件。下面,我们将深入探讨这个系统的实现细节及其所涉及的关键知识点。 我们要关注的是数据库设计。在“res_db.sql”文件中,我们可以看到数据库的结构,可能包括菜品表、订单表、顾客信息表等。在MySQL中,我们需要创建这些表格并定义相应的字段,如菜品ID、名称、价格、库存等。此外,还要设置主键、外键来保证数据的一致性和完整性。例如,菜品ID作为主键,确保每个菜品的唯一性;订单表中的顾客ID和菜品ID则作为外键,与顾客信息表和菜品表关联,形成数据间的联系。 接下来,我们来看Java部分。在这个系统中,Java主要负责前端界面的展示和后端逻辑的处理。使用Java Swing或JavaFX库可以创建用户友好的图形用户界面(GUI),让顾客能够方便地浏览菜单、下单。同时,Java还负责与MySQL数据库进行交互,通过JDBC(Java Database Connectivity)API实现数据的增删查改操作。在程序中,我们需要编写SQL语句,比如INSERT用于添加新的菜品信息,SELECT用于查询所有菜品,UPDATE用于更新菜品的价格,DELETE用于删除不再提供的菜品。 在系统设计中,我们还需要考虑一些关键功能的实现。例如,“新增菜品和价格”的功能,需要用户输入菜品信息,然后通过Java程序将这些信息存储到数据库中。在显示所有菜品的功能上,程序需要从数据库获取所有菜品数据,然后在界面上动态生成列表或者表格展示。同时,为了提高用户体验,可能还需要实现搜索和排序功能,允许用户根据菜品名称或价格进行筛选。 另外,安全性也是系统设计的重要一环。在连接数据库时,要避免SQL注入攻击,可以通过预编译的PreparedStatement对象来执行SQL命令。对于用户输入的数据,需要进行验证和过滤,防止非法字符和异常值。 这个“餐馆点餐管理系统”项目涵盖了Java编程、数据库设计与管理、用户界面设计等多个方面,是一个很好的学习实践平台。通过这个项目,初学者不仅可以提升编程技能,还能对数据库管理和软件工程有更深入的理解。在实际开发过程中,还会遇到调试、测试、优化等挑战,这些都是成长为专业开发者不可或缺的经验积累
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值