Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: програмирование lcd на с
     
    
Добавлено: 12.08.06 07:51
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     a | ICQ: 267-795-129
 a | ICQ: 267-795-129 
      
       
  
Помогите кто знает язык с и visual basic 
 
    
как этот пример будет выглядить на visual basic 
или другой пример управления lcd на vb тип lcd 
16*2 контроллер HD44780.
/* Sample Software to display a message on a 16 x2 character LCD module
/* from a parallel port of a PC
#include 
#include 
#include 
#define PORTADDRESS 0x378 /*Enter port address here */
#define DATA PORTADDRESS+0 /*LCD data port */
#define CONTROL PORTADDRESS+2 /*LCD control port */
void main (void)
{
/* Total of 40 characters including spaces in each line of string */
char string[] = {”>> HANTRONIX << “
“ABC abc 123,!@$? “};
char init[10];
int count;
int len;
init[0] = 0x0F; /* Initialize display */
init[1] = 0x01; /* Clear display */
init[2] = 0x38; /* Dual line 8 bits */
_out(CONTROL, _inp(CONTROL) & 0xDF); /* Reset control port */
_out(CONTROL, _inp(CONTROL) | 0x08); /*Set RS */
/* Initialization routine */
for (count = 0; count <= 2; count++)
{
_out(DATA, init[count]);
_out(CONTROL,_inp(CONTROL) | 0x01; /*Set Enable */
delay(20);
_out(CONTROL,_inp(CONTROL) & 0xFE; /*Reset Enable */
delay(20);
}
_out(CONTROL, _inp(CONTROL) & 0xF7);/*Reset RS */
/* Output the message */
len = strlen(string);
for (count = 0; count < len; count++)
{
_out(DATA, string[count]);
_out(CONTROL,_inp(CONTROL) | 0x01; /*Set Enable */
delay(2);
_out(CONTROL,_inp(CONTROL) & 0xFE); /*Reset Enable */
delay(2);
}
}
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 3
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Илья
 Илья


ICQ: 251647191 
Вопросов: 37
Ответов: 167
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  12.08.06 19:26
       
    
       
  
на ВБ это не получится, так как необходим драйвер ЛПТ порта. почитай даташит от дисплея и просто сделай вывод команд
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: G.Andrey Denisov
 G.Andrey Denisov



Вопросов: 2
Ответов: 3
      
 Профиль |  | #2
       
Добавлено:  10.02.11 10:46
       
    
       
  
В папку Windows\System32 кидаем inpout32.dll
 
    
Создаем в проекте модуль:
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
На форме раpмещаем таймер Timer1. Пишем следующее:
Dim LCD_DATA_ADDRESS                             ' Переменная адреса вывода данных
Dim LCD_CONTROL_ADDRESS                          ' Переменная адреса шины управления
Private Sub Form_Load()
 LPT = &H378                                     ' Адрес LPT
 LCD_DATA_ADDRESS = LPT + 0                      ' Адрес данных
 LCD_CONTROL_ADDRESS = LPT + 2                   ' Адрес управления
 LCD_Init                                        ' Инициализация LCD
 
 LCD_DisplayCharacter (&H47)                     ' Выводим Данные
 LCD_DisplayCharacter (&H41)
 LCD_DisplayCharacter (&H44)
 LCD_DisplayCharacter (&H20)
 LCD_DisplayCharacter (&H53)
 LCD_DisplayCharacter (&H59)
 LCD_DisplayCharacter (&H53)
End Sub
Sub LCD_Init()                                   ' Инициализация LCD
 LCD_InitDriver                                  ' Инициализация драйвера
 LCD_Clear                                       ' Очистка LCD
 LCD_CursorOff                                   ' Выкл курсора
End Sub
Sub LCD_Clear()
 LCD_WriteControl (&H1)                          ' Очистка lcd
End Sub
Sub LCD_Home()
 LCD_WriteControl (&H2)                          ' Курсор на 1символ 1й строки
End Sub
Sub LCD_DisplayCharacter(char)
 LCD_WriteData (char)                            ' Вывести символ
End Sub
Sub LCD_Cursor(row, column)                      ' Курсор на позицию
 Select Case row                                 ' Выбор строки
  Case 1                                         ' Если 1я строка
   LCD_WriteControl &H80 + column - 1            '  на адрес 1й строки + позиция
  Case 2                                         ' Если 2я строка
   LCD_WriteControl &HC0 + column - 1            '  на адрес 2й строки + позиция
  Case 3                                         ' Если 3я строка
   LCD_WriteControl &H94 + column - 1            '  на адрес 3й строки + позиция
  Case 4                                         ' Если 4я строка
   LCD_WriteControl &HD4 + column - 1            '  на адрес 4й строки + позиция
  End Select
End Sub
Sub LCD_CursorLeft()
 LCD_WriteControl &H10                           ' Курсор влево
End Sub
Sub LCD_CursorRight()
 LCD_WriteControl &H14                           ' Курсор вправо
End Sub
Sub LCD_CursorOn()
 LCD_WriteControl &HD                            ' Курсор вкл
End Sub
Sub LCD_CursorOff()
 LCD_WriteControl &HC                            ' Курсор выкл
End Sub
Sub LCD_DisplayOn()
 LCD_WriteControl &HC                            ' Дисплей вкл
End Sub
Sub LCD_DisplayOff()
 LCD_WriteControl &H8                            ' Дисплей выкл
End Sub
'Конфиг: 1 строчный 8ми символьный LCD. 8ми битная шина данных. Курсор выключен.
'          0  0  1 DL  N  F  0  0 ;   0 0 1 1 0 0 0 0 = &H30
'          0  0  0  0  1   C  B ;   0 0 0 0 1 1 0 0 = &HC
  C  B ;   0 0 0 0 1 1 0 0 = &HC
'          0  0  0  0  0  1 ID  S ;   0 0 0 0 0 1 1 0 = &H6
Sub LCD_InitDriver()                             ' Инициализация драйвера
 LCD_WriteControl (&H30)                         ' Конфиг по даташиту
 LCD_WriteControl (&H30)                         ' Конфиг по даташиту
 LCD_WriteControl (&H30)                         ' Конфиг по даташиту
 LCD_WriteControl (&HC)                          ' Конфиг по даташиту
 LCD_WriteControl (&H6)                          ' Конфиг по даташиту
End Sub
Sub LCD_WriteControl(data)                       ' Запись команд
 Out LCD_CONTROL_ADDRESS, &H3                    ' RS=0, R/W=0, E=0
 Out LCD_DATA_ADDRESS, data                      ' Вывод команды в шину данных
 Out LCD_CONTROL_ADDRESS, &H2                    ' RS=0, R/W=0, E=1
 Out LCD_CONTROL_ADDRESS, &H3                    ' RS=0, R/W=0, E=0
 Out LCD_CONTROL_ADDRESS, &H1                    ' RS=0, R/W=1, E=0
 Wait (10)
End Sub
Sub LCD_WriteData(data)                          ' Вывод данных
 Out LCD_CONTROL_ADDRESS, &H7                    ' RS=1, R/W=0, E=0
 Out LCD_DATA_ADDRESS, data                      ' Вывод данных в шину данных
 Out LCD_CONTROL_ADDRESS, &H6                    ' RS=1, R/W=0, E=1
 Out LCD_CONTROL_ADDRESS, &H7                    ' RS=1, R/W=0, E=0
 Out LCD_CONTROL_ADDRESS, &H5                    ' RS=1, R/W=1, E=0
 Wait (1)
End Sub
Sub Wait(msec As Integer)                        ' Функция ожидания
 Timer1.Enabled = True                           ' Включаем таймер
 Timer1.Interval = msec                          ' Шаг таймера
 While Timer1.Interval > 0                       ' Ждем отработку таймера
  DoEvents                                       '  Обработка событий
 Wend                                            ' Закончили ждать
 Timer1.Enabled = False                          ' Выключаем таймер
End Sub
Sub Timer1_Timer()                               ' При отработки таймера
 Timer1.Interval = 0                             ' выставляем шаг = 0
End Sub
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: VbStarter
 VbStarter

ICQ: 357911808 
Вопросов: 118
Ответов: 1340
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  12.02.11 19:07
       
    
       
  
археолог...
 
    
pcports.ru