Разработка микропроцессорной системы удаленного мониторинга многоканального источника напряжения

Функциональная схема микроконтроллера. Схема подключения ADS7841. Блок-схема и интерфейс программы АЦП. Реализация Hart-протокола, пример транзакции. Результат моделирования передачи по Uart. Индикация, текст программы. Сторожевой таймер, печатная плата.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.02.2013
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Брянский государственный технический университет

КАФЕДРА «ЭРЭ и ЭС»

Пояснительная записка к курсовой работе

по дисциплине: «Отладочные средства микропроцессорных систем»

на тему: «Разработка микропроцессорной системы удаленного мониторинга многоканального источника напряжения»

БГТУ.210106.000 ПЗ

Брянск 2012

Содержание

Введение

1. Функциональная схема

2. Выбор датчиков

3. Выбор АЦП и микроконтроллера

4. Реализация HART протокола

5. Индикация

6. Сторожевой таймер

7. Разработка печатной платы

8. Листинг

Заключение

Литература

Введение

В данной курсовой работе необходимо было разработать систему Система удаленного мониторинга многоканального источника постоянного напряжения по HART протоколу с индикацией текущего значения тока нагрузки по каждому каналу. Целью данной работы является приобретение навыков в написании программ на языке высокого уровня С, работы в различных программных комплексах.

1. Функциональная схема

Рис. 1 - Функциональная схема

С датчиков тока снимается значение тока. АЦП преобразует эти значения в цифровую форму. Микроконтроллер обрабатывает эти значения и посылает их на индикатор. ЦАП переводит в аналоговую форму ток, так что, ноль ампер с датчика преобразуется в 4 миллиампера, 25 ампер-20 миллиампер. HART модем принимает сообщения от главного устройства и производит демодуляцию, передает полученное сообщение в микроконтроллер. После обработки микроконтроллером полученного сообщения он посылает ответ, который модулируется модемом.

Рис. 2 - Общая блок-схема программы

2. Выбор датчиков

По заданию необходимо знать значение тока от 4-х источников постоянного напряжения:1)+5В(5-20А), 2)+12В(0.1-1А), 3)+15В(0.5-2А),4) -15В(0.5-2А).

Выберем датчик ACS712 , принцип работы которого основан на эффекте Холла, с линейным выходом по напряжения.

Рис. 3 - Подключение датчика

Для первого источника напряжения ACS712ELCTR-30A-T -диапазон измеряемого тока ±30А.

Рис. 4 - График зависимости выходного напряжения от измеряемого тока

Для остальных - ACS712ELCTR-05B-T-диапазон измеряемого тока ±5А.

Рис. 5 - График зависимости выходного напряжения от измеряемого тока

3. Выбор АЦП и микроконтроллера

Для реализации поставленной задачи выберем микроконтроллер семейства МК-51 AT89C51RD2.

Отличительные особенности:

Совместимость с 80C52 Совместимость с инструкциями 8051 Шесть 8-разрядных порта ввода-вывода (64-выводная или 68-выводная версии) Четыре 8-разрядных порта ввода-вывода (44 -выводная версия) Три 16-разрядных таймера-счетчика 256 байт сверхоперативной памяти 9 источников запроса на прерывание с 4 уровнями приоритета.

Интегрированный контроль питания (POR/PFD) для контроля внутреннего питания.

Внутрисхемное программирование ISP использует стандартное питание Vсс.

Загрузочное ПЗУ содержит процедуры низкого уровня для программирования флэш-памяти и исходный последовательный загрузчик

Высокопроизводительная архитектура 40 МГц в стандартном режиме 20 МГц режиме X2 (6 тактов в машинном цикле)

64 кБ встроенной флэш-памяти программ/данных Побайтная и постраничная (128 байт) очистка и запись 100000 циклов записи.

Встроенное расширенное ОЗУ емкостью 1792 байт (XRAM) Программно выбираемый размер (0, 256, 512, 768, 1024, 1792 байт) 768 байт выбирается при сбросе для совместимости с T89C51RD2.

Встроенные 2048 байт ЭППЗУ для хранения данных (только у AT89C51ED2) 100000 циклов записи.

Двойной указатель данных

Переменная длина инструкции MOVX для доступа к медленному ОЗУ и периферийным устройствам.

Улучшенный режим X2 с независимыми настройками ЦПУ и каждого периферийного устройства.

Клавиатурный интерфейс на порте 1 с функциям прерывания.

SPI-интерфейс (режим ведущий/подчиненный)

8-разрядный предделитель тактовых импульсов

16-разрядный программируемый счетный массив Быстродействующий выход Функции сравнения и захвата фронтов Широтно-импульсная модуляция Совместимый сторожевой таймер

Вывод асинхронного сброса

Полнодуплексный улучшенный УАПП с встроенным генератором скорости передачи

Малые электромагнитные излучения (запрещен ALE)

Аппаратный сторожевой таймер (однократно разрешается после сброса), флаг выключения питания

Режимы управления энергопотреблением: режим холостого хода (Idle), экономичный (Power-down) режим

Диапазон напряжения питания: 2.7В…5.5В

Промышленный температурный диапазон(-40 …+85°C)

Для обработки сигнала с датчиков целесообразно выбрать один четырёхканальный АЦП ADS7841 со следующими параметрами:

напряжение питания: 2.7-5 В

разрядность: 12 бит

число каналов: 4

последовательный интерфейс

возможность 8 битной разрядности

В качестве источника опорного напряжения для АЦП используем микросхему ИОН AD586M (+5В), запитав её от источника +15В.

Рис. 6 - Схема подключения ADS7841

Рис. 7 - Блок-схема программы АЦП

Рис. 8 - Интерфейс АЦП

В соответствие с алгоритмом и даташитом напишем программу.

Линия DIN: старт-бит устанавливаем в 1.

А2,А1,А0-меняем значения в соответствие с датчиком.

MODE- устанавливаем в 1(12 битный режим).

SGL-1.

PD1, PD0-1(не включаем режим энергосбережения)

while (B>0)

{KOD_ADC[x]=KOD_ADC[x]<<1;

KOD_ADC[x]|=DOUT;

DCLK=1;

DCLK=0;

B--;

}

В этом цикле получаем 12 разрядов, которые последовательно передаёт АЦП. Вначале идет старший разряд-поэтому сдвигаем его 11 раз.В переменной KOD_ADC[x] вначале записаны нули, поэтому после выполнения операции ИЛИ с DOUT(бит, который передает АЦП), в KOD_ADC[x] записывается 1,если DOUT=1, и остается 0 если DOUT=0.

х-это номер датчика значение напряжения которого оцифровывается.

x++ увеличиваем на единицу после опроса АЦП.

В следующем цикле переключаем АЦП на те, датчики, которые еще не опросили. Делаем это с помощью изменения переменных А2,А1,А0.

if(x==1)

{A2=1;A1=0;A0=1;}

else

{

if(x==2)

{A2=0;A1=1;A0=0;} // переключаем ацп

else

{

if(x==3)

{A2=1;A1=1;A0=0;}

else

{

A2=0;A1=0;A0=1;

x=0;

}}}

Ввиду отсутствия данного АЦП в протеусе и необходимости какого-нибудь моделирования, было произведено моделирование в Keil, путем изменения Р1.4 и дописанием нескольких строчек кода для вывода на порты полученного значения.

Было промеделировано напряжение 3.333В-т.е. Р1.4 изменялся так 101010101010. На порт Р3-целое значение Р5,Р4-дробное

Рис. 9 - Код АЦП в Keil

Рис. 10 - Сигналы в Keil

4. Реализация HART протокола

HART-протокол - цифровой промышленный протокол передачи данных. Модулированный цифровой сигнал, позволяющий получить информацию о состоянии датчика или осуществить его настройку, накладывается на токовую несущую аналоговой токовой петли уровня 4-20 мА. Таким образом, питание датчика, снятие его первичных показаний и вторичной информации осуществляется по двум проводам. HART-протокол это практически стандарт для современных промышленных датчиков. Приём сигнала о параметре и настройка датчика осуществляется с помощью HART-модема или HART-коммуникатора. К одной паре проводов может быть подключено несколько датчиков. HART протокол использует принцип частотной модуляции для обмена данными на скорости 1200 бод. Для передачи логической «1» HART использует один полный период частоты 1200 Гц, а для передачи логического «0» - два неполных периода 2200 Гц. HART составляющая накладывается на токовую петлю 4-20 мА. Поскольку среднее значение синусоиды за период равно "0", то HART сигнал никак не влияет на аналоговый сигнал 4-20 мА. HART протокол построен по принципу «Ведущий - Ведомый», то есть полевое устройство отвечает по запросу системы.

Для передачи и приема будем использовать UART микроконтроллера в 3-м режиме. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт-бит, 8 бит данных, программируемый девятый бит и стоп-бит. Частоты приема/передачи задаётся таймером.

Таймер будем использовать таймер в режиме автоперезагрузки. Посчитаем число, которое нужно записать в TH1, для обеспечения скорости 1200 бит/c.

f = (2SMOD/32)*(fрез/12)/(256-(TH1))=>

TH1=232

Выбор частоты резонатора fрез= 11,0592 МГц.

Для частотной модуляции сообщения используем HART Modem DS8500.

Параметры DS8500

однокристальное решение для полудуплексной передачи, 1200 бод FSK-модуляция и демодуляция;

цифровая сигнальная обработка обеспечивает надежное детектирование входного сигнала в зашумленной среде;

синусоидальный выходной сигнал с минимальными гармоническими искажениями;

всего лишь нескольких внешних компонентов уменьшает площадь устройства;

стандартная тактовая частота 3,6864 МГц;

отвечает требованиям спецификации HART на физическом уровне;

напряжение питания в диапазоне 2,7…3,6 В;

максимальный ток потребления 285 мкА;

миниатюрный 20-выводной корпус TQFN с размерами 5Ч5Ч0,8 мм.

Когда начинается передача сигнал OCD модем устанавливает в 1.

Программа для передачи и приема будет реализована в подпрограмме прерываний от сигнала OCD, а т.к. прерывание должно осуществляется от логического 0, а активный OCD=1, то поставим логический инвертор SN74LVC1G04.

Рис. 11 - Схема подключения DS8500

Организовывать прием-передачу HART сообщения будем в соответствии с рис. 12.

Рис. 12 - Пример транзакции

В качестве ЦАП используем AD421 с токовым выходом 4 мА - 20 мА

AD420 - завершенный преобразователь цифрового кода в токовый сигнал, разработанный для рынка промышленных систем управления. Он обеспечивает высокую точность, низкую стоимость решения задачи генерации токового сигнала на одной микросхеме и поставляется в компактном 24-выводном SOIC или PDIP корпусах.

Диапазон выходных токов может программироваться на 4 мА-20мА, 0 мА-20 мА или на расширенный диапазон 0 мА-24 мА. AD420 может генерировать и сигнал напряжения с настраиваемым диапазоном 0 В-5 В, 0 В-10 В, ±5 В или ±10 В с дополнительным внешним буферным усилителем.

Наличие последовательного интерфейса со скоростью 3.3 Мбит/с минимизирует стоимость устройств с гальванической развязкой и обеспечивает простое присоединение к микропроцессорам. Он может использоваться в трехпроводном или асинхронном режимах, выход последовательной передачи может использоваться для организации шлейфного подключения нескольких ЦАП на той же стороне изоляционного барьера.

AD420 использует технологию сигма-дельта цифро-аналогового преобразования для обеспечения 16-разрядного преобразования и низкой стоимости. Время установления выхода во всем диапазоне шкалы составляет 0.1% за 3 мс. Единственно требуемые навесные компоненты (для нормальной переходной схемы защиты) - два недорогих конденсатора для встроенного фильтра.

Рис. 13 - Подключение AD420

По ЦАП будем передавать значение тока датчика таким образом что:

0А-4мА

25А-20мА.

Т.е. нужно умножить значение тока датчика на 0.64 и прибавить 4.

Для проверки правильности установления режима UART и скорости передачи проведем симуляцию в протеусе.

Передаем число 1:

Рис. 14 - Результат моделирования передачи по UART

Рис. 15 - Блок-схема программы передачи-приема HART

Для суммирование 2-х токов и применим операционный усилитель тока OPA660

Рис. 16 - Модель в OrCADE OPA660

Рис. 17 - Выходной ток

5. Индикация

В качестве индикатора выберем LM032L.

Текст программы:

Вначале необходимо инициализировать дисплей-это выполняет подпрограмма LCD_init(). Далее идет уже собственно передача на дисплей значения тока.

Рис. 18 -Результат моделирования индикатора

6. Сторожевой таймер

Для защиты от зависания используем аппаратно встроенный в микроконтроллер Watchdog Timer.

Включение(и перезагрузка) таймера производится так:

WDTRST=0x1E;

WDTRST=0xE1;

Если данный код не выполняется установленное число машиных циклов, то происходит перезагрузка микроконтроллера.

Запишем в регистр WDTPRG число 7. Тогда число машиных циклов в течение которых таймер должен перезагрузиться будет рано 221-1, что при нашей частоте (11,0592МГц) соотвествует 2.268 секундам.

7. Разработка печатной платы

Плату системы управления разрабатываем на двухстороннем фольгированном стеклотекстолите FR-4, толщиной 1.5 мм.

микроконтроллер программа таймер плата

Рис. 19 - Расположение корпусов

8. Листинг

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 1

C51 COMPILER V9.50a, COMPILATION OF MODULE STARTUP

OBJECT MODULE PLACED IN STARTUP.OBJ

COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE STARTUP.C LARGE BROWSE DEBUG OBJECTEXTEND TABS(2)

line level source

1 #include <at89c51xd2.h>

2 #include <intrins.h> // Библиотека, содержащая _nop_

3 #include <stdio.h>

4 #include <stdlib.h>

5 #define E_Strobe E = 1; _nop_(); E = 0

6

7 ///-----------АЦП--------------////

8 sbit CS=P1^0;

9 sbit DCLK= P1^1;

10 sbit DIN= P1^2;

11 sbit BUSY= P1^3;

12 sbit DOUT=P1^4;

13 ///-----------HART Modem--------------////

14 //sbit RxD=P3^0; //ввод

15 // sbit TxD=P3^1; //вывод

16 // sbit OCD=P3^2;

17 sbit RTS=P3^3;

18 sbit RST=P3^6;

19 ///-----------ЦАП--------------////

20 sbit CLOCK=P1^5;

21 sbit DATA= P1^6;

22 sbit LATCH= P1^7;

23 ///-----------Индикатор--------------////

24 sbit RS=P2^0;

25 sbit RW=P2^1;

26 sbit E=P2^3;

27 sbit BUSY_I=P0^7; //!!

28

29

30 ///-----------глобальные переменные--------------////

31 float I[4];

32 unsigned char txtbuf1[10];

33 unsigned char txtbuf2[10];

34 unsigned char txtbuf3[10];

35 unsigned char txtbuf4[10];

36

37

38 //// подпрограмма HART

39 void HART () interrupt 0 using 1 // от INT0 P3.2 1 банк

40 {unsigned char nomer_byte=0, Vsego_byte=100; // Vsego_byte пока неизвестно

41 1 unsigned char PREAMBLE=0xFF,PR=0, STRT=6, BCNT=2, STATUS[2] ,CHK;

42 1 unsigned char COM,ADDR; // команда адрес

43 1 unsigned char PRIEM[10],bit_chetnosti[10];

44 1

45 1 /// переменные ЦАП

46 1 int kod_DAC[4];

47 1 char sdvig=15;

48 1 double I_mA[4];

49 1 int kod_na_1mA=2048;

50 1

51 1

52 1

53 1 RST=0; // reset модем

54 1

55 1

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 2

56 1 ///// приём

57 1

58 1

59 1

60 1 TMOD = 0x20; //1 таймер в режиме автоперезагрузки

61 1 TH1 = 232; //скорость передачи 1200 бит\с

62 1 TR1=1; // запуск таймера

63 1

64 1 while(nomer_byte<Vsego_byte)

65 1 {REN=1; // разрешение приема

66 2 while(RI==0) {}

67 2

68 2 PRIEM[nomer_byte]=SBUF;

69 2 bit_chetnosti[nomer_byte]=TB8;// узнаём бит четности для проверки

70 2 ACC=PRIEM[nomer_byte];// узнаём P

71 2 if(P!=bit_chetnosti[nomer_byte])

72 2 {goto Exit; //ошибка, четность

73 3}

74 2 RI=0;

75 2

76 2 nomer_byte++;

77 2 if(nomer_byte==8) // BCNT

78 2 {Vsego_byte=0+10; //Vsego_byte=PRIEM[8]+10;

79 3 ADDR=PRIEM[6]; // узнали адрес датчика

80 3 COM=PRIEM[7]; // узнали команду

81 3}}

82 1

83 1 if(PRIEM[9] !=(PRIEM[5]^PRIEM[6]^PRIEM[7]^PRIEM[8])) // проверяем контр сумму

84 1 {goto Exit; //несоответсвие контр сумме

85 2}

86 1

87 1 STATUS[0]=0; // всё ок

88 1 STATUS[1]=0;

89 1 REN=0; // запрет приема

90 1

91 1

92 1 /////// передачa

93 1 RTS=1; // идет передача в модем

94 1 CHK=STRT^ADDR^COM^BCNT^STATUS[0]^STATUS[1]; // контрольная сумма=искл-или

95 1

96 1

97 1 TH1 = 232;

98 1 while(PR<5) // передаем преамбулу

99 1 {ACC=PREAMBLE; //для контроля четности

100 2 TB8=P;

101 2 SBUF=PREAMBLE;

102 2 while(TI==0) {}

103 2 TI=0;

104 2 PR++;

105 2}

106 1

107 1 ACC=STRT; //для контроля четности

108 1 TB8=P;

109 1 SBUF=STRT; // передаем STRT

110 1 while(TI==0) {}

111 1 TI=0;

112 1

113 1 ACC=ADDR;

114 1 TB8=P;

115 1 SBUF=ADDR; // передаем адрес

116 1 while(TI==0) {}

117 1 TI=0;

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 3

118 1

119 1 ACC=COM;

120 1 TB8=P;

121 1 SBUF=COM; //

122 1 while(TI==0) {}

123 1 TI=0;

124 1

125 1 ACC=BCNT;

126 1 TB8=P;

127 1 SBUF=BCNT; //количество оставшихся байт

128 1 while(TI==0) {}

129 1 TI=0;

130 1

131 1 ACC=STATUS[0];

132 1 TB8=P;

133 1 SBUF=STATUS[0]; //

134 1 while(TI==0) {}

135 1 TI=0;

136 1

137 1 ACC=STATUS[1];

138 1 TB8=P;

139 1 SBUF=STATUS[1]; //

140 1 while(TI==0) {}

141 1 TI=0;

142 1 ACC=CHK;

143 1 TB8=P;

144 1 SBUF=CHK; // контрольная сумма

145 1 while(TI==0) {}

146 1 TI=0;

147 1

148 1

149 1 ///----------ЦАП------------////

150 1 I_mA[ADDR]=0.64*I[ADDR]+4; //

151 1 kod_DAC[ADDR]=I_mA[ADDR]*kod_na_1mA; // передаваемый код ЦАП

152 1

153 1 // начало передачи

154 1 CLOCK=0;

155 1 DATA=0;

156 1 LATCH=0;

157 1

158 1 LATCH=1;

159 1 DATA=(kod_DAC[ADDR]>>sdvig)&1; //выделяем старшй бит

160 1 P3=DATA; //

161 1

162 1 LATCH=0;

163 1 CLOCK=1;

164 1 CLOCK=0;

165 1 sdvig--;

166 1

167 1 while(sdvig>=0)

168 1 {DATA=(kod_DAC[ADDR]>>sdvig)&1;

169 2 CLOCK=1;

170 2 CLOCK=0;

171 2 sdvig--;

172 2}

173 1

174 1 Exit:

175 1 REN=0; // запрет приема

176 1 TR1=0; // выкл таймера

177 1 RTS=0; // когда 1 идет передача в модем

178 1}

179

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 4

180 //индикация

181

182 void check_busy(void)

183 {do

184 1 {P0 = 0xff;

185 2 E = 0;

186 2 RS = 0;

187 2 RW = 1;

188 2 E = 1;

189 2} while(BUSY==1);

190 1 E = 0;

191 1}

192 void write_command(unsigned char com)

193 {check_busy();

194 1 RS = 0;

195 1 RW = 0;

196 1 P0 = com;

197 1 E_Strobe;

198 1}

199 void write_data(unsigned char dat)

200 {check_busy();

201 1 RS = 1;

202 1 RW = 0;

203 1 P0 = dat;

204 1 E_Strobe;

205 1}

206 void LCD_init(void)

207 {write_command(0x38); // 8-bits, 2 lines, 7x5 dots

208 1 write_command(0x0C); // no cursor, no blink, enable display

209 1 write_command(0x06); // auto-increment on

210 1 write_command(0x01); // clear screen

211 1}

212 void string(unsigned char ad, unsigned char *s)

213 {write_command(ad);

214 1 while(*s>0)

215 1 {write_data(*s++);

216 2}

217 1}

218

219

220

221

222

223

224

225

226

227 ///////////////

228 void main()

229 {int KOD_ADC[4];

230 1 char B=12,x=0, A2=0,A1=0,A0=1;

231 1 float U[4], Razreshenie_ADC;

232 1 int N1, N2, N3,N4; //для индикации

233 1

234 1 Razreshenie_ADC=5.0/4096;

235 1

236 1 SM0=1;

237 1 SM1=1; // режим 3 последовательного порта старт-бит(0), 8бит, бит ТВ8, стоп-бит(1)

238 1 EA=1; // разрешение прерываний

239 1 EX0=1; // разрешение прерываний от INT0

240 1 RTS=0; // когда 1 идет передача в модем

241 1

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 5

242 1 WDTPRG=7; //2.09 секунд при 12 MHz watch dogs timer

243 1

244 1 ////////АЦП

245 1 while (1)

246 1 {P1=0xF0; //DCLK=0;DIN=0; CS=0; BUSY=0;DOUT=1;

247 2 KOD_ADC[x]=0;

248 2

249 2 DIN=1; // start

250 2 DCLK=1;

251 2 DCLK=0; //

252 2 DIN=A2; // A2

253 2 DCLK=1;

254 2 DCLK=0;

255 2 DIN=A1; // A1

256 2 DCLK=1;

257 2 DCLK=0;

258 2 DIN=A0; // A0

259 2 DCLK=1;

260 2 DCLK=0;

261 2 DIN=0; // MODE

262 2 DCLK=1;

263 2 DCLK=0;

264 2 DIN=1; // SGL см TABLE1

265 2 DCLK=1;

266 2 DCLK=0;

267 2 DIN=1; // PD1 см TABLE5

268 2 DCLK=1;

269 2 DCLK=0;

270 2 DIN=1; // PD0

271 2 DCLK=1;

272 2 DCLK=0;

273 2 DIN=0;

274 2 BUSY=1;

275 2 DCLK=1;

276 2 DCLK=0;

277 2 BUSY=0;

278 2

279 2 while (B>0)

280 2 {KOD_ADC[x]=KOD_ADC[x]<<1;

281 3 KOD_ADC[x]|=DOUT;

282 3 DCLK=1;

283 3 DCLK=0;

284 3 B--;

285 3}

286 2 B=12;

287 2 DCLK=1;

288 2 DCLK=0;

289 2 DCLK=1;

290 2 DCLK=0;

291 2 DCLK=1;

292 2 DCLK=0;

293 2

294 2 CS=1;

295 2 BUSY=1;

296 2 DOUT=1;

297 2

298 2 U[x]=Razreshenie_ADC*KOD_ADC[x]; //напряжение на датчике

299 2

300 2 if(x==0) {

301 3 I[x]=(U[x]-2.5)*15; // ACS712ELCTR-30A-T для 5В

302 3}

303 2 else{

C51 COMPILER V9.50a STARTUP 12/27/2012 01:05:46 PAGE 6

304 3 I[x]=(U[x]-2.5)*5; // ACS712ELCTR-05B-T

305 3}

306 2

307 2 x++;

308 2 if(x==1)

309 2 {A2=1;A1=0;A0=1;}

310 2

311 2 if(x==2)

312 2 {A2=0;A1=1;A0=0;}

313 2 // переключаем АЦП

314 2 if(x==3)

315 2 {A2=1;A1=1;A0=0;}

316 2

317 2 if(x==4)

318 2 {A2=0;A1=0;A0=1;

319 3 x=0;

320 3}

321 2

322 2 WDTRST=0x1E; // включаем(перезагружаем) watch dogs timer

323 2 WDTRST=0xE1;

324 2

325 2 //индикация

326 2

327 2 LCD_init();

328 2 N1 = sprintf(txtbuf1,"%.3f",I[0]);

329 2 N2 = sprintf(txtbuf2,"%.3f",I[1]);

330 2 N3 = sprintf(txtbuf3,"%.3f",I[2]);

331 2 N4= sprintf(txtbuf4,"%.3f",I[3]);

332 2 string(0x83, txtbuf1 );

333 2 string(0x8E, txtbuf2 );

334 2 string(0xC3, txtbuf3 );

335 2 string(0xCE, txtbuf4 );

336 2 string(0x80, "I1=");

337 2 string(0x89, "A");

338 2 string(0x8B, "I2=");

339 2 string(0x93, "A");

340 2 string(0xC0, "I3=");

341 2 string(0xC8, "A");

342 2 string(0xCB, "I4=");

343 2 string(0xD3, "A");

344 2}}

345

MODULE INFORMATION: STATIC OVERLAYABLE

CODE SIZE = 1720 ----

CONSTANT SIZE = 23 ----

XDATA SIZE = 56 96

PDATA SIZE = ---- ----

DATA SIZE = ---- ----

IDATA SIZE = ---- ----

BIT SIZE = ---- ----

END OF MODULE INFORMATION.

C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

Заключение

Итогом выполнения курсовой работы является разработка системы удаленного мониторинга. В ходе выполнения были проанализированы возможные варианты решения поставленной задачи с обоснованием выбора функциональной схемы и элементной базы системы. Была спроектирована принципиальная схема системы с описанием ее работы. В результате были составлены алгоритм и программа работы микроконтроллера, написанная на языке программирования высокого уровня С. В завершении было предоставлено конструктивное исполнение системы в виде печатной платы. Также была произведена проверка работоспособности устройства.

Литература

1. Александров К.К. Электротехнические чертежи и схемы / К.К. Александров, Е.Г. Кузьмина. - М.: Энергоатомиздат, 1990. - 288 с.

Размещено на Allbest.ru


Подобные документы

  • Решение задачи по методу Адамса. Блок-схема функции main. Блок-схема функции Adams. Листинг программы. Блок-схема функции MMinor. Блок-схема функции MatrixMultiply. Блок-схема функции Determinant. Результат решения задачи на ЭВМ.

    курсовая работа [68,9 K], добавлен 16.04.2004

  • Разработка игровой программы, моделирующей поведение мяча в закрытом безвоздушном пространстве. Изменение значения гравитации и трения о стены. Интерфейс программы, ее основная форма. Блок-схема программы и ее основной код. Добавление третьего измерения.

    контрольная работа [111,1 K], добавлен 27.08.2012

  • Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.

    курсовая работа [1,5 M], добавлен 13.11.2016

  • Распределение функций между аппаратной и программной частями микропроцессорной системы. Выбор микроконтроллера, разработка и описание структурной, функциональной и принципиальной схемы. Выбор среды программирования, схема алгоритма и листинг программы.

    курсовая работа [304,4 K], добавлен 17.08.2013

  • Разработка микропроцессорной системы на базе однокристальной микроЭВМ, также программного обеспечения, реализующего заданный набор функций. Структура и схема микроконтроллера PIC16. Разработка программы на языке ассемблер в среде MPLAB IDE v8.84.

    курсовая работа [515,3 K], добавлен 11.07.2012

  • Методы обработки информации при решении прикладных задач. Математическая модель задачи. Блок-схема алгоритма программы. Компоненты, которые используются для работы в программе: элементы интерфейса; процедуры; операторы. Текст программы с пояснениями.

    курсовая работа [954,0 K], добавлен 07.01.2011

  • Необходимость создания моделируемой системы. Описание моделируемой системы и задание моделирования. Структурная схема модели системы. Блок–диаграмма. Текст программы. Описание текста программы. Результаты моделирования. Эксперимент, его результаты.

    курсовая работа [35,9 K], добавлен 19.11.2007

  • Описание алгоритма работы и разработка структурной схемы МКС. Схема вывода аналогового управляющего сигнала, подключения ЖК-дисплея, клавиатуры и аварийного датчика. Разработка блок-схемы алгоритма главной программы работы МКС. Функция инициализации.

    курсовая работа [5,7 M], добавлен 26.06.2016

  • Создание программы на языке программирования Visual Prolog. Разработка математической модели. Функциональные характеристики программы: оптимальный маршрут для такси. Интерфейс пользователя, руководство программиста, функциональная схема, тестовый пример.

    курсовая работа [515,4 K], добавлен 18.10.2010

  • Принципиальная электрическая схема микропроцессорной системы. Моделирование в Proteus 7.10. Алгоритмы обработки и хранения информации. Аналого-цифровой преобразователь. Назначение выводов источника опорного напряжения. Значения сопротивления резисторов.

    курсовая работа [1,4 M], добавлен 28.05.2013

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