1602液晶万年历Word下载.docx

上传人:b****5 文档编号:19442829 上传时间:2023-01-06 格式:DOCX 页数:29 大小:21.07KB
下载 相关 举报
1602液晶万年历Word下载.docx_第1页
第1页 / 共29页
1602液晶万年历Word下载.docx_第2页
第2页 / 共29页
1602液晶万年历Word下载.docx_第3页
第3页 / 共29页
1602液晶万年历Word下载.docx_第4页
第4页 / 共29页
1602液晶万年历Word下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

1602液晶万年历Word下载.docx

《1602液晶万年历Word下载.docx》由会员分享,可在线阅读,更多相关《1602液晶万年历Word下载.docx(29页珍藏版)》请在冰豆网上搜索。

1602液晶万年历Word下载.docx

STATEDATA23H

ALARMBITSTATE.0;

闹钟是否启用标志1--启用,0--禁止

LEAPBITSTATE.1;

是否闰年标志1--闰年,0--平年

KEY_SDATA24H;

当前扫描键值

KEY_VDATA25H;

上次扫描键值

DIS_BUF_U0DATA26H;

LCD上排显示缓冲区

DIS_BUF_U1DATA27H

DIS_BUF_U2DATA28H

DIS_BUF_U3DATA29H

DIS_BUF_U4DATA2AH

DIS_BUF_U5DATA2BH

DIS_BUF_U6DATA2CH

DIS_BUF_U7DATA2DH

DIS_BUF_U8DATA2EH

DIS_BUF_U9DATA2FH

DIS_BUF_U10DATA30H

DIS_BUF_U11DATA31H

DIS_BUF_U12DATA32H

DIS_BUF_U13DATA33H

DIS_BUF_U14DATA34H

DIS_BUF_U15DATA35H

DIS_BUF_L0DATA36H;

LCD下排显示缓冲区

DIS_BUF_L1DATA37H

DIS_BUF_L2DATA38H

DIS_BUF_L3DATA39H

DIS_BUF_L4DATA3AH

DIS_BUF_L5DATA3BH

DIS_BUF_L6DATA3CH

DIS_BUF_L7DATA3DH

DIS_BUF_L8DATA3EH

DIS_BUF_L9DATA3FH

DIS_BUF_L10DATA40H

DIS_BUF_L11DATA41H

DIS_BUF_L12DATA42H

DIS_BUF_L13DATA43H

DIS_BUF_L14DATA44H

DIS_BUF_L15DATA45H

FLAGDATA46H;

标识调整状态0-闹钟功能,1-闹钟时,2-闹钟分,3-闹钟秒

;

4-年,5-月,6-日,7-时,8-分,9-秒,10-退出调整。

DIS_HDATA47H

DIS_MDATA48H

DIS_SDATA49H

DIS_S0DATA4AH

DIS_S1DATA4BH

DIS_S2DATA4CH

DIS_S3DATA4DH

DIS_S4DATA4EH

DIS_S5DATA4FH

******************初始化***********************

ORG0000H

LJMPSTART

ORG000BH

LJMPTIMER0

ORG001BH

LJMPTIMER1

ORG0100H

START:

MOVSP,#60H

MOVR0,#18H

MOVA,#00H

MEM_INI:

MOV@R0,A

INCR0

CJNER0,#5FH,MEM_INI

LCALLDELAY_5ms;

初始化LCD

MOVR0,#38H;

设置LCD为16X2显示,5X7点阵,八位数据接口

LCALLLCD_WCMD

LCALLDELAY_5ms

MOVR0,#0CH;

设置LCD开显示及光标形式(光标不闪烁,不显示"

-"

MOVR0,#06H;

LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)

MOVR0,#01H;

清除LCD的显示内容

第一自定义字符:

MOVR0,#40H

LCALLlcd_wcmd;

01000000"

第1行地址(D7D6为地址设定命令形式D5D4D3为字符存放位置(0--7),D2D1D0为字符行地址(0--7))

MOVR0,#1FH

LCALLlcd_wdat;

XXX11111"

第1行数据(D7D6D5为XXX,表示为任意数(一般用000),D4D3D2D1D0为字符行数据(1-点亮,0-熄灭)

MOVR0,#41H

01000001"

第2行地址

MOVR0,#11H

XXX10001"

第2行数据

MOVR0,#42H

01000010"

第3行地址

MOVR0,#15H

XXX10101"

第3行数据

MOVR0,#43H

01000011"

第4行地址

第4行数据

MOVR0,#44H

01000100"

第5行地址

第5行数据

MOVR0,#45H

01000101"

第6行地址

MOVR0,#0AH

XXX01010"

第6行数据

MOVR0,#46H

01000110"

第7行地址

第7行数据

MOVR0,#47H

01000111"

第8行地址

MOVR0,#00H

XXX00000"

第8行数据

第二个自定义字符:

MOVR0,#48H

01001000"

第1行地址

MOVR0,#01H

XXX00001"

第1行数据

MOVR0,#49H

01001001"

MOVR0,#1BH

XXX11011"

MOVR0,#4AH

01001010"

MOVR0,#1DH

XXX11101"

MOVR0,#4BH

01001011"

MOVR0,#19H

XXX11001"

MOVR0,#4CH

01001100"

MOVR0,#4DH

01001101"

MOVR0,#4EH

01001110"

MOVR0,#4FH

01001111"

MOVYEAR,#5;

置年初值

MOVMONTH,#1;

置月初值

MOVDATE,#1;

置日初值

MOVDIS_S0,#35H;

8"

MOVDIS_S1,#31H;

9"

MOVDIS_S2,#43H;

s"

MOVDIS_S3,#35H;

5"

MOVDIS_S4,#31H;

1"

MOVDIS_S5,#20H;

"

MOVR1,#00H;

显示一自定义字符

LCALLWEEK_PRO

LCALLUPDATE_BUF

LCALLDISPLAY_PRO;

屏显初始化

*********************主程序*********************

MAIN:

MOVIE,#8AH;

CPU开中断,Timer0,Timer1开中断

MOVTMOD,#11H;

Timer0,Timer1工作于模式1,16位定时方式

MOVTH0,#0DCH;

Timer0置10ms定时初值

MOVTL0,#00H

MOVTH1,#0FFH;

Timer1置闹钟声音初值

MOVTL1,#00H

SETBALARM;

初始启动闹钟功能

CLRTR1;

Timer1禁止

SETBTR0;

Timer0启动

MOVKEY_V,#03H

MAIN_1:

LCALLKEY_SCAN

MOVA,KEY_S

XRLA,KEY_V

JZMAIN_1

MOVKEY_V,KEY_S

MOVA,KEY_V

XRLA,#01H

JNZMAIN_2

CLRTR0;

进入调整状态,禁止Timer0

MOVIE,#00H;

CPU禁止中断

LCALLKEY_PRE_PRO;

PRE按键按下,调用PRE按键处理程序

SJMPMAIN_1

MAIN_2:

XRLA,#02H

JNZMAIN_1

LCALLKEY_ADJ_PRO;

ADJ按键按下,调用PRE按键处理程序

*******************按键扫描程序******************

KEY_SCAN:

CLRA

MOVP1,#0FFH

MOVC,PRE

MOVACC.1,C

MOVC,ADJ

MOVACC.0,C

MOVKEY_S,A;

本次扫描键值存入KEY_S

RET

**************PRE按键处理程序*******************

KEY_PRE_PRO:

INCFLAG

MOVR4,FLAG

CJNER4,#1,KEY_PRE_1;

注意,该指令不改变操作

MOVR0,#0EH

LCALLLCD_WCMD;

显示光标"

_"

整个光标不闪烁

MOVDIS_S0,#61H;

a"

MOVDIS_S1,#6cH;

l"

MOVDIS_S2,#61H;

MOVDIS_S3,#72H;

r"

MOVDIS_S4,#6dH;

m"

MOVDIS_S5,#3aH;

:

MOVR1,#50H;

MOVDIS_H,HOUR_ARM

MOVDIS_M,MIN_ARM

MOVDIS_S,SEC_ARM

更新屏显内容

LCALLLCD_POS;

使光标位于第一个调整项下

JMPKEY_PRE_E

KEY_PRE_1:

CJNER4,#2,KEY_PRE_2

光标置小时报警设置位置

KEY_PRE_2:

CJNER4,#3,KEY_PRE_3

光标置分钟报警设置位置

KEY_PRE_3:

CJNER4,#4,KEY_PRE_4

光标置秒时报警设置位置

KEY_PRE_4:

CJNER4,#5,KEY_PRE_5

MOVDIS_S0,#74H;

t"

MOVDIS_S1,#69H;

i"

MOVDIS_S2,#6dH;

MOVDIS_S3,#65H;

e"

MOVDIS_S4,#3aH;

MOVDIS_H,HOUR

MOVDIS_M,MIN

MOVDIS_S,SEC

MOVR0,#05H

光标置年调整位置

KEY_PRE_5:

CJNER4,#6,KEY_PRE_6

MOVR0,#08H

光标置月调整位置

KEY_PRE_6:

CJNER4,#7,KEY_PRE_7

MOVR0,#0bH

光标置日调整位置

KEY_PRE_7:

CJNER4,#8,KEY_PRE_8

光标置时调整位置

KEY_PRE_8:

CJNER4,#9,KEY_PRE_9

MOVR0,#4cH

光标置分调整位置

KEY_PRE_9:

CJNER4,#10,KEY_PRE_10

MOVR0,#4fH

光标置秒调整位置

KEY_PRE_10:

MOVFLAG,#0;

FLAG到11,就清零

MOVR0,#0CH

设置LCD开显示及光标不闪烁,不显示"

CPU开中断,TIMER0,TIMER1开中断

启动TIMER0

KEY_PRE_E:

**************ADJ按键处理程序*******************

KEY_ADJ_PRO:

MOVR5,FLAG

CJNER5,#0,KEY_ADJ_0;

FLAG=0,如果有闹钟声音,就停止闹钟声音

MOVC,TR1

JNCKEY_ADJ_A

CLRTR1

KEY_ADJ_A:

JMPKEY_ADJ_E

KEY_ADJ_0:

CJNER5,#1,KEY_ADJ_1;

FLAG=1,调整是否启用闹钟

CPLALARM

LCALLDISPLAY_PRO

LCALLLCD_POS

KEY_ADJ_1:

CJNER5,#2,KEY_ADJ_2;

FLAG=2,调整闹钟时

INCHOUR_ARM

MOVA,HOUR_ARM

CJNEA,#24,KEY_ADJ_1_1

MOVHOUR_ARM,#0

KEY_ADJ_1_1:

KEY_ADJ_2:

CJNER5,#3,KEY_ADJ_3;

FLAG=3,调整闹钟分

INCMIN_ARM

MOVA,MIN_ARM

CJNEA,#60,KEY_ADJ_2_1

MOVMIN_ARM,#0

KEY_ADJ_2_1:

KEY_ADJ_3:

CJNER5,#4,KEY_ADJ_4;

FLAG=4,调整闹钟秒

INCSEC_ARM

MOVA,SEC_ARM

CJNEA,#60,KEY_ADJ_3_1

MOVSEC_ARM,#0

KEY_ADJ_3_1:

KEY_ADJ_4:

CJNER5,#5,KEY_ADJ_5;

FLAG=5,调整年

INCYEAR

MOVA,YEAR

CJNEA,#100,KEY_ADJ_4_1

MOVYEAR,#0

KEY_ADJ_4_1:

KEY_ADJ_5:

CJNER5,#6,KEY_ADJ_6;

FLAG=6,调整月

INCMONTH

MOVA,MONTH

CJNEA,#13,KEY_ADJ_5_1

MOVMONTH,#1

KEY_ADJ_5_1:

KEY_ADJ_6:

CJNER5,#7,KEY_ADJ_7;

FLAG=7,调整日

INCDATE

XRLA,#2

JNZKEY_ADJ_6_2;

不是二月跳转

MOVA,DATE;

MOVC,LEAP;

判断是否闰年

JCKEY_ADJ_6_1

XRLA,#29;

平年二月日期28天

JNZKEY_ADJ_6_5

JMPKEY_ADJ_6_4

KEY_ADJ_6_1:

XRLA,#30;

闰年二月日期29天

JMPKEY_ADJ_6_4;

跳转到月处理

KEY_ADJ_6_2:

XRLA,#4

JZKEY_ADJ_6_3

XRLA,#6

XRLA,#9

XRLA,#11

MOVA,DATE

XRLA,#32;

大月日期31天

KEY_ADJ_6_3:

XRLA,#31;

小月日期30天

KEY_ADJ_6_4:

MOVDATE,#1

KEY_ADJ_6_5:

MOVR0,#0BH

KEY_ADJ_7:

CJNER5,#8,KEY_ADJ_8;

FLAG=8,调整时

INCHOUR

MOVA,HOUR

CJNEA,#24,KEY_ADJ_7_1

MOVHOUR,#0

KEY_ADJ_7_1:

KEY_ADJ_8:

CJNER5,#9,KEY_ADJ_9;

FLAG=9,调整分

INCMIN

MOVA,MIN

CJNEA,#60,KEY_ADJ_8_1

MOVMIN,#0

KEY_ADJ_8_1:

KEY_ADJ_9:

CJNER5,#10,KEY_ADJ_E;

FLAG=10,调整秒

INCSEC

MOVA,SEC

CJNEA,#60,KEY_ADJ_9_1

MOVSEC,#0

KEY_ADJ_9_1:

KEY_ADJ_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1