D
dimas_lilik
Guest
Уважаемые все ..
Можете мне помочь?
Я хочу с ЖК-дисплеем 2 X 16
Пожалуйста, помогите мне
/***************************
DS2760 Взаимодействие
****************************/
# включить <stdio.h> / / Е (), УСНАК, UINT, ....
# включить <reg51.h> / / interals процессора
# INCLUDE "1wire.h" / / 1-Lib проводов устройства
/************************
Порт декларации
*************************/
/ / DS2760 порта декларацию на 1wire.c
/************************************************* ******************
Типа "Т" (Copper / Константан) термопары данные (0C ссылка)
Автор: Составитель Параллакс
Обновлено: 19 JAN 2004
************************************************** ******************/
сопзЬ 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,
/ * Т400 * / 20872
);
/*************************************************
Константы & Глобальные переменные
************************************************** /
сопзЬ UCHAR readnet = 0x33 / / чтение OW чистой адрес
сопзЬ UCHAR skipnet = 0xcc / / показывать OW чистой адрес
сопзЬ UCHAR rdreg = 0x69 / / чтение регистра
/ * вблизи IDX UCHAR / / счетчик цикла (4-разрядная версия)
вблизи UCHAR типа / / тип устройства (4-разрядная версия)
вблизи UCHAR char_; / / отобразить байт / CHAR
вблизи UINT вин; / / в мв * /
вблизи UINT tmpCJ / / устройство Темп в С
вблизи UINT tCuV / / термопары мв
UINT вблизи знака / / ТС бит знака
вблизи UINT cjComp; / / Temp компенсации
вблизи UINT tempC; / / Temp в градусах Цельсия
вблизи UINT tblLo, tblHi, eePntr / / указатели таблицы
вблизи UINT testVal; / / проверка значения из таблицы
вблизи UCHAR ошибка / / 1 = из диапазона (1-бит)
/ / рядом UCHAR store8 / / 8-битный буфер
/**********************************************
Подпрограмма
***********************************************/
/ * Inisialisasi UART @ 9600 бод, 8-Н-1 * /
init232 Void (Пустота)
(
TMOD = (TMOD & 0x0F) | 0x20; / / Timer 1 Режим 2 (автоматическая перезагрузка)
SCON = 0x52; / / Serial Mode 1 (8-битный UART), REN = 1 (приемник включить)
/ / TI = 1 (передача буфер пуст)
PCON = PCON &0x7F; / / SMOD = 0 (Двойная скорость отключить)
TH1 = 0xFD / / 9600 бит
/ с (11059 МГц)
ET1 = 0; / / отключение таймера 1 прерывание
TR1 = 1; / / Запуск таймера 1
)
/ * Читает текущего зарегистрируйтесь, чтобы получить КЛ напряжением
- Каждый сырья бит = 15,625 мкВ
- TCuV в микровольтах * /
Пустота Read_TC_Volts (VOID) (
UCHAR BUF;
UINT buf16;
ow_reset (); / / читаем регистр текущего
ow_writebyte (skipnet);
ow_writebyte (rdreg);
ow_writebyte (0x0E);
tCuV = ow_readbyte ();
BUF = ow_readbyte ();
ow_reset ();
tCuV <<= 8;
tCuV = BUF;
знак = tCuV>> 15 / / сохранить знаковый разряд
tCuV>> = 3 / / правильное выравнивание
если (знак == 1) (
tCuV | = 0xf000; / / PAD 2's комплимент бита
tCuV = ~ tCuV / / tCuV =-tCuV
tCuV = 1;
)
/ * TCuV *= 156; / / х 15,625 мкВ
tCuV / = 10 *;
/ * TCuV х 15,625 мкВ == (tCuV х 15) (tCuV х 0,625) * /
buf16 = tCuV * 15 / / tCuV х 15
tCuV *= 5; / / tCuV х 0,625 == (tCuV х 5) / 8
tCuV>> = 3;
tCuV = buf16;
)
/ * Читает спай (устройство) температура
- Каждый сырья бит = 0,125 ° С
- Возвращает tmpCJ в целом градуса C * /
Пустота 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;
если (tmpCJ> = 0x8000) (/ / проверка знака
tmpCJ = 0; / / запретить негативное
() другое
tmpCJ>> = 8 / />> 5 х 0,125 (>> 3)
)
)
/ * Поиска выбранного ТК таблице ближайшего вступления
- Использует измененные бинарные алгоритм поиска cjComp
- High End поиска установить перед вызовом (tblHi)
- Успешный поиск множества tempC * /
Пустота TC_Lookup (VOID) (
tblLo = 0; / / низкая позиция в таблице
tempC = 22; / / по умолчанию в комнату темп
testVal = Cnv_table [tblHi] / / проверка Максимальная температура
если (cjComp> testVal) (
Ошибка = 1; / / выход из диапазона
() другое
While (1) (
eePntr = (tblLo tblHi) / 2 / / медиана поиска SPAN
testVal = Cnv_table [eePntr] / / чтение значения от медианной
если (cjComp == testVal) (
Перейти exitTC / / его нашли!
() другое
если (cjComp <testVal) (tblHi = eePntr / / Поиск в нижней половине
зе (tblLo = eePntr / / Поиск верхняя половина
)
If ((tblHi-tblLo) <2) (/ / SPAN минимум
eePntr = tblLo;
Перейти exitTC;
)
)
exitTC:
tempC = eePntr;
)
)/*******************************************
ГЛАВНАЯ: Начало здесь!
********************************************/
Основными Void (Пустота) (
UCHAR I;
UCHAR ID [8];
/ * Inisialisasi UART * /
init232 ();
/ * Check_Device * /
IF (! ow_reset ()) (/ / получить серийный номер
Е ( "не присутствует! \ п");
Перейти exitMain;
)
ow_writebyte (readnet);
для (i = 0; i <8; I ) (
ID = ow_readbyte ();
)
ow_reset ();
Е ( "ID =");
для (i = 0; i <8; I ) (
Е ( "% X", ID );
)
Е ( "\ п");
если (ID [0]! = 0x30) (/ / Если не 0x30, неправильного устройства
Е ( "Неверный 1-Wire устройства! \ п");
Перейти exitMain;
)
/ * Измерение температуры * /
While (1) (
Ошибка = 0;
Read_TC_Volts (); / / читать Зеебека напряжения
Read_CJ_Temp (); / / читать холодно темп перехода
cjComp = Cnv_table [tmpCJ] / / получить компенсацию напряжения
/ * Объединить cjComp и tCuV * /
если (знак == 1) (
/ * ТК ниже холодное соединение * /
если (tCuV <cjComp) (
cjComp-= tCuV;
() другое
cjComp = 0; / / предел 0 С
)
() другое
/ * ТК выше холодного соединения * /
cjComp = tCuV;
)
tblHi = 400; / / установка высокого конца поиска
TC_Lookup (); / / обратный поиск по таблице
если (ошибка == 0) (
/ * Вывести tempC * /
Е ( "Temp = C% U \ п", tempC);
() другое
/ * Из диапазон * /
Е ( "вне досягаемости! \ п");
Перейти exitMain;
)
ow_waitms (1000);
)
exitMain:
While (1) ();
)
/ * END * /
Можете мне помочь?
Я хочу с ЖК-дисплеем 2 X 16
Пожалуйста, помогите мне
/***************************
DS2760 Взаимодействие
****************************/
# включить <stdio.h> / / Е (), УСНАК, UINT, ....
# включить <reg51.h> / / interals процессора
# INCLUDE "1wire.h" / / 1-Lib проводов устройства
/************************
Порт декларации
*************************/
/ / DS2760 порта декларацию на 1wire.c
/************************************************* ******************
Типа "Т" (Copper / Константан) термопары данные (0C ссылка)
Автор: Составитель Параллакс
Обновлено: 19 JAN 2004
************************************************** ******************/
сопзЬ 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,
/ * Т400 * / 20872
);
/*************************************************
Константы & Глобальные переменные
************************************************** /
сопзЬ UCHAR readnet = 0x33 / / чтение OW чистой адрес
сопзЬ UCHAR skipnet = 0xcc / / показывать OW чистой адрес
сопзЬ UCHAR rdreg = 0x69 / / чтение регистра
/ * вблизи IDX UCHAR / / счетчик цикла (4-разрядная версия)
вблизи UCHAR типа / / тип устройства (4-разрядная версия)
вблизи UCHAR char_; / / отобразить байт / CHAR
вблизи UINT вин; / / в мв * /
вблизи UINT tmpCJ / / устройство Темп в С
вблизи UINT tCuV / / термопары мв
UINT вблизи знака / / ТС бит знака
вблизи UINT cjComp; / / Temp компенсации
вблизи UINT tempC; / / Temp в градусах Цельсия
вблизи UINT tblLo, tblHi, eePntr / / указатели таблицы
вблизи UINT testVal; / / проверка значения из таблицы
вблизи UCHAR ошибка / / 1 = из диапазона (1-бит)
/ / рядом UCHAR store8 / / 8-битный буфер
/**********************************************
Подпрограмма
***********************************************/
/ * Inisialisasi UART @ 9600 бод, 8-Н-1 * /
init232 Void (Пустота)
(
TMOD = (TMOD & 0x0F) | 0x20; / / Timer 1 Режим 2 (автоматическая перезагрузка)
SCON = 0x52; / / Serial Mode 1 (8-битный UART), REN = 1 (приемник включить)
/ / TI = 1 (передача буфер пуст)
PCON = PCON &0x7F; / / SMOD = 0 (Двойная скорость отключить)
TH1 = 0xFD / / 9600 бит
/ с (11059 МГц)
ET1 = 0; / / отключение таймера 1 прерывание
TR1 = 1; / / Запуск таймера 1
)
/ * Читает текущего зарегистрируйтесь, чтобы получить КЛ напряжением
- Каждый сырья бит = 15,625 мкВ
- TCuV в микровольтах * /
Пустота Read_TC_Volts (VOID) (
UCHAR BUF;
UINT buf16;
ow_reset (); / / читаем регистр текущего
ow_writebyte (skipnet);
ow_writebyte (rdreg);
ow_writebyte (0x0E);
tCuV = ow_readbyte ();
BUF = ow_readbyte ();
ow_reset ();
tCuV <<= 8;
tCuV = BUF;
знак = tCuV>> 15 / / сохранить знаковый разряд
tCuV>> = 3 / / правильное выравнивание
если (знак == 1) (
tCuV | = 0xf000; / / PAD 2's комплимент бита
tCuV = ~ tCuV / / tCuV =-tCuV
tCuV = 1;
)
/ * TCuV *= 156; / / х 15,625 мкВ
tCuV / = 10 *;
/ * TCuV х 15,625 мкВ == (tCuV х 15) (tCuV х 0,625) * /
buf16 = tCuV * 15 / / tCuV х 15
tCuV *= 5; / / tCuV х 0,625 == (tCuV х 5) / 8
tCuV>> = 3;
tCuV = buf16;
)
/ * Читает спай (устройство) температура
- Каждый сырья бит = 0,125 ° С
- Возвращает tmpCJ в целом градуса C * /
Пустота 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;
если (tmpCJ> = 0x8000) (/ / проверка знака
tmpCJ = 0; / / запретить негативное
() другое
tmpCJ>> = 8 / />> 5 х 0,125 (>> 3)
)
)
/ * Поиска выбранного ТК таблице ближайшего вступления
- Использует измененные бинарные алгоритм поиска cjComp
- High End поиска установить перед вызовом (tblHi)
- Успешный поиск множества tempC * /
Пустота TC_Lookup (VOID) (
tblLo = 0; / / низкая позиция в таблице
tempC = 22; / / по умолчанию в комнату темп
testVal = Cnv_table [tblHi] / / проверка Максимальная температура
если (cjComp> testVal) (
Ошибка = 1; / / выход из диапазона
() другое
While (1) (
eePntr = (tblLo tblHi) / 2 / / медиана поиска SPAN
testVal = Cnv_table [eePntr] / / чтение значения от медианной
если (cjComp == testVal) (
Перейти exitTC / / его нашли!
() другое
если (cjComp <testVal) (tblHi = eePntr / / Поиск в нижней половине
зе (tblLo = eePntr / / Поиск верхняя половина
)
If ((tblHi-tblLo) <2) (/ / SPAN минимум
eePntr = tblLo;
Перейти exitTC;
)
)
exitTC:
tempC = eePntr;
)
)/*******************************************
ГЛАВНАЯ: Начало здесь!
********************************************/
Основными Void (Пустота) (
UCHAR I;
UCHAR ID [8];
/ * Inisialisasi UART * /
init232 ();
/ * Check_Device * /
IF (! ow_reset ()) (/ / получить серийный номер
Е ( "не присутствует! \ п");
Перейти exitMain;
)
ow_writebyte (readnet);
для (i = 0; i <8; I ) (
ID = ow_readbyte ();
)
ow_reset ();
Е ( "ID =");
для (i = 0; i <8; I ) (
Е ( "% X", ID );
)
Е ( "\ п");
если (ID [0]! = 0x30) (/ / Если не 0x30, неправильного устройства
Е ( "Неверный 1-Wire устройства! \ п");
Перейти exitMain;
)
/ * Измерение температуры * /
While (1) (
Ошибка = 0;
Read_TC_Volts (); / / читать Зеебека напряжения
Read_CJ_Temp (); / / читать холодно темп перехода
cjComp = Cnv_table [tmpCJ] / / получить компенсацию напряжения
/ * Объединить cjComp и tCuV * /
если (знак == 1) (
/ * ТК ниже холодное соединение * /
если (tCuV <cjComp) (
cjComp-= tCuV;
() другое
cjComp = 0; / / предел 0 С
)
() другое
/ * ТК выше холодного соединения * /
cjComp = tCuV;
)
tblHi = 400; / / установка высокого конца поиска
TC_Lookup (); / / обратный поиск по таблице
если (ошибка == 0) (
/ * Вывести tempC * /
Е ( "Temp = C% U \ п", tempC);
() другое
/ * Из диапазон * /
Е ( "вне досягаемости! \ п");
Перейти exitMain;
)
ow_waitms (1000);
)
exitMain:
While (1) ();
)
/ * END * /