找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8340|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

基于DS18B20的溫度計(jì)設(shè)計(jì)-匯編語言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-29 01:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近用DS18B20編了個(gè)溫度計(jì),還是用那一塊單片機(jī)學(xué)習(xí)板,個(gè)人認(rèn)為最大的收獲就是會(huì)看著時(shí)序圖編程。其實(shí)看時(shí)序很簡單,編過一次就會(huì)發(fā)現(xiàn)的。呵呵,不廢話了。還是貼程序了。下面是溫度計(jì)的程序,DS18B20本來是有報(bào)警系統(tǒng)的,現(xiàn)在刪去,嘿嘿,那個(gè)不共享了。


DS18B20的復(fù)位、讀寫時(shí)序圖:



看看效果圖吧:
這個(gè)是室溫


放上手指試試(呵呵。





后記:這塊板子馬上就要交了,所以就趕出來了這段程序,不足之處望見諒。還是鄭文老師的板子,呵呵,雷同是不可能了,自己寫的,如果有人說我是網(wǎng)上拉的,那我也沒什么好說,因?yàn)槌绦蚨际谴笸‘,關(guān)鍵是我有沒有編過,至少答辯的話,我一定100分!酒鋵(shí)后面還有一段報(bào)警,不共享了(嘿嘿)】。
哎,全國賽沒我們份了。大師、阿康,我們要暫時(shí)告別組合了。阿康的硬件一流,焊接功底很深厚,很多隊(duì)伍都搶著要啊,呵呵,我嗎一個(gè)只會(huì)編編程而且編的還不怎么樣的小角色。不過小看我的人一般都會(huì)后悔,暑假有的忙了。多看看書吧,這個(gè)學(xué)年我們可以找借口說我們什么都不懂,但是下個(gè)學(xué)年就不一樣了,因?yàn)槲覀兪裁炊冀踢^了,加油吧,努力吧!

據(jù)說很多電子專業(yè)的畢業(yè)生都拿我上面的東西叫做“畢業(yè)設(shè)計(jì)”,呵呵,我覺得很驚訝,那我不是可以畢業(yè)了?呵呵,說實(shí)話這個(gè)東西是很簡單的。


  1. ;DS18B20接P1.2口
  2. flag    equ     20h.0
  3. templ   equ     30h         ;讀取溫度的高位
  4. temph   equ     31h         ;讀取溫度的低位
  5. temp    equ     32h         ;高低位的溫度數(shù)據(jù)轉(zhuǎn)換緩沖
  6. showh   equ     33h         ;顯示高位的緩沖位
  7. showl   equ     34h         ;顯示低位的緩沖位

  8. k1      equ     p3.2
  9. k2      equ     p3.3
  10. k3      equ     p3.4
  11. k4      equ     p3.5
  12.         org     0000h
  13.         ljmp    start0
  14.         org     0040h

  15. start0: lcall   rest
  16.         jnb     flag,start1
  17.         clr     ea
  18.         mov     a,#0cch
  19.         lcall    write_
  20.         mov     a,#44h
  21.         lcall    write_
  22.         lcall    rest
  23.         mov     a,#0cch
  24.         lcall    write_
  25.         mov     a,#0beh
  26.         lcall    write_
  27.         lcall    read_
  28.         lcall    convtemp_
  29.         lcall    show_
  30.         setb     ea
  31.         sjmp     start0
  32. start1: sjmp     start0
  33. ;====================================復(fù)位子程序
  34. rest:  setb    p1.2
  35.        nop
  36.        nop
  37.        clr     p1.2
  38.        mov     r7, #0
  39.        djnz    r7,$
  40.        setb    p1.2
  41.        nop
  42.        nop
  43.        mov     r6,#80
  44. rst0:  jnb     p1.2,rst2
  45.        jmp     rst1
  46. rst1:  djnz    r6,rst0
  47.        jmp     rst3
  48. rst2:  setb    flag
  49.        setb    p1.2
  50.        mov     r6,#0
  51.        djnz    r6,$
  52.        jmp     ret0
  53. rst3:  clr     flag
  54.        setb    p1.2
  55. ret0:   ret
  56. ;=====================================寫程序
  57. write_: mov     r6,#8
  58.         clr     c
  59. writ0:  rrc     a
  60. writ1:  setb    p1.2
  61.         mov     r7,#8
  62.         nop
  63.         clr     p1.2
  64.         nop
  65.         djnz    r7,$
  66.         mov     p1.2,c
  67.         mov     r7,#20
  68.         djnz    r7,$
  69.         djnz    r6,writ0
  70.         setb    p1.2
  71.         ret
  72. ;======================================讀程序
  73. read_:  mov     r0,#templ
  74.         mov     r3,#2
  75. read0:  mov     r5,#8
  76. read1:  mov     r4,#4
  77.         clr     c
  78.         setb    p1.2
  79.         nop
  80.         nop
  81.         clr     p1.2
  82.         nop
  83.         nop
  84.         nop
  85.         setb    p1.2
  86.         djnz    r4,$
  87.         mov     c,p1.2
  88.         rrc     a
  89.         mov     r4,#30
  90.         djnz    r4,$
  91.         djnz    r5,read1
  92.         setb    p1.2
  93.         mov     @r0,a
  94.         inc     r0
  95.         djnz    r3,read0
  96.         ret
  97. ;==========================溫度處理,templ的第四位是小數(shù)
  98. 部分,舍去,temph的低四位和templ高四位是整數(shù)的16進(jìn)制溫度
  99. convtemp_:
  100.            mov    a,templ
  101.            anl    a,#0f0h
  102.            swap   a
  103.            mov    temp,a
  104.            mov    a,temph
  105.            anl    a,#0fh
  106.            swap   a
  107.            orl    a,temp

  108.            mov    b,#0ah
  109.            div    ab
  110.            mov    showh,a
  111.            mov    a,b
  112.            mov    showl,a
  113.            ret
  114. ;===================================顯示子程序
  115. show_:  clr     p1.5
  116.         clr     p1.6
  117.         clr     p1.7
  118.         mov     a,showh
  119.         lcall   shw0
  120.         lcall   delay
  121.         setb    p1.5
  122.         setb    p1.6
  123.         setb    p1.7
  124.         mov     a,showl
  125.         lcall   shw0
  126.         lcall   delay
  127.         ret

  128. shw0:   mov     dptr,#led_data
  129.         movc    a,@a+dptr
  130.         mov     p0,a
  131.         ret
  132. ;=====================================延時(shí)子程序
  133. delay:  mov     r3,#4
  134.         mov     r1,#255
  135. del0:   djnz    r1,$                 ;延時(shí)2ms左右
  136.         djnz    r3,del0
  137.         ret
  138. ;=======================================段碼
  139. led_data:       db      
  140. 0c0h,0f9h,0a4h,0b0h,099h,92h,82h,0f8h,80h,90h
復(fù)制代碼



評分

參與人數(shù) 1黑幣 +5 收起 理由
1424603412 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:70769 發(fā)表于 2014-12-29 03:16 | 只看該作者
GOOD!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:74571 發(fā)表于 2015-3-13 21:02 | 只看該作者
能不指導(dǎo)一下c語言多路報(bào)警程序
回復(fù)

使用道具 舉報(bào)

地板
ID:74784 發(fā)表于 2017-8-14 02:44 | 只看該作者
正需要
太好了
感謝樓主!
回復(fù)

使用道具 舉報(bào)

5#
ID:147840 發(fā)表于 2017-8-14 11:32 來自手機(jī) | 只看該作者
可惜我們畢業(yè)設(shè)計(jì)也不能是這么菜的東西
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表