实现日期时间温度的显示万年历
; ; 温度值存放单元 TEMP_ZH EQU 24H ;实时温度值存放单元 TEMPL EQU 25H ;低温度值存放单元 TEMPH EQU 26H ;高温度值存放单元 TEMP_TH EQU 27H ;高温报警值存放单元 TEMP_TL EQU 28H ;低温报警值存放单元 TEMPHC EQU 29H ;存十位数 BCD码 TEMPLC EQU 2AH ;存个位数 BCD码 ; ;按键输入引脚定义 K1 EQU P3.2 K2 EQU P3.3 K3 EQU P3.6 K4 EQU P3.7 ; SPK EQU P3.5 RELAY EQU 2FH ;------------------------------------ ;DS1302通信引脚定义 RST BIT p1.6 SCLK BIT p1.4 IO BIT p1.5 ;定义数据存储地址 DS1302_ADDR DATA 30H ;地址寄存器 DS1302_DATA DATA 31H ;数据寄存器 TIME_YEAR DATA 32H ;年寄存器 TIME_MONT DATA 33H ;月寄存器 TIME_DAY DATA 34H ;天寄存器 WEEK_DATA DATA 35H ;星期寄存器 HOUR DATA 36H ;小时寄存器 MINTUE DATA 37H ;分钟寄存器 SECOND DATA 38H ;秒钟寄存器 ;显示数据缓冲地址 YEAR_HBUF DATA 40H YEAR_LBUF DATA 41H MONT_HBUF DATA 42H MONT_LBUF DATA 43H DAY_HBUF DATA 44H DAY_LBUF DATA 45H WEEK_HBUF DATA 46H WEEK_LBUF DATA 47H HOUR_HBUF DATA 48H HOUR_LBUF DATA 49H MINTUE_HBUF DATA 4AH MINTUE_LBUF DATA 4BH SECOND_HBUF DATA 4CH SECOND_LBUF DATA 4DH ; X EQU 2FH ;LCD 地址变量 ; ;LCD限制引脚 RS EQU P2.4 RW EQU P2.5 E EQU P2.6 ; FLAG EQU 20H.0 KEY_UD EQU 20H.1 DQ EQU p2.7 ;============= 主程序 ============== MAIN ACALL SET_LCD ;LCD初始化设置子程序 ACALL SET_1302 ;1302初始化 TOOP ACALL RESET_1820 ;调用18B20复位子程序 ACALL TEMP_BJ ;显示温度标记℃ ACALL MEU_OK ;调用显示OK信息子程序 TOOP2 ACALL RE_TEMP ;调用读取温度数据子程序 ACALL SET_DATA ;调用处理显示温度数据子程序 ACALL TEMP_BJ ;显示温度标记子程序 LCALL RD_DS1302 LCALL DATA_BUF LCALL DISPLAY SJMP TOOP2 ;循环 ;-------- 读取温度数据子程序 -------- RE_TEMP ACALL RESET_1820 ;18B20复位子程序 MOV A,0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,44H ;发出温度转换吩咐 ACALL WRITE_1820 ;调写入子程序 ACALL RESET_1820 ;调复位子程序 MOV A,0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,0BEH ;发出读温度吩咐 ACALL WRITE_1820 ;写入子程序 ACALL READ_1820 ;调用读取子程序 RET ;-------- 温度数据处理显示子程序---------- SET_DATA ACALL CONV_TEMP ;处理温度 BCD 码子程序 ACALL DISP_BCD ;显示区 BCD 码温度值刷新子程序 ACALL CONV ;LCD显示子程序 RET ; ;---------- 处理温度 BCD 码子程序 ---------- CONV_TEMP