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

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

更新时间:2010-5-3:  来源:毕业论文
基于低功耗单片机温度计设计(电路图+原理图+流程图) 第11页
;程序名称:INIT_TEMP
;功能:初始化DS18B20,确定DS18B20是否是存在的
;入口参数:无
;出口参数:FLAG
INIT_TEMP:
            SETB  P_DS18B20
            NOP
            CLR  P_DS18B20  ;主机发出延时537微秒的复位低脉冲
            MOV  R0,#6BH
            MOV  R1,#04H
TSR1:       DJNZ  R0,$
            MOV  40,#6BH
            DJNZ  R1,TSR1
            SETB P_DS18B20 ;然后拉高数据线,释放总线进入接受状态
            NOP
            NOP
            NOP
            MOV  R0,#32H
TSR2:       JNB  P_DS18B20,TSR3  ;等待DS18B20回应
            DJNZ  R0,TSR2
            LJMP  TSR4  ;延时
TSR3:      SETB FLAG  ;置标志位,表示DS1820存在
           LJMP TSR5
TSR4:      CLR FLAG ;清标志位,表示DS1820不存在
           LJMP TSR7
TSR5:      MOV R0,#06BH
TSR6:      DJNZ R0,TSR6 ;时序要求延时一段时间
TSR7:      SETB P_DS18B20
           RET

;程序名称:READ_TEMP
;功能:读取DS18B20的数据
;入口参数:TEMPERATURE_L,TEMPERATURE_H
;出口参数:无
READ_TEMP:
             SETB  P_DS18B20
             LCALL  INIT_TEMP ;先复位DS18B20
             JB  FLAG,TSS2
             RET  ;判断DS1820是否存在?若DS18B20不存在则返回
TSS2:        MOV  A,#0CCH ;跳过ROM匹配
             LCALL  WRITE_18B20
             MOV  A,#44H  ;发出温度转换命令
             LCALL  WRITE_18B20
             LCALL  DISPLAY  ;等待AD转换结束,12位的话750微秒
             LCALL  INIT_TEMP  ;准备读温度前先复位
             MOV  A,#0CCH ;跳过ROM匹配
             LCALL  WRITE_18B20
             MOV  A,#0BEH  ;发出读温度命令
             LCALL  WRITE_18B20
             LCALL READ_18B20  ;将读出的温度数据保存到35H/36H
             RET
程序名称:WRITE_18B20
;功能:将A保存的数值写入DS1820中,
;入口参数:A 寄存器
;出口参数:无
WRITE_18B20:
MOV  R2,#8  ;一共8位数据,串行通信
CLR  C
WR1:         CLR  P_DS18B20
MOV  R3,#07
DJNZ  R3,$
RRC  A  ;循环右移
MOV  P_DS18B20,C
MOV  R3,#3CH
DJNZ  R3,$ ;23*2 = 46微妙
SETB  P_DS18B20
NOP
DJNZ  R2,WR1 ;A里面一共是8位,所以要送8次
SETB  P_DS18B20 ;释放总线
RET
;程序名称:READ_18B20
;功能:读取18B20中的数据,由于是串行通信,每次读取一个,循环8次读取
;入口参数:TEMPRATURE_L
;出口参数:无
READ_18B20:
MOV  R4,#4  ;将温度高位和低位从DS18B20中读出
MOV  R1,#TEMPERATURE_L
RE00:         MOV  R2,#8  ;数据一共有8位
RE01:         CLR C
SETB  P_DS18B20
NOP
NOP
CLR  P_DS18B20
NOP
NOP
NOP
SETB  P_DS18B20
MOV  R3,#09
RE10:         DJNZ  R3,RE10
MOV  C,P_DS18B20
MOV  R3,#3CH
RE20:         DJNZ  R3,RE20
RRC  A
DJNZ  R2,RE01
MOV  @R1,A
www.youerw.com
;程序名称:SCAN_KEY
;功能:扫描键盘
;入口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B
;出口参数:KEY_BUF_G,KEY_BUF_S,kEY_BUF_B
SCAN_KEY:
JB  K_ENTER,QUIT  ;如果又Enter键入,则开始键盘输入
LCALL  K_DELAY
JB  K_ENTER,QUIT
CLR  ENTER_FLAG  ;每次进来都赋值输入标志,设置为0
MOV  KEY_BUF_G,DIS_BUF_G ;将当前的温度赋值给KEY_BUF
 MOV  KEY_BUF_S,DIS_BUF_S
MOV  KEY_BUF_B,DIS_BUF_B
K_LOOP:
JB ENTER_FLAG,QUIT ;如果输入完成,ENTER_FLAG则为1,退出键盘程
;序
JB  K_ENTER,KUP
CALL  PRO_ENTER
KUP:        JB  K_UP,KDOWN
CALL  PRO_UP
KDOWN:     JB  K_DOWN,LOOPA
CALL  PRO_DOWN
LOOPA:      LCALL  DISPLAY
SJMP  K_LOOP
QUIT:        RET

;程序名称:PRO_ENTER
;功能:确认键盘输入和退出键盘输入
;入口参数:ENTER_FLAG
;出口参数:ENTER_FLAG
PRO_ENTER:
CALL  K_DELAY
JB  K_ENTER,K_LOOP ;按钮抖动处理
SETB E NTER_FLAG

 << 上一页  [11] 

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

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