标题:
基于DS18B20的温度计设计-汇编语言
[打印本页]
作者:
daming
时间:
2014-12-29 01:48
标题:
基于DS18B20的温度计设计-汇编语言
最近用DS18B20编了个温度计,还是用那一块单片机学习板,个人认为最大的收获就是会看着时序图编程。其实看时序很简单,编过一次就会发现的。呵呵,不废话了。还是贴程序了。下面是温度计的程序,DS18B20本来是有报警系统的,现在删去,嘿嘿,那个不共享了。
DS18B20的复位、读写时序图:
看看效果图吧:
这个是室温
放上手指试试(呵呵!)
后记:这块板子马上就要交了,所以就赶出来了这段程序,不足之处望见谅。还是郑文老师的板子,呵呵,雷同是不可能了,自己写的,如果有人说我是网上拉的,那我也没什么好说,因为程序都是大同小异,关键是我有没有编过,至少答辩的话,我一定100分。【其实后面还有一段报警,不共享了(嘿嘿)】。
哎,全国赛没我们份了。大师、阿康,我们要暂时告别组合了。阿康的硬件一流,焊接功底很深厚,很多队伍都抢着要啊,呵呵,我吗一个只会编编程而且编的还不怎么样的小角色。不过小看我的人一般都会后悔,暑假有的忙了。多看看书吧,这个学年我们可以找借口说我们什么都不懂,但是下个学年就不一样了,因为我们什么都教过了,加油吧,努力吧!
据说很多电子专业的毕业生都拿我上面的东西叫做“毕业设计”,呵呵,我觉得很惊讶,那我不是可以毕业了?呵呵,说实话这个东西是很简单的。
;DS18B20接P1.2口
flag equ 20h.0
templ equ 30h ;读取温度的高位
temph equ 31h ;读取温度的低位
temp equ 32h ;高低位的温度数据转换缓冲
showh equ 33h ;显示高位的缓冲位
showl equ 34h ;显示低位的缓冲位
k1 equ p3.2
k2 equ p3.3
k3 equ p3.4
k4 equ p3.5
org 0000h
ljmp start0
org 0040h
start0: lcall rest
jnb flag,start1
clr ea
mov a,#0cch
lcall write_
mov a,#44h
lcall write_
lcall rest
mov a,#0cch
lcall write_
mov a,#0beh
lcall write_
lcall read_
lcall convtemp_
lcall show_
setb ea
sjmp start0
start1: sjmp start0
;====================================复位子程序
rest: setb p1.2
nop
nop
clr p1.2
mov r7, #0
djnz r7,$
setb p1.2
nop
nop
mov r6,#80
rst0: jnb p1.2,rst2
jmp rst1
rst1: djnz r6,rst0
jmp rst3
rst2: setb flag
setb p1.2
mov r6,#0
djnz r6,$
jmp ret0
rst3: clr flag
setb p1.2
ret0: ret
;=====================================写程序
write_: mov r6,#8
clr c
writ0: rrc a
writ1: setb p1.2
mov r7,#8
nop
clr p1.2
nop
djnz r7,$
mov p1.2,c
mov r7,#20
djnz r7,$
djnz r6,writ0
setb p1.2
ret
;======================================读程序
read_: mov r0,#templ
mov r3,#2
read0: mov r5,#8
read1: mov r4,#4
clr c
setb p1.2
nop
nop
clr p1.2
nop
nop
nop
setb p1.2
djnz r4,$
mov c,p1.2
rrc a
mov r4,#30
djnz r4,$
djnz r5,read1
setb p1.2
mov @r0,a
inc r0
djnz r3,read0
ret
;==========================温度处理,templ的第四位是小数
部分,舍去,temph的低四位和templ高四位是整数的16进制温度
convtemp_:
mov a,templ
anl a,#0f0h
swap a
mov temp,a
mov a,temph
anl a,#0fh
swap a
orl a,temp
mov b,#0ah
div ab
mov showh,a
mov a,b
mov showl,a
ret
;===================================显示子程序
show_: clr p1.5
clr p1.6
clr p1.7
mov a,showh
lcall shw0
lcall delay
setb p1.5
setb p1.6
setb p1.7
mov a,showl
lcall shw0
lcall delay
ret
shw0: mov dptr,#led_data
movc a,@a+dptr
mov p0,a
ret
;=====================================延时子程序
delay: mov r3,#4
mov r1,#255
del0: djnz r1,$ ;延时2ms左右
djnz r3,del0
ret
;=======================================段码
led_data: db
0c0h,0f9h,0a4h,0b0h,099h,92h,82h,0f8h,80h,90h
复制代码
作者:
51hei电控2112312
时间:
2014-12-29 03:16
GOOD!!!
作者:
安装阿斯
时间:
2015-3-13 21:02
能不指导一下c语言多路报警程序
作者:
lxa0
时间:
2017-8-14 02:44
正需要
太好了
感谢楼主!
作者:
罗塔尼尼的黑犬
时间:
2017-8-14 11:32
可惜我们毕业设计也不能是这么菜的东西
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1