Спецы: Посоветуйте дисплейчик. Размер около 100х100 мм разрешение около 128 (+-). Да как с ним работать? Ну и примерчик, хорошо бы.
Хм... Попался мне дисплей от калькулятора Citizen: Платка - 14 выводов, микрухи HD44100H HD44780A00, сбоку надпись C1620H. Можно где-нибудь найти схему назначения выводов? Питание подавал - линии выходили. Гуглил - куча хлама...
Еще актуально? Если да могу порыться осталась куча примеров со старой работы, правда на сях и под мсп430
писал проги и под знакосинтезирующие и под графику (128x64) могу скинуть и схемы и библиотеку правда на дельфе.
кстати сорри за оффтоп, но никто не встречал знакосинтезирующие вакуумные люминесцентные дисплеи (VFD)?
Exp10der Продаются, но дорого и я не видел знакосинтезирующих. По-моему знакогенератор и динамическую индикацию несложно и самому сделать.
_basmp_ вот код, он рулит LCD висящим на ЛПТ, но общий смысл думаю должен быть понятен, дёргаем 37Ah - синхронизация выбор регистра (и выбор чипа у графических), 378h данные, работает и по 4 битному и по 8 битному интерфейсу, в случае 4 бите задействуем только старшие 4 линии. 37Ah:0 -> E 37Ah:3 -> RS 378h -> Data bus Код (Text): unit LCDcontrol; interface uses windows, graphics; const TCharLCD=$2000; TGraphLCD=$2001; // Instructions for character LCD cClearLCD=1; cReturn=1 shl 1; cMode=1 shl 2; pIncrement=1 shl 1; pDisplayShift=1; cControl=1 shl 3; pLCDon=1 shl 2; pCursorOn=1 shl 1; pFlashingCursor=1; cCursorShift=1 shl 4; pDisplayShift2=1 shl 3; pShitf2Right=1 shl 2; cSet=1 shl 5; pDataLength8bit=1 shl 4; p2Lines=1 shl 3; p5x10=1 shl 2; pSignGen1=1 shl 1; cSetCGRAMaddress=1 shl 6; cSetDRAMaddress=1 shl 7; // Instructions for graphics LCD cDisplayOn=$3F; cSetAddress=$40; cSetPage=$B8; cDisplayStartLine=$C0; T8bitInterface=$1000; T4bitInterface=$1001; procedure InitLCD(TypeLCD: dword; InterfaceType: dword); procedure OutString2x16(Line1, Line2: string); procedure DefineChar(); procedure ConvBMP2LCD(n: dword); procedure RenderBuf(); var tInterfaceType: dword; LPTportbase: word=$378; chipselect: byte=0; buffer: array [0..7, 0..127] of byte; bmp: TBitmap; char1: array [0..7, 0..4] of byte= // тут можно дефайнить символы ((0,1,1,1,0), (1,0,1,0,1), (1,0,1,0,1), (1,0,1,0,1), (1,0,1,1,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0)); implementation procedure OutCmd(cmd: byte); begin if tInterfaceType=T8bitInterface then asm mov AL, 0 or AL, chipselect mov DX, LPTportbase add DX, 2 out DX, AL mov AL, cmd mov DX, LPTportbase out DX, AL mov AL, 1 or AL, chipselect mov DX, LPTportbase add DX, 2 out DX, AL end else asm mov AL, 0 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, cmd and AL, 0F0h mov DX, LPTportbase out DX, AL mov AL, 1 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, 0 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, cmd and AL, 0Fh shl AL, 4 mov DX, LPTportbase out DX, AL mov AL, 1 mov DX, LPTportbase add DX, 2 out DX, AL end; end; procedure OutData(data: byte); begin if tInterfaceType=T8bitInterface then asm mov AL, 0 or AL, 4 or AL, chipselect mov DX, LPTportbase add DX, 2 out DX, AL mov AL, data mov DX, LPTportbase out DX, AL mov AL, 1 or AL, 4 or AL, chipselect mov DX, LPTportbase add DX, 2 out DX, AL end else asm mov AL, 0 or AL, 4 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, data and AL, 0F0h mov DX, LPTportbase out DX, AL mov AL, 1 or AL, 4 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, 0 or AL, 4 mov DX, LPTportbase add DX, 2 out DX, AL mov AL, data and AL, 0Fh shl AL, 4 mov DX, LPTportbase out DX, AL mov AL, 1 or AL, 4 mov DX, LPTportbase add DX, 2 out DX, AL end; end; procedure ConvBMP2LCD(n: dword); var l, i, ix: dword; b: byte; begin for l:=0 to 7 do begin for i:=0 to 127 do begin b:=0; for ix:=0 to 7 do if bmp.Canvas.Pixels[i+(n*128), (l*8)+ix]=0 then b:=b or (1 shl (7-ix)); buffer[7-l, 127-i]:=b; end; end; end; procedure RenderBuf(); var i, l, d: dword; begin chipselect:=8; OutCmd(cDisplayStartLine or 0); sleep(1); OutCmd(cSetAddress or 0); sleep(1); for l:=0 to 7 do begin OutCmd(cSetPage or l); sleep(1); for i:=0 to 63 do begin OutData(buffer[l, i]); for d:=0 to 5000 do asm nop end; // задержка end; end; chipselect:=2; OutCmd(cDisplayStartLine or 0); sleep(1); OutCmd(cSetAddress or 0); sleep(1); for l:=0 to 7 do begin OutCmd(cSetPage or l); sleep(1); for i:=0 to 63 do begin OutData(buffer[l, i+64]); for d:=0 to 5000 do asm nop end; end; end; end; procedure InitLCD(TypeLCD: dword; InterfaceType: dword); begin tInterfaceType:=InterfaceType; if TypeLCD=TCharLCD then begin if InterfaceType=T8bitInterface then begin OutCmd(cSet or pDataLength8bit or p2Lines or pSignGen1); sleep(1); OutCmd(cSet or pDataLength8bit or p2Lines or pSignGen1); sleep(1); OutCmd(cSet or pDataLength8bit or p2Lines or pSignGen1); end else begin OutCmd(cSet or p2Lines or pSignGen1); sleep(1); OutCmd(cSet or p2Lines or pSignGen1); sleep(1); OutCmd(cSet or p2Lines or pSignGen1); end; sleep(1); OutCmd(cControl or pLCDOn); sleep(1); OutCmd(cMode or pIncrement); sleep(1); OutCmd(cClearLCD); sleep(1); OutCmd(cReturn); sleep(1); DefineChar(); OutCmd(cReturn); sleep(1); end else if TypeLCD=TGraphLCD then begin tInterfaceType:=T8bitInterface; OutCmd(cDisplayOn); bmp:=TBitmap.create; bmp.LoadFromFile('logo.bmp'); end; end; procedure OutString2x16(Line1, Line2: string); var buf: array [0..39] of char; i: dword; begin ZeroMemory(@buf, 40); CopyMemory(@buf[0], @Line1[1], Length(Line1)); for i:=0 to 39 do if buf[i]=#0 then buf[i]:=#32; for i:=0 to 39 do begin OutData(byte(buf[i])); sleep(1); end; ZeroMemory(@buf, 40); CopyMemory(@buf[0], @Line2[1], Length(Line2)); for i:=0 to 39 do if buf[i]=#0 then buf[i]:=#32; for i:=0 to 39 do begin OutData(byte(buf[i])); sleep(1); end; end; procedure DefineChar(); // не дописана, дефайнит тока один символ из 8 var i, c: dword; b: byte; begin for i:=0 to 7 do begin OutCmd(cSetCGRAMaddress or i); sleep(1); b:=0; for c:=0 to 4 do begin if char1[i, 4-c]=1 then b:=b or (1 shl c); end; OutData(b); sleep(1); end; end; end.
В журнале »Радиохобби» (http://radiohobby.lcd.net) №5 за октябрь 2008 в статье Микроконтроллерное управление звуком описано применение, тестирование, программирование и все такое для дисплея от телефона Siemens S65 - LPH88 (132x176, 65 000 цветов).
RamMerLabs кстати вакуумно-люминесцентные символьные круто смотрятся правда фиг найдёшь, да и дорогие вот с какого то сайта
кстати если данная тема интересна могу небольшую статейку для васма забацать о пайке и кодинге (delphi+masm) дисплеев.