淘宝店
Google
      
发新话题
打印

点亮LM7222SGLU液晶屏

本主题由 瑞新 于 2008-1-26 22:46 设置高亮

点亮LM7222SGLU液晶屏

收到站长赠送的LM7222SGLU液晶屏(驱动芯片为T7932和T7933,分辨率150X32),为不辜负站长美意,研究了一下,用MEGA16驱动点亮。程序整理后上传,与大家分享。








上位机程序界面
附件: 您所在的用户组无法下载或查看附件

TOP

针脚定义

针脚定义
1.- nc
2.- vou Contrast
3.- RST reset
4.- CS3 Chip select, columns 101-150
5.- CS2 Chip select, columns 51-100
6.- CS1 Chip select, columns 1-50
7.- VLED Connected to VDD
8.- D7
9.- D6
10.- D5
11.- D4
12.- D3
13.- D2
14.- D1
15.- D0
16.- VDD Logic Power Supply 5V
17.- D/I
18.- /RW(RD)
19.- /WR--------E
20.- GND

T7932数据手册

T7933数据手册
附件: 您所在的用户组无法下载或查看附件

TOP

BASCOM源码

'BASCOM-AVR 1.11.9.0编译通过
'子程序:写地址及命令putaddress , 写显示字节putdata,读显示字节readdata,读状态字节readstatus,画点pointset

$regfile = "m16def.dat"                                     ' specify the used micro
$crystal = 7372800
$baud = 115200                                              ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

'Fuse Data  H:DB  L:3F


Config Portb = Output
Config Portc = Output
Config Portd = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Pwm1a = 128

'(
Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.4 , Rs = Porta.5
'Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
Cursor Off Noblink
')

Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128

Enable Interrupts

E Alias Portb.0
Rd Alias Portb.1
Di Alias Portb.2
Cs1 Alias Portb.3
Cs2 Alias Portb.4
Cs3 Alias Portb.5
Rst Alias Portb.6

Outdata Alias Portc
Getdata Alias Pinc

'(
80 / 68 = L : 68.series Mpu
本LCD已固定设置为68模式

D / I = H : Data Db0 To Db7 Is Display Data.
D / I = L : Data Db0 To Db7 Is Instruction Data.

E R / W = L Write Data : Data Of Db0 To Db7 Latch To The Input Register At The Falling Edge Of E.
E R / W = H Read Data : Data Of Db0 To Db7 Output To Mpu When E = H

Rd R / W = H : Data Output To Mpu When E = H And Cs2 , Cs3 = H.
Rd R / W = L : The Input Register Can Accept Data When Cs2 , Cs3 = H Or Cs1 = H.

Rst = L Sets Display Off , And Sets Mode To Y.address Counter.
Maintains This State Until Changed By Another Command.
')


Declare Function Readstatus() As Byte
Declare Function Readdata() As Byte
Declare Sub Putdata(byval Od As Byte )
Declare Sub Putaddress(byval Ad As Byte )
Declare Sub Clslcd()
Declare Sub Pointset(byval X As Byte , Byval Y As Byte , Byval Color As Byte )


Dim S As String * 16
Dim Bitstring As String * 1
Dim Bytestring As String * 2
Dim Scrindex As Byte
Dim Datatype As Byte

Dim Gd As Byte

Dim Screen As Byte , Page As Byte , Py As Byte , Dispdata As Byte , Address As Byte

Dim I As Integer , J As Integer
Dim Sgle As Single
Dim Angle As Single
Dim Cx As Byte , Cy As Byte

Rst = 0
Cs1 = 1
Cs2 = 1
Cs3 = 1


Waitms 1
Rst = 1

'display on  '00111001
'display off '00111000
Call Putaddress(&B00111001)

'(
0000111110 Start Page 0 : See Fig. 3.a
0001111110 Start Page 1 : See Fig. 3.b
0010111110 Start Page 2 : See Fig. 3.c
0011111110 Start Page 3 : See Fig. 3.d
')
Call Putaddress(&B00111110)


'00111011 Up mode
'00111010 Down Mode
Call Putaddress(&B00111011)


'The Receive String define

'XDHH#
'X-Data Type ,0-instruction data.  1-display data.  7-CLS
'D-Chip select     1,2,3
'HH-Data

'Cls
Call Clslcd

'Circle
For I = 0 To 359
   Sgle = I / 2
   Sgle = Sgle * 360
   Sgle = Sgle / 3.1416
   Angle = Sin(sgle)
   Angle = Angle * 12
   J = Round(angle)
   Cx = 75 + J

   Angle = Cos(sgle)
   Angle = Angle * 12
   J = Round(angle)
   Cy = 16 + J

   Call Pointset(cx , Cy , 1)
Next

'Line
For Cy = 0 To 31
   Call Pointset(75 , Cy , 1)
Next

For Cx = 59 To 91
   Call Pointset(cx , 16 , 1)
Next



Do
   'Set The Start Page 0
   Cs1 = 1 : Cs2 = 1 : Cs3 = 1
   Call Putaddress(&B00111110)

   S = ""
   Do
      Bitstring = Waitkey()
      S = S + Bitstring
   Loop Until Bitstring = "#"

   'CS1 Chip select, columns 1-50
   'CS2 Chip select, columns 51-100
   'CS3 Chip select, columns 101-150
   Bitstring = Mid(s , 2 , 1)
   Cs1 = 0 : Cs2 = 0 : Cs3 = 0
   Select Case Bitstring
      Case "1"
         Cs1 = 1
      Case "2"
         Cs2 = 1
      Case "3"
         Cs3 = 1
   End Select

   'Data Type ,0-instruction data.  1-display data.  7-CLS
   Bitstring = Left(s , 1)
   Bytestring = Mid(s , 3 , 2)
   Gd = Hexval(bytestring)
   Select Case Bitstring
      Case "0"                                              'instruction data.
         Call Putaddress(gd)
      Case "1"                                              'display data.
         Call Putdata(gd)
      Case "7"
         Cs1 = 1 : Cs2 = 1 : Cs3 = 1
         Call Clslcd
      Case "O"
         Cs1 = 1 : Cs2 = 1 : Cs3 = 1
         Call Putaddress(&B00111001)                        'display on  '00111001
      Case "C"
         Cs1 = 1 : Cs2 = 1 : Cs3 = 1
         Call Putaddress(&B00111000)                        'display off '00111000
      Case "R"
         Cs1 = 1 : Cs2 = 1 : Cs3 = 1
         Rst = 0
      Case "S"
         Cs1 = 1 : Cs2 = 1 : Cs3 = 1
         Rst = 1
   End Select

   Print "!";

Loop


End



Sub Clslcd()
   For Gd = 0 To 49
      Call Putaddress(gd)
      Call Putdata(&B0)
   Next

   For Gd = 64 To 113
      Call Putaddress(gd)
      Call Putdata(0)
   Next

   For Gd = 128 To 177
      Call Putaddress(gd)
      Call Putdata(0)
   Next

   For Gd = 192 To 241
      Call Putaddress(gd)
      Call Putdata(0)
   Next
End Sub


Sub Putdata(byval Od As Byte )
   E = 0
   Rd = 0
   Di = 1
   nop

   E = 1
   nop

   Outdata = Od
   nop

   E = 0
   Nop
   Rd = 0
   Di = 0
End Sub


Function Readdata() As Byte
   Local Rdata As Byte

   Ddrc = 0

   E = 0
   Rd = 0
   Di = 0
   nop

   Rd = 1
   Di = 1
   nop
   E = 1
   nop

   Rdata = Getdata
   nop

   E = 0
   nop
   Rd = 0
   Di = 0

   Ddrc = &HFF

   Readdata = Rdata

End Function


Sub Putaddress(byval Ad As Byte )
   E = 0
   Rd = 0
   Di = 0
   nop

   E = 1
   nop

   Outdata = Ad
   nop

   E = 0
   nop
   Rd = 1
End Sub


Function Readstatus() As Byte
   Local Status As Byte

   Ddrc = 0

   E = 0
   Rd = 0
   Di = 0
   nop

   Rd = 1
   nop
   E = 1
   nop

   Status = Getdata
   nop

   E = 0
   nop
   Rd = 0

   Ddrc = &HFF

   Readstatus = Status

End Function



Sub Pointset(x As Byte , Y As Byte , Color As Byte )

   Cs1 = 1 : Cs2 = 1 : Cs3 = 1
   Call Putaddress(&B00111110)                              'Set The Start Page 0

   'Set Screen index
   Screen = X \ 50
   Incr Screen
   Cs1 = 0 : Cs2 = 0 : Cs3 = 0
   Select Case Screen
      Case 1
         Cs1 = 1
      Case 2
         Cs2 = 1
      Case 3
         Cs3 = 1
   End Select

   'Data Address
   Page = Y \ 8
   X = X Mod 50
   Address = Page * 64
   Address = Address + X

   'get display data
   Call Putaddress(address)
   Dispdata = Readdata()
   Dispdata = Readdata()

   'new display data
   Py = Y Mod 8
   Py = 2 ^ Py
   If Color = 1 Then
      Dispdata = Dispdata Or Py
      Else
      Py = Not Py
      Dispdata = Dispdata And Py
   End If

   'write display data
   Call Putaddress(address)
   Call Putdata(dispdata)

End Sub

[ 本帖最后由 slyt 于 2008-1-26 16:55 编辑 ]

TOP

上位机演示程序

请选择正确的COM口,请进行正确的连线。




[ 本帖最后由 slyt 于 2008-1-26 21:38 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

发新话题