КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Курсовая работа. Список используемой литературы
Список используемой литературы Запуск и выполнение Реализация
Основные компоненты: 1. Микроконтроллер ATmega128 2. Датчик температура DS18B20 3. ЖКИ Выделим следующие этапы в разработке программного обеспечения термометра: 1. Получение данных с датчика. 2. Передача данных на ЖКИ. 3. Обработка прерывания. 4. Передача данных на ЖКИ. 1. Получение данных с датчика: Данные получаем с температурного датчика DS18B20, подключенного на порт В. 2. Передача данных на ЖКИ: Данные выводим на ЖК индикатор, подключенный на порт А. 3. Обработка прерывания: Промежуток между измерениями 500 мс. В процессе разработки проекта возникли следующие вопросы: 1. Каким образом подключить датчик к шине 1-Wire? 2. Как зашифрована температура, передаваемая датчиком? 3. Какие специализированные команды необходимо применять для опроса датчика?
Скомпилированная программа представляет собой файл типа cof, который прошиваем на микроконтроллер ATmega 128 семейства AVR. Соединяем компоненты рабочей модели прибора, получаем сигнал с температурного датчика, считываем температуру окружающей среды.
1. Белов А.В. Конструирование устройств на микроконтроллерах. - СПб.: Наука и Техника, 2005. - 256 С. 2. Бородин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики - М.: Издательство ЭКОМ, 2002. - 400 с.: илл. 3. Гребнев В.В. Микроконтроллеры семейства AVR фирмы Atmel М.: ИП РадиоСофт, 2002. - 176 с. 4. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы "ATMEL" - М.: Издательский дом "Додека-ХХI", 2004. - 560 с. 5. Шпак Ю.А. Программирование на языке Си для AVR и PIC микроконтроллеров. - К: ”МК-Пресс", 2006. - 400 С. Приложение
Код программы /***************************************************** This program was produced by the CodeWizardAVR V1.25.8 Professional Automatic Program Generator © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s. r. l. http://www.hpinfotech.com Project: Digital Thermometer Version: 1 Date: 24.11.2009 Author: Marina Company: Comments: Chip type: ATmega128 Program type: Application Clock frequency: 7,000000 MHz Memory model: Small External SRAM size: 0 Data Stack size: 1024 *****************************************************/ #include <mega128. h> #include <delay. h> #include <stdio. h> #include <lcd. h> // Alphanumeric LCD Module functions #asm // сообщаем куда подключен датчик . equ __w1_port=0x1B; PORTA . equ __w1_bit=0 #endasm // сообщаем куда подключён ЖКИ #asm . equ __lcd_port=0x15; PORTC #endasm #include <1wire. h> // 1 Wire Bus functions #include <ds18b20. h> /* >>>>>>>>>>>>>>>>maximum number of DS18B20 connected to the 1 Wire bus */ #define MAX_DEVICES 8 // Declare your global variables here /* >>>>>>>>>>>>>>DS18B20 devices ROM code storage area */ unsigned char devices; unsigned char rom_code [MAX_DEVICES] [9]; /*>>>>>>>>>*/char lcd_buffer [33]; void main (void) { int temp; unsigned int a; double d; UCSR0A=0x00; UCSR0B=0x10; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x2D; // >>>>>>>>>>>>>>>> Declare your local variables here // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=Out Func6= Out Func5= Out Func4= Out Func3= Out Func2= Out Func1= Out Func0= Out // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0xFF; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=T PORTB=0x00; DDRB=0x02; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Port E initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTE=0x00; DDRE=0x00; // Port F initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTF=0x00; DDRF=0x00; // Port G initialization // Func4=In Func3=In Func2=In Func1=In Func0=In // State4=T State3=T State2=T State1=T State0=T PORTG=0x00; DDRG=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected ASSR=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Timer/Counter 3 initialization // Clock source: System Clock // Clock value: Timer 3 Stopped // Mode: Normal top=FFFFh // Noise Canceler: Off // Input Capture on Falling Edge // OC3A output: Discon. // OC3B output: Discon. // OC3C output: Discon. // Timer 3 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR3A=0x00; TCCR3B=0x00; TCNT3H=0x00; TCNT3L=0x00; ICR3H=0x00; ICR3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; // External Interrupt (s) initialization // INT0: Off // INT1: Off // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x00; EICRB=0x00; EIMSK=0x00; // Timer (s) /Counter (s) Interrupt (s) initialization TIMSK=0x00; ETIMSK=0x00; // USART0 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART0 Receiver: On // USART0 Transmitter: Off // USART0 Mode: Asynchronous // USART0 Baud Rate: 57600 UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x07; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; PORTB=0x00; DDRB=0x01; // LCD module initialization lcd_init (16); w1_init (); /*>>>>>>>>>>>>>*/ delay_ms (250); lcd_clear (); /* detecting device */ devices=w1_search (0xF0,rom_code); delay_ms (250); sprintf (lcd_buffer,"%u DS18B20\nDevice detected", devices); lcd_puts (lcd_buffer); delay_ms (250); lcd_clear (); while (1) { temp=ds18b20_temperature (0); // чтение температуры с датчика if (temp>1000) { // преобразование отрицательной температуры temp=4096-temp; temp=-temp; } sprintf (lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); // запись температуры в массив для вывода на экран lcd_clear (); // очистка экрана lcd_puts (lcd_buffer); // вывод температуры delay_ms (500); // ожидание 500 мс перед следующим измерением a = ADCW; d = (double) a / 1024 * 5; printf ("%f\r", a); }; } на тему: « Международно-правовое регулирование охраны авторских прав »
Санкт-Петербург 2014г Содержание
Дата добавления: 2015-08-31; Просмотров: 306; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |