Микроконтоллер AT89C52 - дисплей с портом 0
Я пишу программу для отображения некоторого числа на дисплее 7seg через порт 0. И у меня проблема, если я хочу сделать это с портом для примера 2, я отлично работает. Когда я использую порт 0, он не работает. Что я делаю не так. Вот мой код:
#include <REGX52.H>
char wyswietlacz[2]={0x06, 0x06};
void wyswietlanie(){
P0=0x30 ;
P2_0=0x01;
P2_1=0x00;
P2_0=0;
P2_1=0;
P0=0x30 ;
P2_0=0;
P2_1=1;
P2_0=0;
P2_1=0;
}
void main(void){
while(1){
wyswietlanie();
}
}
И как это работает: ht tps:https://stackru.com/images/2a8ed50ea3354f16e355138987f5825910ebc8b8.png
1 ответ
Порт 0 имеет выходы с открытым стоком, см. Его техническое описание. Это означает, что каждый вывод может только потреблять ток, но не являться источником. Как вы это сделали, можно выводить только "низкий", но не "высокий".
Вы можете попробовать использовать подтягивающие резисторы, которые необходимы, если вы используете порт в качестве ввода-вывода общего назначения. Однако я бы не рекомендовал это, потому что нарастающий край перехода от низкого к высокому может быть слишком медленным. И это увеличивает потребление энергии.