Монтаж 2-разрядный 7-сегментный дисплей

У меня есть небольшая проблема с пониманием того, как это должно работать. В основном все, что мне нужно, это зажечь светодиод на каждой стороне 7-сегментного дисплея. Они перекрывают друг друга или видны только слева или справа. Если кто-то может поставить меня на правильный путь будет приятно. Спасибо.

Что-то вроде этого

  ;Port Addresses 
.equ     DDRA   =$1A               ;Port A Data Direction Register Address 
.equ     PORTA   =$1B               ;Port A Output Address 

.equ     PINB  =$16               ;Port B Input Address 
.equ     DDRB   =$17               ;Port B Data Direction Register Address 

.equ     PINC  =$13               ;Port C Input Address 
.equ     DDRC   =$14               ;Port C Data Direction Register Address 

.equ  PORTD =$12    ;Port D Output Address
.equ  DDRD =$11    ;Port D Dara Direction Register Address

 ;Register Definitions 
.def     temp   =r16                ;Temporary storage register

 ;Program Initialisation 
 ;Initialise Input Ports  
         ldi    temp,$00 
         out    DDRB,temp         
   out DDRC, temp   

 ;Initialise output ports 
         ldi    temp,$FF 
         out    DDRA,temp         
         out    DDRD,temp         


loop:  ldi r17,$7f  ; left side
   out PORTA,r17
   ldi r18, $ff     ; right side
   out PORTA,r18
   rjmp loop

person Anton Pankov    schedule 27.02.2015    source источник
comment
Мы не знаем, как ваши светодиоды подключены к контактам.   -  person Jester    schedule 27.02.2015
comment
Значение они перекрывают друг друга или отображаются только слева или справа очень неясно. Как правило, каждая 7-сегментная цифра имеет каждый сегмент, назначенный биту где-то в порту и, возможно, еще одному биту для точки (точки), если она существует. Вам нужно знать, что это за задания, тогда задача становится легкой. И никто здесь не может помочь больше без таких подробностей.   -  person lurker    schedule 27.02.2015


Ответы (1)


Существует два типа 7-сегментных светодиодных дисплеев. Разница заключается в том, включаются ли сегменты при подаче на вход 1 или нуля. Вы должны определить, какой у вас тип, и как контакты PORTA подключены к выводам дисплея.

В остальном принцип работы тот же. Есть семь сегментов числа 8 и точка. Они контролируются битами номера, который вы отправляете через PORTA.

$7f включает либо один сегмент, либо все, кроме одного. $ff отключает все сегменты или включает их все.

Вы должны определить, какие сегменты вы хотите включить, и какие биты PORTA управляют этими сегментами. Вы обнаружите, что вам нужны числа, отличные от $7f и $ff.

Вы хотите видеть чередующиеся сегменты? Если это так, вам нужно будет включить какой-то цикл задержки. Код прямо сейчас изменяет отображение слишком быстро, чтобы глаз мог это увидеть.

person uncleO    schedule 27.02.2015