⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex10-4.sdi

📁 ds18b20温度采集及数码管显示
💻 SDI
📖 第 1 页 / 共 3 页
字号:
03E4,24 30,,          ADD  A,#30H
03E6,C0 F0,,          PUSH  B
03E8,85 2F F0,,          MOV  B,LCD_X
03EB,12 04 97,,          LCALL  LCDP2
03EE,D0 F0,,          POP  B
03F0,74 0A,,          MOV  A,#0AH
03F2,C5 F0,,          XCH  A,B
03F4,84,,          DIV  AB
03F5,24 30,,          ADD  A,#30H
03F7,05 2F,,          INC  LCD_X
03F9,C0 F0,,          PUSH  B
03FB,85 2F F0,,          MOV  B,LCD_X
03FE,12 04 97,,          LCALL  LCDP2
0401,D0 F0,,          POP  B
0403,05 2F,,          INC  LCD_X
0405,E5 F0,,          MOV  A,B
0407,85 2F F0,,          MOV  B,LCD_X
040A,24 30,,          ADD  A,#30H
040C,12 04 97,,          LCALL  LCDP2
040F,22,,          RET
,,,
0410,,SHOW_DIG2L,SHOW_DIG2L:
0410,75 F0 64,,          MOV  B,#100
0413,84,,          DIV  AB
0414,74 0A,,          MOV  A,#0AH
0416,C5 F0,,          XCH  A,B
0418,84,,          DIV  AB
0419,24 30,,          ADD  A,#30H
041B,C0 F0,,          PUSH  B
041D,85 2F F0,,          MOV  B,LCD_X
0420,12 04 97,,          LCALL  LCDP2
0423,D0 F0,,          POP  B
0425,05 2F,,          INC  LCD_X
0427,E5 F0,,          MOV  A,B
0429,85 2F F0,,          MOV  B,LCD_X
042C,24 30,,          ADD  A,#30H
042E,12 04 97,,          LCALL  LCDP2
0431,22,,          RET
,,,
,,,;************************ 显示区 BCD 码温度值刷新子程序 **********************
0432,E5 2A,DISPBCD,DISPBCD:      MOV  A,TEMPLC
0434,54 0F,,              ANL  A,#0FH
0436,F5 70,,              MOV  70H,A                 ;小数位
0438,E5 2A,,              MOV  A,TEMPLC
043A,C4,,              SWAP  A
043B,54 0F,,              ANL  A,#0FH
043D,F5 71,,              MOV  71H,A                 ;个位
043F,E5 29,,              MOV  A,TEMPHC
0441,54 0F,,              ANL  A,#0FH
0443,F5 72,,              MOV  72H,A                 ;十位
0445,E5 29,,              MOV  A,TEMPHC
0447,C4,,              SWAP  A
0448,54 0F,,              ANL  A,#0FH
044A,F5 73,,              MOV  73H,A                 ;百位
044C,22,DISPBCD2,DISPBCD2:     RET
,,,
,,,;*************************** LCD 显示数据处理子程序 *************************
044D,E5 73,CONV,CONV:     MOV  A,73H                            ;加载百位数据
044F,75 2F 06,,          MOV  LCD_X,#6                         ;设置位置
0452,B4 01 03,,          CJNE A,#1,CONV1
0455,02 04 6B,,          JMP  CONV2
0458,B4 0B 05,CONV1,CONV1:    CJNE A,#0BH,CONV11
045B,74 2D,,                  MOV  A,#"-"                                   ;"-"号显示
045D,02 04 62,,                  JMP  CONV111
0460,74 20,CONV11,CONV11:   MOV  A,#" "                                   ;"+"号不显示
0462,85 2F F0,CONV111,CONV111:  MOV  B,LCD_X
0465,12 04 97,,          LCALL  LCDP2
0468,02 04 6E,,          JMP  CONV3
046B,12 04 8E,CONV2,CONV2:    LCALL  SHOW_DIG2                      ;显示数据
046E,05 2F,CONV3,CONV3:    INC  LCD_X
0470,E5 72,,          MOV  A,72H                            ;十位
0472,12 04 8E,,          LCALL  SHOW_DIG2
0475,05 2F,,          INC  LCD_X
0477,E5 71,,          MOV  A,71H                            ;个位
0479,12 04 8E,,          LCALL  SHOW_DIG2
047C,05 2F,,          INC  LCD_X
047E,74 2E,,          MOV  A,#'.'
0480,85 2F F0,,          MOV  B,LCD_X
0483,12 04 97,,          LCALL  LCDP2
0486,E5 70,,          MOV  A,70H                            ;加载小数点位
0488,05 2F,,          INC  LCD_X                            ;设置显示位置
048A,12 04 8E,,          LCALL  SHOW_DIG2                      ;显示数据
048D,22,,          RET
,,,
,,,;*************************** 第二行显示数字子程序 *************************
048E,24 30,SHOW_DIG2,SHOW_DIG2:ADD  A,#30H
0490,85 2F F0,,          MOV  B,LCD_X
0493,12 04 97,,          LCALL  LCDP2
0496,22,,          RET
,,,
,,,;*************************** 第二行显示数字子程序 *************************
0497,C0 E0,LCDP2,LCDP2:   PUSH  ACC
0499,E5 F0,,         MOV  A,B               ;设置显示地址
049B,24 C0,,         ADD  A,#0C0H           ;设置LCD的第二行地址
049D,12 05 23,,         LCALL  WCOM       ;写入命令
04A0,D0 E0,,         POP  ACC               ;由堆栈取出A
04A2,12 05 31,,         LCALL  WDATA           ;写入数据
04A5,22,,         RET
,,,
,,,;*************************** 对 LCD 做初始化设置及测试*************************
04A6,C2 A2,SET_LCD,SET_LCD: CLR  LCD_EN
04A8,12 04 AF,,         LCALL  INIT_LCD    ;初始化 LCD
04AB,12 02 A8,,         LCALL  STORE_DATA  ;将自定义字符存入LCD的CGRAM
04AE,22,,         RET
,,,
,,,;****************************** LCD初始化  ***********************************
04AF,74 38,INIT_LCD,INIT_LCD: MOV  A,#38H        ;2行显示,字形5*7点阵
04B1,12 05 23,,          LCALL  WCOM
04B4,12 05 73,,          LCALL  DELAY1
04B7,74 38,,          MOV  A,#38H
04B9,12 05 23,,          LCALL  WCOM
04BC,12 05 73,,          LCALL  DELAY1
04BF,74 38,,          MOV  A,#38H
04C1,12 05 23,,          LCALL  WCOM
04C4,12 05 73,,          LCALL  DELAY1
04C7,74 0C,,          MOV  A,#0CH        ;开显示,显示光标,光标不闪烁
04C9,12 05 23,,          LCALL  WCOM
04CC,12 05 73,,          LCALL  DELAY1
04CF,74 01,,          MOV  A,#01H        ;清除 LCD 显示屏
04D1,12 05 23,,          LCALL  WCOM
04D4,12 05 73,,          LCALL  DELAY1
04D7,22,,          RET
,,,
,,,;***************************** 清除LCD的第一行字符  **************************
04D8,74 80,CLR_LINE1,CLR_LINE1:MOV  A,#80H        ;设置 LCD 的第一行地址
04DA,12 05 23,,          LCALL  WCOM
04DD,78 18,,          MOV  R0,#24        ;设置计数值
04DF,74 20,C1,    C1:   MOV  A,#' '        ;载入空格符至LCD
04E1,12 05 31,,          LCALL  WDATA       ;输出字符至LCD
04E4,D8 F9,,          DJNZ  R0,C1        ;计数结束
04E6,22,,          RET
,,,;************************* LCD的第一行或第二行显示字符 **********************
04E7,B4 01 10,LCD_PRINT,LCD_PRINT:CJNE  A,#1,LINE2  ;判断是否为第一行
04EA,74 80,LINE1,  LINE1:  MOV  A,#80H       ;设置 LCD 的第一行地址
04EC,12 05 23,,          LCALL  WCOM        ;写入命令
04EF,12 05 14,,          LCALL  CLR_LINE    ;清除该行字符数据
04F2,74 80,,          MOV  A,#80H       ;设置 LCD 的第一行地址
04F4,12 05 23,,          LCALL  WCOM        ;写入命令
04F7,02 05 07,,          JMP  FILL
04FA,74 C0,LINE2,  LINE2:  MOV  A,#0C0H      ;设置 LCD 的第二行地址
04FC,12 05 23,,          LCALL  WCOM        ;写入命令
04FF,12 05 14,,          LCALL  CLR_LINE    ;清除该行字符数据
0502,74 C0,,          MOV  A,#0C0H      ;设置 LCD 的第二行地址
0504,12 05 23,,          LCALL  WCOM
0507,E4,FILL,  FILL:   CLR  A            ;填入字符
0508,93,,          MOVC  A,@A+DPTR   ;由消息区取出字符
0509,B4 00 01,,          CJNE  A,#0,LC1    ;判断是否为结束码
050C,22,,          RET
050D,12 05 31,LC1,  LC1:    LCALL  WDATA       ;写入数据
0510,A3,,          INC  DPTR         ;指针加1
0511,80 F4,,          JMP  FILL         ;继续填入字符
0513,22,,          RET
,,,
,,,;*************************** 清除1行 LCD 的字符 ****************************
0514,78 18,CLR_LINE,CLR_LINE: MOV  R0,#24
0516,74 20,CL1,CL1:      MOV  A,#' '
0518,12 05 31,,          LCALL  WDATA
051B,D8 F9,,          DJNZ  R0,CL1
051D,22,,          RET
051E,7F FA,DE,DE:       MOV  R7,#250
0520,DF FE,,          DJNZ  R7,$
0522,22,,          RET
,,,
,,,;**************************** LCD 间接控制方式命令写入 *************************
0523,F5 80,WCOM,WCOM:     MOV  P0,A       ;写入命令
0525,C2 A0,,          CLR LCD_RS      ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
0527,C2 A1,,          CLR LCD_RW
0529,D2 A2,,          SETB LCD_EN
052B,12 05 73,,          LCALL DELAY1
052E,C2 A2,,          CLR LCD_EN
0530,22,,          RET
,,,
,,,;**************************** LCD 间接控制方式数据写入 *************************
0531,F5 80,WDATA,WDATA:   MOV  P0,A       ;写入数据
0533,D2 A0,,         SETB  LCD_RS
0535,C2 A1,,          CLR  LCD_RW
0537,D2 A2,,          SETB  LCD_EN
0539,12 05 1E,,          LCALL  DE
053C,C2 A2,,          CLR  LCD_EN
053E,12 05 1E,,          LCALL  DE
0541,22,,          RET
,,,
,,,;************************** 在LCD的第一行显示字符 **************************
0542,C0 E0,LCDP1,LCDP1:   PUSH  ACC
0544,E5 F0,,         MOV  A,B         ;设置显示地址
0546,24 80,,         ADD  A,#80H      ;设置LCD的第一行地址
0548,12 05 23,,         LCALL  WCOM       ;写入命令
054B,D0 E0,,         POP  ACC         ;由堆栈取出A
054D,12 05 31,,         LCALL  WDATA      ;写入数据
0550,22,,         RET
,,,
,,,;****************************** 声光报警子程序 *******************************
0551,7E 64,BEEP_BL,BEEP_BL: MOV  R6,#100
0553,12 05 62,BL2, BL2:    LCALL  DEX1
0556,B2 B7,,         CPL  BEEP
0558,B2 93,,         CPL  RELAY
055A,DE F7,,         DJNZ  R6,BL2
055C,7D 0A,,         MOV  R5,#10
055E,12 05 68,,         LCALL  DELAY
0561,22,,         RET
0562,7F B4,DEX1, DEX1:   MOV  R7,#180
0564,00,DE2, DE2:    NOP
0565,DF FD,,         DJNZ  R7,DE2
0567,22,,         RET
,,,
,,,;****************************** 延时子程序 *******************************
0568,7E 32,DELAY,DELAY:   MOV  R6,#50
056A,7F 64,DL1, DL1:    MOV  R7,#100
056C,DF FE,,         DJNZ  R7,$
056E,DE FA,,         DJNZ  R6,DL1
0570,DD F6,,         DJNZ  R5,DELAY
0572,22,,         RET
0573,7E 19,DELAY1,DELAY1:  MOV  R6,#25      ;延时5毫秒
0575,7F 64,DL2, DL2:    MOV  R7,#100
0577,DF FE,,         DJNZ  R7,$
0579,DE FA,,         DJNZ  R6,DL2
057B,22,,         RET
000E,,,        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -