Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
АлександрКом
99 / 99 / 42
Регистрация: 21.10.2012
Сообщений: 672
#1

Калькулятор на МК

15.03.2014, 19:44. Просмотров 4415. Ответов 13
Метки нет (Все метки)

Здравствуйте. Из-за учебы пришлось первый раз столкнуться с таким понятием как микроконтроллер. До этого никогда с ними не работал. Задание дали следующее - реализовать калькулятор со следующими функциями: сложение, вычитание, умножение, деление, возведение в степень. Сразу скажу, что на железке делать ничего не надо будет, только программно. По совету добрых людей начал читать Фрунзе "Микроконтроллеры. Это же просто". Посоветуйте, пожалуйста, какие мне дальнейшие действия предпринять, чтобы справится с поставленной задачей. (возможно, в какой среде это всё делать, на каком языке писать, может есть какие-то примеры с объяснением.. Повторюсь, до этого никогда не работал с МК).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 19:44
Ответы с готовыми решениями:

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include <iostream> int main(){ int a = 0; int b = 0; char...

Простой калькулятор и калькулятор с парсингом
Ребят я совсем не давно только начал изучать сишку, решил написать простенький...

Калькулятор с#
Подскажите, пожалуйста, за что отвечают переменные с1 и rept в данном куске...

калькулятор
Недавно создал калькулятор, но не знаю в чем ошибка. Подскажите что не так в...

Калькулятор Qt
Помогите с Калькулятором Qt? Есть готовая программа (ниже скину архив), надо...

13
raxp
10180 / 6563 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
15.03.2014, 20:23 #2
А калькулятор должон что-то отображать? У вас два варианта, добавить еще работу с индикатором, к примеру LCD, либо выдавать результат расчета по коммуникационному интерфейсу, к примеру по COM-порту. Берете любой МК или готовую плату Arduino или STM-кит или расперри, добавляете клавиатуру, кнопки которой включены матрицей. Добавляем опрос с клавиатуры, по нажатию условно кнопки "=", осуществляем выполение выбранных действий (+-*/) и вывод на индикатор или в UART.

Пример двоичного калькулятора на микроконтроллере ATtiny2313:
Калькулятор на МК
Калькулятор на МК


Пример самодельного калькулятора на микроконтроллере PIC16F873:
Калькулятор на МК
Калькулятор на МК


Литература и сорцы

Коллекция исходников по алгоритмам и ссылок по работе с интерфейсами в МК
Литература по программированию в электронике, микроконтроллеры и ПЛИС

Тут еще пример работы с клавиатурой RS-485. Работа с Modbus протоколом...
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
15.03.2014, 23:30 #3
В примерах протеуса есть калькулятор, только не помню на каком мк.
0
pyzhman
757 / 453 / 62
Регистрация: 15.05.2012
Сообщений: 2,543
17.03.2014, 07:48 #4
Вывод на семисегментники - так проще. Да и клавиатуру достаточно цифровую. В том же протеусе есть специально заточенная под калькулятор.
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
20.03.2014, 19:08 #5
Была такая тема
Калькулятор на Atmega16

Добавлено через 59 секунд
Если в железе собирать не нужно, то делайте в протеусе.

Добавлено через 21 секунду
Или у вас другой симулятор?
0
АлександрКом
99 / 99 / 42
Регистрация: 21.10.2012
Сообщений: 672
22.03.2014, 10:07  [ТС] #6
Симулятор не устанавливал, можете дать ссылку на рабочий Proteus, чтобы не было проблем при установке?
0
raxp
10180 / 6563 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
22.03.2014, 10:25 #7
Рабочий триал-Протеус доступен на официальном сайте. Ссылки на кряки, взломы, хаки на форуме запрещены.
0
АлександрКом
99 / 99 / 42
Регистрация: 21.10.2012
Сообщений: 672
25.03.2014, 16:41  [ТС] #8
http://www.radiolocman.com/shem/schematics.html?di=67495
Можно спросить, правильно ли я понимаю - для примера, я могу взять код, который написан в файле по ссылке, скомпилировать его в AVRStudio, получить hex-файл, затем в Proteus собрать точно такую же схему как на рисунке (по ссылке), загрузить в микроконтроллер этот hex-файл ия получу работающую схему?
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
25.03.2014, 16:50 #9
Можно не компилировать, там хекс файл есть по ссылке. ДА.
1
АлександрКом
99 / 99 / 42
Регистрация: 21.10.2012
Сообщений: 672
25.03.2014, 16:56  [ТС] #10
Спасибо, попробую это сделать
0
АлександрКом
99 / 99 / 42
Регистрация: 21.10.2012
Сообщений: 672
29.03.2014, 22:17  [ТС] #11
Здравствуйте еще раз =) Установил Proteus, начал разбираться с готовым примером калькулятора - ARM7 Calculator. Возникло много вопросов, если сможете ответить хоть на какие-нибудь, буду признателен.
К основному файлу подключаются 2 файла: #include "NXP/iolpc2104.h" #include <intrinsics.h>. Первый, я так понял, описывает наш микроконтроллер, а что 2-ой?
В заголовочном файле calc.h определяются переменные-регистры. Не могли бы пояснить, что описывают следующие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define LCD_CMD_WR     0x0000
#define LCD_DATA_WR    0x0100
#define LCD_BUSY_RD    0x0200
#define LCD_DATA_RD    0x0300
 
#define E_PIN_MASK     0x0400
                     
//LCD Commands        
#define LCD_CLS        0x01
#define LCD_HOME       0x02
#define LCD_SETMODE    0x04
#define LCD_SETVISIBLE 0x08
#define LCD_SHIFT      0x10
#define LCD_SETFUNCTION    0x20
#define LCD_SETCGADDR      0x40
#define LCD_SETDDADDR      0x80
 
 
#define G_MASK  0x78000000
#define G_SHIFT 27
В файле calc.h происходит вызов функции init_system(). Её описание:
C++
1
2
3
4
5
6
7
8
void init_system()
 { MEMMAP = 1;
   SCS_bit.GPIO0M = 0; 
   PINSEL0 = 0;
   PINSEL1 = 0; 
   IODIR =  0xFF07FF; 
   IOCLR = 0xFFFFFFFF;
 }
Что здесь происходит? =) IODIR и IOCLR - это что и откуда? из тех самых 2-х файлов, про которые я вначале спрашивал?
Не могли бы пояснить код, для нахождения нажатой кнопки и вывода информации на дисплей:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
for (row=0; row < KEYP_NUM_ROWS; row++)
    { // Drive appropriate row low and read columns:
 
      IOSET = (~(1 << row)) & 0xFF;
      IOCLR = (1 << row) & 0xFF;
      for (wait=0; wait<10; ++wait)
         nop();
      tmp = (IOPIN & G_MASK) >> G_SHIFT;
    
      // See if any column is active (low):
      for (col=0; col<KEYP_NUM_COLS; ++col)
         if ((tmp & (1<<col)) == 0)
          { idx = (row*KEYP_NUM_COLS) + col;
            key = keycodes[idx]; 
 
            IOSET = idx << 16;
 
            IOCLR = (~(idx <<16)) & 0xFF0000;
            goto DONE;
          }
    }
   DONE:
 
   // Disable Port Drive and return.
 
   IODIR =  0xFF0700;
   return key;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void wrdata (BYTE data)
// Write a Character to the LCD Display. 
 { IODIR =  0xFF07FF;
   IOCLR = (~(LCD_DATA_WR | data)) & 0x7FF;
   IOSET = LCD_DATA_WR | data;
    
   // Toggle Pin 'E' to send the command.
   IOSET = E_PIN_MASK;
   nop(); 
   nop();
   nop();
   nop();
   IOCLR = E_PIN_MASK;
   
   lcd_wait();
 }
0
Programmmis
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 11
15.03.2015, 15:01 #12
подскажите какой взять МК авр для двоичной арифметики , и пример ( листинг того же сложения) , Помогите , очень нужна помощь . СПАСИБО
0
shurikspk
401 / 222 / 43
Регистрация: 10.02.2013
Сообщений: 781
15.03.2015, 15:09 #13
прочитав строчку ничего не понял, детальнее опишите что вам нужно

PS мк всегда и работает только с 0 и 1
0
Programmmis
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 11
15.03.2015, 15:13 #14
ищу пример листинг для написания арифметических операций,на конкретно каком то мк
0
15.03.2015, 15:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2015, 15:13

Калькулятор
Всем привет ) Пожалуйста подскажите почему мы пишем &quot; scanf (&quot;%c&quot;, &amp;oper); ...

Калькулятор и бд
Добрый вечер! Ситуация такая. Требуется сделать калькулятор расчета мощности...

Калькулятор
Подкинула мне моя учеба задачку. Нужно сделать калькулятор на emu 8086. И мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru