Семисегментный индикатор и клавиатура
08.05.2016, 09:07
|
|
|
Прохожий
Регистрация: 06.05.2016
Адрес: г. Санкт-Петербург
Сообщений: 9
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Семисегментный индикатор и клавиатура
Здравствуйте. Всем доброго дня. Дорогие форумчане, от всей души Поздравляю Вас, Ваших Отцов, Дедов, Матерей, Бабушек и всех всех с очередным Днём Великой Победы!!!
PS: Увидев код Insector я чуть не потеряла дар речи...
|
|
|
|
Сказали "Спасибо" AlesyaS
|
|
|
08.05.2016, 09:10
|
|
|
Прохожий
Регистрация: 06.05.2016
Адрес: г. Санкт-Петербург
Сообщений: 9
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Семисегментный индикатор и клавиатура
Сообщение от baiderin
|
|
Интересно: зачем домохозяйке Си ?
|
Думаю это гораздо интереснее чем сидеть весь день за телевизором или варить борщ.
|
|
|
|
08.05.2016, 09:43
|
|
|
Частый гость
Регистрация: 24.11.2006
Сообщений: 27
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Мужики, не пугайте девушек на форуме. Интернет не сглаживает углы. И инет-общение воспринимается гораздо острее, нежели общение в жизни.
|
|
|
|
08.05.2016, 10:21
|
|
|
Частый гость
Регистрация: 24.11.2006
Сообщений: 27
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Вы зря наезжаете на кажущуюся сложность моих примеров.
Поясняю:
Писанины да много. Особенно все эти определения. Но если приглядитесь повнимательнее, то поймете, то о чем я говорю.
Один из моих принципов в программировании - модульность программ. Каждый модуль абсолютно самостоятелен. За исключением некоторых взаимосвязей.
Написав и определив все константы, битовые определения, входы-выходы один раз, в дальнейшем вы на таких модулях будете собирать проекты как конструктор из кубиков. При моем подходе при каждом новом проекте в хидере вы просто определяете нужные константы, входы выходы и все. Этакий аналог ардуины. Где именно такой подход. Вы попросту добавляете нужные библиотеки, определяете константы и ввод-вывод.
Вам нужна клавиатура? Открыли модуль, внесли, на каких входах будут висеть кнопки, нужные времянки. Модуль готов.
Нужен семисегментный дисплей? Открыли модуль, быстренько внесли на каких выводах будут сегменты, общие выводы. Модуль готов.
Нужен знакосинтезирующий ЖКИ? Аналогично.
|
|
|
|
Сказали "Спасибо" Insector
|
|
|
08.05.2016, 11:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Сообщение от AlesyaS
|
|
это гораздо интереснее чем сидеть весь день за телевизором или варить борщ.
|
Абсолютно согласен. А борщ пусть процессор варит.
|
|
|
|
08.05.2016, 13:34
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Сообщение от baiderin
|
|
А борщ пусть процессор
|
в мультиварке готовит. вот только кто картошку чистить будет?
|
|
|
|
08.05.2016, 14:58
|
|
|
Вид на жительство
Регистрация: 09.08.2006
Адрес: Россия, Чукотка
Сообщений: 441
Сказал спасибо: 377
Сказали Спасибо 341 раз(а) в 139 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Сообщение от jump
|
|
вот только кто картошку чистить будет?
|
Мультибабушка.
__________________
Suae quisque fortunae faber est
|
|
|
|
08.05.2016, 17:04
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Сотворю зло...
|
PHP код:
|
#include ‹io.h›
#include ‹delay.h›
#define key_col PORTB
#define key_row PINB
#define led_seg PORTD
#define led_com PORTC
unsigned char font[11] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0x00 };
unsigned char data[4] = { 10,10,10,10 };
unsigned char display_index = 0;
unsigned char display_common = 1;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
led_com = ~display_common;
led_seg = font[data[display_index]];
display_index++;
display_common ‹‹= 1;
if(display_index › 3) {
display_index = 0;
display_common = 1;
}
}
unsigned char key_pressed(void)
{
key_col = 0b11111110;
switch(key_row & 0b11110000)
{
case 0b11100000: return 1;
case 0b11010000: return 4;
case 0b10110000: return 7;
case 0b01110000: return 10;
}
key_col = 0b11111101;
switch(key_row & 0b11110000)
{
case 0b11100000: return 2;
case 0b11010000: return 5;
case 0b10110000: return 8;
case 0b01110000: return 0;
}
key_col = 0b11111011;
switch(key_row & 0b11110000)
{
case 0b11100000: return 3;
case 0b11010000: return 6;
case 0b10110000: return 9;
case 0b01110000: return 11;
}
return 0xFF;
}
void init(void)
{
DDRB = 0b00001111;
PORTB = 0b11111111;
DDRC = 0b00001111;
PORTC = 0b00001111;
DDRD = 0b11111111;
PORTD = 0b00000000;
// Clock value: 31,250 kHz
TCCR0 = (1‹‹CS02) | (0‹‹CS01) | (0‹‹CS00);
TCNT0 = 0x00;
TIMSK = (1‹‹TOIE0);
// Analog Comparator initialization
ACSR = (1‹‹ACD);
}
void main(void)
{
unsigned char c;
unsigned char current_digit = 0;
init();
#asm("sei")
begin:
c = key_pressed();
if(c == 0xFF) goto begin;
if(c==11) {
current_digit = 0;
data[0] = 10; data[1] = 10; data[2] = 10; data[3] = 10;
goto begin;
}
data[current_digit] = c;
current_digit++;
if (current_digit›3) current_digit=0;
while(key_pressed() != 0xFF);
delay_ms(50);
goto begin;
}
|
Последний раз редактировалось Godzilla82; 09.05.2016 в 04:41.
|
|
|
|
Сказали "Спасибо" Godzilla82
|
|
|
09.05.2016, 10:19
|
|
|
Прописка
Регистрация: 17.11.2009
Сообщений: 134
Сказал спасибо: 15
Сказали Спасибо 30 раз(а) в 16 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
Магические цифры, goto, DDR, TCCR... Руки бы поотрывать! Шютка.
|
|
|
|
09.05.2016, 11:33
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
|
Re: Семисегментный индикатор и клавиатура
За gotо,разве что.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:52.
|
|