Вольтметр. Программа, выводящая на ЖКИ значение подаваемого напряжения, регулируемого рукояткой на панели микроконтроллера

Страницы работы

Содержание работы

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

—————————

Кафедра систем автоматического управления

ОТЧЕТ

по лабораторной работе №8

«Вольтметр»

по курсу «ВМ, системы и сети»

Студент:

Ву Ван

гр. /2

Преподаватель:

Санкт-Петербург — 2010

задание

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

описание

Алгоритм

Работу программы организуем следующим образом. Будем считывать показания с аналогового выхода вольтметра. Потом преобразуем данные в число, находящееся в пределах от 0 до 5 В с точностью до 0.01 В. После этого будем выводить полученное число на ЖКИ.

Получаемый сигнал с аналогового входа имеет целые значения в промежутке от 0 до 255. Для преобразования сигнала разделим его значение на 5 и выделим целую часть. Это значение есть количество целых Вольт. Дробная часть оставшаяся при делении есть дробная часть получаемого числа Вольт.

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

Программа

Показания вольтметра хранятся в ячейке памяти 7FH. Цифры числа вольт будем хранить в регистрах. R0 – целая часть, R1 – десятые, R2 – сотые. Для выделения целой части, десятых и сотых используются подпрограмма SHOW_OUT, которая использует команды MUL AB и DIV AB, которые позволяют умножить содержимое регистров А и В или разделить соответственно. Для вывода на экран значения напряжения используется подпрограмма SHOW_OUT, которая преобразует каждую цифру числа в ASCI код, записывает код в видеопамять и выводит содержимое видеопамяти на ЖКИ.

распределение памяти

блок-схемы

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

#include "reg51gb.h"

extern code (LCD_INIT)

extern code (LCD_OUT)

org 8000h

lcall LCD_INIT;инициализация дисплея

mov adcon,#10h

;=======================================

;главная программа

Glav:

mov sp, #7fh

mov r0, ADRES3;чтение значения вольтметра

lcall convert;конвертация числа

lcall OUT;вывод значения на ЖКИ

mov WDTCON, #0E1h

mov WDTCON, #1Eh

jmp Glav;зацикливание

;=======================================

;преобразование числа в цифры

convert:

mov r0,sp

dec r0

dec r0

mov b,#125d;b=125

mov a, @r0

mul ab;выделение целой части

mov r7,b

mov r1,a

mov r2,#6d;R2=6

metka1:

mov a,r7

clr c

rrc a

mov r7,a

mov a,r1

rrc a

mov r1,a

djnz r2,metka1

mov a,r7;загружаем число в аккумулятор

mov r3,a

mov a,r1

mov r4,a

mov a,@r0

;выделение целой части

mov b,#5d

mul ab;умножение аккумулятора на 5

mov r7,b

mov a,r7;получаем значение целой части

mov b,#100d

mul ab;умнонжаем R7 на 100

mov r5,b

mov r6,a

clr c

mov a,r4

subb a,r6

mov r6,a

mov b,#10d;загружаем в b 10

mov a,r6

div ab;деление числа на 10

mov r1,a

mov a,r6

mov b,#10d;загружаем в b 10

div ab;деление числа на 10

mov r2,b

mov a,r7

mov @r0,a

dec r0;декремент указателя

mov a,r1

mov @r0,a

dec r0

mov a,r2

mov @r0,a

ret

;=======================================

;вывод цифр на экран

out:

mov dptr,#0e000h;установка указателей

mov r0,sp

dec r0

dec r0;установка указателей

mov a,@r0

add a,#30h;перевод в ASCI код

movx @dptr,a;пересылка аз аккумулятора в видеопамять

inc dptr;сдвиг указателя

dec r0;сдвиг указателя

mov a,#2eh;вывод символа запятой

movx @dptr,a;пересылка аз аккумулятора в видеопамять

inc dptr;сдвиг указателя

mov a,@r0

add a,#30h;перевод в ASCI код

movx @dptr,a;пересылка аз аккумулятора в видеопамять

inc dptr;сдвиг указателя

dec r0;сдвиг указателя

mov a,@r0

add a,#30h;перевод в ASCI код

movx @dptr,a;пересылка аз аккумулятора в видеопамять

inc dptr;сдвиг указателя

mov a,#20h;вывод символа пробела

movx @dptr,a;пересылка аз аккумулятора в видеопамять

inc dptr;сдвиг указателя

mov a, #42h;вывод буквы В

movx @dptr,a;пересылка аз аккумулятора в видеопамять

lcall lcd_out;вывод содержимого ВП на ЖКИ

ret

;=======================================

end

результаты

В процессе работы программы мы поворачивали рукоятку передней панели стенда и наблюдали, как меняются показания на ЖКИ в зависимости от угла поворота.

выводы

В ходе работы мы познакомились с новыми командами  микроконтроллера, такими как MUL AB и DIV AB, научились работать с регулятором напряжения на передней панели стенда. Также была создана программа, которая считывала регулируемое напряжение и выводила его на экран в режиме реального времени.

Похожие материалы

Информация о работе