历史上的今天
今天是:2025年01月04日(星期六)
2021年01月04日 | 51单片机汇编语言数字时钟
2021-01-04 来源:51hei
数字时钟proteus+ 51单片机+LCD1602+汇编语言+1602器件资料,适合做单片机课程结课作品


单片机汇编源程序如下:
;/********************************************************************************
; LCD1602 时钟显示Cekong time测控何小双
;********************************************************************************/
RS EQU P2.0; //控制端接口
R_W EQU P2.1
E EQU P2.2
DB0_DB7 EQU P0
;***********定义时、分、秒及50ms单元*******
DI_DA DATA 20H
SEC DATA 21H
MIN DATA 22H
HOUR DATA 23H
;************程序开始***********************
ORG 000H
LJMP MAIN
ORG 000BH //定时器TO的中断入口地址
LJMP CLOCK
ORG 0030H
MAIN:MOV TMOD,#01H //工作方式1.16位定时计数
MOV TL0,#0B0H //设置初值
MOV TH0,#03CH
SETB ET0 //允许T0中断
SETB TR0 //启动T0
MOV DI_DA,#00H
SETB EA //总中断开放
MOV SP,#60H //设置堆栈指针
LCALL INITIAL //初始化
LCALL CLS //清屏
;*************显示Cekong time**************
MOV A,#10000000B
LCALL WRITE_COM
MOV DPTR,#LINE0
LCALL DISP
;***********************************************
MOV A,#11000000B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;***********************************************
MOV A,#11001100B
LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
;****************计时开始***********************
BEGIN:MOV P1,#7FH
MOV A,P1
CJNE A,#7FH,NEXT //首先对两个规定的操作数进行比较,然后根据比较的结果来决定是否转移--若两个操作数相等,程序按顺序往下执行NEXT;
; SETB P1.7
ACALL CONV //计时转换
ACALL DIS //显示出时间
AJMP BEGIN
NEXT: ACALL KEY
AJMP BEGIN
;****************扫描按键***********************
KEY: ACALL DEL10MS //软件滤波 delay后检测
JB P1.4,HOUR_KEY //1.4和1.5硬件设计
MIN_ADJ:CLR C
MOV A,MIN
INC A
DA A
CJNE A,#60H,X1
CLR A
X1: MOV MIN,A
ACALL DIS
ACALL DEL200MS
MOV P1,#7FH
JNB P1.4,MIN_ADJ
HOUR_KEY:JB P1.5,X2
HOUR_ADJ:CLR C
MOV A,HOUR
INC A
DA A
CJNE A,#24H,X3
CLR A
X3: MOV HOUR,A
ACALL DIS
ACALL DEL200MS
X2: MOV P1,#7FH
JNB P1.5,HOUR_ADJ
// SETB P1.7
RET
;**********************计时转换*************************
CONV: MOV A,DI_DA
CJNE A,#14H,DONE
MOV DI_DA,#00H
MOV A,SEC
ADD A,#01H
DA A
MOV SEC,A
CJNE A,#60H,DONE
MOV SEC,#00H
MOV A,MIN
ADD A,#01H
DA A
MOV MIN,A
CJNE A,#60H,DONE
MOV MIN,#00H
MOV A,HOUR
ADD A,#01H
DA A
MOV HOUR,A
CJNE A,#24H,DONE
MOV HOUR,#00H
DONE: RET
;******************显示时间****************************
DIS: MOV A,#11000100B
//MOV A,#00111000B 当为这个值是能在lcd显示跳秒,但就是不知道上面的值在protues中怎么就不能正常显示,而实际中能显示
LCALL WRITE_COM
MOV A,HOUR
SWAP A ///累加器内高低半字节交换
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,HOUR
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA
;********************************************
MOV A,MIN
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,MIN
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,#3AH
LCALL WRITE_DATA //分
;******************************************
MOV A,SEC
SWAP A
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
MOV A,SEC
ANL A,#0FH
ADD A,#30H
LCALL WRITE_DATA
RET //秒
;*****************50ms定时中断服务子程序***************
CLOCK: MOV TL0,#0B0H
MOV TH0,#3CH
INC DI_DA //增加1
RETI
;*****************显示字符串到LCD子程序****************
DISP: PUSH ACC
DISP_LOOP:CLR A
MOVC A,@A+DPTR
JZ END_DISP
LCALL WRITE_DATA
INC DPTR
SJMP DISP_LOOP
END_DISP: POP ACC
RET
;***************************************************************
; LCD1602初始化设定子程序
;***************************************************************
INITIAL: MOV A,#00111000B //显示模式设置
LCALL WRITE_COM
MOV A,#00001100B //开显示及光标显示
LCALL WRITE_COM
MOV A,#00000110B
LCALL WRITE_COM
RET
;*****************清除LCD1602子程序**********************
CLS: MOV A,#00000001B
LCALL WRITE_COM
RET
;*****************写指令程序*********************************
WRITE_COM: LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W // RS与RW低电平
SETB E //E引脚来脉冲 从而实现写指令
MOV DB0_DB7,A
CLR E
史海拾趣
|
求救:如何将SST 89E564RD (40-c-p1 0438064-AC)变成仿真器 买了块廉价的芯片,想自己做仿真器 里面没有启动程序 想自己DIY一个仿真器 麻烦成功的大虾发一个可以用的 1电路图 2软件 3监控程序 4 其他对SST 89E564RD 用的上 [ 本帖最后由 wanzsxit ...… 查看全部问答> |
|
大家看一下,怎么样让这个板子上的SOUNDER响啊,用kei软件,C语言编写的程序应该是什么样的,哪位大侠帮我这个刚接触单片机的菜鸟编个程序啊,我怎么弄不响啊?谢谢大家了! QQ:553695150 [ 本帖最后由 tiankai001 于 2010-4-27 10:18 编辑 ]… 查看全部问答> |
|
现在用nrf905设计开发一个射频智能卡测试平台的无线接口,为增强实验的可靠性,我们在设计了PCB环形差分天线的前提下,通过两个跳线,将芯片的ANT1和ANT2通过匹配网络再连接到SMA天线接口处,以备PCB环形天线不能满足实验要求时,可以经过跳线连接 ...… 查看全部问答> |
|
;-------------------------------------------------------------------------- ;[H1+H2]+[ADR]+[CMD]+[CRC] ;[L1+L2]+[ID]+[TEM_1]+[TEM_2]+[TEM_3]+[TEM_4]+[TEM_5]+[DOOR] ;-------------------------------------------------------------- ...… 查看全部问答> |
|
ARM启动后,设置了PPL时钟工作频率,然后进入main函数执行,在main函数创建启动任务及其他任务,在启动任务里面创建系统滴答时钟定时器。 因为有个模块需要延时100MS复位时间,才能开始工作,初始化时间也要30MS左右。那么我能把这个 ...… 查看全部问答> |
|
我们寻觅那些卓然不群的开拓者、同样期待那些精益求精的坚守者,而你将成就的是一个远大的梦想、一段激情的旅程。如果不甘寂寞的你渴望今天就开始改变自己、改变世界,请申请加入我们!我们在一览LED英才网上发布招聘信息,期待您的加入。深圳市源 ...… 查看全部问答> |
|
声明:本内容来自CSDN博客,原作者ammana_babi。 本系列文章我已整理成WORD文档,在下载中心可以直接下载,下载地址如下: https://download.eeworld.com.cn/detail/tiankai001/12768 【我解C语言面试题系列】001 static有什么用途? 【题目 ...… 查看全部问答> |




