Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Краткое описание микроконтроллера





Введение

 

Использование микроэлектронных средств в изделиях производственного и культурно-бытового назначения приводит не только к повышению технико-экономических показателей изделия (стоимости, потребляемой мощности, габаритных размеров) и позволяет многократно сократить сроки разработки и отодвинуть сроки «морального старения» изделий, но придает им принципиально новые потребительские качества (расширенные функциональные возможности, модифицируемость, адаптивность и т.д.).

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

За последние годы микроэлектроники бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров (ОМК), которые предназначены для «интеллектуализации» оборудования различного назначения. ОМК представляют собой приборы, конструктивно выполненные в виде БИС, и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программы, память данных, также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной базы для построения управляющих и регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно ОМК.


Техническое задание

 

В качестве объекта разработки был выбран вариант изготовления автомобильного компьютера.

В соответствии с поставленным заданием он должен выполнять следующие функции:

. Осуществлять контроль над оборудованием и устройствами автомобиля;

. Следить за температурными значениями.

Информация поступает в автомобильный компьютер с датчиков: обороты с датчика оборотов, скорость с датчика скорости, давление с датчика давления, напряжение в сети с датчика напряжения. Необходимо реализовать получение четырех различных значений температур с разных точек. Так необходимо измерять температуру двигателя, температуру коробки и температуру ещё двух источников по выбору (например, температуру в салоне и температуру за бортом). Данные, полученные с каждого датчика, требуется выводить на LCD экран. Причем вывод набора данных на экран должен зависеть от выбранного пользователем режима. В автомобильном компьютере должна присутствовать возможность устанавливать и изменять значения температуры двигателя, коробки и давления масла, превышение которых влечет за собой подачу звукового сигнала. Управление компьютером осуществляется с помощью четырехклавишной клавиатуры. С её помощью у пользователя должна быть возможность выбора режима отображения и возможность увеличения или уменьшения критических значений.

Питание автомобильного компьютера осуществляется посредством бортовой сети через встроенный стабилизатор на 5В.

 


Краткое описание микроконтроллера

Общее описание микроконтроллера

 

Для решения поставленной задачи, прежде всего, необходимо выбрать микроконтроллер. Для выбора микроконтроллера необходимо чтобы он обладал следующими техническими характеристиками:

- наличие достаточного количества портов ввода-вывода, для возможности подключения к микроконтроллеру клавиатуры, LCD-дисплея, датчиков, блока управления сигналом тревоги.

- наличие встроенного АЦП.

- наличие счетчиков / таймеров.

- достаточная изученность.

Микроконтроллер ADuC812 удовлетворяет вышеперечисленным требованиям, и подходит для реализации поставленной задачи. Он является аналогом микро-ЭВМ 51-й серии, с которой он совместим программно и аппаратно, но имеет более развитую архитектуру. Данный микроконтроллер представляет собой следующую архитектуру:

Ø 3 16-ти разрядных счетчика / таймера;

Ø 8-ми канальный 12-ти разрядный АЦП;

Ø 2 двенадцати разрядных ЦАП;

Ø 8 Кб FLASH ПЗУ;

Ø 640 байт FLASH данных;

Ø 256 Байт внутреннего ОЗУ;

Ø позволяет адресовать 16 Мб внешнего ОЗУ;

Ø позволяет адресовать 64 Кб памяти программ;

Ø система прерываний имеет 9 источников, 2 уровня приоритетов;

Ø Поддерживается последовательный канал стандарта I2C;

Ø 4 восьми разрядных порта ввода / вывода

Данный контроллер реализован в виде одноплатного модуля, имеющего в своем составе не только буферные элементы, но и внешнее ОЗУ, в которое производиться загрузка программы с персонального компьютера.

 

Название Вывод Тип Назначение
AGND   I Аналоговая земля.
DVdd   I Питание +5V
P0.0-P0.7 43-46, 49-52 I/O Порт P0. Двунаправленный порт с открытым стоком.
P1.0-P1.7 1-4, 11-14 I Порт P1, только ввод, по умолчанию настраивается на ввод аналоговых сигналов.
P2.0-P2.7 28-31, 36-39 I/O Порт P2. Двунаправленный порт с внутренними подтягивающими резисторами.
P3.0-P3.7 16-19, 22-25 I/O Порт P3. Двунаправленный порт с внутренними подтягивающими резисторами.
XTAL1   I Вход тактового генератора
XTAL2   O Выход тактового генератора

 

Принцип действия устройства.

Описание структурной схемы.

Режим 1.

Отображение текущей скорости и текущих оборотов на первой строке и температур двигателя, коробки и напряжения в сети на второй строке.

 


Режим 2.

Отображение текущих оборотов и давления масла на первой строке и температур двигателя, коробки и напряжения в сети на второй строке.

 

Режим 3.

Отображение скорости и пройденного пути на первой строке и температур двигателя, коробки и напряжения в сети на второй строке.

 

 

Режим 4.

Отображение температуры в салоне и за бортом на первой строке и температур двигателя, коробки и напряжения в сети на второй строке.

 

 

Выбор элементной базы

 

При разработке устройства были использованы следующие электронные компоненты:

· Термодатчик КПМ (Керамическая Полупроводниковая Масса) - для измерения температуры;

· Усилитель K544УД1 - операционный усилитель, используется в измерительной технике и имеет высокие технические характеристики;

· Стабилизатор K145EH5A - простой источник стабильного напряжения;

· Диод К156KЛ - для ограничения напряжения;

· Логический элемент «И» К561ЛА7 - для реализации мультивибратора

· 2-х строчечный текстовый жидкокристаллический дисплей WH1602A-YYK-CP - для вывода текстовой информации.

 


Заключение

 

При выполнении данного курсового проекта была изучена архитектура микроконтроллера AduC812 и построен на его основе бортовой компьютер автомобиля. При этом также был изучен текстовый жидкокристаллический дисплей. Приобретены навыки программирования микропроцессорных систем и построения на их основе устройств сбора и обработки информации.

компьютер бортовой микроконтроллер программа


Приложение А

 

Листинг программы.

/* программа для автомобильного компьютера/

start: do;

$include (reg812.dcl)

/* объявление основных переменных и флагов */

(skor, skor1, skorp) word, /*выводимая на ЖКИ скорость */

(obor, obor1, oborp) word, /*выводимые на ЖКИ обороты */

(put, put1) word, /*пройденный путь*/

(time, tim1) word, /* время в пути*/

(td, tk, t1, t2, tp) word, /* измеряемые температуры */

(td_max, tk_max, t2_max, t1_max, pMasl_min, ub_max, ub_min), bit,

ub word, /*напряжение бортовой сети */

pMasl word, /*давление масла */

LCD_Ini (*) byte constant (08h, 02h, 0fh, 01h), /*команды ЖКИ*/

Ind(56) bute, /* содержимое индикатора */

(i, j, n, k, s, t) byte, /* переменные для работы */

(fl_reg, fl_s, flag, fl_p) byte, /*флаги определ режима работы */_key byte, /*номер нажатой клавиши */

(k1_old) byte, /*номер последней нажатой клавиши */

chan byte /* номер оцифровываемого канала */

adc_H, adc_L byte,

per_t0 word; /*число циклов переполнения таймера0*/

/*пеpеименование pазpядов поpта */

declare rs literally ‘P2.6’,/*линия связи с LCD*/

rw literally ‘P2.7’,/*линия связи с LCD*/literally ‘P2.5’;

/* - Обработчики прерываний -*/

/* - Обработчик прерывания int0-*/

int_obor: procedure interrupt 0;/*обработчик прерывания подсчит число оборотов*/

oborp=oborp+1;

end int_obor;

/* - Обработчик прерывания int1-*/_obor: procedure interrupt 2;/*обработ прерыван подсчит скорость*/=skorp+1;

end int_obor;

/* - Обработчик прерывания таймера-*/_int: procedure interrupt 1; /* прерывание t0 */

/* проверка нажатия клавиш*/(p3.0=0b) and (kl_old<>1) then do; n_key=1; kl_old=1; end;(p3.1=0b) and (kl_old<>2) then do; n_key=2; kl_old=2; end;(p3.2=0b) and (kl_old<>3) then do; n_key=3; kl_old=3; end;(p3.3=0b) and (kl_old<>4) then do; n_key=4; kl_old=4; end;(p3 =0fb) then do; n_key=0; kl_old=0; end;

/* фиксируем текущую скорость и обороты и устанавл флаг*/

if (per_t0>15) then /*если прошла секунда */

dofl_s=1 then do signal=not(signal); P2.4=signal; end;=oborp*60*2;/*подсчитываем число оборотов в минуту*/

skor=skorp*3600/(1000*2);/*переводим скор и м\сек в км\ч*/

skorp=0; oborp=0;/*сбрасываем счетчики*/

/*проверяем превышение скор и оборотов*/

if skor>120 then do fl_s=1; fl_reg=0; fl_p=0; end;obor>5000 then do fl_s=1; fl_reg=0; fl_p=0; end;

end;_t0=per_t0+1; /* увеличиваем счетчик переполнений */

tf0=0; /* sbros flaga perepolneniya */

end timer_int;_INT: procedure interrupt 6; /* обработчик прерывания A D C */

adccon2=chan;_H=ADCDATAH;_L=ADCDATAL;=1; edac=1;

end ADC_INT;:procedure; /* вывод текущей скорости*/

ind(0)=43h; ind(1)=4Bh; ind(3)=2dh; ind(2)=20h;(3)=(skor/100)+30h; ind(5)=(skor mod 100)/10+30h;(6)=((skor mod 100) mod 10)+30h; ind(7)=20h; skor;_tk:procedure; /* вывод температуры */

ind(41)=74h; ind(42)=064h; ind(43)=2d;/* вывод темп двигателя*/

ind(44)=(td/100)+30h; ind(45)=(td mod 100)/10+30h;(46)=((td mod 100) mod 10)+30h; ind(47)=20h;(48)=74h; ind(49)=06bh; ind(50)=2d;/* вывод темп коробки*/

ind(51)=(tk/100)+30h; ind(52)=(tk mod 100)/10+30h;(53)=((tk mod 100) mod 10)+30h; ind(54)=20h; td_tk;

displ_Buf: procedure; /* вып заполнение дисплея в зависим от режима*/

/* первый режим - скор, обороты, Тдвиг, Ткоробки, Напряжение*/

if Fl_reg=0 then do;

call skor;(8)=4fh; ind(9)=0b2h; ind(10)=2d; /* вывод текущих оборотов*/ =(obor mod 1000); ind(11)=(obor/1000)+30h;(12)=(obor1)/100+30h; obor1=(obor1 mod 100);(13)=obor1/10+30h; ind(14)=(obor1 mod 10)+30h; td_tk;

/*вывод напряжения в бортовой сети*/

ind(55)=(up/10)+30h; ind(56)=(up mod 10) +30h;

end;

if Fl_reg=1 then do;

ind(1)=4fh; ind(2)=0b2h; ind(3)=2d; /* вывод текущих оборотов*/

ind(4)=(obor/1000)+30h; obor1=(obor mod 1000);(5)=(obor1)/100+30h; obor1=(obor1 mod 100);(6)=obor1/10+30h; ind(7)=(obor1 mod 10)+30h;

ind(8)=0a8h; ind(9)=0a8h; ind(10)=2d; /* вывод давления масла*/ (11)=(put/1000)+30h; put1=(put mod 1000);(12)=(put1)/100+30h; put1=(put1 mod 100);(13)=put1/10+30h; ind(14)=(put1 mod 10)+30h; td_tk;

/*вывод напряжения в бортовой сети*/

ind(55)=(up/10)+30h; ind(56)=(up mod 10) +30h;

end;

if Fl_reg=2 then do

call skor;(8)=0a8h; ind(9)=0a8h; ind(10)=2d; /* вывод пройд пути*/ (11)=(put/1000)+30h; put1=(put mod 1000);(12)=(put1)/100+30h; put1=(put1 mod 100);(13)=put1/10+30h; ind(14)=(put1 mod 10)+30h; td_tk;

/*вывод напряжения в бортовой сети*/

ind(55)=(up/10)+30h; ind(56)=(up mod 10) +30h;

end;

if Fl_reg=3 then do

ind(1)=074h; ind(2)=031h; ind(3)=2d; /* вывод температуры 1*/

ind(4)=(t1/100)+30h; tp=(t1 mod 100);(5)=(tp)/10+30h; tp=(tp mod 100);(6)=tp/10+30h; ind(7)=(tp mod 10)+30h; ind(8)=20h;(9)=074h; ind(10)=032h; ind(11)=2d; /* вывод температуры 2*/

ind(12)=(t2/100)+30h; tp=(t2 mod 100);(13)=(tp)/10+30h; ind(14)=(tp mod 100)+30h; td_tk;

/*вывод напряжения в бортовой сети*/

ind(55)=(up/10)+30h; ind(56)=(up mod 10) +30h;

end;

call writeLCD;Displ_Buf;: procedure; /*вывод буфера на жки*/

do I=0 to 55;=0; rw=1; p0.7=1b;while (p0 and 80h)<>0; end;=1; rw=0;=Ind(i);;writeLCD;

/* - пpоцедуpа инициализации-*/: procedure;

tmod=00010001b;/*пеpвый pежим таймеpа для 0 и 1*/=1;/*пpеpывание по фpонту сигнала пеpеполнения*/, tl0=0; tr0=1;/*обнуляем счетчики и pазpешаем pаботу 0 го Таймеpа*/

er0=1;/*запускаем таймеp 0*/=1;/*pазpешаем пpеpывание Т0*/

ea=1;/*pазpешаем все пpеpывания*/

/*Инициализация АЦП*/

ADCCON1=60h;/*настраиваем режим AЦП*/

ADCCON2=0h;/*настраиваем режим AЦП*/

/*инициализация портов на вв\выв */

P2=0f0h; /*линии порта 2 c 0 по 3 на ввод с 4 по7 на вывод*/

n_key=0; k_old=0; fl_s=0; fl_p=0;

/*инициализация ЖКИ*/

do I=0 to 3;

rs=0; rw=1b; e=1b; call time(10);while (p0 and 80h)<>0; end;=0; rs=0; rw=0; call time(10);=LCD_Ini(i);;_max=96; tk_max=60; t2_max=60; t1_max=50; pMasl_min=1; ub_max=15; ub_min=11;_reg=3; call Displ_Buf; init;

/*___________ Tело основной программы ______________*/

call init;

do while 1; /*бесконечный цикл pаботы */ (n_key=1)&(kl_old<>1) then /*Перебираем режимы отображения */

do_reg=fl_reg+1; if fl_reg=4 then fl_reg=0;_old=1;;(n_key=4)&(kl_old<>4) then /* Включаем режим программирования */ _p=fl_p+1; do I=1 to 55; ind(i)=20h;

/*Выводим сообщение «Установите_» */

ind(1)=0a9h; ind(2)=043h; ind(3)=054h; ind(4)=041h; ind(5)=048h;

ind(6)=04fh; ind(7)=042h; ind(8)=0a5h; ind(9)=054h; ind(10)=045h; (11)=020h;fl_p=1 then do ind(41)=074h; ind(42)=064h; ind(43)=02dh;(44)=039h; ind(45)=036h; end;fl_p=2 then do ind(41)=074h; ind(42)=06bh; ind(43)=02dh;(44)=036h; ind(45)=030h; end;fl_p=3 then do ind(41)=074h; ind(42)=031h; ind(43)=02dh;(44)=035h; ind(45)=030h; end;fl_p=4 then do ind(41)=074h; ind(42)=032h; ind(43)=02dh;(44)=039h; ind(45)=036h; end;fl_p=5 then do ind(41)=055h; ind(42)=062h; ind(43)=02dh;(44)=061h; ind(45)=036h; ind(46)=02dh;(47)=031h; ind(48)=039h; end;fl_p=6 then do ind(41)=055h; ind(42)=062h; ind(43)=04dh;(44)=0b8h; ind(45)=0bdh; ind(46)=02dh;(47)=031h; ind(43)=035h; end;fl_p=7 then do ind(41)=050h; ind(42)=04dh; ind(43)=0631h;(44)=0bbh; ind(45)=061h; ind(46)=02dh;(47)=030h; ind(48)=031h; end; fl_p=8 then do fl_p=0; /*если устан все знач завер програм*/

call writeLCD;;

if ((n_key=1) and (kl_old<>1)) and (fl_p>0) then /*+1 к текущему значению*/

dofl_p=1 then do td_max=td_max+1; if td_max>98 then td=97;(44)=td_max/10; ind(45)=td_max mod 10; end;fl_p=2 then do tk_max =tk_max +1; if tk_max >80 then tk_max =80;(44)=tk_max /10; ind(45)=tk_max mod 10; end;fl_p=3 then do t1_max =t1_max +1; if t1>99 then t1_max =99;(44)=t1_max /10; ind(45)=t1_max mod 10; end;fl_p=4 then do t2_max =t2_max +1; if t2_max >98 then t2=97;(44)=t2_max /10; ind(45)=t2_max mod 10; end;fl_p=5 then do ub_max =ub+1; if ub_max >15 then ub_max =15;(44)=ub_max /10; ind(45)=ub_max mod 10; end;fl_p=6 then do ub_min= ub_min +1; if ub_min >98 then ub_min =97;(44)= ub_min /10; ind(45)= ub_min mod 10; end;fl_p=7 then do pMasl_min= pMasl_min +1; if pMasl_min >5 then pMasl_min =5;(44)= pMasl_min; end; call writeLCD;;

if ((n_key=2) and (kl_old<>2)) and (fl_p>0) then /* - 1 к текущему значению*/

dofl_p=1 then do td_max=td_max-1; if td_max<85 then td=85;(44)=td_max/10; ind(45)=td_max mod 10; end;fl_p=2 then do tk_max =tk_max-1; if tk_max <40 then tk_max =40;(44)=tk_max /10; ind(45)=tk_max mod 10; end;fl_p=3 then do t1_max =t1_max -1; if t1<35 then t1_max =35;(44)=t1_max /10; ind(45)=t1_max mod 10; end;fl_p=4 then do t2_max =t2_max-1; if t2_max <25 then t2=25;(44)=t2_max /10; ind(45)=t2_max mod 10; end;fl_p=5 then do ub_max =ub-1; if ub_max <13 then ub_max =13;(44)=ub_max /10; ind(45)=ub_max mod 10; end;fl_p=6 then do ub_min= ub_min-1; if ub_min <7 then ub_min =7;(44)= ub_min /10; ind(45)= ub_min mod 10; end;fl_p=7 then do pMasl_min= pMasl_min-1; if pMasl_min <1 then pMasl_min =1;(44)= pMasl_min; end; call writeLCD;;=0; flag=0; sconv=1; do while flag=0; end; /*зап преобр td*/ =adc_h*255+adc_l; call time(10);=0; flag=0; sconv=1; do while flag=0; end; /*зап преобр tk*/ =adc_h*255+adc_l; call time(10);=1; flag=0; sconv=1; do while flag=0; end; /*зап преобр t1*/ =adc_h*255+adc_l; call time(10);=2; flag=0; sconv=1; do while flag=0; end; /*зап преобр t2*/ =adc_h*255+adc_l; call time(10);=3; flag=0; sconv=1; do while flag=0; end; /*зап преобр измер напр*/ =adc_h*255+adc_l; call time(10);

/* пересчитываем полученные значения с АЦП в реальные величины */

td=150*td/4096; tk=100*tk/4096; t1=120*t1/4096, t2=120*t2/4096;=ub*20/4096; pMasl=pMasl*5/4096;_s=0;td_max<=td then fl_s=1; /* проверяем превышение диапазонов */ tk_max<=tk then fl_s=1;t1_max<=t1 then fl_s=1;t2_max<=t2 then fl_s=1;ub_max<=ub then fl_s=1;fl_s=1 then do fl_reg=3; fl_p=0; end;

if pMasl_max<=pMasl then do fl_reg=1; fl_s=1; fl_p=0; end;

if fl_p=0 then call Displ_Buf;/*если не реж прогр выводим текущ инф*/

end;start;

Введение

 

Использование микроэлектронных средств в изделиях производственного и культурно-бытового назначения приводит не только к повышению технико-экономических показателей изделия (стоимости, потребляемой мощности, габаритных размеров) и позволяет многократно сократить сроки разработки и отодвинуть сроки «морального старения» изделий, но придает им принципиально новые потребительские качества (расширенные функциональные возможности, модифицируемость, адаптивность и т.д.).

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

За последние годы микроэлектроники бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров (ОМК), которые предназначены для «интеллектуализации» оборудования различного назначения. ОМК представляют собой приборы, конструктивно выполненные в виде БИС, и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программы, память данных, также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной базы для построения управляющих и регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно ОМК.


Техническое задание

 

В качестве объекта разработки был выбран вариант изготовления автомобильного компьютера.

В соответствии с поставленным заданием он должен выполнять следующие функции:

. Осуществлять контроль над оборудованием и устройствами автомобиля;

. Следить за температурными значениями.

Информация поступает в автомобильный компьютер с датчиков: обороты с датчика оборотов, скорость с датчика скорости, давление с датчика давления, напряжение в сети с датчика напряжения. Необходимо реализовать получение четырех различных значений температур с разных точек. Так необходимо измерять температуру двигателя, температуру коробки и температуру ещё двух источников по выбору (например, температуру в салоне и температуру за бортом). Данные, полученные с каждого датчика, требуется выводить на LCD экран. Причем вывод набора данных на экран должен зависеть от выбранного пользователем режима. В автомобильном компьютере должна присутствовать возможность устанавливать и изменять значения температуры двигателя, коробки и давления масла, превышение которых влечет за собой подачу звукового сигнала. Управление компьютером осуществляется с помощью четырехклавишной клавиатуры. С её помощью у пользователя должна быть возможность выбора режима отображения и возможность увеличения или уменьшения критических значений.

Питание автомобильного компьютера осуществляется посредством бортовой сети через встроенный стабилизатор на 5В.

 


Краткое описание микроконтроллера







ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.