Московский Авиационный Институт
(Государственный Технический Университет)
Курсовая работа
тема: Проектирование вычислительных модулей
Сдала:
студентка группы 04-425
Кудрявцева О.И.
Проверил:
преподаватель 402 каф.
Сухарев Д.А.
2010 год
Задание
Проектирование вычислительного модуля, состоящего из 2 датчиков давления,4 датчиков температуры: 2 датчика до +125°, 2 датчика до +400°.
Схема подключения датчиков;
Программы для работы с датчиками.
Схема подключения датчиков
Программы для работы с датчиками
Программа для работы с DS18B20
К линии P1.0(90h) контроллера MCU4-X подключены два термодатчика new 0 dim $(5),7 :SA=0AE06h ;ЖКИ подключен к MCU4-X 1 ADDR=90h :AT0=loc($(0)):AT1=loc($(1)) :AT2=loc($(2)) 2 xreg(36h)=81h ;конфигурация PIC-контроллера ;Используем операцию поиска для определения идентификационных кодов ;1-й датчик 20 lan Z(90h,120),T#0F0h,S(AT0,22) ;2-й датчик 21 lan Z,T#0F0h,S 22 clear S ;обнулить стек ; запуск обоих датчиков на преобразование 50 lan Z(ADDR,120),T#0CCh,T#44h ; задержка 1 сек 51 time=0 :do :while time<1 ; запрос 1, чтение блокнота, проверка CRC8 52 lan Z,C#0,T#55h,T(AT1,7),C,C#0,T#0BEh,R(AT0,8),C(100) 53 T1=rot8(memw(AT0)) ;меняем расположение байт 54 SN=T1.and.8000h:if SN=0 then goto 56 ;значение измеренной температуры представлено в дополнительном коде ;т.е. знак температуры - минус ;преобразуем в прямой код со знаком 55 T1=T1.and.0FFFEh :T1=T1-65536 ;расчет значения температуры по установленному по умолчанию ;разрешению в 0.0625 градуса Цельсия 56 T1=T1*0.0625:? "T1= ",using(###.##),T1 ; запрос 2, чтение блокнота, проверка CRC8 60 lan Z,T#55h,T(AT2,7),C,C#0,T#0BEh,R(AT0,8),C(110) 61 T2=rot8(memw(AT0)) ;меняем расположение байт 62 SN=T2.and.8000h:if SN=0 then goto 64 ;значение измеренной температуры представлено в дополнительном коде ;т.е. знак температуры - минус ;преобразуем в прямой код со знаком 63 T2=T2.and.0FFFEh :T2=T2-65536 ;расчет значения температуры по установленному по умолчанию ;разрешению в 0.0625 градуса Цельсия 64 T2=T2*0.0625 :? "T2= ",using(###.##),T2 ; вывод значения на индикатор 65print#SA,chr(18h),using(###.##),"T1=",T1,chr(1bh),chr(0c0h),"T2=",T2 67 goto 50 ;бесконечный цикл измерения температуры 100 T1=0:SB=SB+1:goto 65 ;Т1-счетчик сбоев обмена 110 T2=0:SB=SB+1:goto 65 ;Т2-счетчик сбоев обмена ; 120 clear S:print#SA,chr(18h),"Нет подключенных",chr(1bh),chr(0c2h) 121 print#SA,chr(1bh),chr(0c2h),"датчиков" 122 ? "Нет подкюченных датчиков"
Программа для работы с АЦП DS2450
new ; Демонстрационная программа для работы с АЦП DS2450 ; (только для версий Fractal-BASIC не младше 1.8) ; Аппаратура: ; -модуль вычислителя MCU42-3 ; ;======================================================= ; Линия данных АЦП подключена к входу/выходу P3.2 (0B2h) ;======================================================= ; ; Вид со стороны вилки: ; ; D B +5v +5v ; | | | | ; 19 17 15 13 11 09 07 05 03 01 ; 20 18 16 14 12 10 08 06 04 02 ; | | | | | ; | | C A | ; | Data Общий ; Общий ; ; ; ; на управление выходами ;0 goto 100 ; ;------------------------------------------------------- ; определение номера ROM ; Номер будет занесен в $(0) и выведен на терминал ; ; адрес входа, адрес размещения 10 AD=0B2h :ADR=loc($(0)) ; команда "Read ROM", 7 байт помещаются в $(0) ; ; |команда"чтение ROM" ; | |CRC8:=0 ; |сброс | | |чтение 7 байтов ; | | | | 11 lan Z(AD,18),T#33h,C#0,R(ADR,7) ; печать 7 байтов 12 print "ROM= ", :for I=0 to 6 :phb mem(ADR+I)," ", :next I ; печать байта CRC (вычисленное значение) 13 phb " CRC8=",mem(213h) :print ; проверка CRC 14 lan C(19) :goto 20 15 stop :goto 10 18 print "Нет устройств MicroLAN" :goto 15 19 phw "Не совпал CRC8" :goto 15 ; ;-------------------------------------------------------- ; ; Измерение напряжения ; -------------------- ; 20 CLC=4000h :CB=CLC+2 ; начальное значение генератора CRC16 21 memw(23Bh)=0 ; ; ; Установка режимов работы каналов: ; - все каналы включены; ; - диапазон измерения =2.55В; ; - 16 разрядов. ; ; |CRC16:=0 ; ропуск ROM| | |запись в RAM ; сброс| | | | |адрес=0008h ; | | | | | 22 lan Z(AD,69),T#0CCh,X#0,T#55h,T##8 ; ; ; ; |мл. байт режима ; | |проверка CRC16 ; | | |контр. чтение ; | | | |нач.знач.CRC16:=<текущий адрес> ; | | | | |ст. байт режима ; | | | | | |проверка CRC16 ; | | | | | | |контр. чтение ; | | | | | | | |нач.знач.CRC16 23 lan T#00h,X(70),R(CB,1),X#09h,T#0,X(70),R(CB,1),X#0Ah ;канал A 24 lan T#00h,X(70),R(CB,1),X#0Bh,T#0,X(70),R(CB,1),X#0Ch ;канал B 25 lan T#00h,X(70),R(CB,1),X#0Dh,T#0,X(70),R(CB,1),X#0Eh ;канал C 26 lan T#00h,X(70),R(CB,1),X#0Fh,T#0,X(70),R(CB,1) ;канал D ; ; Запуск преобразования: ; ; CRC16:=0| |команда-"пуск АЦП" ; пропуск ROM| | | |включить каналы A,B,C,D ; сброс| | | | | |предустановказначений в "0" ; | | | | | | |проверка CRC16 (Пуск АЦП) 30 lan Z(AD,69),T#0CCh,X#0,T#3Ch,T#0Fh,T#55h,X(70) ; ; нужно ждать не менее 80*16*4=5120 мкС 33 time=0 :do :while time<0.01 ; ; ;команда "чтение RAM" |Адрес=0000h ; CRC16:=0| | | |чтение в память ;пропуск ROM | | | |данных с АЦП (8 байт) ; сброс| | | | | | ; | | | | | | |проверка CRC16 35 lan Z,T#0CCh,X#0,T#0AAh,T##0,R(ADR+3,8),X(70) ; ; ; разберем по каналам и переставим местами байты 40 A=rot8(memw(ADR+3)) 41 B=rot8(memw(ADR+5)) 42 C=rot8(memw(ADR+7)) 43 D=rot8(memw(ADR+9)) ; ; печатаем HEX значения 44 phw A," ",B," ",C," ",D," ", ; ; Пересчитаем в вольты (Uоп=2.55В) 50 A=2.55*A/65536 51 B=2.55*B/65536 52 C=2.55*C/65536 53 D=2.55*D/65536 ; ; Сгладим апериодически значение (канал А) 54 E=0.1*A+0.9*E ; |Сглаженное ; Печатаем значения в(В) |значение (канал A) 55 print using(#.#####),A,B,C,D," |",E ; 59 goto 20 ; 69 print "Нет импульса присутствия" :stop 70 phw "CRC16=",memw(23Dh): goto 30 ; ;-------------------------------------------------------- ; ; Управление выходами ; ------------------- ; ; ; ; 100 AD=90h :CB=4000 ; ; - все каналы выключены (разомкнуты); ; ; CRC16:=0| ; пропуск ROM| | |запись в RAM ; сброс| | | | |адрес=0008h ; | | | | | 122 lan Z(AD,69),T#0CCh,X#0,T#55h,T##8 ; ; |мл. байт режима ; | |проверка CRC16 ; | | |контр. чтение ; | | | |нач.знач.CRC16:=<текущий адрес> ; | | | | |ст. байт режима ; | | | | | |проверка CRC16 ; | | | | | | |контр. чтение ; | | | | | | | |нач.знач.CRC16 123 lan T#0C0h,X(70),R(CB,1),X#09h,T#0,X(70),R(CB,1),X#0Ah ;канал A 124 lan T#0C0h,X(70),R(CB,1),X#0Bh,T#0,X(70),R(CB,1),X#0Ch ;канал B 125 lan T#0C0h,X(70),R(CB,1),X#0Dh,T#0,X(70),R(CB,1),X#0Eh ;канал C 126 lan T#0C0h,X(70),R(CB,1),X#0Fh,T#0,X(70),R(CB,1) ;канал D ; ; - все каналы включены (замкнуты); ; 132 lan Z,T#0CCh,X#0,T#55h,T##8 ; 133 lan T#080h,X(70),R(CB,1),X#09h,T#0,X(70),R(CB,1),X#0Ah ;канал A 134 lan T#080h,X(70),R(CB,1),X#0Bh,T#0,X(70),R(CB,1),X#0Ch ;канал B 135 lan T#080h,X(70),R(CB,1),X#0Dh,T#0,X(70),R(CB,1),X#0Eh ;канал C 136 lan T#080h,X(70),R(CB,1),X#0Fh,T#0,X(70),R(CB,1) ;канал D ; 140 goto 122
Программа для работы с MPX2010
Список используемой литературы
http://www.fractal.com.ru/index.php?p=index&sp=fb&PHPSESSID=af..
http://www.fractal.com.ru/index.php?p=index&sp=p_bas&ssp=ex24&PHPSESSID=b65a10f3746ef15ebe567243b2d51473
http://www.fractal.com.ru/index.php?p=index&sp=p_bas&ssp=ex6
http://www.kit-e.ru/articles/sensor/2006_7_102.php
8