- •Лабораторная работа №1
- •Лабораторная работа №2
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №3
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №4
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №5
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №6
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №7
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №9
Лабораторная работа №9
Программирование I2C (TWI)
Цель работы: Исследование интерфейса I2C (TWI)
Лабораторное задание
Исследовать работу интерфейса I2C (TWI)
Порядок выполнения работы
Для выполнения работы необходимо в среде автоматизированного проектирования Proteus собрать схему устройства в соответствии с рисунком 1.
Рисунок 1 – Схема устройства
Для источника питания R1(2) установить напряжение равное 5 В.
Для микроконтроллера задать файл прошивки из рабочей папки.
Произвести симуляцию программы и убедится в правильности работы программы.
Содержание отчета:
Название и цель работы.
Принципиальная схема устройства.
Результаты моделирования.
Выводы по лабораторной работе.
Листинг программы
#include <mega328p.h>
#asm
.equ __i2c_port=0x05 ;PORTB
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1621.h>
#include <stdio.h>
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
EICRA=0x00;
EIMSK=0x00;
PCICR=0x00;
TIMSK0=0x00;
TIMSK1=0x00;
TIMSK2=0x00;
UCSR0A=0x00;
UCSR0B=0x08;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
ACSR=0x80;
ADCSRB=0x00;
DIDR1=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
i2c_init();
ds1621_init(0,0,100,0);
while (1)
{
ds1621_start(0);
printf("%d\n\r", (ds1621_temperature_10(0))/10);
ds1621_stop(0);
}
}
Лабораторная работа №9
Программирование UART
Цель работы: Исследование интерфейса UART
Лабораторное задание
Исследовать работу интерфейса UART
Порядок выполнения работы
Для выполнения работы необходимо в среде автоматизированного проектирования Proteus собрать схему устройства в соответствии с рисунком 1.
Рисунок 1 – Схема устройства
Для источника питания R1(2) установить напряжение равное 5 В.
Для микроконтроллера задать файл прошивки из рабочей папки.
Произвести симуляцию программы и убедится в правильности работы программы.
Установить на термодатчике температуру равную 20 0С. Снять осциллограмму интерфейса UART.
Установить на термодатчике температуру равную 40 0С. Снять осциллограмму интерфейса UART.
Содержание отчета:
Название и цель работы.
Принципиальная схема устройства.
Результаты моделирования.
Выводы по лабораторной работе.
Листинг программы
#include <mega328p.h>
#asm
.equ __i2c_port=0x05 ;PORTB
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1621.h>
#include <stdio.h>
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
EICRA=0x00;
EIMSK=0x00;
PCICR=0x00;
TIMSK0=0x00;
TIMSK1=0x00;
TIMSK2=0x00;
UCSR0A=0x00;
UCSR0B=0x08;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
ACSR=0x80;
ADCSRB=0x00;
DIDR1=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
i2c_init();
ds1621_init(0,0,100,0);
while (1)
{
ds1621_start(0);
printf("%d\n\r", (ds1621_temperature_10(0))/10);
ds1621_stop(0);
}
}