Спеціалізована управляюча ЕОМ
Мікропроцесорний блок і аналогові данні. Опис розробленого програмного забезпечення. Збір, обробка та відображення інформації. Мікроконтролер і спеціалізована управляюча, встановлення сигналу логічного нуля. Комутатор і число аналогових входів.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 20.11.2011 |
Размер файла | 46,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Конспект лекцій з дисципліни МПіС - Войченко Г.І.
2. Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров, изд. Киев: МК-Прес, 2006. - 200 c.
3. Лебедев М.Б. СodeVision AVR. Пособие для начинающих :Додэка-XXI, 2008. - 590 c.
4 Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке Ассемблера. - СПб. :БХВ-Петербург, 2008. - 384 с.
5 Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров, изд. Киев: МК-Прес, 2006. - 340 c.
6 ДСТУ 3008-95. Документація. Звіти у сфері науки і техніки. Структура і правила
7 Усатенко С.Т., Каченюк Е.К., Терехова М.В. Выполнение электрических схем по ЕСКД: Справочник. - М. :Издательство стандартов, 1989. - 325 с.
8 ГОСТ 2.105-95. ЕСКД. Общие требования к текстовым документам.
9 www.atmel.ru
10 www.analog.com.ru
11 www.bolymin.com
ДОДАТОК А
Пристрій збору, обробки та відображення інформації
Схема електрична принципова
ДОДАТОК Б
Пристрій збору, обробки та відображення інформації
Блок-схема алгоритму програми
ДОДАТОК В
Пристрій збору, обробки та відображення інформації
Лістинг програми
Chip type : ATmega8535
Program type : Application
AVR Core Clock frequency: 4,000000 MHz
Fuse bits : CKSEL3=CKSEL2=SUT1=SUT0=0
Memory model : Small
Data Stack size : 128
#include <mega8535.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// SPI functions
#include <spi.h>
#include <delay.h>
#include <stdlib.h>
#define ADC_VREF_TYPE 0x00
#define A PIND.0
#define B PIND.1
#define C PIND.2
#define D PIND.3
// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#include <i2c.h>
// Declare signatures of a user's functions
void read_analog_inputs (void);
unsigned int read_internal_adc(unsigned char adc_input);
unsigned int read_external_adc(void);
unsigned int getY(unsigned int in[]);
void getZ(void);
void i2c_write_uint(unsigned char address, unsigned int data);
#define NUMBER_OF_ANALOG_INPUTS 12
// Declare your global variables here
unsigned int count = 2;
unsigned int voltage_ADC [ NUMBER_OF_ANALOG_INPUTS ];
unsigned long int summ;
unsigned long int num_count;
flash const unsigned char ADDRESS = 0b00011000;
// Declare your local variables here
unsigned int buffer;
// Input/Output Ports initialization
// Port A initialization (In,In,In,In,Out,Out,Out,Out) (T,T,T,T,0,0,0,0)
PORTA=0x00;
DDRA=0x0F;
// Port B initialization (Out,In,In,In,In,In,Out,In) (0,T,P,P,P,P,0,P)
PORTB=0x82;
DDRB=0x3C;
// Port C initialization (Out,Out,Out,Out,In,Out,Out,Out) (0,0,0,0,0,0,0,0)
PORTC=0x08;
DDRC=0xF7;
// Port D initialization (Out,Out,Out,Out,In,In,In,In) (0,0,0,0,T,T,T,T)
PORTD=0x00;
DDRD=0xF0;
// SPI initialization
// SPI Type: Master; SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Half ; SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
// ADC initialization
// ADC Clock frequency: 1000,000 kHz; ADC Voltage Reference: AREF pin
// ADC High Speed Mode: On ; ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x82;
SFIOR&=0xEF;
SFIOR|=0x10;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;
// Global enable interrupts
#asm("sei")
// I2C Bus initialization
i2c_init();
// LCD module initialization
lcd_init(16);
while (1){
read_analog_inputs();
buffer = getY(voltage_ADC);
#asm("cli")
i2c_write_uint(ADDRESS, buffer);
#asm("sei")
summ += buffer;
num_count++;
//Z1
PIND.6 = A|~B|(C^B);
//Z2
PIND.7 = C|D;
}
}
// reads array of analog inputs
// and write it to voltage_ADC[]
void read_analog_inputs (void){
int i;
for (i = 0; i < NUMBER_OF_ANALOG_INPUTS; i++){
PORTB = 2;
voltage_ADC[i] = read_external_adc();
// switch input
++PORTA;
}
PORTA = 0;
}
// Write value to DAC by I2C
// @ address - address byte
// @ data - byte of data
void i2c_write_uint(unsigned char address, unsigned int data){
data = data <<4;
register char *ptr = (char*)&data;
i2c_start();
i2c_write(address);
i2c_write(*--ptr);
i2c_write(*++ptr);
i2c_stop();
}
// Read the AD conversion result from internal ADC
// @ adc_input - number of ADC inputs
// @ return ADCW - 10 bit, result of conversion
unsigned int read_internal_adc(unsigned char adc_input){
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
#define VREF 5000L
#define n_convst PORTB.1
// Read the AD conversion result from external ADC
// @ return voltage - significant lower 12 bit, result of conversion
unsigned int read_external_adc(void){
unsigned int voltage;
// Start the AD conversion and transfer
n_convst = 0;
// Reads
voltage = spi(0);
voltage = voltage << 8;
voltage |= spi(0);
// Completed
n_convst = 1;
//Significant Low Byte
voltage = voltage >> 4;
voltage = voltage & 0x0F;
return voltage;
}
// Y = (N18-N1)/1 + (N17-N2)/2 +...+ (N10-N9)/9
// gets result of function Y
// @ in[] - array of analog inputs
// @ returt out - result of function Y
unsigned int getY(unsigned int in[]){
unsigned int out = 0;
int i = 0;
while (i < 6){
out += ( in[i++]/i+1 + in[i++] );
}
return out;
}
// T = 256*1024/4000000 = 65 536 us
// N=2...153 <=> 0,1...10 c
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void){
char string[5];
unsigned int compare = 2 + (unsigned)(((unsigned long)read_internal_adc(7)*153)/1024L);
if (count >= compare){
count = 0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("averaged: ");
lcd_gotoxy(11,0);
//convert int to string
ltoa((summ*VREF/1024L*num_count), string);
summ = num_count = 0;
lcd_puts(string);
}
count++;
}
Размещено на Allbest.ru
Подобные документы
Вибір конфігурації контролера і схем підключення. Розроблення прикладного програмного забезпечення для реалізації алгоритму керування. Самодіагностика та індикація несправностей. Обробка цифрової інформації. Розрахунок надійності системи керування.
курсовая работа [1,1 M], добавлен 25.08.2014Розробка програмного забезпечення для управління транспортними платформами на базі програмованого логічного контролера S7-300 в Simatic STEP-7. Аналіз програмного забезпечення, розрахунок показників його надійності. Опис алгоритму функціонування системи.
дипломная работа [2,1 M], добавлен 17.05.2012Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.
дипломная работа [1,9 M], добавлен 19.08.2012Синтез аналогової та структурної схеми цифрового фільтру. Опис програми обробки інформації. Оцінка верхньої фінітної частоти вхідного аналогового сигналу. Структурна схема та алгоритм функціонування пристрою мікропроцесорної обробки аналогової інформації.
курсовая работа [710,9 K], добавлен 12.03.2010Розробка компонентів програмного забезпечення системи збору даних про хід технологічного процесу. Опис програмного забезпечення: сервера, що приймає дані про хід технологічного процесу, КОМ для його імітування, робочої станції для відображення даних.
курсовая работа [1,3 M], добавлен 20.11.2010Проектування і реалізація навчального програмного продукту "Побудова геометричних фігур". Використання C++ Builder 6 у якості програмного середовища для реалізації даної навчальної програми. Інструкція з використання розробленого програмного забезпечення.
курсовая работа [2,2 M], добавлен 05.05.2014Загальний опис алгоритмів головної програми та процедур запису і зчитування повідомлень на рівні блок-схем, детальний опис розробленої програми на рівні програмного коду. Характеристика процедури відображення стану регістрів. Опис екранних форм програми.
курсовая работа [552,5 K], добавлен 09.06.2010Основні мови програмування для системи сенсорного терміналу для відображення інформації про розклад студентам. Аналіз баз даних для системи відображення інформації. Рекомендації по використанню програмного забезпечення адміністратору та користувачеві.
дипломная работа [1,0 M], добавлен 02.09.2014Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.
дипломная работа [2,8 M], добавлен 11.05.2012Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.
курсовая работа [1,3 M], добавлен 20.05.2015