Прошу помощи в создании калькулятора на микроконтроллере

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

petrenko писал(а):А Вы кнопки то правильно запаяли ? И прочие детали не забыли ? :wink:
А то вот на рисунке Вы с красным вертикальным прямоугольничком напрочь забыли про зеркальность изображения. Могли и на самой плате что напутать, перепроверьте.
И ещё там R5 какой у Вас ? Он "подтягивает" линию сканирования, идущую на 1 pin HG1 и через диод vd8 на кнопки SB1-5 так ? А на других линиях сканирования что то не видно резисторов.. они не нужны что ли ? :roll:
У Вас невнимательность что то и как то всё поверхностно, сумбурно. Хорошо хоть рисунок прикрепили, а то угадывать, развивать ясновидение дюже тяжело..

Если помогло - с Вас "+"

Всё,всем БОЛЬШОЕ СПАСИБО!Заработал вновь и в полную силу)Оказывается,я,баран один диод не правильно впаял,а в нем то было дело... :))
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Опять я.Нужна помощь в расчёте того,что обведено красным.2 Резистора-делитель напряжения.Верно?На выходе RC5 напряжение равно 4,04 вольта...
На диодах нужно так же рассчитать ток и напряжение.Напряжение АС на ЖКИ равно 2.8В,а на контактной площадке,т.е. в начале соединительного провода платы с экраном,со стороны платы 3,4 вольта.Помогите пожалуйста. :(
И как рассчитать делитель...используя уже известное сопротивление резисторов,или же задаться измерениями?
Вложения
схема.jpg
(109.5 КБ) 548 скачиваний
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

http://ivk.ulstu.ru/files/%D0%AD%D0%BB% ... %D0%B0.pdf
Делал по этому методу,не сходится(
ну никак не может получиться сопротивление 100 Ом и 10 кОм при напряжении на входе 4 вольта,а на выходе с делителя 3.4 в...помогите( :(
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Уважаемые коты,помогите(
Поясните пожалуйста следующее:Диоды VD1—VD8 предотвращают замыкание линий порта В микроконтроллера при одновременном нажатии на несколько кнопок. Для линий порта А, соединенных с клавиатурой, подобная защита не требуется.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Engineer_Keen »

Zmicer писал(а):Поясните пожалуйста следующее:Диоды VD1—VD8 предотвращают замыкание линий порта В микроконтроллера при одновременном нажатии на несколько кнопок.

Не знаете как реализовано сканирование клавиатуры? В порт B поочередно выдается 00000001, 00000010, 00000100, 00001000... и т.д. Если при этом нажать кнопку в столбце, где в этот момент "1", то она попадет на соответствующий разряд порта А. Сопоставив значение в портах B и А, контроллер легко определяет какая кнопка нажата. Если без диодов нажать одновременно кнопки в двух разных столбцах, то будет конфликт уровней, т.к. на одном столбце всегда есть "1", а на всех других в этот момент - "0". Так можно просто пожечь порт (ток беспрепятственно пойдет между портами, выдающими противоположный потенциал), поэтому стоят диоды.
Zmicer писал(а):Для линий порта А, соединенных с клавиатурой, подобная защита не требуется.

Порт А работает как вход, поэтому нажатие двух кнопок в разных строках не создает конфликта уровней.

Что касается делителя R3-R4, то ответ не сходится по одной простой причине, в той цепи помимо просто активных сопротивлений (R3-R4) в параллель R3 стоит светодиод, из-за этого такой расчет не прокатывает. Номинальный ток светодиода 0.02А, если это белый цвет, то падение напряжения на нем - 2.5-3В. Чтобы не превышать допустимый ток стоит ограничительный резистор R4 (4.5В - 3В = 1.5В, 1.5В/0.02А = 75 Ом, т.е. с запасом - 100 Ом). А вот зачем эта цепь еще и к земле подтянута через 10к я не знаю :dont_know:
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Engineer_Keen писал(а):
Zmicer писал(а):Поясните пожалуйста следующее:Диоды VD1—VD8 предотвращают замыкание линий порта В микроконтроллера при одновременном нажатии на несколько кнопок.

Не знаете как реализовано сканирование клавиатуры? В порт B поочередно выдается 00000001, 00000010, 00000100, 00001000... и т.д. Если при этом нажать кнопку в столбце, где в этот момент "1", то она попадет на соответствующий разряд порта А. Сопоставив значение в портах B и А, контроллер легко определяет какая кнопка нажата. Если без диодов нажать одновременно кнопки в двух разных столбцах, то будет конфликт уровней, т.к. на одном столбце всегда есть "1", а на всех других в этот момент - "0". Так можно просто пожечь порт (ток беспрепятственно пойдет между портами, выдающими противоположный потенциал), поэтому стоят диоды.
Zmicer писал(а):Для линий порта А, соединенных с клавиатурой, подобная защита не требуется.

Порт А работает как вход, поэтому нажатие двух кнопок в разных строках не создает конфликта уровней.

Что касается делителя R3-R4, то ответ не сходится по одной простой причине, в той цепи помимо просто активных сопротивлений (R3-R4) в параллель R3 стоит светодиод, из-за этого такой расчет не прокатывает. Номинальный ток светодиода 0.02А, если это белый цвет, то падение напряжения на нем - 2.5-3В. Чтобы не превышать допустимый ток стоит ограничительный резистор R4 (4.5В - 3В = 1.5В, 1.5В/0.02А = 75 Ом, т.е. с запасом - 100 Ом). А вот зачем эта цепь еще и к земле подтянута через 10к я не знаю :dont_know:

Большое спасибо!Теперь стало не много понятнее!
К земле она подтянута,т.к. подсветка с общим катодом,а вот с резистором вопрос...Спасибо,выручили! :twisted:
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Может кто-нибудь объяснить назначение выводов микроконтроллера?
http://www.wvshare.com/img/pinout/PIC16F873A_l.jpg
Можно кратко,зачем каждый предназначен.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение pyzhman »

Уверен, что кто-нибудь может. А даташит? Не, не помогает?
Docendo discimus
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

pyzhman писал(а):Уверен, что кто-нибудь может. А даташит? Не, не помогает?

К сожалению нет,не помогает.Я не нашёл там назначения каждого вывода,а просто общее описание.Хотелось бы узнать про каждый,кратко и понятным языком(в даташите пишут на языке знающих людей).
Аватара пользователя
C@at
Вымогатель припоя
Сообщения: 652
Зарегистрирован: Вс ноя 13, 2011 16:42:05
Откуда: Украина

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение C@at »

Вот здесь http://projects.m32.ir/141/ инженерный калькулятор
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

C@at писал(а):Вот здесь http://projects.m32.ir/141/ инженерный калькулятор

на персидском?)
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение petrenko »

:) На фарси, в чём и прикол..
Zmicer писал(а):....кратко и понятным языком (в даташите пишут на языке знающих людей).

Вот, "C@at" и решил пошутить..
СпойлерПроект является первым ..., когда основное действие, а другие четыре тригонометрических функций и разработано с LCD, который отображает красоту расчетов. Этот калькулятор является наиболее полным из AVR проектов, написанных на языке Си. Одновременно с проектом файл в C исходного кода и файлов проекта с файлом, который вы разместили Proteus. ATmega16 микроконтроллер используется, есть много на рынке. Введенный инженерный калькулятор может выполнять следующие функции:...
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Desutorakuta »

Шутка неудачная ИМХО - тот калькулятор на AVR =/
Через пару часов сделаю табличку по выводам (если не забуду :? )

ADD:
http://ww1.microchip.com/downloads/en/d ... 39582b.pdf - Даташит, страницы 10-11 (8-9)

1 MCLR/Vpp - Колок сброса. 0 - сброс контроллёра. + Сюда надо подать питание при прошивке
2 RA0/AN0 - Бит 0 IO-Регистра A или Вход 0 10разрядного ЦАПа
3 RA1/AN1 - Бит 1 IO-Регистра A или Вход 1 10разрядного ЦАПа
4 RA2/AN2/Vref-/CVref - Бит 2 IO-Регистра A или Вход 2 10разрядного ЦАПа или Опорное (-) напряжение ЦАПа или Vref выход компаратора
5 RA3/AN3/Vref+ - Бит 3 IO-Регистра A или Вход 3 10разрядного ЦАПа или Опорное (+) напряжение ЦАПа
6 RA4/T0CKI/C1OUT - Бит 4 IO-Регистра A или Timer0 счётный вход или С1 выход компаратора
7 RA5/AN4/SS/C2OUT - Бит 5 Регистра A или Вход 4 ЦАПа или SPI SS вывод или С2 выход компаратора
8 Vss - 0/земля питания
9 OSC1/CLKI - Выход кварца или вход генератора тактовой частоты
10 OSC2/CLKO - Выход кварца или выход 1/4 тактовой частоты
11 RC0/T1OSO/T1CKI - Бит0 РегистрC / Выход внешнего тактового генератора таймера 1 / Счётный вход таймера 1
12 RC1/T1OSI/CCP2 - Бит1 РегистрC / Вход внешнего тактового генератора таймера 1 / ССP2*
13 RC2/CCP1 - Бит2 РегистрC / ССP1*
14 RC3/SCK/SCL - Бит3 РегистрC / вход/выход Синхроинпульса SPI / I2C

15 RC4/SDI/SDA - Бит4 РегистрC / вход данных SPI / вход/выход данных I2C
16 RC5/SDO - Бит5 РегистрC / выход данных SPI
17 RC6/TX/CK - Бит6 РегистрC / USART TX / USART CLK
18 RC7/RX/DT - Бит7 РегистрC / USART RX / USART DT
19 Vss - 0/земля питания
20 Vdd - + питания
21 RB0/INT - Бит0 РегистрB / Вход внешнего прирывания
22 RB1 - Бит1 РегистрB
23 RB2 - Бит2 РегистрB
24 RB3/PGM - Бит3 РегистрB / Вход ICSP программировани
25 RB4 - Бит4 РегистрB
26 RB5 - Бит5 РегистрB
27 RB6/PGC - Бит6 РегистрB / ICD/ICSP вход синхроимпульса
28 RB7/PGD - Бит7 РегистрB / ICD/ICSP вход/выход данных

* ССP - CAPTURE/COMPARE/PWM модуль.

Почти все ноги имеют двойное/тройное назначение - режим большинства из таких ног устанавливается программно, путём установки соответствующих флагов в соответствующих регистрах. Курите мануал, там всё написано очень чётко и хорошо. :))
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

petrenko писал(а):Почти все ноги имеют двойное/тройное назначение - режим большинства из таких ног устанавливается программно, путём установки соответствующих флагов в соответствующих регистрах. Курите мануал, там всё написано очень чётко и хорошо.

Большое спасибо!
А может кто поможет,вообщем нужно рассчитать частоту тактового генератора(внутреннего ,RC который),питание 4,5 вольта. :cry:
вообщем погуглил я,нет формул для расчёта рс генератора.
Поясните пожалуйста,что рассчитывается здесь:
СпойлерРасчет частоты тактового генератора микроконтроллера


1. Таймер 0 – 8-ми битный, только в режиме таймера. Таймер 1 – 16-ти битный, может быть как таймер, так и счетчик. Оба таймера могут подсчитывать поступающие от источника тактовых импульсов сигналы. В момент времени, когда содержимое счетного регистра TCNTn достигает максимального возможного значения, возможно появления прерывания, по наступления которого, программа может перейти на выполнение особых действий. PIC16F873A может гарантированно работать на частотах до 20 МГц.

1 такт =1/f0 ,

где f0- внутренняя частота микроконтроллера, 128 кГц .

1 такт = 1/(128*〖10〗^3 )=7,8 мкс .

2. Определяется переполнение таймера по времени.

Т1=255*1такт ,

где одно переполнение таймера происходит при поступлении 255 счетных импульсов, т.е. на 255-ом такте.

Т1=255*7,8=1989 мкс=1,989*〖10〗^(-3) с .

3. Определяется количество прерываний в fв=1с.

N=fв/Т1,

N= 1/1,989*10-3=502,76.

N=503 -количество прерываний в секунду.

4. Для того, чтобы упростить написание программы разработчиками контроллеров создан специальный аппаратный блок задержки – блок предделителя. Наличие этого блока обеспечивает задержку изменения содержимого счетного регистра в зависимости от константы – числа предделителя.

〖 F〗_g=f_0/N_пд , (4)

где Fg – частота поступающая на счетный регистр после прохождения
предделителя, Гц;
〖 N〗_пд-число предделителя(8;64;256;1024).

F_g=(128 кГц)/1024=0,125 кГц=125 Гц .

5. Переполнение таймера по времени после прохождения предделителя.

〖 Т〗_1=1/F_g , (5)

где Fg – частота поступающая на счетный регистр после прохождения
предделителя, Гц.

Т_1=1/0,125=0,08 мс.

Tnng= 255*Т1,

где одно переполнение таймера происходит при поступлении 255 счетных импульсов, т.е. на 255-ом такте.

Tnng= 255*0,08=20,4 мс.

6. Определяется количество прерываний в секунду.

Nп=1/ Tnng ,

Nп = 1/20,4=49.

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

И как это подогнать под PIC16F873a?Помогите пожалуйста,надо очень(
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Desutorakuta »

Если мне не изменяет мой склероз - внутренний RC-генератор стабилизирован, и изменению частоты не подлежит. Нужно увеличить частоту - вам нужен кварц на 9-10 ногу согласно схеме из даташита прикрутить. Правда - есть сложность с переделкой платы -_-

ADD:

Нет, наврал. Есть возможность использовать внешний RC ^__^

В спойлере - расчёт периода между прерываниями - совсем не то что нужно.

Вообще - расчёт RC довольно простой - http://easyelectronics.ru/kondensator-i ... ochka.html
Постоянная времени t = RC.
Допустим R=100kOhm, С = 20pF, t = 100'000*0.000'000'02 = 0.0002 Sec
Т.е. за 0,2 мсек (200 мксек) канденсатор зарядится с 0 до 63% от Vpp
за 3t = 600 мксек - до 95% от Vpp

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

ADD2:

На стр. 202 (200) даташита есть графики зависимости частоты от Vdd и Rext при разных Сext
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Desutorakuta писал(а):Если мне не изменяет мой склероз - внутренний RC-генератор стабилизирован, и изменению частоты не подлежит. Нужно увеличить частоту - вам нужен кварц на 9-10 ногу согласно схеме из даташита прикрутить. Правда - есть сложность с переделкой платы -_-

ADD:

Нет, наврал. Есть возможность использовать внешний RC ^__^

В спойлере - расчёт периода между прерываниями - совсем не то что нужно.

Вообще - расчёт RC довольно простой - http://easyelectronics.ru/kondensator-i ... ochka.html
Постоянная времени t = RC.
Допустим R=100kOhm, С = 20pF, t = 100'000*0.000'000'02 = 0.0002 Sec
Т.е. за 0,2 мсек (200 мксек) канденсатор зарядится с 0 до 63% от Vpp
за 3t = 600 мксек - до 95% от Vpp

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

ADD2:

На стр. 202 (200) даташита есть графики зависимости частоты от Vdd и Rext при разных Сext

Дык в схеме то и нету конденсатора,вот в чём соль.Может используется емкость всех печатных проводников?там как раз 20пФ набегает.Резистор 3.3кОм частотозадающий.
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Desutorakuta »

В данном случае имеет смысл только та ёмкость, которая "подключена" после резистора - дорожек там кот наплакал.

Скорее всего автор выкинул конденсатор - не знаю как эта схема может работать. Может быть за счёт какой-то внутренней ёмкости?

У этого контролёра нету внутреннего генератора - а без конденсатора и с таким крохотным сопротивлением RC-генератор должен выдавать очень большую частоту - контролёр на ней может нестабильно работать. Производитель не рекомендует подымать частоту выше 4MHz.

Может вам стоит впаять маленькую керамику между 8ой и 9ой ногой контролёра, и посмотреть что получится?

Откуда вообще вырос вопрос про задающий генератор? Что то плохо работает?
У вас есть чем замерить частоту? Какая реально частота на 9ой ноге? (Можно померить между теми же 8ой и 9ой)
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Zmicer
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт мар 19, 2013 20:27:41

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Zmicer »

Desutorakuta писал(а):В данном случае имеет смысл только та ёмкость, которая "подключена" после резистора - дорожек там кот наплакал.

Скорее всего автор выкинул конденсатор - не знаю как эта схема может работать. Может быть за счёт какой-то внутренней ёмкости?

У этого контролёра нету внутреннего генератора - а без конденсатора и с таким крохотным сопротивлением RC-генератор должен выдавать очень большую частоту - контролёр на ней может нестабильно работать. Производитель не рекомендует подымать частоту выше 4MHz.

Может вам стоит впаять маленькую керамику между 8ой и 9ой ногой контролёра, и посмотреть что получится?

Откуда вообще вырос вопрос про задающий генератор? Что то плохо работает?
У вас есть чем замерить частоту? Какая реально частота на 9ой ноге? (Можно померить между теми же 8ой и 9ой)


Не,всё работает хорошо(тьфу,тьфу),стоит просто R2 3,3k .В описании сказано,что если устройство не будет работать,то нужно впаять кондёр на 30 пФ(я так понимаю для поднятия частоты).
Хотелось бы понять,как так,ёмкости нету,а генератор RC.
+
Какая внутренняя частота микроконтроллера в моём случае?4МГц?
Последний раз редактировалось Zmicer Пт июн 21, 2013 12:50:08, всего редактировалось 1 раз.
Стас12
Встал на лапы
Сообщения: 88
Зарегистрирован: Вт фев 21, 2012 22:38:15

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Стас12 »

В описании сказано,что если устройство не будет работать,то нужно впаять кондёр на 30 пФ(я так понимаю для поднятия частоты).
Хотелось бы понять,как так,ёмкости нету,а генератор RC
Емкость в полупроводниковых структурах, в том числе за счет монтажа, всегда присутствует.Вопрос только в ее величине из-за технологического разброса между экземплярами.Именно поэтому и оговаривается установка конденсатора до 30 пф для генерации допустимой частоты, что Вам и советовал предыдущий коллега.
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Прошу помощи в создании калькулятора на микроконтроллере

Сообщение Desutorakuta »

4MHz - Частота, рекомендованная производителем. Это не значит, что процессоры физически не могут работать выше этой частоты, но это может значить следующее:
- Могут происходить программные сбои, такие как зависания и неправильное функционирование
- Может частично или полностью выйти из строя микроконтроллер.

Какая частота у вас - мне и самому очень интересно, т.к. RC-Генератор работает на внутренней ёмкости, а она, помимо всего прочего, может сильно плавать от температуры, и даже от фазы тактового сигнала. Скажу даже больше - очень хотел бы увидеть форму вашего тактового сигнала.

Чем меньше ёмкость и сопротивление RC-цепи, тем меньше её постоянная времени, и тем выше частота. У вас стоит очень маленькое сопротивление. Внутренняя ёмкость - тоже точно не больше 20pF, а скоре всего много меньше - кристалл скорее всего работает с сильно завышенной частотой. Что не оправданно, т.к. его производительность в области арифметики всё равно куда круче, чем у человека-оператора.
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Ответить

Вернуться в «Практика»