DS2760 met ATMEGA8535 en LCD 2x16

D

dimas_lilik

Guest
Beste mensen ..
Kan mij helpen?
Ik wil LCD-display met 2 x 16
please help me

/***************************
DS2760 Interfacing
****************************/
# include <stdio.h> / / printf (), uchar, uint, ....
# include <reg51.h> / / CPU's interals
# include "1wire.h" / / 1-wire apparaat lib

/************************
Port Verklaring
*************************/
/ / DS2760 haven verklaring op 1wire.c

/************************************************* ******************
T-type (Koper / Constantaan) thermokoppel gegevens (0C referentie)
Auteur: Samengesteld door Parallax
Updated: 19 JAN 2004
************************************************** ******************/
const uint Cnv_table [401] =
(
/ * T000 * / 0, 39, 78, 117, 156, 195, 234, 273, 312, 352,
/ * T010 * / 391, 431, 470, 510, 549, 589, 629, 669, 709, 749,
/ * T020 * / 790, 830, 870, 911, 951, 992, 1032, 1074, 1114, 1155,
/ * T030 * / 1196, 1238, 1279, 1320, 1362, 1403, 1445, 1486, 1528, 1570,
/ * T040 * / 1612, 1654, 1696, 1738, 1780, 1822, 1865, 1908, 1950, 1993,
/ * T050 * / 2036, 2079, 2121, 2165, 2208, 2250, 2294, 2338, 2381, 2425,
/ * T060 * / 2468, 2512, 2556, 2600, 2643, 2687, 2732, 2776, 2819, 2863,
/ * T070 * / 2909, 2952, 2998, 3043, 3087, 3132, 3177, 3222, 3266, 3312,
/ * T080 * / 3358, 3403, 3447, 3494, 3539, 3584, 3631, 3677, 3722, 3768,
/ * T090 * / 3814, 3859, 3907, 3953, 3999, 4046, 4092, 4137, 4185, 4232,
/ * T100 * / 4278, 4325, 4371, 4419, 4466, 4512, 4561, 4608, 4655, 4701,
/ * T110 * / 4750, 4798, 4844, 4892, 4940, 4988, 5036, 5084, 5131, 5179,
/ * T120 * / 5227, 5277, 5325, 5373, 5421, 5469, 5519, 5567, 5616, 5665,
/ * T130 * / 5714, 5762, 5812, 5860, 5910, 5959, 6008, 6057, 6107, 6155,
/ * T140 * / 6206, 6254, 6304, 6355, 6403, 6453, 6504, 6554, 6604, 6653,
/ * T150 * / 6703, 6754, 6804, 6855, 6905, 6956, 7006, 7057, 7107, 7158,
/ * T160 * / 7209, 7259, 7310, 7360, 7411, 7463, 7515, 7565, 7617, 7668,
/ * T170 * / 7719, 7770, 7823, 7874, 7926, 7977, 8028, 8080, 8133, 8185,
/ * T180 * / 8237, 8288, 8340, 8393, 8445, 8496, 8550, 8602, 8653, 8707,
/ * T190 * / 8759, 8811, 8865, 8916, 8970, 9022, 9076, 9128, 9182, 9234,
/ * T200 * / 9288, 9341, 9394, 9448, 9500, 9554, 9608, 9662, 9714, 9769,
/ * T210 * / 9822, 9875, 9929, 9984, 10038, 10092, 10146, 10200, 10253, 10307,
/ * T220 * / 10362, 10416, 10471, 10525, 10580, 10634, 10689, 10743, 10798, 10852,
/ * T230 * / 10907, 10961, 11016, 11072, 11127, 11182, 11237, 11291, 11346, 11403,
/ * T240 * / 11458, 11512, 11569, 11624, 11679, 11734, 11791, 11846, 11902, 11958,
/ * T250 * / 12012, 12069, 12125, 12181, 12237, 12293, 12349, 12405, 12461, 12518,
/ * T260 * / 12573, 12630, 12686, 12743, 12798, 12855, 12912, 12968, 13025, 13082,
/ * T270 * / 13139, 13195, 13253, 13310, 13365, 13423, 13480, 13537, 13595, 13652,
/ * T280 * / 13708, 13766, 13823, 13881, 13938, 13995, 14053, 14109, 14168, 14226,
/ * T290 * / 14282, 14341, 14399, 14455, 14514, 14572, 14630, 14688, 14746, 14804,
/ * T300 * / 14862, 14919, 14977, 15035, 15095, 15153, 15211, 15269, 15328, 15386,
/ * T310 * / 15445, 15503, 15562, 15621, 15679, 15737, 15797, 15855, 15913, 15973,
/ * T320 * / 16032, 16091, 16149, 16208, 16268, 16327, 16387, 16446, 16504, 16564,
/ * T330 * / 16623, 16682, 16742, 16801, 16861, 16920, 16980, 17039, 17100, 17158,
/ * T340 * / 17219, 17278, 17338, 17399, 17458, 17518, 17577, 17638, 17698, 17759,
/ * T350 * / 17818, 17879, 17939, 17998, 18059, 18120, 18179, 18240, 18301, 18362,
/ * T360 * / 18422, 18483, 18542, 18603, 18664, 18725, 18786, 18847, 18908, 18969,
/ * T370 * / 19030, 19091, 19152, 19213, 19274, 19335, 19396, 19457, 19518, 19579,
/ * T380 * / 19641, 19702, 19763, 19824, 19885, 19946, 20009, 20070, 20132, 20193,
/ * T390 * / 20255, 20317, 20378, 20440, 20501, 20563, 20625, 20687, 20748, 20810,
/ * * T400 / 20872
);

/*************************************************
Constanten & Global variabele
************************************************** /
const uchar readnet = 0x33; / / lees OW netto-adres
const uchar skipnet = 0xCC; / / overslaan OW netto-adres
const uchar rdreg = 0x69; / / te lezen register

/ * in de buurt uchar idx; / / loop counter (4-bits)
buurt uchar type; / / type apparaat (4-bits)
buurt uchar char_; / / display byte / char
buurt uint vin; / / in millivolt * /
buurt uint tmpCJ; / / device temp in C
buurt uint tCuV; / / thermokoppel millivolt
buurt uint ondertekenen; / / TC teken-bit
buurt uint cjComp; / / temp compensatie
buurt uint tempC; / / temp in Celsius
buurt uint tblLo, tblHi, eePntr; / / tabel pointers
buurt uint testVal; / / test waarde uit tabel
buurt uchar fout; / / 1 = buiten bereik (1-bit)
/ / in de buurt uchar store8; / / 8-bit buffer

/**********************************************
Subroutines
***********************************************/

/ * Inisialisasi UART @ 9600 bps, 8-N-1 * /
void init232 (void)
(
TMOD = (TMOD & 0x0F) | 0x20; / / Timer 1 Modus 2 (Auto reload)
SCON = 0x52; / / Serial Modus 1 (8-bit UART), REN = 1 (Receiver Enable)
/ / TI = 1 (Transmit buffer leeg)
PCON = PCON &0x7F; / / SMOD = 0 (Double baudrate uitschakelen)
TH1 = 0xfd; / / 9600 bps (11.059 MHz)
ET1 = 0; / / Disable Timer 1 onderbreken
TR1 = 1; / / Timer 1 Run
)

/ * Leest huidige register aan TC spanning krijgen
- Elke ruwe bit = 15.625 uV
- TCuV in microvolts * /
void Read_TC_Volts (void) (
uchar buf;
uint buf16;
ow_reset (); / / te lezen huidige register
ow_writebyte (skipnet);
ow_writebyte (rdreg);
ow_writebyte (0x0e);
tCuV = ow_readbyte ();
buf = ow_readbyte ();
ow_reset ();
tCuV <<= 8;
tCuV = buf;
sign = tCuV>> 15; / / opslaan teken-bit
tCuV>> = 3; / / juiste afstemming
if (teken == 1) (
tCuV | = 0xf000; / / pad 2's compliment-bits
tCuV = ~ tCuV / / tCuV =-tCuV
tCuV = 1;
)
/ * TCuV *= 156; / / x 15.625 uV
tCuV / = 10; * /
/ * TCuV x 15.625 uV == (tCuV x 15) (tCuV x 0,625) * /
buf16 = tCuV * 15; / / tCuV x 15
tCuV *= 5; / / tCuV x 0.625 == (tCuV x 5) / 8
tCuV>> = 3;
tCuV = buf16;
)

/ * Leest koude kruising (apparaat) temperatuur
- Elke ruwe bit = 0,125 graden C
- Geeft tmpCJ in hele graden C * /
void Read_CJ_Temp (void) (
uchar buf;
ow_reset ();
ow_writebyte (skipnet);
ow_writebyte (rdreg);
ow_writebyte (0x18);
tmpCJ = ow_readbyte ();
buf = ow_readbyte ();
ow_reset ();
tmpCJ <<= 8;
tmpCJ = buf;
if (tmpCJ> = 0x8000) (/ / check teken
tmpCJ = 0; / / verbieden negatieve
) else (
tmpCJ>> = 8; / />> 5 x 0,125 (>> 3)
)
)

/ * Zoeken geselecteerde TC tafel voor dichtstbijzijnde binnenkomst
- Maakt gebruik van gemodificeerde binaire algoritme te vinden cjComp
- High end van zoek ingesteld voordat bellen (tblHi)
- Succesvolle zoeken sets tempC * /
void TC_Lookup (void) (
tblLo = 0; / / lage instap van tabel
tempC = 22; / / standaard kamer temp
testVal = Cnv_table [tblHi]; / / check max. temp
if (cjComp> testVal) (
error = 1; / / out of range
) else (
while (1) (
eePntr = (tblLo tblHi) / 2; / / middelpunt van zoeken span
testVal = Cnv_table [eePntr]; / / te lezen waarde middelpunt
if (cjComp == testVal) (
goto exitTC; / / gevonden!
) else (
if (cjComp <testVal) (tblHi = eePntr;) / / zoeken onderste helft
else (tblLo = eePntr;) / / zoeken bovenste helft
)
if ((tblHi-tblLo) <2) (/ / span bij minimale
eePntr = tblLo;
goto exitTC;
)
)
exitTC:
tempC = eePntr;
)
)/*******************************************
MAIN: Start hier!
********************************************/
void main (void) (
uchar i;
uchar ID [8];

/ * Inisialisasi UART * /
init232 ();
/ * Check_Device * /
if (! ow_reset ()) (/ / get volgnummer
printf ( "No Aanwezigheid! \ n");
goto exitMain;
)
ow_writebyte (readnet);
for (i = 0; i <8; i ) (
ID = ow_readbyte ();
)
ow_reset ();
printf ( "ID =");
for (i = 0; i <8; i ) (
printf ( "% X", ID );
)
printf ( "\ n");
if (id [0]! = 0x30) (/ / zo niet 0x30, verkeerde apparaat
printf ( "Wrong 1-Wire apparaat! \ n");
goto exitMain;
)

/ * Meet Temperatuur * /
while (1) (
fout = 0;
Read_TC_Volts (); / / te lezen Seebeck spanning
Read_CJ_Temp (); / / te lezen koude las temp
cjComp = Cnv_table [tmpCJ]; / / schadevergoeding krijgen spanning
/ * Combineren cjComp en tCuV * /
if (teken == 1) (
/ * TC onder koude las * /
if (tCuV <cjComp) (
cjComp-= tCuV;
) else (
cjComp = 0; / / beperken tot 0 C
)
) else (
/ * TC boven koude las * /
cjComp = tCuV;
)
tblHi = 400; / / set high-end van zoekopdracht
TC_Lookup (); / / reverse lookup van tabel
if (fout == 0) (
/ * Display tempC * /
printf ( "Temp C =% u \ n", tempC);
) else (
/ * Out of Range * /
printf ( "Out of range! \ n");
goto exitMain;
)
ow_waitms (1000);
)
exitMain:
while (1) ();
)

/ * END * /

 

Welcome to EDABoard.com

Sponsor

Back
Top