Проектування мікропроцесорної метеостанції
Загальна характеристика метеорологічних приладів: термометрів, барометрів, психрометрів, гігрометрів. Розробка електричної принципової схеми мікропроцесорної метеостанції, розрахунок її надійності. Вибір мікроконтролера і датчиків, монтаж друкованих плат.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 13.06.2012 |
Размер файла | 3,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
uart_puts(buffer);
uart_puts_P("°C");
}
void DS18X20_show_id_uart(uint8_t *id, size_t n)
{
size_t i;
for(i = 0; i < n; i++) {
if (i == 0) uart_puts_P("FC:");
else if (i == n-1) uart_puts_P("CRC:");
if (i == 1) uart_puts_P("SN: ");
uart_puthex_byte(id[i]);
uart_puts_P(" ");
if (i == 0) {
if (id[0] == DS18S20_ID) uart_puts_P ("(18S)");
else if (id[0] == DS18B20_ID) uart_puts_P ("(18B)");
else uart_puts_P ("(?)");
}
}
if (crc8(id, OW_ROMCODE_SIZE))
uart_puts_P(" CRC FAIL ");
else
uart_puts_P(" CRC O.K. ");
}
void show_sp_uart(uint8_t *sp, size_t n)
{
size_t i;
uart_puts_P("SP:");
for(i = 0; i < n; i++) {
if (i == n-1) uart_puts_P("CRC:");
uart_puthex_byte(sp[i]);
uart_puts_P(" ");
}
}
/* verbose output rom-search follows read-scratchpad in one loop */
uint8_t DS18X20_read_meas_all_verbose(void)
{
uint8_t id[OW_ROMCODE_SIZE], sp[DS18X20_SP_SIZE], diff;
uint8_t i;
uint16_t meas;
uint8_t subzero, cel, cel_frac_bits;
for(diff = OW_SEARCH_FIRST; diff != OW_LAST_DEVICE;)
{
diff = ow_rom_search(diff, &id[0]);
if(diff == OW_PRESENCE_ERR) {
uart_puts_P("No Sensor found\r");
return OW_PRESENCE_ERR;
}
if(diff == OW_DATA_ERR) {
uart_puts_P("Bus Error\r");
return OW_DATA_ERR;
}
DS18X20_show_id_uart(id, OW_ROMCODE_SIZE);
if(id[0] == DS18B20_ID || id[0] == DS18S20_ID) { // temperature sensor
uart_putc ('\r');
ow_byte_wr(DS18X20_READ); // read command
for (i=0 ; i< DS18X20_SP_SIZE; i++)
sp[i]=ow_byte_rd();
show_sp_uart(sp, DS18X20_SP_SIZE);
if (crc8(&sp[0], DS18X20_SP_SIZE))
uart_puts_P(" CRC FAIL ");
else
uart_puts_P(" CRC O.K. ");
uart_putc ('\r');
meas = sp[0]; // LSB Temp. from Scrachpad-Data
meas |= (uint16_t) (sp[1] << 8); // MSB
uart_puts_P(" T_raw=");
uart_puthex_byte((uint8_t)(meas>>8));
uart_puthex_byte((uint8_t)meas);
uart_puts_P(" ");
if(id[0] == DS18S20_ID) { // 18S20
uart_puts_P("S20/09");
}
else if (id[0] == DS18B20_ID) { // 18B20
i=sp[DS18B20_CONF_REG];
if ((i & DS18B20_12_BIT) == DS18B20_12_BIT) {
uart_puts_P("B20/12");
}
else if ((i & DS18B20_11_BIT) == DS18B20_11_BIT) {
uart_puts_P("B20/11");
}
else if ((i & DS18B20_10_BIT) == DS18B20_10_BIT) {
uart_puts_P(" B20/10 ");
}
else { // if ((i & DS18B20_9_BIT) == DS18B20_9_BIT) {
uart_puts_P("B20/09");
}
}
uart_puts_P(" ");
DS18X20_meas_to_cel(id[0], sp, &subzero, &cel, &cel_frac_bits);
DS18X20_uart_put_temp(subzero, cel, cel_frac_bits);
uart_puts("\r");
} // if meas-sensor
} // loop all sensors
uart_puts_P("\r");
return DS18X20_OK;
}
void LCDsendChar(uint8_t ch) //Sends Char to LCD
{
LDP=((ch&0b11110000)>>2);
LCP|=1<<LCD_RS;
LCP|=1<<LCD_E;
_delay_ms(5);
LCP&=~(1<<LCD_E);
LCP&=~(1<<LCD_RS);
_delay_ms(5);
LDP=((ch&0b00001111)<<2);
LCP|=1<<LCD_RS;
LCP|=1<<LCD_E;
_delay_ms(5);
LCP&=~(1<<LCD_E);
LCP&=~(1<<LCD_RS);
_delay_ms(5);
}
void LCDsendCommand(uint8_t cmd) //Sends Command to LCD
{
LDP=((cmd&0b11110000)>>2);
LCP|=1<<LCD_E;
_delay_ms(5);
LCP&=~(1<<LCD_E);
_delay_ms(5);
LDP=((cmd&0b00001111)<<2);
LCP|=1<<LCD_E;
_delay_ms(5);
LCP&=~(1<<LCD_E);
_delay_ms(5);
}
void LCDinit(void)//Initializes LCD
{
_delay_ms(10);
LDP=0x00;
LCP=0x00;
LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
LCDR|=1<<LCD_E|1<<LCD_RS;
//---------one------
LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
LCP|=1<<LCD_E|0<<LCD_RS;
_delay_ms(5);
LCP&=~(1<<LCD_E);
_delay_ms(5);
//-----------two-----------
LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
LCP|=1<<LCD_E|0<<LCD_RS;
_delay_ms(5);
LCP&=~(1<<LCD_E);
_delay_ms(5);
//-------three-------------
LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4; //4 bit mode
LCP|=1<<LCD_E|0<<LCD_RS;
_delay_ms(5);
LCP&=~(1<<LCD_E);
_delay_ms(5);
//--------4 bit--dual line---------------
LCDsendCommand(0b00101000);
//-----increment address, cursor shift------
LCDsendCommand(0b00001110);
}
void LCDclr(void) //Clears LCD
{
LCDsendCommand(1<<LCD_CLR);
}
void LCDhome(void) //LCD cursor home
{
LCDsendCommand(1<<LCD_HOME);
}
void LCDstring(uint8_t* data, uint8_t nBytes) //Outputs string to LCD
{
register uint8_t i;
// check to make sure we have a good pointer
if (!data) return;
// print data
for(i=0; i<nBytes; i++)
{
LCDsendChar(data[i]);
}
}
void LCDGotoXY(uint8_t x, uint8_t y) //Cursor to X Y position
{
register uint8_t DDRAMAddr;
// remap lines into proper order
switch(y)
{
case 0: DDRAMAddr = LCD_LINE0_DDRAMADDR+x; break;
case 1: DDRAMAddr = LCD_LINE1_DDRAMADDR+x; break;
case 2: DDRAMAddr = LCD_LINE2_DDRAMADDR+x; break;
case 3: DDRAMAddr = LCD_LINE3_DDRAMADDR+x; break;
default: DDRAMAddr = LCD_LINE0_DDRAMADDR+x;
}
// set data address
LCDsendCommand(1<<LCD_DDRAM | DDRAMAddr);
}
Размещено на Allbest.ru
Подобные документы
Техніко-економічне обґрунтування доцільності розробки структурної та електропринципової схеми мікропроцесорної метеостанції. Обґрунтування вибору мікроконтролера, перетворювача рівня сигналу, датчиків відносної вологості, атмосферного тиску, температури.
дипломная работа [940,1 K], добавлен 06.03.2010Загальна характеристика мікроконтролерів сімейства AVR фірми Atmel, складання структурної схеми електронних годинників та інформаційного табло. Розробка мікропроцесорної системи для багатоканального інформаційного табло на основі даного мікроконтролера.
дипломная работа [2,7 M], добавлен 12.12.2010Розробка мікропроцесорної системи управління роботом з контролем переміщення на базі мікроконтролера AT89C51. Розробка і опис структурної схеми мікропроцесорної системи. Відстань між світлодіодом і фототранзистором. Розробка алгоритмів програми.
курсовая работа [2,3 M], добавлен 13.04.2013Розробка структурної схеми мікропроцесора. Узгодження максимальної вхідної напруги від датчиків з напругою, що може обробити МПСза допомогою дільника напруги та аналогового буферного повторювача. Система тактування та живлення. Організація виводу даних.
курсовая работа [354,3 K], добавлен 14.12.2010Місце та основні характеристики пристрою в архітектурі мікропоцесорної системи. Розробка схеми електричної принципової малогабаритного двохпроменевого осцилографу-мультиметру. Схема електричної принципової електричного дзвоника. Принцип роботи пристрою.
курсовая работа [1,3 M], добавлен 20.03.2009Пристрої захисту офісу. Аналіз мікропроцесорних охоронних датчиків. Апаратна частина та принципова схема. Вибір типу контролера, наведення його технічних характеристик. Підбір елементів схеми, калькуляція виробу. Вибір середовища та мови програмування.
курсовая работа [982,3 K], добавлен 15.02.2012Короткий огляд систем автоматизації проектування електроніки: Quartus II, KiCad, MAX + PLUS II. Розробка охоронного пристрою на основі мікроконтролера за допомогою пакету Proteus VSM. Розрахунок споживаної потужності, пошук і усунення несправностей.
курсовая работа [990,9 K], добавлен 10.05.2014Мікросхемні та інтегральні стабілізатори напруги широкого використання. Розробка принципової електричної схеми. Розрахунок схеми захисту компенсаційного стабілізатора напруги від перевантаження. Вибір і аналіз структурної схеми та джерел живлення.
курсовая работа [294,4 K], добавлен 06.03.2010Розробка електричної схеми оптичної охоронної системи. Дослідження можливої реалізації структурних блоків. Вибір елементної бази та розрахунок параметрів елементів схеми. Характеристика особливостей сервісних датчиків і пристроїв охоронної сигналізації.
курсовая работа [358,0 K], добавлен 12.03.2014Характеристика структур систем мікропроцесорної централізації, їх порівняний аналіз. Розробка структурної схеми та оцінка її функціональних можливостей, сфери використання. Розробка схем включення обладнання. Розрахунок модулів введення-виведення.
курсовая работа [3,2 M], добавлен 17.03.2015