Текст управляющей программы ПЭВМ с микроконтроллером 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Текст управляющей программы ПЭВМ с микроконтроллером



{$I+}

program Data_Transfer_und_Receive_with_used_serial_ports;

uses crt,dos;

const right=240;  left=15;  stop=204;  knop=51; label 7,8,9,10;

var slovo,copyslovo:byte; {обрабатываемый символ}

YN:char;

zn:boolean; {увеличение/уменьшение скорости}

cv:word;    {определяет скорость вращения}

i,j:integer;

adr:word;   {базовый адрес порта коммуникации}

num:word;   {номер коммуникационного канала}

ch_err:word; {общее число ошибок}

rt_err:word;   {ошибка – полученный символ был перезаписан}

par_err:word; {ошибка четности}

syn_err:word; {ошибка - передача не синхронизирована}

procedure Window(X1,Y1,X2,Y2,Color,Fon,Bor: Byte);

var i,j: integer; begin

for i:= X1 to X2 do begin

TextColor(Color); TextBackground(Fon); GotoXY(i,Y1); Write('═');

GotoXY(i,Y2); Write('═'); TextBackground(Fon); GotoXY(i+2,Y2+1); Write('█'); end;

for i:= Y1 to Y2 do begin

TextColor(Color); TextBackground(Fon); GotoXY(X1,i); Write('║');

GotoXY(X2,i); Write('║'); TextBackground(Bor); GotoXY(X2+1,i+1); Write('██'); end;

TextColor(Color); TextBackGround(Fon); GotoXY(X1,Y1); Write('╔');

GotoXY(X1,Y2); Write('╚'); GotoXY(X2,Y1); Write('╗'); GotoXY(X2,Y2); Write('╝'); for i:= X1+1 to X2-1 do for j:= Y1+1 to Y2-1 do begin

                      GotoXY(i,j);                      Write(' ');

                    end; end;

BEGIN asm mov ah,0        mov al,2        int 10h end;

cv:=1000; clrscr;

Window(15,5,55,13,15,7,8);

gotoxy(20,7);writeln('ВЫБОР ПОРТА:'); gotoxy(20,8);writeln('1:COM1');

gotoxy(20,9);writeln('2:COM2'); gotoxy(20,10);writeln('3:COM3'); gotoxy(20,11);writeln('4:COM4');

7:YN:=readkey;

i:=ord(YN)-48;

case i of

1: adr:=$3f8; 2: adr:=$2f8; 3: adr:=$3e8; 4: adr:=$2e8; else goto 7; end;

num:=i-1;

Window(21,11,62,21,15,7,8);

gotoxy(26,12); writeln('ВЫБРАН ПОРТ COM',num+1); gotoxy(26,13);

write('Действия: влево – клавиша ',#27); gotoxy(26,14);

write('     вправо – клавиша ',#26); gotoxy(26,15);

write('     стоп – клавиша ',#25); gotoxy(26,16);

write('     скорость – клавиша ',#24); gotoxy(26,17);

write('работа от кнопок – клавиша Ins'); gotoxy(26,18);

write('     выход – клавиша Del');

i:=26;

slovo:=0;

asm

  mov dx,adr {базовый адрес}

  add dx,3d  {указываем на регистр контроля линии}

  mov al,10000000b{устанавливаем 7-й бит}

  out dx,al  {посылаем байт}

  dec dx     {указываем на старший байт}

  dec dx     {делителя скорости обмена}

  mov al,0   {приравниваем}

  out dx,al  {его нулю}

  dec dx     {указываем на младший байт делителя}

  mov al,60h {приравниваем}

  out dx,al  {его 96}

  mov al,0

  or al,00000011b {длина слова 8 бит}

  or al,00000000b {1 стоп-бит}

  or al,00010000b {нет четности}

  add dx,3

  out dx,al

  dec dx

  dec dx

  mov al,0

  out dx,al

end;

gotoxy(26,19);

10:write('Ждем перехода на программу');

asm

@ket: mov dx,adr   {базовый адрес}

   add dx,5d    {указываем на регистр статуса линии}

   in al,dx    {получаем байт статуса}

   test al,00000001b {проверяем, получены ли данные}

   jz @ket     {если нет, то на @ket}

   mov dx,adr   {базовый адрес}

   in al,dx    {читаем полученный символ}

   mov slovo,al {помещаем его в slovo}

end;

gotoxy(26,19);

case slovo of

9: write('Переход выполнен');

else goto 8;

end;

gotoxy(1,2);

write('Slovo_IN: ',slovo:3);

repeat

 9: YN:=readkey;

if ord(YN)=0 then YN:=readkey else goto 9;

case ord(yn) of

75: slovo:=right;

77: slovo:=left;

80: slovo:=stop;

{ 83: break;{}

82: slovo:=knop;

72: begin

     if zn then cv:=cv+100 else cv:=cv-100;

     if cv=10000 then zn:=false;

     if cv=100 then zn:=true;

   end

 else goto 9;

end;

copyslovo:=slovo;

repeat

gotoxy(1,1);

write('Slovo_OUT: ',slovo:3);

asm

@ketry: mov dx,adr   {базовый адрес}

      add dx,5d    {указываем на регистр статуса линии}

      in al,dx         {получаем байт статуса}

      test al,00100000b {проверяем готовность к передаче}

      jz @ketry   {если нет, то возвращаемся назад}

      mov dx,adr   {указываем на регистр хранения передатчика}

      mov al,slovo {теперь нужный символ в al}

      out dx,al    {посылаем символ}

      sub slovo,51d

      jz @endd

 

      add dx,5d    {указываем на регистр статуса линии}

@rec: in al,dx    {получаем байт статуса}

         test al,00000001b {проверяем, получены ли данные}

      jz @rec

      mov dx,adr   {базовый адрес}

      in al,dx    {читаем полученный символ}

      mov slovo,al {помещаем его в slovo}

      jmp @en

@endd: mov slovo,2d

@en: end;

gotoxy(1,2);

write('Slovo_IN: ',slovo:3);

gotoxy(26,19);

case slovo of

   2: goto 10;

   10: write('Правое вращение  ');

   12: write('Левое вращение   ');

   9: write('Останов двигателя ')

   else goto 8;

end;

delay(cv);

gotoxy(1,3);

write('SPEED: ',trunc((1100-cv)/100):2);

gotoxy(i,20);

case slovo of

10,12:write('*');

9: j:=100;

else begin write('+');gotoxy(26,19);

goto 8 end;

end;

i:=wherex;

if i>60 then begin

   gotoxy(26,20);

   TextColor(black);   write(' ');

   TextColor(white);   i:=26; end;

slovo:=copyslovo; until keypressed;

until YN=#83;8:gotoxy(26,19); write('Неправильный прием'); delay(10000);

END.

Задания к лабораторной работе

 

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

2. Изучить структурную и принципиальную схемы, конструкцию лабораторного макета.

3. Составить «заготовку» отчета и правильно ответив на 5 вопросов преподавателя получить допуск к выполнению работы.

4. Аккуратно подключить (в присутствии лаборанта или преподавателя) макет к компьютеру и включить питание.

5. По алгоритму работы макета выполнить пп. 6, 7.

6. Следуя указаниям лаборанта  самостоятельно изучить работу макета в автономном режиме. Записать краткие выводы в отчет.

7. Следуя указаниям программы управления с ПЭВМ изучить работу макета в автоматизированном режиме управления. Записать краткие выводы в отчет.

8. Научиться сопоставлять структурную, принципиальную схемы и макет лабораторной работы.

9. Изучить программу управления ПЭВМ, с микроконтроллером в среде программирования PASCAL.

1) Запустить PASCAL.

2) Открыть управляющую программу (адрес программы уточнить у лаборанта).

3) Выполнить программу в пошаговом режиме.

4) Научиться устанавливать разные варианты управления двигателем. (Например, автоматическое (случайное или детерминированное изменение направления и скорости вращения двигателя)) Откомпилировать программу. Запустить на выполнение. Сравнить исполнение команд с пунктом 4.8. Записать измененный алгоритм и измененные фрагменты программ в отчет (только не списанные у соседа материалы!).

10. Составить отчет и защитить работу.

 

Список рекомендуемой литературы:

1.  Джордейн  Р. Справочник программиста персональных компьютеров. / – М.: Радио и связь, 1992.–280 с.

2. Кулешов С.В. Интерфейс PIC контроллера с компьютером. / Радио. – №7., 2003.– С.20-22.

3. Новоченко И.В. Интегральные схемы для бытовой радиоаппаратуры. / М.: Радио и связь, 1995.–324 с.

4. Перельман Б.Л.Транзисторы для аппаратуры широкого применения: Справочник./ М: Радио и связь, 1986.–567 с.

5. Яценков В.С. Микроконтроллеры Microchip. Практ. руководство. / М.: Горячая линия – Телеком, 2002.–296 с.

6. http://PIC16F84.narod.ru/index.htm – устройство управления на микроконтроллере PIC16F84.

7. http://www.kulakov.ru/ – разработка электронных устройств на

PIC-контроллерах.

8. http://www.toehelp.ru/theory/electromach/contents.html – описание принципов работы шаговых двигателей.

9. http://www.maxim-ic.COM/quick_view2.cfm/qv_pk/179 – описание  микросхемы MAX232.

10. http://www.microchip.ru/lit/pic/pic16x8x/PIC16F84. – описание PIC16F84.

11. Seiichi Inoue. PIC контроллер управляет электродвигателем / Радио. – №6., 2002.–с.4,5.

 

ЛАБОРАТОРНАЯ РАБОТА 4



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 53; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.81.240 (0.017 с.)