I don't know if this helps you with your LCD issue, but this is what I referenced when I wrote the virtual display for the BC780XLT. I think the control code is the same for the 996 and 396. If you send the LCD<cr> command to the radio it will respond with a comma delimited dump of the LCD which you can then parse into an array with the VB split() function. You can also request individual elements of the LCD by referencing the list below. You've probably already been down this road but I thought I would throw it out there anyway.
LCD<cr>
returns LCD status lines as below
P - Priority indicator
E - Edaccs Trunk indicator
M - Motorola Trunk indicator
L - Ltr Trunk indicator
BANK + Bank indicator
LIST - List indicator
SCAN - Scan indicator
TRUNK - Trunk indicator
FDOT + Frequency Decimal indicator
N - N indicator used for NFM
DCS - DCS indicator
CTCSS - CTCSS indicator
AM - AM indicator
FM + FM indicator
WFM- WFM indicator
SRCH- Search indicator
HOLD + Hold indicator
FREQ - Frequency indicator
CHAN + Channel indicator
PRI - Pri indicator
DLY + Delay indicator
LOUT - Lockout indicator
ALPHA - Alpha indicator
RMT + Remote Control indicator
AUTO - Auto indicator
CDOT - Tone code decimal indicator
HZ - Hertz indicator
S + S indicator preceeding signal bars
KLOC - Key Lock indicator
ATT - Attenuator indicator
LINE - Record indicator
ALT - Alt indicator
DATA - Data indicator
BAR ----------------------------- Bar indicator for control channels
SMT +++++- Signal Meter Bars
BNK +--------* Banks Selected Status * = Currently scanning
CHN [ 2] Channel Displayed
FRQ [ 43. 7400] Frequency Displayed
CTC [ ] CTC code (Also displays the Trunk ID Code in Trunk Mode)
LINE 1 [ ][ ] LCD LINE 1 Alpha Tag
LINE 2 [Cordless Phones ][ ] LCD LINE 2 Alpha Tag
LCD label<cr>
parameter label = one of the above left listed labels. Example LCD ATT<cr>
returns "ATT -"<cr>
The - indicates the indicator is off and the + indicates it is on.
The item to the right of the label as shown in the above table will be returned plus the <cr>
Here is my button assembly
Parts are:
RS PCB
Multipurpose PC Board with 417 Holes - RadioShack.com
6-10k resistors 1 for each button
100 pcs 10k ohm 1/4W, 5% carbon film resistors. | eBay
1 ground to common ground bus going to arduino ground
6 4pin PCB pushbuttons
30 pcs Mini Push Button Switches For Electronic DIY - eBay (item 110627441829 end time Jun-20-11 06:16:46 PDT)
Here is a blank board if you want to copy my design
View attachment 32753
View attachment 32751
View attachment 32752
Buttons will goto arduino digital pins
13
12
11
10
9
8
Than send the commands for my radios (346xt & bc15x)
Volume High
Volume Low
Mute
Scan
Scan Up
Scan Down
Don't know if im going with the LCD yet cause i had a lot of problems when i did a software version of this.
Mike