digitalt termometer

M

mohannad100

Guest
hej
Jeg har brug for at købe et digitalt termometer fra markedet, har følgende specifikationer
1-baseret på 8.051
2-k type thermocople
3-7 segment display eller LCD
4-RS232 interface til computer
5-adc0804
ca nogen hjælpe mig med at kende navnet eller antallet af et sådant projekt.
tak.Lagt efter 2 minutter:sorry jeg mener af et sådant produkt

 
Hvorfor behøver det at være en 8051, masser af digitale termometre, hvis du Google det.Hvad temperaturområde har du brug for?

 
hej
Jeg tror, det ville være vanskeligt at finde en sådan produkt, med 8.051 som de fleste af disse ansøgninger er færdig med at bruge controllere med indbygget i AD
bedste lykke
Rage

 
# include "8051io.h"
# include "8051reg.h"
# include <AT89X51.H>extern register char cputick; / * cputick intervaller med 1 hver 10 ms * /
unsigned register int count, i, ADC, min, max;
unsigned char sec100 register, sec10, ACC, initcount, flag;
unsigned register int MSD, NSD, LSD;
unsigned register int Xin [10];void main (void)
(
TMOD = 0x21; / * sæt timer0 til 16-bit counter * /
serinit (9600);
cputick = 0;
i = 0;
count = 0;
sec100 = 0;
sec10 = 0;
flag = 0;
initcount = 0;
ASM "E EQU $ B5"; / * smule definere for P3.5 og P3.4 * /
ASM "RS EQU $ B4";
ASM "CLR E";
ASM "CLR RS";
P1 = 0;
forsinkelse (5);
i_LCD ();
puttitle ();
forsinkelse (5000); / * viser mængder, der skal måles * /
flag | = 0x04;
puttime ();
Xin [0] = 10000; / * show ugyldig display ved at sætte ud-af-området Xin værdi * /
flag | = 0x02;
puttemp ();
TCON = 0x59;
while (1) / * køre konstant * /
(
gøre
(
; / * Lægge opgaver kræver 51's hastighed her * /
)
while (cputick <10); / * 10 * 10 ms = 100 ms * /
cputick = 0;

/ * ____ --- ____________________ --- --- ___________________ ________
|<------- 100 ms ----->|
_______ ---- ___________________ ---- __________________ ---- ____
tid ~ 20 ms

* /
/ * Lægge opgaver kræver 100 ms kryds her * /

ASM "setb $ B0";
time (); / * opdatere tid base * /
putxin (); / * sætte konverterede digitale data til 10 ord buffer * /
puttemp (); / * sætte temperaturen læsning til LCD * /
puttime (); / * sat sekunder mod LCD * /
ASM "CLR $ B0";

)
)

time ()

/ * Flag
% 00000001 sæt bit0 hver 100 ms
% 00000010 sæt bit1 efter første 10-prøver
% 00000100 sæt bit2 hver 1 s

* /

(
sec100 ;
if (sec100> = 1) / * 1 * 100 ms = 100 ms * /
(sec100 = 0;
sec10 ;
initcount ;
flag | = 0x01; / * sæt bit 0 i flag * /

if (initcount> = 10)
(initcount = 10;
flag | = 0x02;
)
if (sec10> = 10)
(Sec10 = 0;
count ; / * tilvækst tæller hver 1 sec * /
flag | = 0x04;
/ * Sendreading () * /
)
)
)

pause (j)
int j;
(
int i;
for (i = 0; i <j; i )
;
)

LCDWI (A) / * skriver instruktion til LCD * /
char A;

(
ACC = A; / * bruge ACC for sammenknytning til forsamlingen * /
ASM (
MOV A, ACC
CLR RS
CLR E
MOV P1, A
SETB E
NOP
CLR E
SWAP A
MOV P1, A
SETB E
NOP
CLR E
)
pause (1);

)

LCDWD (A)
char A;

(
ACC = A; / * bruge ACC for sammenknytning til forsamlingen * /
ASM (
MOV A, ACC
SETB RS / * skrive data * /
CLR E
MOV P1, A / * check for p1.0-p1.4 * /
SETB E
NOP
CLR E
SWAP A
MOV P1, A
SETB E
NOP
CLR E
)
pause (1);
)i_LCD () / * initialisere LCD i overensstemmelse med Hitachi 44780 4-bit * /
(
P1 = 0x30;
pulseE ();
forsinkelse (10);
pulseE ();
forsinkelse (1);
pulseE ();
forsinkelse (1);
P1 = 0x20;
pulseE ();
pulseE ();
pulseE ();
LCDWI (0x28); / * funktion, der er 4-bit bus, 1 / 16 line, 5 * 7 dots * /
LCDWI (0x0C); / * display on / off på skærmen, slukket markøren, der ikke blinke * /
LCDWI (0x06); / *-mode DDRAM adresse * /
LCDWI (1); / * klare display * /
forsinkelse (5);
)

pulseE ()
(
ASM (
SETB E
NOP
CLR E
)
)puttime ()
(
int temp;
char nul;
if ((flag & 0x04) == 4)
(Flag & = ~ 0x04;
nul = 0;
LCDWI (0x80); / * længst til venstre ciffer * /
if (count/10000! = 0)
(
LCDWD (count/10000 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
nul = 1;
)
else LCDWD ( '');
temp = count% 10000;

if ((nul == 0) & & (temp/1000 == 0))
LCDWD ( '');
else (
LCDWD (temp/1000 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
nul = 1;
)
temp = temp% 1000;
if ((nul == 0) & & (temp/100 == 0))
LCDWD ( '');
else (
LCDWD (temp/100 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
nul = 1;
)
temp = temp% 100;
if ((nul == 0) & & (temp/10 == 0))
LCDWD ( '');
else LCDWD (temp/10 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
temp = temp% 10;
LCDWD (temp 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
LCDWD ( '');
LCDWD ( 's');
LCDWD ( '');
)
)
/ *
puttime ()
(
int temp;
char nul;
nul = 0;
LCDWI (0x80); / * længst til venstre ciffer * /
LCDWD ( '');
LCDWD (count/10000 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
temp = count% 10000;
LCDWD (temp/1000 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
temp = temp% 1000;
LCDWD (temp/100 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
temp = temp% 100;
LCDWD (temp/10 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
temp = temp% 10;
LCDWD (temp 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
LCDWD ( '');
LCDWD ( 's');

)

* /

time1ms () / * 1 ms forsinkelse med Xtal 11.0592MHz * /
(
int i;
for (i = 0; i <8; i )
;
)

forsinkelse (n) / * intet n * 1ms * /
int n;
(
int i;
for (i = 0; i <n; i )
time1ms ();

)

int readtemp ()
(
P1 = 0xff; / * gøre P1.0 at P1.3 at være inputport * /
ASM "SETB $ B7";
ASM "JNB $ B7, *";
ASM "JB $ B7, *";
forsinkelse (1);
MSD = (P1 & 0x0f);
forsinkelse (2);
P1 = 0xff;
LSD = P1 & 0x0f;
forsinkelse (2);
P1 = 0xff;
NSD = (P1 & 0x0f);
return (MSD * 100 NSD * 10 lsd);

)

putxin () / * lægge rå data til FIFO buffer * /

(If ((flag & 0x01) == 1)
(flag & = 0xFE;
Xin [9] = Xin [8];
Xin [8] = Xin [7];
Xin [7] = Xin [6];
Xin [6] = Xin [5];
Xin [5] = Xin [4];
Xin [4] = Xin [3];
Xin [3] = Xin [2];
Xin [2] = Xin [1];
Xin [1] = Xin [0];
Xin [0] = readtemp ();
)
)

int gennemsnit ()

(

return ((Xin [0] Xin [1] Xin [2] Xin [3] Xin [4] Xin [5] Xin [6] Xin [7] Xin [8] Xin [ 9]) / 10);

)

puttemp ()

(
int temp, t;
if ((flag & 0x02) == 2)
(Flag & = ~ 0x02;

LCDWI (0xC0);
LCDWD ( '');
temp = gennemsnit ();
ADC = temp;
if (temp <min)
min = temp;
if (temp> max)
max = temp;

if ((temp <999) & & (temp> 0)) / * grænse måleområde på 0-100 C * /
(
t = temp/100;
if (t! = 0)
LCDWD (t 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
else LCDWD ( '');
temp = temp% 100;
LCDWD (temp/10 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
LCDWD ('.');
LCDWD (temp% 10 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

;
)
anden
(
LCDWD ('-');
LCDWD ('-');
LCDWD ('-');
LCDWD ('-');
)
LCDWD (0xdf); / * dvs, 'C * /
LCDWD ( 'C');
LCDWD ( '');
)
)

puttitle ()

(
LCDWI (0x80);
LCDWD ( 'D');
LCDWD ( 'i');
LCDWD ( 'g');
LCDWD ( 'i');
LCDWD ( 'T');
LCDWD ( 'h');
LCDWD ( 'e');
LCDWD ( 'r');
LCDWI (0xC0);
LCDWD ( 'm');
LCDWD ('0 ');
LCDWD ('-');
LCDWD ('1 ');
LCDWD ('0 ');
LCDWD ('0 ');
LCDWD (0xdf);
LCDWD ( 'C');

)

 

Welcome to EDABoard.com

Sponsor

Back
Top