设计分享|单片机LED点阵时钟(汇编)

2022-07-27 18:48:22 浏览数 (1)

具体实现功能:

通过5个8*8led点阵显示数字时间,显示时分,从12点开始计时,显示时间格式为:12::00。

设计介绍

单片机介绍

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 0000H
LJMP MAIN
    ORG 0003H 
    LJMP PINT0 
    ORG 000BH
        LJMP INTT0    
    ORG 0013H
    LJMP PINT1
      
        ORG 0030H
 
MAIN:   MOV SP,#60H
        MOV TMOD,#01H
        MOV TL0,#0e0H
        MOV TH0,#0b1H
        MOV IE,#87H
 
        MOV 30H,#01H  ;时十位
        MOV 31H,#02H  ;时个位
        MOV 32H,#0AH  ;光标点位
        MOV 33H,#00H  ;分十位
        MOV 34H,#00H  ;分个位
        MOV 35H,#00H  ;秒十位
        MOV 36H,#00H  ;秒个位
    SETB IT0
    SETB IT1
    SETB PT0
        SETB TR0
LOOP0:  LCALL DISP
        LJMP LOOP0
 
INTT0:  MOV TL0,#0e0H
        MOV TH0,#0b1H
        PUSH ACC
        PUSH PSW
        INC 36H
        MOV A,36H
        CJNE A,#25,PLL
        MOV 32H,#0BH
PLL:    CJNE A,#50,ENDD      ;1S
        MOV 32H,#0AH
        MOV 36H,#00H
        INC 35H
        MOV A,35H
        CJNE A,#60,ENDd    ;分个位
        MOV 35H,#00H
 
        INC 34H
        MOV A,34H
        CJNE A,#0AH,ENDd    ;分个位
        MOV 34H,#00H
        INC 33H
        MOV A,33H
        CJNE A,#06H,ENDd    ;分十位
        MOV 33H,#00H
 
        INC 31H
        MOV A,30H
        CJNE A,#02H,END1
        MOV A,31H
        CJNE A,#04H,END1    ;时个位
        MOV 31H,#00H
        MOV 30H,#00H
END1:   MOV A,31H
        CJNE A,#0AH,ENDd    ;时个位
        MOV 31H,#00H
        INC 30H
ENDd:   POP PSW
        POP ACC
        RETI
 
 
DISP:   PUSH ACC
        PUSH PSW
        MOV A,30H   ;显示要显示的数字
        MOV B,#08H
        MUL AB
        MOV 3BH,A
        MOV R4,#00H
        MOV R5,#08H
LOOP00: MOV A,3BH
        MOV DPTR,#TABE
        MOVC A,@A DPTR
        MOV P2,R4
        MOV P0,A
        MOV P1,#0FEH
        INC 3BH
        INC R4
        LCALL DELAY
        DJNZ R5,LOOP00
 
        MOV A,31H   ;显示要显档的数字
        MOV B,#08H
        MUL AB
        MOV 3BH,A
        MOV R4,#00H
        MOV R5,#08H
LOOP11: MOV A,3BH
        MOV DPTR,#TABE
        MOVC A,@A DPTR
        MOV P2,R4
        MOV P0,A
        MOV P1,#0FDH
        INC 3BH
        INC R4
        LCALL DELAY
        DJNZ R5,LOOP11
 
        MOV A,32H   ;显示要显档的数字
        MOV B,#08H
        MUL AB
        MOV 3BH,A
        MOV R4,#00H
        MOV R5,#08H
LOOP22: MOV A,3BH
        MOV DPTR,#TABE
        MOVC A,@A DPTR
        MOV P2,R4
        MOV P0,A
        MOV P1,#0FBH
        INC 3BH
        INC R4
        LCALL DELAY
        DJNZ R5,LOOP22
 
 
        MOV A,33H   ;显示要显档的数字
        MOV B,#08H
        MUL AB
        MOV 3BH,A
        MOV R4,#00H
        MOV R5,#08H
LOOP33: MOV A,3BH
        MOV DPTR,#TABE
        MOVC A,@A DPTR
        MOV P2,R4
        MOV P0,A
        MOV P1,#0F7H
        INC 3BH
        INC R4
        LCALL DELAY
        DJNZ R5,LOOP33
 
 
        MOV A,34H   ;显示要显档的数字
        MOV B,#08H
        MUL AB
        MOV 3BH,A
        MOV R4,#00H
        MOV R5,#08H
LOOP44: MOV A,3BH
        MOV DPTR,#TABE
        MOVC A,@A DPTR
        MOV P2,R4
        MOV P0,A
        MOV P1,#0EFH
        INC 3BH
        INC R4
        LCALL DELAY
        DJNZ R5,LOOP44
        POP PSW
        POP ACC
        RET
 
DELAY:  MOV 37H,#50
DEL:    MOV 38H,#4
        DJNZ    38H,$
        DJNZ    37H,DEL
        RET

 
TABE:   ;0
        DB 00H,18H,24H,24H,24H,24H,18H,00H
        ;1
        DB 00H,10H,30H,10H,10H,10H,38H,00H
        ;2
        DB 00H,18H,24H,04H,18H,20H,3CH,00H
        ;3
        DB 00H,18H,24H,18H,04H,24H,18H,00H
        ;4
        DB 00H,08H,18H,28H,7CH,08H,08H,00H
        ;5
        DB 00H,1CH,10H,18H,04H,24H,18H,00H
        ;6
        DB 00H,18H,24H,38H,24H,24H,18H,00H
        ;7
        DB 00H,3CH,28H,08H,10H,10H,10H,00H
        ;8
        DB 00H,18H,24H,18H,24H,24H,18H,00H
        ;9
        DB 00H,18H,24H,24H,1CH,24H,18H,00H
        ;:
        DB 00H,00H,18H,18H,00H,18H,18H,00H
        ;
        DB 00H,00H,00H,00H,00H,00H,00H,00H
        RET
       
  

 PINT0: MOV  4AH,#20
      DJNZ  4AH,$
        JB P3.2, END_DD   
        MOV 36H,#00H
        INC 34H
        MOV A,34H
        CJNE A,#0AH,END_DD    ;分个位
        MOV 34H,#00H
        INC 33H
        MOV A,33H
        CJNE A,#06H,END_DD    ;分十位
        MOV 33H,#00H
END_DD: RETI
PINT1:   MOV  4AH,#20
      DJNZ  4AH,$
        JB P3.3,END_D
        INC 31H
        MOV A,30H
        CJNE A,#02H,END_1
        MOV A,31H
        CJNE A,#04H,END_1    ;时个位
        MOV 31H,#00H
        MOV 30H,#00H
END_1:  MOV A,31H
        CJNE A,#0AH,END_d    ;时个位
        MOV 31H,#00H
        INC 30H
END_D: RETI 


    END    

0 人点赞