|
PCD8544 LCD控制器是用在NOKIA3310 和NOKIA 5110 LCD里,我试过这个LCD在点阵LCD里算是最容易用。这个控制器输入电压是3.3V,电流很小只有几百uA。如果用5V的系统可以使用2个1N4148来降压或者用LM317还是其他LDO来得到3.3V都可以,在5V的I/O里可以用3K~4.7K的电阻来串联降压给LCD。可以参考一下的网页:
http://www.kmitl.ac.th/~kswichit/8051sbc/8051SBC1/scope/CaptureWiz019.jpg
我是用模块的C1 10uF已经在PCB板接好了。在8051系统里,可以用弱上拉(weakpull up)这个弱上拉都限制电流在100-300uA里,就可以省去串联电阻。
LCD输入除了3.3V和GND,讯号的有
/RES - 复位当输入接0 或GND时控制器进行复位(RESET)。开机时需要复位一下大约几百mS。
/SCE - 是Chip Enable, 可以永久接0或GND。当接1时PCD8544忽略所有的输入讯号。
D/C - Data/Command 是告诉PCD8544 输入的数据是指令还是显示数据,当在设计PCD8544时D/C应该是0。
SDIN - 串口数据输入。
SCLK -输入时钟,当SCLK上升沿时PCD8544就读SDIN。
开机时应该对PCD8544进行复位,把/RES为0大约几百mS再设为1。记得/SCE一定要设为0,要不然PCD8544会忽略所有的指令,/SCE可以永久设为0。然后就开始对PCD8544初期化。
一下我是实验的初期化指令所有指令一定要把D/C设定为0:
1.)在Function Set指令里 我先设定 00100,PD= 0 (唤醒控制器),V=0(向行位移动),H=1 (下一个为扩展指令)。把D/C设为0选择指令,然后送 21H 或者(00100001B)。
2.)在扩展里设定SET Vop ,LCD工作电压,这个数值可以改变显示深或浅。如果显示太浅或深可以试试改变这个数值。 1XXXXXXX ,X为0 -127也就是从10000000-11111111之内。 我实验时是用B2H 或10110010B。
3.)BIAS SYSTEM 为LCD 电压,我之设定为 13H或00010011B。
4.)返回基本指令,在SET FUNCTION里 PD=0,V=0,H=0
5.) DISPLAY CONTROL ,显示控制,00001D0E,当D,E为00时显示为空白,为10是正常显示,为01时显示全黑,为11时显示为反色,黑为白,白为黑。在这我是显示正常显示,设定为 0CH或00001100B。
设定以上的初期化PCD8544就可以用了。只要把D/C设为1,把8bits的数据送进PCD8544,就应该可以看图案。
其他的设定可以参考:
https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf
在8051里,要用软SPI可以抄一下的代码,需要改一下DC,SDIN,SCLK,要送的数据放进A里:
LCD_COM:
CLR DC ;SET COMMAND MODE
SJMP SPI_LCD
LCD_DAT:
SETB DC ;SET DATA MODE
SPI_LCD:
MOV R0,#08H
SPI_LOOP:
CLR SCLK
RLC A
MOV SDIN,C
SETB SCLK
DJNZ R0,SPI_LOOP
CLR SCLK
RET
8051初期化代码:
MOV A,#00100001B ;SET 00100PD,V,H. HORIZON,EXT COMMAND. ACALL LCD_COM
MOV A,#0B2H ;EXT COMMAND SET OPV
ACALL LCD_COM
MOV A,#13H ;SET BIAS SYSTEM
ACALL LCD_COM
MOV A,#20H ;SET BACK TO BASIC COMMAND
ACALL LCD_COM
MOV A,#00001100B ;SET D,E =10 NORMAL DISPLAY
ACALL LCD_COM
PIC SPI的代码,需要改一下,GPIO0为SCLK,GPIO1为D/C,GPIO2为SDIN,DAT需要设定在REGISTER或SRAM的地址:
LCD_COM
BCF GPIO,1
GOTO SERIAL_LCD
LCD_DAT
BSF GPIO,1
SERIAL_LCD
BCF GPIO,0
BTFSS DAT,7
BCF GPIO,2
BTFSC DAT,7
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,6
BCF GPIO,2
BTFSC DAT,6
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,5
BCF GPIO,2
BTFSC DAT,5
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,4
BCF GPIO,2
BTFSC DAT,4
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,3
BCF GPIO,2
BTFSC DAT,3
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,2
BCF GPIO,2
BTFSC DAT,2
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,1
BCF GPIO,2
BTFSC DAT,1
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
BTFSS DAT,0
BCF GPIO,2
BTFSC DAT,0
BSF GPIO,2
BSF GPIO,0
BCF GPIO,0
RETURN
用PIC的初期化代码:
MOVLW 00100001B MOVWF DAT
CALL LCD_COM
MOVLW 0xB2
MOVWF DAT
CALL LCD_COM
MOVLW 0x13
MOVWF DAT
CALL LCD_COM
MOVLW 0x20
MOVWF DAT
CALL LCD_COM
MOVLW 00001100B
MOVWF DAT
CALL LCD_COM
一下是我借用别人的照片,主角是初音,原图是一个眼睛是关着的,开眼睛的是我自己画上去的。
http://www.youtube.com/watch?v=zGecMkOlnv0
本帖最后由 sougisyou 于 17-6-2013 11:14 PM 编辑
|
|