Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: програмирование lcd на с Добавлено: 12.08.06 07:51  

Автор вопроса:  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-сайт: www.lirc.narod.ru
 Профиль | | #1
Добавлено: 12.08.06 19:26
на ВБ это не получится, так как необходим драйвер ЛПТ порта. почитай даташит от дисплея и просто сделай вывод команд

Ответить

Номер ответа: 2
Автор ответа:
 G.Andrey Denisov



Вопросов: 2
Ответов: 3
 Профиль | | #2 Добавлено: 10.02.11 10:46
В папку Windows\System32 кидаем inpout32.dll
Создаем в проекте модуль:
Public Declare Function Inp Lib "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 LPT                                          ' Переменная адреса LPT
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  ;D  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



ICQ: 357911808 

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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам