デジタル温度計

M

mohannad100

Guest
こんにちは
私は市場からデジタル温度計を購入する必要が仕様にして、次の
1から8051に基づいて
2 - k膜型thermocople
3-7セグメントディスプレイや液晶
RS232インターフェイスには、コンピュータ- 4
5 - adc0804
約のいずれかのプロジェクトのヘルプをこのようなのを私は知っている番号や名前。
感謝します。追加分後に2:残念私の製品などの意味の

 
それはなぜかGoogleがいる場合8051、温度計、デジタルたくさんのことはする必要があります。どのような温度範囲で必要な場合は?

 
こんにちは
私は西暦と思うような検索することは難しいとされる製品を8051を含む、などのほとんどは、内蔵のコントローラを使って行われているアプリケーション
最高の幸運
シャキール

 
#が含まれます"8051io.h"
#が含まれます"8051reg.h"
#は<AT89X51.H>含まれてのexternレジスタ文字cputick / *のcputickインクリメント1毎10ミリ秒* /
符号レジスタint型の数、私は、ADC、最小値、最大;
符号レジスタchar型sec100、sec10、ACCは、initcount、フラグ;
符号レジスタint型はLSD MSDは、NSDは。
符号レジスタint型の新は、[編集] 10;)無効メイン(ボイド

TMOD = 0x21; / *設定タイマー0 * 16ビットカウンタ/
)serinit(9600;
cputick = 0;
まずi = 0;
カウント= 0;
sec100 = 0;
sec10 = 0;
フラグ= 0;
initcount = 0;
アセンブラの"E EQUは$ B5の"/ *ビットは* P3.4定義するP3.5および/
ASMは、""のRS $をB4のEQUに。
のasm"CLRのメール";
のasm"のCLRのRS";
0 P1を=;
遅延(5);
i_LCD();
)puttitle(;
遅延(5000); / *を見る数量*を測定する/
フラグ| = 0x04を。
puttime();
新は10000 [0] = / * *を新値の範囲のショー無効ディスプレイによって配置アウト/
フラグ| = 0x02の;
puttemp();
TCON = 0x59;
*をしながら(1)/連続*を実行/

行う

/ *のputのタスクは、*をの速度をここに必要な51 /

cputick中(<10); * 10ミリ秒= 100ミリ秒/ * 10 * /
cputick = 0;

/ * ____ --- ____________________ --- ___________________ --- ________
|<------- 100ミリ秒----->|
_______ ---- ___________________ ---- __________________ ---- ____
時間はミリ秒を〜20

* /
/ *のputのタスクは、*を必要とする100ここmsのダニ/

のasm"setb $ b0に";
時間(); / *更新時間ベース* /
putxin(); / * *バッファの単語10入れ変換デジタルデータを/
puttemp(); / * putの温度*液晶読むこと/
puttime(); / * *を置く2番目の液晶にカウンタ/
のasm"のCLR $ b0に";




時間()

/ *フラグ
%00000001セットbit0 100ミリ秒ごと
後の最初の10サンプル%00000010セットbit1
%00000100セットbit2すべて1秒

* /


sec100 ;
ミリ秒場合(sec100> = 1 * 100ミリ秒= 100)/ * * /
(sec100 = 0;
sec10 ;
initcount ;
フラグ| = 0x01に/ * *をビット0に設定フラグ/

場合)(initcount> = 10
(initcount = 10;
フラグ| = 0x02の;

(もしsec10> = 10)
(sec10 = 0;
カウント ; / *インクリメント*カウントごとに1秒/
フラグ| = 0x04を。
/ *)はsendreading(;する* /




一時停止(j)は
int型jが;

int型一;
0(一=;私は<jのは、i )
;


LCDWIの(A)/ *液晶に命令を* /書き込み
char型下限;


加減速= Aは、/ *使用する加減速*国会のためのインターフェイス/
のasm(
MOV形式、ACCは
CLRののRS
CLRのメール
MOV形式P1は、
SETBメール
NOP命令
CLRのメール
スワップA
MOV形式P1は、
SETBメール
NOP命令
CLRのメール

一時停止(1);



LCDWD()
char型下限;


加減速= Aは、/ *使用する加減速*国会のためのインターフェイス/
のasm(
MOV形式、ACCは
SETB RSは/ *データ* /書き込み
CLRのメール
MOV形式P1は、p1.0 - p1.4する* / *チェック/
SETBメール
NOP命令
CLRのメール
スワップA
MOV形式P1は、
SETBメール
NOP命令
CLRのメール

一時停止(1);
)i_LCD()/ *は*ビット液晶初期インに基づき日立44780 4 /

0x30をP1の=;
pulseE();
遅延(10);
pulseE();
遅延(1);
pulseE();
遅延(1);
0x20のP1を=;
pulseE();
pulseE();
pulseE();
LCDWI(0x80000011です)/ *関数*設定4ビットバス、1 / 16行、5 * 7ドット/
LCDWI(0x0C)が、オフの表¥示ディスプレイ上の/は、* /、カーソ¥ルオフは点滅* /
LCDWI(0x06と); / *入力モードのDDRAMのアドレス * /
LCDWI(1); / *を明確に表¥示する* /
遅延(5);


pulseE()

のasm(
SETBメール
NOP命令
CLRのメール

)puttime()

int型温度;
ゼロのchar;
場合)((フラグ&0x04)の== 4
(フラグは&= 0x04が〜に。
ゼロ= 0;
LCDWI(0x80に); / *左端の桁* /
(もしcount/10000!= 0)

LCDWD(count/10000 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
0 = 1;

他のLCDWD('');
気温=カウント%10000;

場合)((0 == 0)&&(temp/1000 == 0)
LCDWD('');
他(
LCDWD(temp/1000 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
0 = 1;

気温= temp%と1000;
場合)((0 == 0)&&(temp/100 == 0)
LCDWD('');
他(
LCDWD(temp/100 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
0 = 1;

気温= temp%と100;
場合)((0 == 0)&&(temp/10 == 0)
LCDWD('');
他の(LCDWD temp/10 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
気温= temp%と10;
LCDWD(気温 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
LCDWD('');
LCDWD('の');
LCDWD('');


/ *
puttime()

int型温度;
ゼロのchar;
ゼロ= 0;
LCDWI(0x80に); / *左端の桁* /
LCDWD('');
LCDWD(count/10000 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
気温=カウント%10000;
LCDWD(temp/1000 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
気温= temp%と1000;
LCDWD(temp/100 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
気温= temp%と100;
LCDWD(temp/10 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
気温= temp%と10;
LCDWD(気温 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
LCDWD('');
LCDWD('の');



* /

time1ms()遅延のXTAL 11.0592MHz *ミリ秒/ * 1 /

int型一;
0(一=;私は<8;私 )
;


遅延(n)の/ *は* * 1msの何もないのn /
int型のn;

int型一;
0(一=;私<n;私 )
time1ms();



int型readtemp()

0xffのP1は=; / *ポート入力する*にP1.0をP1.3 /
のasm"SETB $ B7に";
のasm"定足数を$ B7は、*";
のasm"バトン$ B7は、*";
遅延(1);
MSDは=(P1の&0x0F)が;
遅延(2);
0xffのP1を=;
LSDの= P1は&1つの0x0F;
遅延(2);
0xffのP1を=;
NSDは=(P1の&0x0F)が;
リターン(MSDは* 100 )はNSDは* 10 LSDの。



putxin()/ *は*のFIFOバッファに入れ、生データを/

(場合((フラグ&0x01)は== 1)
(フラグ&= 0xfeの;
新[9] =新[8];
新[8] =信[7];
新[7]は、=新[6];
新[6]は、=信[5];
新[5] =信[4];
新[4] =新[3];
新[3]は=新[2];
新[2]は=新[1];
新[1]は、=信[0];
新)は[0] = readtemp(;



)int型の平均(



戻り値は((シン[0] 新[1] 新[2] 新[3] 新[4]は シンに[5] の新[6] 新[7] 新[8]は 新[ 9])/ 10);



puttemp()


int型温度は、t;
場合)((フラグ&0x02)は== 2
(フラグは&= 0x02のを〜。

LCDWI(0xc0);
LCDWD('');
気温=平均();
ADCは=気温;
場合)(一時<分
分=気温;
場合)(一時>最大
最大=気温;

&<999)&(気温> 0))/ *制限測定範囲0〜100 c *の気温が((/

トン= temp/100;
トンするif(!= 0)
LCDWD(トン 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
他のLCDWD('');
気温= temp%と100;
LCDWD(temp/10 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;
LCDWD ('.');
LCDWD(一時10% 4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"クール¥" border=¥"0¥" />

;



LCDWD ('-');
LCDWD ('-');
LCDWD ('-');
LCDWD ('-');

LCDWD(0xdf)/ *すなわち、'℃* /
LCDWD('C'と);
LCDWD('');



)puttitle(


LCDWI(0x80に);
LCDWD('D'と);
LCDWD(その'i');
LCDWD(')はgの';
LCDWD(その'i');
LCDWD(は'T');
LCDWD('hの');
LCDWD('電子');
LCDWD(の'r');
LCDWI(0xc0);
LCDWD('メートル');
LCDWD('0');
LCDWD ('-');
LCDWD('1');
LCDWD('0');
LCDWD('0');
LCDWD(0xdf);
LCDWD('C'と);



 
のいずれか1 ...???言語アセンブリしたコードをの
plzはyahoo.com)を送ってでtalha_khaid58(で

 

Welcome to EDABoard.com

Sponsor

Back
Top