实现日期时间温度显示万年历Word文档下载推荐.docx
- 文档编号:17659978
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:28
- 大小:75.89KB
实现日期时间温度显示万年历Word文档下载推荐.docx
《实现日期时间温度显示万年历Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实现日期时间温度显示万年历Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
MINTUEDATA37H。
分钟寄存器
SECONDDATA38H。
秒钟寄存器
=========显示数据缓冲地址============
YEAR_HBUFDATA40H
YEAR_LBUFDATA41H
MONT_HBUFDATA42H
MONT_LBUFDATA43H
DAY_HBUFDATA44H
DAY_LBUFDATA45H
WEEK_HBUFDATA46H
WEEK_LBUFDATA47H
HOUR_HBUFDATA48H
HOUR_LBUFDATA49H
MINTUE_HBUFDATA4AH
MINTUE_LBUFDATA4BH
SECOND_HBUFDATA4CH
SECOND_LBUFDATA4DH
===============================================
XEQU2FH。
LCD地址变量
―――――――――――――
LCD控制引脚
RSEQUP2.4
RWEQUP2.5
EEQUP2.6
FLAGEQU20H.0
KEY_UDEQU20H.1
DQEQUp2.7
=============主程序==============
MAIN:
ACALLSET_LCD。
LCD初始化设置子程序
ACALLSET_1302。
1302初始化
TOOP:
ACALLRESET_1820。
调用18B20复位子程序
ACALLTEMP_BJ。
显示温度标记"
℃"
ACALLMEU_OK。
调用显示"
OK"
信息子程序
TOOP2:
ACALLRE_TEMP。
调用读取温度数据子程序
ACALLSET_DATA。
调用处理显示温度数据子程序
显示温度标记子程序
LCALLRD_DS1302
LCALLDATA_BUF
LCALLDISPLAY
SJMPTOOP2。
循环
--------――读取温度数据子程序--------――
RE_TEMP:
18B20复位子程序
MOVA,#0CCH。
跳过ROM匹配
ACALLWRITE_1820。
写入子程序
MOVA,#44H。
发出温度转换命令
调写入子程序
调复位子程序
MOVA,#0BEH。
发出读温度命令
写入子程序
ACALLREAD_1820。
调用读取子程序
RET
--------温度数据处理显示子程序----------
SET_DATA:
ACALLCONV_TEMP。
处理温度BCD码子程序
ACALLDISP_BCD。
显示区BCD码温度值刷新子程序
ACALLCONV。
LCD显示子程序
----------处理温度BCD码子程序----------
CONV_TEMP:
MOVA,TEMPH。
判温度是否零下
ANLA,#80H
JZTC1。
温度零转TC1处
CLRC。
C=0
MOVA,TEMPL。
二进制数求补<
双字节)
CPLA。
取反加1
ADDA,#01H
MOVTEMPL,A
MOVA,TEMPH
CPLA
ADDCA,#00H
MOVTEMPH,A
JMPTC2
TC1:
MOVTEMPHC,#0AH
TC2:
MOVA,TEMPHC
SWAPA。
高、低位交换
MOVTEMPHC,A
MOVA,TEMPL
ANLA,#0FH。
乘0.0625
MOVDPTR,#DOTTAB
MOVCA,@A+DPTR
MOVTEMPLC,A。
TEMPLCLOW=小数部分BCD
整数部分
ANLA,#0F0H。
取出高四位
MOVA,TEMPH
取出低四位
ORLA,TEMPL。
重新组合
MOVTEMP_ZH,A
LCALLHEX2BCD1
ORLA,TEMPHC。
TEMPHCLOW=十位数BCD
ORLA,TEMPLC。
TEMPLCHI=个位数BCD
MOVTEMPLC,A
MOVA,R4
JZTC3
MOVR4,A
MOVA,TEMPHC。
TEMPHCHI=百位数BCD
ORLA,R4
TC3:
HEX2BCD1:
MOVB,#064H。
十六进制->
BCD
DIVAB。
B=A%100
MOVR4,A。
R4=百位数
MOVA,#0AH
XCHA,B
B=A%B
ORLA,B
小数部分码表
DOTTAB:
DB00H,00H,01H,01H,02H,03H,03H,04H
DB05H,05H,06H,06H,07H,08H,08H,09H
--------显示区BCD码温度值刷新子程序--------
DISP_BCD:
MOVA,TEMPLC。
个位数BCD码送入A
取低位码
MOV70H,A。
小数位
MOVA,TEMPLC
取结果数的高位
MOV71H,A。
个位
MOV72H,A。
十位
MOV73H,A。
百位
CJNEA,#010H,DI0
JMPDI2
DI0:
JNZDI2。
十位数是0
MOV73H,#0AH。
符号位不显示
十位数显示符号
DI2:
==================================================
==========读1302子程序=================
RD_DS1302:
MOVDS1302_ADDR,#8DH。
读DS1302中的年
LCALLREAD。
调用读DS1302子程序
MOVTIME_YEAR,DS1302_DATA。
把读出的年数据存入年寄存器中
MOVDS1302_ADDR,#8BH。
读DS1302中的星期
LCALLREAD
MOVWEEK_DATA,DS1302_DATA。
把读出的星期数据存入星期寄存器中
MOVDS1302_ADDR,#89H。
读DS1302中的月
MOVTIME_MONT,DS1302_DATA。
把读出的月数据存入月寄存器中
MOVDS1302_ADDR,#87H。
读DS1302中的天
MOVTIME_DAY,DS1302_DATA。
把读出的天数据存入天寄存器中
MOVDS1302_ADDR,#85H。
读DS1302中的小时
MOVHOUR,DS1302_DATA。
把读出的天数据存入小时寄存器中
MOVDS1302_ADDR,#83H。
读DS1302中的分钟
MOVMINTUE,DS1302_DATA。
把读出的天数据存入分钟寄存器中
MOVDS1302_ADDR,#81H。
读DS1302中的秒钟
MOVSECOND,DS1302_DATA。
把读出的天数据存入秒钟寄存器中
===========按键子程序=================
=========数据分离后送显示缓存==================
DATA_BUF:
MOVR0,TIME_YEAR。
年数据分离,送显示缓存
LCALLDIVIDE。
调用数据分离子程序
MOVYEAR_HBUF,R1
MOVYEAR_LBUF,R2
MOVR0,TIME_MONT。
月数据分离,送显示缓存
LCALLDIVIDE
MOVMONT_HBUF,R1
MOVMONT_LBUF,R2
MOVR0,TIME_DAY。
日数据分离,送显示缓存
MOVDAY_HBUF,R1
MOVDAY_LBUF,R2
MOVR0,WEEK_DATA。
星期数据分离,送显示缓存
MOVWEEK_HBUF,R1
MOVWEEK_LBUF,R2
MOVR0,HOUR。
小时数据分离,送显示缓存
MOVHOUR_HBUF,R1
MOVHOUR_LBUF,R2
MOVR0,MINTUE。
分钟数据分离,送显示缓存
MOVMINTUE_HBUF,R1
MOVMINTUE_LBUF,R2
MOVR0,SECOND。
秒钟数据分离,送显示缓存
MOVSECOND_HBUF,R1
MOVSECOND_LBUF,R2
=========日历显示子程序==========
===============年显示===============
DISPLAY:
MOVA,#10000001B。
设定年第1位的显示地址为第1行,第1列
LCALLWR_COMM。
调用写指令到液晶子程序
MOVA,#32H。
数字2的ASCII码
LCALLWR_DATA。
调用写数据到液晶子程序
MOVA,#10000010B。
设定年第2位的显示地址为第1行,第2列
LCALLWR_COMM
MOVA,#30H。
数字0的ASCII码
LCALLWR_DATA
MOVA,#10000011B。
设定年第3位的显示地址为第1行,第3列
MOVA,YEAR_LBUF。
年的低位缓存数据
ADDA,#30H。
加30H修正取ASCII码
MOVA,#10000100B。
设定年第4位的显示地址为第1行,第4列
MOVA,YEAR_HBUF。
年的高位缓存数据
=====================斜线显示========================
MOVA,#10000101B。
设定斜线的显示地址为第1行,第5列
MOVA,#2FH。
斜线的ASCII码
================显示月============
MOVA,#10000110B。
设定月第1位的显示地址为第1行,第6列
MOVA,MONT_LBUF。
月的低位缓存数据
加30H修正取ASCII码
MOVA,#10000111B。
设定月第2位的显示地址为第1行,第7列
MOVA,MONT_HBUF。
月的高位缓存数据
=======================斜线显示============================
MOVA,#10001000B。
设定斜线的显示地址为第1行,第8列
==============================天显示=======================
MOVA,#10001001B。
设定天第1位的显示地址为第1行,第9列
MOVA,DAY_LBUF。
天的低位缓存数据
MOVA,#10001010B。
设定天第2位的显示地址为第1行,第10列
MOVA,DAY_HBUF。
天的高位缓存数据
========================星期显示======================
MOVA,#10001111B。
设定星期第2位的显示地址为第1行,第13列
MOVA,WEEK_DATA。
星期的高位缓存数据
SUBBA,#1
=======================小时显示============================
MOVA,#11000000B。
设定小时第1位的显示地址为第2行,第0列
MOVA,HOUR_LBUF。
小时的低位缓存数据
MOVA,#11000001B。
设定小时第2位的显示地址为第2行,第1列
MOVA,HOUR_HBUF。
小时的高位缓存数据
======================冒号的显示==========================
MOVA,#11000010B。
设定冒号的显示地址为第2行,第2列
MOVA,#3AH。
冒号的ASCII码
====================分钟显示======================
MOVA,#11000011B。
设定分钟第1位的显示地址为第2行,第3列
MOVA,MINTUE_LBUF。
分钟的低位缓存数据
MOVA,#11000100B。
设定分钟第2位的显示地址为第2行,第4列
MOVA,MINTUE_HBUF。
分钟的高位缓存数据
======================冒号的显示===========================
MOVA,#11000101B。
设定冒号的显示地址为第2行,第5列
=====================秒钟显示=============================
MOVA,#11000110B。
设定秒钟第1位的显示地址为第2行,第6列
MOVA,SECOND_LBUF。
秒钟的低位缓存数据
MOVA,#11000111B。
设定秒钟第2位的显示地址为第2行,第7列
MOVA,SECOND_HBUF。
秒钟的高位缓存数据
――――――――DS18B20复位初始化子程序――――――――――
RESET_1820:
复位<
有具体的时序要求)
SETBDQ
NOP
CLRDQ
主机发出延时537微秒的复位低脉冲
MOVR1,#3
DLY:
MOVR0,#107
DJNZR0,$
DJNZR1,DLY
然后拉高数据线
等待DS18B20回应
MOVR0,#25H
T2:
JNBDQ,T5
DJNZR0,T2
时序要求延时一段时间
T5:
MOVR0,#117
T6:
DJNZR0,T6
――――――――――――――
T7:
RET
=======================================================
========DS1302初始化===========
SET_1302:
MOVDS1302_ADDR,#8EH。
写DS1302控制指令
MOVDS1302_DATA,#00H。
写数据到DS1302的8E控制寄存器中,允许对其进行写操作
LCALLWRITE。
调用写DS1302子程序
MOVDS1302_ADDR,#90H。
MOVDS1302_DATA,#0A6H。
写数据到DS1302的90控制寄存器中,对电池涓流充电,充电电流为1.1mA
=========查询忙碌标志============
CHECK_BUSY:
PUSHACC
BUSY_LOOP:
CLRE
SETBRW
CLRRS
SETBE
MOVA,p0
JBp0.7,BUSY_LOOP
POPACC
LCALLDEL
----------------------------------------------------------------------------------------------
===========延时程序===================
DEL:
MOVR6,#5
L1:
MOVR7,#248
DJNZR7,$
DJNZR6,L1
――――――――――写入DS18B20子程序―――――――――――
写入DS18B20<
有具体的时序要求)
WRITE_1820:
MOVR2,#8。
一共8位数据
WR1:
CLRDQ。
总线低位,开始写入
MOVR3,#6
DJNZR3,$。
保持16微秒以上
RRCA。
把字节DATA分成8个BIT环移给C
MOVDQ,C。
写入一个BIT
MOVR3,#23
等待
SETBDQ。
重新释放总线
DJNZR2,WR1。
写入下一个BIT
释放总线
――――――――――读出DS18B20子程序―――――――――――
将温度值从DS18B20中读出<
READ_1820:
MOVR4,#4
MOVR1,#TEMPL。
存入25H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 日期 时间 温度 显示 万年历