Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodychka_labs.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Завдання:

Виміряти значення напруги на виході потенціометра з допомогою АЦП реалізованого на базі ЦАП згідно варіанту та відобразити виміряне значення на рідкокристалічному дисплеї;

№ варіанту

1

2

3

4

5

6

7

8

9

0

Тип ЦАП

MAX504

MAX515

MAX517

MAX518

MAX519

MAX5820

MAX5821

MAX5822

MAX5839

MCP4725

Порядок виконання роботи

  1. Розробити та скласти схему пристрою.

  2. Написати та відлагодити програму роботи мікроконтролера.

  3. Запрограмувати мікроконтролер.

  4. Перевірити функціонування схеми.

  5. Оформити звіт.

Приклад схеми

Приклад програми на С51

Файл main.c

#include <REGX52.H>

#include <stdio.h>

#include "iic_mast.h"

sbit comparator_out=P0^5;

bit comparator_off;

#define DAC_bits 8

#define Uref 5

float u;

unsigned char volt_pos;

void delay(unsigned int n);

/*-----------------------------------*/

#include "lcd.h"

/*-----------------------------------*/

void main(void)

{

unsigned char tt,n,nt;

sda=1;

scl=1;

write(0x58,0,0);

delay(2);

comparator_off=comparator_out;

init_LCD();

printf("\nLab N3 Example ");

volt_pos=print_ram_adres_lcd;

while(1)

{

n=0;

nt=0;

for(tt=0;tt<DAC_bits;tt++)

{

n=1<<(DAC_bits-tt);

nt=nt|n;

write(0x58,0,nt);

delay(3);

if(comparator_out!=comparator_off)nt=nt&(~n);

}

u=(float)Uref/(1<<DAC_bits)*nt;

print_ram_adres_lcd = volt_pos;

printf("N=%bX U=%.3f",nt,u);

}

}

/*-----------------------------------*/

void delay(unsigned int n)

{

unsigned int i,j;

for(i=0;i<n;i++)

for(j=0;j<500;j++);

}

/*-----------------------------------*/

Файл iic_mast.h

#include<intrins.h>

/*------------------------*/

sbit sda=P0^7;

sbit scl=P0^6;

/*------------------------*/

void start_condition(void)

{

sda=1;scl=1;

if((sda)&&(scl))

{

_nop_();

sda=0;

_nop_();_nop_();

_nop_();_nop_();_nop_();

scl=0;

}

}

/*------------------------*/

void stop_condition(void)

{

sda=0;

_nop_();_nop_();

scl=1;

_nop_();_nop_();

_nop_();_nop_();_nop_();

sda=1;

}

/*------------------------*/

void ACK(void)

{

sda=0;

_nop_();_nop_();

scl=1;

_nop_();_nop_();

_nop_();_nop_();

scl=0;

}

/*------------------------*/

void NAK(void)

{

sda=1;

_nop_();_nop_();

scl=1;

_nop_();_nop_();_nop_();_nop_();

scl=0;

}

/*------------------------*/

unsigned char rbyte(void)

{

unsigned char tt,c=0,cc;

sda=1;

for(tt=0;tt<8;tt++)

{

_nop_();_nop_();_nop_();

scl=1;

_nop_();_nop_();

if(sda)cc=(1<<7-tt);

c=c|cc;

scl=0;

}

return c;

}

/*------------------------*/

unsigned char wbyte(unsigned char dd)

{

unsigned char tt=0;

unsigned char a,i;

sda=0;

for(i=0;i<8;i++)

{

a=dd&(1<<(7-i));

if(a)sda=1;

else sda=0;

_nop_();

scl=1;

_nop_();_nop_();

_nop_();_nop_();

scl=0;

}

sda=1;

_nop_();_nop_();

scl=1;

_nop_();_nop_();

_nop_();_nop_();

if(sda)tt=1;

scl=0;

return tt;

}

/*------------------------*/

unsigned char read(unsigned char device,unsigned char address)

{

unsigned char t;

start_condition();

t=device&0xFE;

wbyte(t);

wbyte(address);

start_condition();

t=device|(0x01);

wbyte(t);

t=rbyte();

NAK();

stop_condition();

return t;

}

/*------------------------*/

void write(unsigned char device,unsigned char address,unsigned char dd)

{

start_condition();

wbyte(device&0xFE);

wbyte(address);

wbyte(dd);

stop_condition();

}

/*------------------------*/

Робота схеми

Лабораторна робота № 4

Тема: Реалізація системи автоматичного регулювання.

Мета: Ознайомлення з роботою систем автоматичного регулювання зі зворотнім зв’язком.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]