Вывод информации на 16-ти сегментные индикаторы




Цель работы: изучение методов представления сложных символов на сегментных индикаторах.

Краткий обзор

В качестве примера приведена схема с динамическим опросом клавиатуры, при нажатии клавиши на индикатор выводится символ соответствующий нажатой клавише.

 

 

Нажата клавиша «+»

Данный проект находится в папке с лабораторной\004lab\0041.dsn

Программа:

;***управление сегментным индикатором с клавиатуры***

.include "m16def.inc";подключение библиотеки для работы с ATmega16

;-------------------------------------------

.list;включение листинга

;-------------------------------------------

.def temp=r16;определение рабочих регистров

.def tempv=r17

.def tempv0=r22

.def temp1=r18

.def temp2=r19

.def temp3=r20

.def temp4=r21

 

;Определение портов

ldi temp,0x00;записываем ноль в регистр temp

out ddrd,temp;записываем этот ноль в ddrd (порт rd на ввод)

ldi temp,0xFF;записываем 0xff в регистр temp

out portd,temp;записываем temp в portd(включаем внутренний резистор)

out ddra,temp;записываем temp в ddrb (порт rb на вывод)

out ddrb,temp;записываем temp в ddrb (порт rb на вывод)

out ddrc,temp;записываем temp в ddrb (порт rb на вывод)

 

;Задаём состояние рабочих регистров

ldi temp1,0b11111110

ldi temp2,0b11111101

ldi temp3,0b11111011

ldi temp4,0b11110111

;Программа проверки состояния порта для нулевой строки s0:

out portc,temp1;посылаем на портС содержимое temp1,0b11111110

 

sbis pind,0;проверяем состояние 0 бита(если установлен то пропускаем след строчку)

rjmp m00;если сброшен переходим к метке "вывода"

 

sbis pind,1;проверяем состояние 1 бита

rjmp m01

 

sbis pind,2;проверяем состояние 2 бита

rjmp m02

 

sbis pind,3;проверяем состояние 3 бита

rjmp m03

rjmp s1;если в нулевой строке ничего не нажато,то переходим к первой

;Программа вывода на индикатор

m00:

ldi tempv,0b00001111

ldi tempv0,0b0

out porta,tempv

out portb,tempv0

rjmp s0

m01:

ldi tempv,0b11111111

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m02:

ldi tempv,0b10111111

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m03:

ldi tempv,0b0

ldi tempv0,0b01000100

out porta,tempv

out portb,tempv0

rjmp s0

;Программа проверки состояния порта для первой строки

s1:

out portc,temp2

sbis pind,0

rjmp m10

 

sbis pind,1

rjmp m11

 

sbis pind,2

rjmp m12

 

sbis pind,3

rjmp m13

rjmp s2

m10:

ldi tempv,0b10001100

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m11:

ldi tempv,0b10111011

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m12:

ldi tempv,0b11111011

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m13:

ldi tempv,0b0

ldi tempv0,0b11111111

out porta,tempv

out portb,tempv0

rjmp s0

;Программа проверки состояния порта для второй строки

s2:

out portc,temp3

sbis pind,0

rjmp m20

 

sbis pind,1

rjmp m21

 

sbis pind,2

rjmp m22

 

sbis pind,3

rjmp m23

rjmp s3

m20:

ldi tempv,0b1100

ldi tempv0,0b0

out porta,tempv

out portb,tempv0

rjmp s0

m21:

ldi tempv,0b01110111

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m22:

ldi tempv,0b00111111

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m23:

ldi tempv,0b0

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

;Программа проверки состояния порта для третьей строки s3:

out portc,temp4

sbis pind,0

rjmp m30

 

sbis pind,1

rjmp m31

 

sbis pind,2

rjmp m32

 

sbis pind,3

rjmp m33

rjmp s0

m30:

ldi tempv,0b11110011

ldi tempv0,0b0

out porta,tempv

out portb,tempv0

rjmp s0

m31:

ldi tempv,0b11111111

ldi tempv0,0b0

out porta,tempv

out portb,tempv0

rjmp s0

m32:

ldi tempv,0b00110011

ldi tempv0,0b10001000

out porta,tempv

out portb,tempv0

rjmp s0

m33:

ldi tempv,0b0

ldi tempv0,0b10101010

out porta,tempv

out portb,tempv0

rjmp s0

rjmp s0

;------end-------

Данный проект находится в папке с лабораторной\004lab\004.aps

 

 

Лабораторное задание

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

 

При нажатии первой кнопки должен выводиться символ1, при нажатии второй кнопки символ2 и т.д.

Данный проект находится в папке с лабораторной\004lab\0042.dsn

 

Вариант Символ1 Символ2 Символ3 Символ4
  Цифра «1» Буква «E» Цифра «5» Буква«X»
  Цифра «2» Цифра «4» Буква «E» Буква «Z»
  Цифра «3» Цифра «7» Буква «F» Буква «y»
  Цифра «4» Буква «M» Цифра «0» Буква «C»
  Цифра «5» Буква «W» Буква «C» Цифра «8»
  Цифра «6» Буква «K» Буква «L» Цифра «1»
  Цифра «7» Буква «M» Буква«X» Цифра «2»
  Цифра «8» Буква «W» Буква «Z» Цифра «3»
  Цифра «9» Буква «K» Буква «y» Цифра «4»
  Цифра «0» Буква «L» Буква«T» Цифра «5»
  Буква «A» Цифра «1» Цифра «6» Буква «L»
  Буква «b» Цифра «2» Цифра «7» Буква«X»
  Буква «C» Цифра «3» Цифра «8» Буква «Z»
  Буква «d» Цифра «4» Цифра «9» Буква «y»
  Буква «E» Цифра «5» Цифра «0» Буква«T»

 

Разводка индикатора:

 

 

Лабораторная работа №5



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: