Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
enot0027
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 8
1

Вывод на LCD дисплей в двоичном отображении

26.11.2014, 20:23. Просмотров 1005. Ответов 1
Метки нет (Все метки)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <mega8.h>             
  #include <delay.h>               
  #asm                             
    .equ __lcd_port=0x18 
  #endasm 
  #include <lcd.h>                 
  #include <stdio.h>               
     char lcd_buffer[33];             
     unsigned char key_tab[4]={0xfe,0xfd,0xfb,0xf7};
 
           
     unsigned char scan(void)
     {
       unsigned char key_value=0;
       unsigned char i;
       for(i=0;i<4;i++)
       {
        PORTD=key_tab[i];
        delay_us(10);
        switch(PIND & 0xf0)
          {
           case 0b11100000:
           key_value=1+i*4;
           return (key_value);
           case 0b11010000:
           key_value=2+i*4;
           return (key_value);
           case 0b10110000:
           key_value=3+i*4;
           return (key_value);
           case 0b01110000:
           key_value=4+i*4;
           return (key_value);
           default:
           break;
         }      
       }
         return (key_value);
    }
    
    
       
 
     void main(void)                  
    {  
       int sbros;
       int res;
       int plus;
       int plus1;
       int minus;
       int minus1;
       int umnoj;
       int umnoj1;
       int delen;
       int delen1;
       int ch;
       int temp;
       int data=0;
       DDRD=0x0f;
       PORTD=0xf0;
       lcd_init(16); 
                         
            
      while(1)                
     { 
      
         if(scan()==1)   {temp=1; }   
         if(scan()==2)   {temp=2; }   
         if(scan()==3)   {temp=3; }  
         if(scan()==4)   {temp=4; }       
         if(scan()==5)   {temp=5; }
         if(scan()==6)   {temp=6; }
         if(scan()==7)   {temp=7; }
         if(scan()==8)   {temp=8; }
         if(scan()==9)   {temp=9; }
         if(scan()==10)  {temp=0; }
         if(scan()==11)  {sbros=1;}
         if(scan()==12)  {res=1;}
         if(scan()==13)  {plus=1;}
         if(scan()==14)  {minus=1;} 
         if(scan()==15)  {umnoj=1;}
         if(scan()==16)  {delen=1;}
         
          data=temp;
         if(plus==1)
         {
          ch=data;
          data=0;
          temp=0;
          plus=0;
          plus1=1;
          }
          if(minus==1)
          {
          ch=data;
          data=0;
          temp=0;
          minus=0;
          minus1=1;
          }
          if(umnoj==1)
          {
          ch=data;
          data=0;
          temp=0;
          umnoj=0;
          umnoj1=1;
          }
         if(delen==1)
         {
         ch=data;
         data=0;
         temp=0;
         delen=0;
         delen1=1;
         }
         if(res==1 )
         {
         if(plus1==1) {data=ch+data; plus1=0;}
         if(minus1==1){data=ch-data; minus1=0;}
         if(umnoj1==1) {data=ch*data; umnoj1=0;}
         if(delen1==1) {data=ch/data; delen1=0;}
         temp=data;
          res=0;
         }
      
       
        
        
       
       if(scan()==11) {data=0;  temp=0;}
       sprintf(lcd_buffer,"%x",data);  
       lcd_clear(); 
       lcd_puts(lcd_buffer);  
       delay_ms(500);             
       
      } 
   }
Программа калькулятор.Результат выдает в 16ричной системе
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 20:23
Ответы с готовыми решениями:

ATMega8. Вывод данных с UART на LCD дисплей HD44780
Помогите разобраться с приемом данных с UART и выводом их на LCD-дисплей ...многое перепробовал, но...

Nokia1616 LCD дисплей
Здравствуйте. Решил тоже поделиться своим куском кода. Подключил дисплей от Nokia1616 к плате...

О выводе на дисплей LCD HD44780
Пишу программу на Atmego32A. Столкнулся с проблемкой при выводе на дисплей. Функции вывода на...

Посоветуйте 128x64 LCD or OLED дисплей
Здравствуйте, посоветуйте пожалуйста 128x64 LCD or OLED дисплей. Планируется использовать совместно...

Вывод символов на дисплей LCD 1602
Добрый день! Инициализировал дисплей LCD 1602 при помощи микроконтроллера STM32f411 и CubeMX в...

1
raxp
10190 / 6573 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
26.11.2014, 21:26 2
...преобразовать результат в двоичный код в виде строки (набирать нолики и единички посимвольно) и выводить строку.

http://math.semestr.ru/inf/2.php

p.s.: еще можно составить массив от 0..9 с уже готовыми наборами '0000', '0001', '0010' и т.д. и выбирать из него 'строку' по индексу массива. Сотни, десятки, единицы выделить из числа легко, используя деление на соответствующую степень и приведение к типу без остатка.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 21:26

LCD дисплей
Нашел на алиэкспрессе LCD дисплей: ...

Посоветуйте LCD дисплей
Интересует LCD дисплейчик по параметрам: - Паябелен (контакты большие и широкие) &lt;- Это самое...

LCD дисплей автономно
Я с дисплейчиками никогда не работал отсюда и вопрос. Можно ли подключить дисплей без...


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

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

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