2172|4

26

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

汇编编写数字时钟,显示有问题,请大神帮忙看一下 [复制链接]

实验板原理图及代码如下:
此帖出自51单片机论坛

最新回复

BCD_TRANS:              MOV                B,#10                         DIV                AB ;                        MOV                R4,B                  ;BCD码转成十进制 ;                        MOV                B,#10 ;                        MUL                AB ;                        ADD                A,R4 ;                        MOV                B,#10                  ;十进制转成ASCII码 ;                        DIV                AB                         ADD                A,#30H                         MOV                R4,A                         MOV                A,B                         ADD                A,#30H                         MOV                B,A                         MOV                A,R4                                                 RET 数据转换部分按上面的改一下。时间关系,其余部分没有看。如有问题再问。  详情 回复 发表于 2014-11-19 20:29
点赞 关注
 

回复
举报

26

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
        DU                BIT                P2.6
        WE                BIT                P2.7

        LCD_RS        BIT                P1.0         ;LCD1602
        LCD_RW        BIT                P1.1
        LCD_EN        BIT                P2.5

        DS_SCLK BIT                P2.1         ;DS1302
        DS_IO        BIT                P2.0
        DS_RST        BIT                P2.4
               
        COM                EQU                20H
        DAT                EQU                21H

        BYTE1        EQU                22H
        BYTE2        EQU                23H

        TEAR        EQU                29H                 ;定义时钟显示位
        MONTH        EQU                2AH
        DAY                EQU                2BH
        SHI                EQU                2CH
        FEN                EQU                2DH
        MIAO           EQU                2EH
        WEEK        EQU                2FH


/******************************主函数*******************************************/
                        ORG                0000H
                        AJMP        START
                        ORG                0030H
               
START:                MOV                SP,#30H
                        LCALL        LCD_INIT                  ;LCD1602初始化
                        LCALL        DS_INIT                          ;DS1302初始化
LOOP1:                MOV                COM,#80H
                        LCALL        LCD_W_COM                       
                        MOV                A,#81H
                        LCALL        DS_W_BYTE
                        NOP
                        LCALL        DS_R_DAT
                        NOP
                        LCALL        BCD_TRANS
                        MOV                DAT,A
                        LCALL        LCD_W_DAT
                        NOP
                        MOV                DAT,B
                        LCALL        LCD_W_DAT
                        LJMP        LOOP1
                       
/*******************DS1302初始化****************************************/
DS_INIT:        MOV                A,#8EH                        ;打开写保护
                        LCALL        DS_W_BYTE
                        NOP
                        MOV                A,#00H
                        LCALL        DS_W_BYTE
                        MOV                A,#80H                   ;miao位初始化
                        LCALL        DS_W_BYTE
                        NOP
                        MOV                A,#20H
                        LCALL        DS_W_BYTE
                       
                ;        MOV                A,#8EH                   ;关闭写保护
                ;        LCALL        DS_W_BYTE
                ;        MOV                A,#80H
                ;        LCALL        DS_W_BYTE                                       
                        RET
/*******************DS1302写字节*********************************************/                                       
DS_W_BYTE:        MOV                R3,#08H
                        CLR                DS_RST
                        CLR                DS_SCLK
                        SETB        DS_RST
LOOP3:                RRC                A                       
                        MOV                DS_IO,C       
                        SETB        DS_SCLK
                        NOP
                        NOP
                        CLR                DS_SCLK
                        DJNZ        R3,LOOP3
                        RET

/*******************DS1302读数据**********************************************/
DS_R_DAT:        MOV                R3,#08H
                        CLR                DS_RST
                        SETB        DS_SCLK
                        SETB        DS_RST
                        CLR                A
                        CLR                C
LOOP4:                MOV                C,DS_IO
                        CLR                DS_SCLK
                        NOP
                        NOP
                        RRC                A
                        SETB        DS_SCLK                               
                        DJNZ        R3,LOOP4
                        RET

BCD_TRANS:        MOV                B,#16
                        DIV                AB
                        MOV                R4,B                  ;BCD码转成十进制
                        MOV                B,#10
                        MUL                AB
                        ADD                A,R4

                        MOV                B,#10                  ;十进制转成ASCII码
                        DIV                AB
                        ADD                A,#30H
                        MOV                R4,A
                        MOV                A,B
                        ADD                A,#30H
                        MOV                B,A
                        MOV                A,R4                       
                        RET


LCD_INIT:        CLR                DU
                        CLR                WE
                        MOV                COM,#38H                 ;设置16*2显示
                        LCALL        LCD_W_COM
                        MOV                COM,#01H                 ;清屏
                        LCALL        LCD_W_COM
                        MOV                COM,#06H                 ;地址指针加1
                        LCALL        LCD_W_COM
                        MOV                COM,#0CH                 ;显示开关
                        LCALL        LCD_W_COM
                        RET
                       
LCD_W_COM:        CLR                LCD_RS                          ;写指令
                        CLR                LCD_RW
                        MOV                P0,COM
                        CLR                LCD_EN
                        SETB        LCD_EN
                        LCALL        DELAY_5ms
                        CLR                LCD_EN
                        RET
                               
LCD_W_DAT:        SETB        LCD_RS                         ;写数据
                        CLR                LCD_RW
                        MOV                P0,DAT
                        CLR                LCD_EN
                        SETB        LCD_EN
                        LCALL        DELAY_5ms
                        CLR                LCD_EN
                        RET
               
DELAY_5ms:        MOV                R6,#13H                           ;延时
LOOP2:                MOV                R7,#82H
                        DJNZ        R7,$
                        DJNZ        R6,LOOP2
                        RET



/*TAB1:                DB        "XIAO KE AI"
TAB2:                DB        "I LOVE YOU" */
END











1.JPG (36.83 KB, 下载次数: 0)

1.JPG

2.JPG (30.11 KB, 下载次数: 0)

2.JPG
此帖出自51单片机论坛
 
 
 

回复

173

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
什么问题?
此帖出自51单片机论坛

点评

因为读数据都一样,我只测试了 秒 位,但是显示*5就不变,*是乱码;反复查了程序,查不出原因,能帮忙看看吗  详情 回复 发表于 2014-11-13 20:52
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

4
 

因为读数据都一样,我只测试了 秒 位,但是显示*5就不变,*是乱码;反复查了程序,查不出原因,能帮忙看看吗
此帖出自51单片机论坛
 
 
 

回复

173

帖子

0

TA的资源

纯净的硅(初级)

5
 
BCD_TRANS:              MOV                B,#10
                        DIV                AB
;                        MOV                R4,B                  ;BCD码转成十进制
;                        MOV                B,#10
;                        MUL                AB
;                        ADD                A,R4

;                        MOV                B,#10                  ;十进制转成ASCII码
;                        DIV                AB

                        ADD                A,#30H
                        MOV                R4,A
                        MOV                A,B
                        ADD                A,#30H
                        MOV                B,A
                        MOV                A,R4                        
                        RET
数据转换部分按上面的改一下。时间关系,其余部分没有看。如有问题再问。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表