Спеціалізована управляюча ЕОМ

Мікропроцесорний блок і аналогові данні. Опис розробленого програмного забезпечення. Збір, обробка та відображення інформації. Мікроконтролер і спеціалізована управляюча, встановлення сигналу логічного нуля. Комутатор і число аналогових входів.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.