毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

基于单片机数字温度计设计制作 第8页

更新时间:2008-6-28:  来源:毕业论文

基于单片机数字温度计设计制作 第8页

附录四 原程序


TEMPUTER EQU 29H;温度存储单元

TEMPH    EQU 27H;温度上限标志位

TEMPL    EQU 26H;温度下限标志位

SIGN     EQU 5BH;按键S1按下次数标志位,为1时设置下限,为2时设置上限

S1   BIT  P1.0;定义S1按键为温度上下限进入按键

S2   BIT  P1.1;定义S2按键为温度上下限加一按键

S3   BIT  P1.2;定义S3按键为温度上下限减一按键

S4   BIT  P1.3;定义S4按键为温度上下限退出按键

ORG      0000H

LJMP     MAIN

ORG      0030H

MAIN:  MOV SP,#60H

       MOV  26H,#25;温度下限初值

       MOV  27H,#99;温度上限初值

       MOV  SIGN,#00H

       MOV  37H,#2

       MOV  36H,#5

       MOV  38H,#0;上电复位后显示初值

       LCALL  DISPLAY

    ;;;主程序;;;

MAIN0: JB  S1,NET1;判断S1是否按下,按下则顺序执行,否则跳转

       LCALL  D12MS;消抖动              

       JB  S1,NET1;再次判断S1是否按下

       JNB  S1,$;等待S1抬起

       INC    SIGN;S1标志位加1

       MOV  A,SIGN

       CJNE A,#1,TIAO;S1标志位与1比较,相等顺序执行,不等则跳转

       LCALL  TIAOTL

TIAO:  CJNE A,#2,NET1;S1标志位与2比较,相等顺序执行,不等则跳转

       MOV SIGN,#0;S1标志位置0

       LCALL  DISPLAY

       LCALL TIAOTH

    ;;;温度比较子程序;;;

NET1:  MOV  A,TEMPUTER

       CLR  C

       SUBB  A,TEMPH

       JNC  BJ;当测试温度高于上限时报警

       MOV  A,TEMPUTER

       CLR  C

       SUBB  A,TEMPL

       JC  BJ;当测试温度低于下限时报警

       LCALL GET_TEMPER

       LJMP   MAIN0

    ;;;报警子程序;;;

BJ:    CLR P2.1

      LCALL  DISPLAY

       LCALL  D12MS

       LCALL  DISPLAY

       LCALL  D12MS

       LCALL  DISPLAY

       LCALL  D12MS

       LCALL GET_TEMPER

       LJMP   MAIN0

   ;;;得出温度总子程序;;;

GET_TEMPER: SETB  P2.0

      LCALL  INIT_18B20

      JB  20H.1,TSS2;检测DS18B20是否再线

      RET

      TSS2:SETB P2.1

      MOV  A,#0CCH;跳过ROM匹配

      LCALL  WRITE_18B20

      MOV  A,#44H;发出温度转换命令

      LCALL  WRITE_18B20

      LCALL  INIT_18B20

      MOV  A,#0CCH;跳过ROM匹配

      LCALL  WRITE_18B20

      MOV  A,#0BEH;发出读取温度命令

      LCALL  WRITE_18B20

      LCALL  READ_18B20

      RET

   ;;;DS18B20初始化子程序;;;

INIT_18B20:SETB  P2.0

      NOP

      NOP

      CLR P2.0

      MOV R1,#03H

TSR1: MOV  R0,#6BH

      DJNZ  R0,$

      DJNZ  R1,TSR1;主机发置位脉冲持续600us左右

      SETB  P2.0;主机释放总线,P1.0口改为输入口

      NOP

      NOP

      NOP

      MOV  R0,#25H

      NOP

      NOP

      NOP

      NOP

TSR2: JNB  P2.0,TSR3;DS18B20数据线应变低,如果没变低,说明没准备好,需重来

      DJNZ  R0,TSR2;DS18B20等待64us

      LJMP  TSR4

TSR3: SETB 20H.1;不存在则置标志位

      LJMP  TSR5;不存在则重来

TSR4: CLR  20H.1;存在则清标志位

      LJMP  TSR7

TSR5: MOV  R0,#6BH;重装初值

      MOV  R1,#03H

TSR6: DJNZ  R0,TSR6

      MOV  R0,#6BH

      DJNZ R1,TSR6

TSR7: SETB  P2.0

      LCALL  DISPLAY

      RET

   ;;;DS18B20子程序;;;

WRITE_18B20:MOV  R2,#8;设置写位个数

      CLR  C

WR1:  CLR  P2.0;写开始

      NOP

      NOP

      MOV  R3,#35;设置时间常数

      DJNZ R3,$;保持整个写过程持续60us

      SETB P2.0

      NOP

      DJNZ R2,WR1;8位完否,没完则返回

      SETB P2.0

      LCALL  DISPLAY

      RET

   ;;;读取温度子程序;;;

READ_18B20:MOV  R4,#2

      MOV  R1,#36H

RE00: MOV  R2,#8

RE01: CLR  C

      SETB  P2.0

      NOP

      NOP

      CLR  P2.0

      NOP

      NOP

      NOP

      SETB P2.0

      NOP

      NOP

      MOV  C,P2.0;主机按位读入DS18B20的数据

      MOV  R3,#35

RE20: DJNZ  R3,RE20;保证读数据过程持续60us

      RRC  A;数据送入A

      DJNZ R2,RE01;  读完整个转换值

      MOV @R1,A;A中数据送数据缓冲区

      DEC  R1

         MOV  P0,A

      SETB  P2.5;开个位显示

      LCALL  D12MS

      CLR  P2.5;关个位显示

      MOV  A,37H需要完整内容的请联系QQ752018766,本文免费,转发请注明源于www.751com.cn

      MOVC  A,@A+DPTR

      MOV  P0,A

      SETB  P2.6;开十位显示

      LCALL  D12MS

      CLR  P2.6;关十位显示

      MOV  A,38H

      MOVC  A,@A+DPTR

      MOV  P0,A

      SETB  P2.7;开百位显示

      LCALL  D12MS

      CLR  P2.7;关百位显示

      RET

      ;;;温度转换子程序;;;

TEMPER_COV: MOV  A,#0F0H

      ANL  A,36H;舍去小数位

      SWAP  A

      MOV  37H,A

      MOV  A,36H

      JNB  ACC.3,TEMPER_COV1;四舍五入

      INC  37H

TEMPER_COV1: MOV  A,35H

      ANL A,#07H;舍去温度中标志位

      SWAP  A

      ADD  A,37H

      MOV  37H,A;把转换后温度放入37H

      LCALL  BIN_BCD

      RET

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页

基于单片机数字温度计设计制作 第8页下载如图片无法显示或论文不完整,请联系qq752018766

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。