>> 歡迎您,訪客: 登入論壇 按這裡註冊 忘記密碼 在線會員 文章搜尋 論壇風格  使用說明   


>>> 誘虫入甕的趣味花草
塔內植物園 → [ 食蟲植物 ] [返回] → 瀏覽:我做的溫度上下限控制器,原型版曝光  標記論壇所有內容為已讀取 

 目前論壇總在線 275 人,本主題共有 1 人瀏覽。其中註冊會員 0 人,訪客 1 人。  [關閉詳細名單]
發表一篇新主題 回覆文章 開啟一個新投票 ◆此文章被閱讀 4354 次◆  瀏覽上一篇主題  重新整理本主題  樹狀顯示文章 瀏覽下一篇主題
 * 文章主題: 我做的溫度上下限控制器,原型版曝光   本文章有問題,傳送短訊息報告給版主  加到我的最愛&關注本文章  顯示可列印的版本  把本文章加到我的最愛   
批批批批批批 
 門派: 有門有派
 

資料: 此會員目前不在線上 Male
威望: 0
魅力: 魅力: 30346
經驗: 經驗: 14442
來自: 臺灣臺北 Taiwan
發文: 723 篇
精華: 0 篇
在線: 423 時 22 分 04 秒
註冊: 2003/11/19
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [樓 主]
 剛剛終於把程式寫完了,接上電路,效果不賴,目前的功能:
1.時間功能.可設定(未來可能會拿掉!)
2.溫度更新時間為一秒鐘(DS1821的限制)
3.溫度解析度為1度(DS1821的限制)
4.顯示器,背光,夜間可導引方向
都是一些很簡單的功能
目前正在規劃
1.溫度上下限設定(使用鍵盤)
2.設備損壞警告音
3.溫度C轉F
4.停電通知(10秒鐘)
5.上下限溫度可顯示於LCD上
6.自動開關燈設定+燈具損壞警告音(如果時間功能還在)
7.感測器可拉長1.5M
8.設備保護功能
9.由市電取得電源
未來更強功能!!
1.可同時使用8個感測器
2.省電功能

看圖吧,如果你想要可別寫信給我,目前只是測試版,Bug很多,可能會當機


此主題相關圖片如下:
按此在新視窗瀏覽圖片

按此查看圖片詳細資料



此主題相關圖片如下:
按此在新視窗瀏覽圖片

按此查看圖片詳細資料









發表文章時間2009/12/05 04:21pm IP: 已設定保密[本文共 696 位元組]  
cyriax 

 

資料: 此會員目前不在線上 Male 寅虎 魔羯座
威望: 0
魅力: 魅力: 5563
經驗: 經驗: 3382
來自: 臺灣臺中 Taiwan
發文: 301 篇
精華: 0 篇
在線: 131 時 34 分 00 秒
註冊: 2009/08/25
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 2 樓]
 好厲害喔!! 等您造福大家喔!!  還是讓大家中毒更深呢!!!  Wink







發表文章時間2009/12/05 05:14pm IP: 已設定保密[本文共 67 位元組]  
playerst 
 門派: 捻花惹草派
 

資料: 此會員目前不在線上 Male 金牛座
威望: 0
魅力: 魅力: 22011
經驗: 經驗: 18626
來自: 臺灣臺中 Taiwan
發文: 2485 篇
精華: 0 篇
在線: 323 時 10 分 57 秒
註冊: 2006/11/04
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 3 樓]
 我記得一個偵測器就要一個port了耶
但是微處理機似乎只有4個port
還是有更強的單晶片??







發表文章時間2009/12/05 06:16pm IP: 已設定保密[本文共 87 位元組]  
批批批批批批 
 門派: 有門有派
 

資料: 此會員目前不在線上 Male
威望: 0
魅力: 魅力: 30346
經驗: 經驗: 14442
來自: 臺灣臺北 Taiwan
發文: 723 篇
精華: 0 篇
在線: 423 時 22 分 04 秒
註冊: 2003/11/19
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 4 樓]
 [這篇文章最後由批批批批批批在 2009/12/06 02:28am 第 2 次編輯]
DS1821是使用單線控制喔,它是使用串列傳輸的方式
我使用的微處理機是最嫩的(89s51)
DS1821控制有點難,要花點心思去看Datasheet
http://www.farnell.com/datasheets/77165.pdf
如果你想玩玩看,這裡有Datasheet
還有我之前寫的程式(只能看溫度)
#include "at89x51.h"
#include "intrins.h"

#define LCDP P1
sbit RS=P3^2;
sbit RW=P3^1;
sbit EN=P3^0;

sbit SW1=P2^0;

#define DQ P2_1
void H(void);
void L(void);
void DS_Reset(void);
void SCT(void);
void RT(void);

bit DQ0;
bit DQ1;
bit DQ2;
bit DQ3;
bit DQ4;
bit DQ5;
bit DQ6;
bit DQ7;

void init_LCM(void);
void write_inst(char);
void write_data(char);
void write_pat(void);
void delay(int);
void debouncer(void);

char LCMD[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
char pat[16]={0x08,0x14,0x0b,0x04,0x04,0x04,0x03,0x00,
0x08,0x14,0x0b,0x04,0x07,0x04,0x04,0x00};
char line1[]="Temp =          ";
char line2[]="                ";

int TempC,TempF;
char key,n;
bit dcdf=0;

main()
{int a,b,c,d,e,f,g;
init_LCM();
write_pat();

while(1)
{DS_Reset();

           SCT();

           delay(6000);

           DS_Reset();

           RT();

a=!DQ0;
b=!DQ1;
c=!DQ2;
d=!DQ3;
e=!DQ4;
f=!DQ5;
g=!DQ6;
TempC=a+b*2+c*4+d*8+e*16+f*32+g*64;
TempF=(TempC*9/5)+32;

write_inst(0x80);
for(n=0;n<16;n++)
{write_data(line2[n]);
}
if(dcdf==0)
{write_inst(0xc0);
for(n=0;n<12;n++)
{write_data(line1[n]);
}
if((TempC/100)%10!=0)
{write_data(LCMD[(TempC/100)%10]);
}
else
{write_data(0x20);
}
write_data(LCMD[(TempC/10)%10]);
write_data(LCMD[TempC%10]);
write_data(0x00);
}
else
{write_inst(0xc0);
for(n=0;n<12;n++)
{write_data(line1[n]);
}
if((TempF/100)%10!=0)
{write_data(LCMD[(TempF/100)%10]);
}
else
{write_data(0x20);
}
write_data(LCMD[(TempF/10)%10]);
write_data(LCMD[TempF%10]);
write_data(0x01);
}

if(SW1==0)
{debouncer();
dcdf=~dcdf;
while(SW1==0);
}
}
}

void H(void)
{DQ=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
DQ=1;
delay(2);
}

void L(void)
{DQ=0;
delay(2);
DQ=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
}

void DS_Reset(void)
{DQ=0;
delay(20);
DQ=1;
delay(10);
}

void SCT(void)
{L();
       H();
       H();
       H();
       L();
       H();
       H();
       H();
}

void RT(void)
{L();
       H();
       L();
       H();
       L();
       H();
       L();
       H();

       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ0=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ1=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ2=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ3=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ4=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ5=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ6=!DQ;
       delay(2);
       DQ=0;
       _nop_();_nop_();
       DQ=1;
       _nop_();_nop_();DQ7=!DQ;
       delay(2);
}

void init_LCM(void)
{write_inst(0x30);
write_inst(0x30);
write_inst(0x30);
write_inst(0x38);
write_inst(0x08);
write_inst(0x01);
write_inst(0x06);
write_inst(0x0c);
}

void write_inst(char inst)
{RS=0; RW=0;
EN=1;
LCDP=inst;
delay(100);
EN=0;
}

void write_data(char dat)
{RS=1; RW=0;
EN=1;
LCDP=dat;
delay(10);
EN=0;
}

void write_pat(void)
{char i;
RS=0; RW=0;
EN=1;
LCDP=0x40;
delay(100);
EN=0;
RS=1; RW=0;
for(i=0;i<16;i++)
{write_data(pat[i]);
}
}

void delay(int t)
{int i;
for(i=0;i}

void debouncer(void)
{int i;
for(i=0;i<2400;i++);
}







發表文章時間2009/12/05 06:25pm IP: 已設定保密[本文共 6488 位元組]  
playerst 
 門派: 捻花惹草派
 

資料: 此會員目前不在線上 Male 金牛座
威望: 0
魅力: 魅力: 22011
經驗: 經驗: 18626
來自: 臺灣臺中 Taiwan
發文: 2485 篇
精華: 0 篇
在線: 323 時 10 分 57 秒
註冊: 2006/11/04
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 5 樓]
 如果改用組語寫架構會變大嗎?
因為我想用組語寫 雖然困難度會很高







發表文章時間2009/12/05 06:38pm IP: 已設定保密[本文共 64 位元組]  
批批批批批批 
 門派: 有門有派
 

資料: 此會員目前不在線上 Male
威望: 0
魅力: 魅力: 30346
經驗: 經驗: 14442
來自: 臺灣臺北 Taiwan
發文: 723 篇
精華: 0 篇
在線: 423 時 22 分 04 秒
註冊: 2003/11/19
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 6 樓]
 [這篇文章最後由批批批批批批在 2009/12/06 02:54am 第 1 次編輯]
組合語言.....程式碼會很長,可是編譯出來HEX檔會比C語言小一點

這個是上傳的 rar 格式檔案 [點選查看]

靈感來自這裡.....如果要焊接,電路要稍微小改







發表文章時間2009/12/05 06:45pm IP: 已設定保密[本文共 221 位元組]  
arvin 

 

資料: 此會員目前不在線上 Male 巨蟹座
威望: 0
魅力: 魅力: 1420
經驗: 經驗: 632
來自: 臺灣臺北 Taiwan
發文: 26 篇
精華: 0 篇
在線: 40 時 02 分 21 秒
註冊: 2008/05/28
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 7 樓]
 建議用C語言寫,這樣會比較輕鬆也容易維護,組合語言對乘除法會比較麻煩

另外批批批批批批大,建議你最好用timer中斷,會比用polling來的好。







發表文章時間2010/03/18 05:23pm IP: 已設定保密[本文共 134 位元組]  
csyin 
 門派: 殺豬拔毛派(萌主)
 

資料: 此會員目前不在線上 Male 巨蟹座
威望: 0
魅力: 魅力: 77397
經驗: 經驗: 59946
來自: 萌萌異境 Taiwan
發文: 7334 篇
精華: 0 篇
在線: 733 時 35 分 50 秒
註冊: 2001/12/06
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 8 樓]
 C語言不能燒在IC裡面吧?







發表文章時間2010/03/18 05:39pm 此 IP 為代理伺服器IP: 已設定保密[本文共 22 位元組]  
playerst 
 門派: 捻花惹草派
 

資料: 此會員目前不在線上 Male 金牛座
威望: 0
魅力: 魅力: 22011
經驗: 經驗: 18626
來自: 臺灣臺中 Taiwan
發文: 2485 篇
精華: 0 篇
在線: 323 時 10 分 57 秒
註冊: 2006/11/04
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 9 樓]
 現在是可行的
早期因為微處理機記憶體小(成本問題)
所以選擇空間較小的組語 現在記憶體超便宜
很多人都用c寫摟







發表文章時間2010/03/18 05:47pm IP: 已設定保密[本文共 117 位元組]  
arvin 

 

資料: 此會員目前不在線上 Male 巨蟹座
威望: 0
魅力: 魅力: 1420
經驗: 經驗: 632
來自: 臺灣臺北 Taiwan
發文: 26 篇
精華: 0 篇
在線: 40 時 02 分 21 秒
註冊: 2008/05/28
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 10 樓]
 是的,playerst大說的沒錯,現在micro control大都用C來取代組語了
4K亦足夠了,除非你含括一些特殊函式庫,那就不夠用了








發表文章時間2010/03/18 06:01pm IP: 已設定保密[本文共 120 位元組]  
麻毬 
 門派: 沒事多實驗
 

資料: 此會員目前不在線上 Male
威望: 0
魅力: 魅力: 2608
經驗: 經驗: 1848
來自: 臺灣高雄 Taiwan
發文: 207 篇
精華: 1 篇
在線: 74 時 35 分 28 秒
註冊: 2008/04/21
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 11 樓]
 阿! 可能會當機!? 批大難道忘了在硬體上加上看門狗電路?

1個R,1個C、1支2極體、1隻輸出腳加上個位數的指令而已,批大還是加上吧!!







發表文章時間2010/03/19 07:34pm IP: 已設定保密[本文共 124 位元組]  
批批批批批批 
 門派: 有門有派
 

資料: 此會員目前不在線上 Male
威望: 0
魅力: 魅力: 30346
經驗: 經驗: 14442
來自: 臺灣臺北 Taiwan
發文: 723 篇
精華: 0 篇
在線: 423 時 22 分 04 秒
註冊: 2003/11/19
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 12 樓]
 [這篇文章最後由批批批批批批在 2010/03/20 07:22am 第 2 次編輯]
問題解決了,只是一般溢位的問題(時鐘的問題)
目前要考試,這種東西以後再玩嚕
打算用pic的單晶片
8051才4k 這就是timer中斷阿,礙於智慧財產權,這程式就不放嚕
未來還要用外部時脈控制時鐘,比較準
目前一個星期誤差2秒...







發表文章時間2010/03/19 11:17pm IP: 已設定保密[本文共 298 位元組]  
旭 




資料: 此會員目前不在線上
威望: 0
魅力: 魅力: 2700
經驗: 經驗: 1196
來自: 保密 blank
發文: 42 篇
精華: 0 篇
在線: 60 時 58 分 39 秒
註冊: 2008/06/02
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 13 樓]
 [這篇文章最後由旭在 2010/03/19 11:39pm 第 1 次編輯]
我的已經在用了,花了不少時間跟精力,等有空再改進
這是我以前的貼圖
http://www.chinese-cp.com/forum/viewthread.php?tid=3129
目前功能:
Time 系統時間調整
Lcd液晶背光燈時間調整,單位:秒(0秒為常亮)
Light植物光照時間設定,分別為開啟時間和關閉時間(“開”“關”項為光照控制是否允許)
Temp24小時溫度設定,單位:小時 (Mod"0-9"為控溫模式,0不控溫....)
Water澆花時間設定(一天可設定連續5次不同澆花時間,可設置星期幾不澆花)
Fan通風扇時間設定(每隔N時間啟動)
safe安全溫度設定(設上限下限,過溫發出報警聲並斷開總電源繼電器保護,啟動排風扇1分鐘,溫度恢復正常後繼電器自動接通)

溫度探頭損壞或斷線,顯示“錯誤”發出報警聲,啟動排風扇1分鐘,並斷開控溫電源
斷電光照狀態恢復

溫度控制MOD
0 不控溫
1 開0秒; 延時0秒後關
2 開1秒; 延時1秒後關
3 開2秒; 延時2秒後關
4 開6秒; 延時5秒後關
5 開10秒; 延時7秒後關
6 開15秒; 延時9秒後關
7 開20秒; 延時12秒後關
8 開25秒; 延時15秒後關
9 開1秒; 延時15秒後關(適合夏天制冷用)










發表文章時間2010/03/19 11:33pm IP: 已設定保密[本文共 1269 位元組]  
旭 




資料: 此會員目前不在線上
威望: 0
魅力: 魅力: 2700
經驗: 經驗: 1196
來自: 保密 blank
發文: 42 篇
精華: 0 篇
在線: 60 時 58 分 39 秒
註冊: 2008/06/02
Message 查看 搜尋 通訊錄 複製 引用 回覆文章回覆 [第 14 樓]
 現在用的是STC89c58rd,能裝32K的程序,現在用了11440字節,使用DS18B20溫度傳感器,DS1302實時時鐘,1602液晶,調整使用了3個按鍵







發表文章時間2010/03/19 11:51pm IP: 已設定保密[本文共 121 位元組]  

 此主題只有一頁

快速回覆主題: 我做的溫度上下限控制器,原型版曝光
您目前的身份是: 訪客 ,要使用其他會員身份,請輸入會員名稱和密碼。未註冊訪客請輸入網名,密碼留空白。
輸入會員名稱和密碼: 會員名稱: 沒有註冊? 密碼: 忘記密碼?
上傳附件或圖片 (最大容量 9000KB)
目前附件:(如不需要某個附件,只需刪除內容中的相關 [UploadFile ...] 標籤即可) [刪除]
選項

使用 LeoBBS 標籤?
顯示您的簽名檔?
使用表情符號轉換?
使用字型樣式轉換?

    快速引用第 樓層的回覆
 頂端 加到"我的最愛" 主題管理: 總固頂 取消總固頂 區固頂 取消區固頂 固頂 取消固頂
加重 取消加重 精華 取消精華 提升 鎖定 解鎖 刪除 刪除回覆 移動


© 中文版權所有: 塔內植物園 繁體版權所有: 摩尼網
程式版權所有: 雷傲科技  程式翻譯:auron 版本: LeoBBS X Build041101
 

本論壇言論純屬發言者個人意見,與 塔內植物園 立場無關