1樓:7q迦
at89c51微控制器
那可以的要求的撒
微控制器數字式溫度計設計,用ds18b20和12864液晶屏
2樓:匿名使用者
1、我做過的是ds18b20+pic微控制器+數碼管顯示。
2、也做過微控制器+熱電偶+12864顯示溫度3、最近要做的是,微控制器+ds18b20+數碼管顯示+時間顯示。
有按鍵,設定溫度上限和下限,超過上限和下限,報警和繼電器輸出控制裝置。
你就說了一個命題,是想要源程式,設計原理,還是想要成熟的產品,還是外包開發啊
3樓:匿名使用者
這個網上資料不少 有問題可以**下
4樓:龍吟悟空
都不難!在這裡沒人能完全幫助你,可以自己做做試試,不懂就問。真不想做,我可以幫你做出來,但是要收費的~
利用微控制器,溫度感測器ad590、adc0804設計一個數字溫度計,利用ds18b20設計一個溫度控制計。(彙編) 10
5樓:
要做這些,單寫程式很簡單,實物製作花的時間就多了。你的第一個就只是現實溫度。第二個也只是讀取溫度。
對我來說無難度。
6樓:匿名使用者
就這麼一點分還提這麼多問題,你慢慢等吧
7樓:
10分 4個問題。。。哈哈。。。。
基於ds18b20的數字溫度計設計 89c51 組合語言 急求啊!度娘文庫上都試過,不行的··
8樓:匿名使用者
;**************************************
;溫度感測器ds18b20測試程式
;**************************************
dq bit p3.7 ;ds18b20的資料口位p3.3
tpl equ 50h ;存放溫度值的高位元組
tph equ 51h ;存放溫度值的低位元組
tppl equ 54h ;十進位制
tpph equ 55h
xsp0 equ 58h
xsp1 equ 59h
xsp2 equ 5ah
xsp3 equ 5bh
org 0
jmp main
org 100h
main:
call ds18b20_reset ;裝置復位
mov a,#0cch ;跳過rom命令
call ds18b20_writebyte ;送出命令
mov a,#044h ;開始轉換
call ds18b20_writebyte ;送出命令
jnb dq,$ ;等待轉換完成
call ds18b20_reset ;裝置復位
mov a,#0cch ;跳過rom命令
call ds18b20_writebyte ;送出命令
mov a,#0beh ;讀暫存儲存器
call ds18b20_writebyte ;送出命令
call ds18b20_readbyte ;讀溫度低位元組
mov tpl,a ;儲存資料
call ds18b20_readbyte ;讀溫度高位元組
mov tph,a ;儲存資料
call hzdl0
call dis
jmp main
;**************************************
; 驅動led顯示器的程式
;**************************************
pdl bit 20h
dis: mov dptr,#tab
dis1: mov r0,#xsp0
mov r2,#0fbh
mov r3,#04h
clr pdl
dis2: mov a,@r0 ;四位掃描顯示
movc a,@a+dptr
orl p3,#3ch
cjne r2,#0f7h, dis3
orl a, #80h
dis3: mov p1,a
mov a,r2
anl p3,a
rl a
mov r2, a
inc r0
lcall day
djnz r3,dis2
rettab: db 03fh,06h,05bh,4fh,66h,6dh,7dh,07h ;
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,00h,40h ;共陰極**
day: mov r4,#1
d1: mov r5,#248
d2: nop
nopdjnz r5,d2
djnz r4,d1
rethzdl0: mov tppl, #00h ; 十六進位制 -> 十進位制
mov tpph, #00h
mov tpph+1, #00h
mov tph+1, #00h
mov r3, #04h
hzdl2: clr c
mov a, tpl
rlc a
mov tpl,a
mov a, tph
rlc a
mov tph,a
mov a, tph+1
rlc a
mov tph+1,a
djnz r3, hzdl2
hzdl021: mov r3, #10h
hzdl022: mov r0, #tpl
mov r2, #03h
hzdl026: mov a, @r0
rlc a
mov @r0, a
inc r0
djnz r2, hzdl026
mov r0, #tppl
mov r2, #03h
hzdl028: mov a, @r0
addc a, @r0
da a
mov @r0, a
inc r0
djnz r2, hzdl028
djnz r3, hzdl022
mov a, tppl
anl a, #0fh
mov xsp1, a
mov a, tppl
swap a
anl a, #0fh
mov xsp2, a
mov a, tpph
anl a, #0fh
mov xsp3, a
mov a, tph+1
swap a
add a, #3
movc a, @a+pc
mov xsp0, a
retdb 00h, 00h, 01h, 01h, 02h, 03h, 03h, 04h
db 05h, 05h, 06h, 06h, 07h, 08h, 08h, 09h
;**************************************
;延時x*10微秒
;**************************************
delayx0us: ;2 當改用1t的mcu時,請調整此延時函式
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
nop ;1
djnz r7,delayx0us ;2
ret ;2
;**************************************
;復位ds18b20,並檢測裝置是否存在
;**************************************
ds18b20_reset:
clr dq ;送出低電平復位訊號
mov r7,#48 ;延時至少480us
call delayx0us
setb dq ;釋放資料線
mov r7,#6 ;等待60us
call delayx0us
mov c,dq ;檢測存在脈衝
mov r7,#42 ;等待裝置釋放資料線
call delayx0us
jc ds18b20_reset ;如果裝置不存在,則繼續等待
ret;**************************************
;從ds18b20讀1位元組資料
;**************************************
ds18b20_readbyte:
clr a
push 0
mov 0,#8 ;8位計數器
readnext:
clr dq ;開始時間片
nopnop
setb dq ;準備接收
nopnop
mov c,dq ;讀取資料
rrc a
mov r7,#6 ;等待時間片結束
call delayx0us
djnz 0,readnext
pop 0
ret;**************************************
;向ds18b20寫1位元組資料
;**************************************
ds18b20_writebyte:
push 0
mov 0,#8 ;8位計數器
writenext:
clr dq ;開始時間片
nopnop
rrc a ;輸出資料
mov dq,c
mov r7,#6 ;等待時間片結束
call delayx0us
setb dq ;準備送出下一位資料
djnz 0,writenext
pop 0
retend
ds18b20溫度轉換問題
1 接收資料為雙位元組 先低位,後高位 先低位元組,後高位元組 2 高位元組的前5位若為 0 則將資料乘以0.0625 即 t d 0.0625 3 高位元組的前5位若為 1 則將資料先取反,再加一,再乘以0.0625 即 t d 1 0.0625 溫度是 55 125 對應的值是 55 ff92 ...
ds18b20的精度問題,DS18B20的精度問題
你把測量值和實際值做成一套 或曲線圖,再做下濾波 不同的18b20溫度測出了有一兩度差別,這樣測出來的精度雖有0.0625也只是個樣子 ds18b20的測溫最小精度為0.0625 怎麼提高?暫存器2的第四位為小數部分的精度,變化一位代表變化了0.0625 這個是沒辦法改變的。但就目前我還沒看到過ds...
我編寫ds18b20程式想顯示溫度在led燈上但
include reg52.h include include 要用到取絕對值函式abs define uchar unsigned char define uint unsigned int sbit ds p2 1 sbit ds p3 2 ds18b20 sbit duan p2 6 sbit...