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

基于低功耗单片机温度计设计(电路图+原理图+流程图) 第10页

更新时间:2010-5-3:  来源:毕业论文
基于低功耗单片机温度计设计(电路图+原理图+流程图) 第10页
附录A  源程序

TEMPERATURE_L  DATA  31H  ;DS18B20低8位Buffer
TEMPERATURE_H  DATA  30H  ;DS18B20高8位Buffer
       TEMPERATURE_HC  DATA  32H  ;计算后的百位和十位的BCD码存放
;BUFFER
       TEMPERATURE_LC  DATA  33H  ;计算后的个位和小数位的BCD码存放
       TEMPERATURE_ZH  DATA  34H ;  计算后十位和个位HEX码的存放BUFFER
DIS_BUF_X  DATA  35H  ;数码管小数位Buffer
        DIS_BUF_G  DATA  36H  ;数码管个位Buffer
        DIS_BUF_S  DATA  37H  ;数码管十位Buffer
        DIS_BUF_B  DATA  38H  ;数码管百位Buffer
        KEY_BUF_G  DATA  39H  ;键盘输入后,的个位值
        KEY_BUF_S  DATA  49H  ;键盘输入后,的十位值
        KEY_BUF_B  DATA  41H  ;键盘输入后,的百位值
        K_UP  EQU  P1.1  ;上调按钮
        K_DOWN  EQU  P1.2  ;下调按钮
        K_ENTER  EQU  P1.0  ;输入数据确认按钮
        P_DS18B20  EQU  P3.0  ;读取DS18B20的输入端口
        P_SWITCH  EQU  P3.1  ;可控硅控制
        FLAG  EQU  20H.0  ;标志位,确定是否存在DS18B20
        ENTER_FLAG  EQU  20H.1  ;键盘输入的标志位,
        ORG  0000H
        LJMP  MAIN
        ORG  0100H
MAIN:  MOV  SP,#60H  ;初始化
        MOV  KEY_BUF_G,#00H ;由于KEY_BUF是由用户输入的,所以先赋值初始化
        MOV  KEY_BUF_S,#00H
        MOV  KEY_BUF_B,#00H

NEXT:
        LCALL  READ_TEMP  ;调用读温度子程序
        JB  FLAG,NORMAL  ;判断是否有DS18B20的存在
        CALL  ERR  ;不存在时显示错误信息
        AJMP  NEXT
NORMAL:  LCALL DATA_DEA ;处理从DS18B20得到的数据
           LCALL SET_DIS_BUF ;赋值给DIS_BUF_X,G,S,B
           LCALL DISPLAY ;调用数码管显示子程序
           LCALL SCAN_KEY ;扫描键盘
           LCALL SWITCH ;处理可控硅
           AJMP NEXT

;程序名称:ERR
;功能:程序出错处理,显示四个8,即8888
;入口参数:无
;出口参数:DIS_BUF_X,DIS_BUF_G, DIS_BUF_S, DIS_BUF_B
ERR:   MOV  DIS_BUF_X,#08H  ;如果没有找到DS18B20,那么就显示错误,错误
;显示为888
MOV  DIS_BUF_G,#08H
MOV  DIS_BUF_S,#08H
MOV  DIS_BUF_B,#08H
LCALL  DISPLAY
RET
;程序名称:DATA_DEAL
;功能:处理采集后的的数据
;入口参数:TEMPERATURE_L
;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_
DATA_DEAL:
MOV  A,TEMPERATURE_H  ;判温度是否零下
ANL  A,#80H
JZ  TEMPC1  ;A为0,说明是正数,如果是负数,则
;对低8为进行补码处理
CLR C
MOV  A,TEMPERATURE_L  ;二进制数求补(双字节)
CPL  A  ;取反加1
ADD  A,#01H
MOV  TEMPERATURE_L,A 
MOV  A,TEMPERATURE_H
CPL  A
ADDC  A,#00H 
MOV  TEMPERATURE_H,A  ;写回TEMPERATURE_H
MOV  TEMPERATURE_HC,#0BH
SJMP  TEMPC11
TEMPC1:   MOV  TEMPERATURE_HC,#0AH
TEMPC11:  MOV  A,TEMPERATURE_HC
           SWAP  A
           MOV  TEMPERATURE_HC,A
           MOV  A,TEMPERATURE_L
           ANL  A,#0FH
           MOV  DPTR,#TEMPDOTTAB
           MOVC  A,@A+DPTR ;查表
           MOV  TEMPERATURE_LC,A  ;TEMPERATURE_LC LOW=小数部分 BCD
        www.751com.cn             ORL  A,TEMPERATURE_L
             MOV  TEMPERATURE_ZH,A  ;组合后的值存入TEMPERATURE_ZH
             LCALL  HtoB  ;转换HEx值成为BCD码
             MOV  TEMPERATURE_L,A
ANL  A,#0F0H
SWAP  A
ORL  A,TEMPERATURE_HC ;TEMPERATURE_HC LOW位 = 十位数
MOV  TEMPERATURE_HC,A
MOV  A,TEMPERATURE_L
ANL  A,#0FH
SWAP  A
MOV  R7,A
MOV  A,TEMPERATURE_HC ;TEMPERATURE_HC HI = 百位数 BCD
ANL  A,#0FH
ORL  A,R7
MOV  TEMPERATURE_HC,A

TEMPC12:    RET ;小数部分码表
TEMPDOTTAB:
 DB              00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H
;0.0625->00H
;0.0625*2 = 0.125->01H
;0.0625*3 = 0.1875->01H
;0.0625*4 = 0.25->02H
;0.0625*5 = 0.3125->03H
;以此类推..........
;程序名称:HtoB
;功能:十辣进制转 BCD
;入口参数:A
;出口参数:R7
HtoB:     MOV  B,#064H ;100
          DIV  AB ;a/100
          MOV  R7,A ;
          MOV  A,#0AH
          XCH  A,B
          DIV  AB
          SWAP  A
          ORL  A,B
          RET

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

基于低功耗单片机温度计设计(电路图+原理图+流程图) 第10页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

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