PIC单片机论坛论坛展示区(非讨论区)(这个版块不能发新贴)『 单片机类精华贴子展示区 』 → 分享用16F877A和DS18B20的测温程序


  共有61906人关注过本帖树形打印

主题:分享用16F877A和DS18B20的测温程序

帅哥哟,离线,有人找我吗?
stephen
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学四年级 帖子:16 积分:552 威望:0 精华:2 注册:2005-6-7 10:14:00
分享用16F877A和DS18B20的测温程序  发帖心情 Post By:2006-1-6 8:34:00

以下是用本网站的MCD-demouse板做了一个0到99度的测温程序,只要把数据处理程序改一下就可以改变测量范围和精度。


#INCLUDE <P16F877A.INC>
CBLOCK 20H
INPUT_HIGH_8 ;high 8 bit,don't allow other P use it but temperature conversion p
INPUT_LOW_8 ;low 8 bit,don't allow other P use it but temperature conversion p
DELAY_TEMP0
DELAY_TEMP1
PASS_TEMP
UNITS_ORDER
TENS_DIGIT
COUNT_16
ENDC
ORG 00H
NOP
GOTO INITIAL
ORG 05H
TABLE
ADDWF PCL,1
DT 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,90H,90H,90H ;comment anode
DISPLAY
MOVFW UNITS_ORDER
CALL TABLE
MOVWF PORTC
BCF PORTA,0 ;trigger transistor of NPN than display units_order
CALL DELAY_1MS
BSF PORTA,0 ;close
MOVFW TENS_DIGIT
CALL TABLE
MOVWF PORTC
BCF PORTA,1 ;trigger transistor of NPN than display tens_digit
CALL DELAY_1MS
BSF PORTA,1
RETURN
DELAY_1MS
MOVLW 12H
MOVWF DELAY_TEMP0
MOVLW 12H
MOVWF DELAY_TEMP1
DECFSZ DELAY_TEMP1
GOTO $-1
DECFSZ DELAY_TEMP0
GOTO $-5
RETURN
INITIAL
BANKSEL TRISA
MOVLW 00H
MOVWF TRISA ;porta0..1 to launch led, porta2 18b20 communication port
MOVLW B'00000110' ;set porta as digital port
MOVWF ADCON1
MOVLW 00H
MOVWF TRISC ;8 bits led data bus
MOVLW 0FFH ;portb1 as a command key
MOVWF TRISB
MOVLW 00H
MOVWF OPTION_REG ;portb as week pull up
BANKSEL PORTA
CLRF UNITS_ORDER
CLRF TENS_DIGIT
MAIN
CALL DISPLAY ;press key to start the function
BTFSC PORTB,2
GOTO $-2
BTFSS PORTB,2 ;key release?
GOTO $-1
CALL INITIAL_18B20
BTFSS DELAY_TEMP1,1
GOTO MAIN
MOVLW 0CCH ;skip the rom
MOVWF PASS_TEMP
CALL WRITE_18B20
MOVLW 44H ;release the command of conversion
MOVWF PASS_TEMP
CALL WRITE_18B20
MOVLW D'30'
MOVWF COUNT_16
MOVLW D'90' ;delay 900ms for conversion
MOVWF DELAY_TEMP1
MOVLW D'110'
MOVWF DELAY_TEMP0
DECFSZ DELAY_TEMP0
GOTO $-1
DECFSZ DELAY_TEMP1
GOTO $-5
DECFSZ COUNT_16
GOTO $-9
CALL INITIAL_18B20
BTFSS DELAY_TEMP1,1
GOTO MAIN
MOVLW 0CCH
MOVWF PASS_TEMP
CALL WRITE_18B20 ;release the command of reading
MOVLW 0BEH
MOVWF PASS_TEMP
CALL WRITE_18B20
CALL READ_18B20
CALL INITIAL_18B20 ;end the other data to transmit
BTFSS DELAY_TEMP1,1
GOTO MAIN
CALL BCD_CONVERSION
GOTO MAIN
INITIAL_18B20
BCF PORTB,2
BANKSEL TRISA
BCF TRISA,2
BANKSEL PORTA
MOVLW 0BH
MOVWF DELAY_TEMP0
MOVLW 22H
MOVWF COUNT_16
DECFSZ COUNT_16,1
GOTO $-1 ;delay 586us
DECFSZ DELAY_TEMP0,1
GOTO $-5
BANKSEL TRISA
BSF TRISA,2 ;release the bus
BANKSEL PORTA
MOVFW PORTA
MOVLW D'25' ;delay 76us
MOVWF DELAY_TEMP0
DECFSZ DELAY_TEMP0,1
GOTO $-1
BTFSS PORTA,2
GOTO $+3
BCF DELAY_TEMP1,1 ;not respondence
GOTO $+2
BSF DELAY_TEMP1,1
MOVLW D'160' ;delay 480us
MOVWF DELAY_TEMP0
DECFSZ DELAY_TEMP0,1
GOTO $-1
BSF DELAY_TEMP1,1 ;the slave device responded and set the bit of flag
RETURN
WRITE_18B20
MOVLW 08H
MOVWF DELAY_TEMP0
BCF STATUS,C
WR_LOOP1
BCF PORTA,2
BANKSEL TRISA
BCF TRISA,2
BANKSEL PORTA
NOP
NOP
RRF PASS_TEMP,1
BTFSS STATUS,C
GOTO WR_ZERO
BANKSEL TRISA
BSF TRISA,2
BANKSEL PORTA
WR_ZERO
MOVLW D'25' ;delay 75us
MOVWF DELAY_TEMP1
DECFSZ DELAY_TEMP1
GOTO $-1
BANKSEL TRISA
BSF TRISA,2
BANKSEL PORTA
NOP
NOP
DECFSZ DELAY_TEMP0,1
GOTO WR_LOOP1
RETURN
READ_18B20
MOVLW D'16'
MOVWF DELAY_TEMP0
READ_LOOP2
BCF PORTA,2
BANKSEL TRISA
BCF TRISA,2
BANKSEL PORTA
NOP
NOP
NOP
NOP
NOP
BANKSEL TRISA
BSF TRISA,2
BANKSEL PORTA
NOP
NOP
NOP
NOP
BTFSS PORTA,2
GOTO $+3
BSF STATUS,C
GOTO $+2
BCF STATUS,C
RRF INPUT_HIGH_8,1
RRF INPUT_LOW_8,1
MOVLW D'20' ;delay 60us
MOVWF DELAY_TEMP1
DECFSZ DELAY_TEMP1,1
GOTO $-1
DECFSZ DELAY_TEMP0,1
GOTO READ_LOOP2
RETURN
BCD_CONVERSION
MOVLW 08H
MOVWF COUNT_16
MOVLW 0FH
ANDWF INPUT_HIGH_8,1
SWAPF INPUT_HIGH_8,1
MOVLW 0F0H
ANDWF INPUT_LOW_8,1
SWAPF INPUT_LOW_8,1
MOVFW INPUT_LOW_8
ADDWF INPUT_HIGH_8,1 ;save 8bits data in input_high_8
CLRF INPUT_LOW_8
BCF STATUS,C
LOOP_8TIMES
RLF INPUT_HIGH_8,1
RLF INPUT_LOW_8,1
DECFSZ COUNT_16
GOTO $+2
GOTO SEPARATE_2RS
MOVLW INPUT_LOW_8
MOVWF FSR
CALL ADJ_BCD
GOTO LOOP_8TIMES
ADJ_BCD
MOVLW 03H
ADDWF INDF,W
MOVWF TENS_DIGIT
BTFSC TENS_DIGIT,3
MOVWF INDF ;if the low four bits plus 3 is more than 7,
MOVLW 30H ;add 3,if less than 7,do not change it
ADDWF INDF,W ;if the high four bits plus 3 is more than 7,than
MOVWF TENS_DIGIT
BTFSC TENS_DIGIT,7 ;add 3,if less than 7,do not change it
MOVWF INDF
RETURN
SEPARATE_2RS
MOVFW INPUT_LOW_8
MOVWF UNITS_ORDER
MOVWF TENS_DIGIT
MOVLW 0FH
ANDWF UNITS_ORDER,1
MOVLW 0F0H
ANDWF TENS_DIGIT,1
SWAPF TENS_DIGIT,1
RETURN
END


支持(1中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
屏凡
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 布衣
等级:老师(版主) 帖子:1858 积分:41279 威望:0 精华:12 注册:2006-1-5 12:30:00
  发帖心情 Post By:2006-1-6 9:50:00

好东西,

支持!!!!!!!!!

图片点击可在新窗口打开查看


   前进中的莱鸟,在交流中提高。 
   QQ:664343259   群:32095080 43605828
支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
陈学乾
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 逍遥帮总舵主
等级:校长(管理员) 帖子:11669 积分:247247 威望:1 精华:16 注册:2004-8-17 1:52:00
  发帖心情 Post By:2006-1-7 0:21:00

好人啊,不错!

bucuo  支持下图片点击可在新窗口打开查看图片点击可在新窗口打开查看


愿我们大家一起努力,让本论坛能给更多的朋友给予帮助. http://www.pic16.com
支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
zhongruntian
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 丐帮帮主
等级:老师(版主) 帖子:9899 积分:201298 威望:0 精华:32 注册:2005-3-13 12:01:00
  发帖心情 Post By:2006-1-7 20:51:00

顶顶!


http://www.cevx.com/bbs/index.php
支持(0中立(0反对(0回到顶部
美女呀,离线,留言给我吧!
huna168
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学一年级 帖子:1 积分:29 威望:0 精华:0 注册:2006-1-13 9:57:00
  发帖心情 Post By:2006-1-13 10:34:00

ding ding


支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
xiajiean
  6楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学四年级 帖子:11 积分:315 威望:0 精华:0 注册:2005-3-19 9:38:00
  发帖心情 Post By:2006-1-20 13:17:00

请问程序中:ADDFW 和 MOVFW 是什么?

好像没这条指令

是宏吗?



支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
Suhuoyi_27
  7楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学五年级 帖子:22 积分:534 威望:0 精华:0 注册:2006-2-16 14:14:00
  发帖心情 Post By:2006-3-2 19:11:00

好东西,收了,谢谢



新手上路,各位多多帮助哈~~!
支持(0中立(0反对(1回到顶部
美女呀,离线,留言给我吧!
≤寒失雪意≥
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学四年级 帖子:15 积分:316 威望:0 精华:0 注册:2006-3-11 10:42:00
  发帖心情 Post By:2006-3-12 20:07:00

看不懂,太深奥了,能不能来点初学的能懂的。

支持(1中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
xiaoqiao
  9楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学五年级 帖子:28 积分:872 威望:0 精华:0 注册:2005-12-24 18:32:00
  发帖心情 Post By:2006-3-27 21:22:00

谢谢!收下了,正准备写一个测温程序,我参考参考。

支持(0中立(0反对(0回到顶部
美女呀,离线,留言给我吧!
张芹
  10楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小学二年级 帖子:3 积分:63 威望:0 精华:0 注册:2006-4-7 11:25:00
  发帖心情 Post By:2006-4-7 11:27:00

大家好呀


支持(2中立(0反对(0回到顶部
总数 78 1 2 3 4 5 6 7 8 下一页
Google 全部 本站