工作需要選擇一款液晶,看到北京集粹電子設備制造有限公司的O12864-12C型液晶尺寸比較適合,于是就用手頭的DSP-LF2407A板編程序看效果,調(diào)試后,效果圖如下(圖1):  圖1 接線圖如下(圖2):  圖2 源程序如下: ;主程序-----------LCD.ASM .title "LCD.ASM" .include "F2407REGS.H" ;引用頭部文件 .def _c_int0 s_data .usect ".data0", 1 ;send data temp .usect ".data0", 1 ;臨時RAM acc_H .usect ".data0", 1 ;臨時保存ACC.H acc_L .usect ".data0", 1 ;臨時保存ACC.L zkadr .usect ".data0", 1 ;漢字庫地址 wht_blk .usect ".data0", 1 ;清屏效果字 ;宏定義 ;SDL-----IOPE1 SDL_L .macro ldp #DP_PF2 lacl PEDATDIR and #0fffdh sacl PEDATDIR .endm SDL_H .macro ldp #DP_PF2 lacl PEDATDIR or #00002h sacl PEDATDIR .endm ;SCL------IOPE2 SCL_L .macro ldp #DP_PF2 lacl PEDATDIR and #0fffbh sacl PEDATDIR .endm SCL_H .macro ldp #DP_PF2 lacl PEDATDIR or #00004h sacl PEDATDIR .endm ;A0_L------IOPE3 A0_L .macro ldp #DP_PF2 lacl PEDATDIR and #0fff7h sacl PEDATDIR .endm A0_H .macro ldp #DP_PF2 lacl PEDATDIR or #00008h sacl PEDATDIR .endm ;RES_L------IOPE4 RES_L .macro ldp #DP_PF2 lacl PEDATDIR and #0ffefh sacl PEDATDIR .endm RES_H .macro ldp #DP_PF2 lacl PEDATDIR or #00010h sacl PEDATDIR .endm ;CS_L------IOPE4 CS_L .macro ldp #DP_PF2 lacl PEDATDIR and #0ffdfh sacl PEDATDIR .endm CS_H .macro ldp #DP_PF2 lacl PEDATDIR or #00020h sacl PEDATDIR .endm ;DELAY DELY .macro n rpt #n nop .endm ;========================================================== .text _c_int0: nop call Init_DSP call Init_LCD loop: ldp #DP_B02 splk #0ffh, wht_blk call Clr_LCD ;黑色清屏 lar ar4, #01h call Delay ldp #DP_B02 splk #000h, wht_blk call Clr_LCD ;白色清屏 lar ar4, #01h call Delay ;延時 ldp #DP_B02 splk #XM, zkadr call Display ;顯示熊貓圖片 lar ar4, #40h call Delay ;延時 ldp #DP_B02 splk #PIG, zkadr call Display ;顯示小豬圖片 lar ar4, #40h ;延時 call Delay b loop ;========================================================== ;---------------------------------------------------------- ; function: Init DSP DSP初始化子程序 ; input: ------ ; output: ------ ; usege: acc ;---------------------------------------------------------- Init_DSP: setc intm clrc sxm clrc ovm clrc cnf ;B0 被配置為數(shù)據(jù)存儲空間 ldp #DP_PF1 splk #85feh, SCSR1 splk #0e8h, WDCR;不使能WDT ldp #0 splk #0000h, IMR ;不使能 splk #0ffffh, IFR ;清全部中斷標志 ldp #DP_PF2 splk #0ff00h, MCRB lacl MCRC and #0ff00h ;IOPE口配置為一般I/O功能 sacl MCRC lacl PEDATDIR or #0ff00h ;IOPE 設置為輸出方式 sacl PEDATDIR ret ;---------------------------------------------------------- ; function: Clr_LCD 液晶清屏(RAM)子程序 ; input: wht_blk ; output: LCD ; usege: acc,ar4,ar5,ar6,ar7 ;---------------------------------------------------------- Clr_LCD: lar ar4, #7 lar ar6, #0afh cl_lp: mar *, ar6 adrk #1 ldp #DP_B02 sar ar6, s_data call Wr_comd ldp #DP_B02 splk #010h, s_data call Wr_comd ldp #DP_B02 splk #000h, s_data call Wr_comd lar ar5, #127 cl_lp0: ldp #DP_B02 lacl wht_blk sacl s_data call Wr_data mar *, ar5 banz cl_lp0 mar *, ar4 banz cl_lp ret ;---------------------------------------------------------- ; function: display LCD 液晶顯示子程序 ; input: zkadr ; output: LCD ; usege: acc,ar4,ar5,ar6,ar7 ;---------------------------------------------------------- Display: lar ar4, #7 lar ar6, #0afh dp_lp: mar *, ar6 adrk #1 ldp #DP_B02 sar ar6, s_data call Wr_comd ldp #DP_B02 splk #010h, s_data call Wr_comd ldp #DP_B02 splk #000h, s_data call Wr_comd ldp #DP_B02 lacl zkadr ;送字庫首地址 lar ar5, #127 ;128列 dp_lp0: ldp #DP_B02 tblr s_data sacl acc_L ;暫存acc.L call Wr_data ldp #DP_B02 lacl acc_L ;恢復acc.L add #1 ;下一列 mar *, ar5 banz dp_lp0 ldp #DP_B02 lacl zkadr add #128 ;下一頁 sacl zkadr ;暫存下一頁地址 mar *, ar4 banz dp_lp ret ;---------------------------------------------------------- ; function: init LCD 液晶初始化子程序 ; input: s_data ; output: LCD ; usege: acc,ar7 ;---------------------------------------------------------- Init_LCD: RES_L DELY 200 RES_H DELY 100 CS_H DELY 100 ldp #DP_B02 splk #0afh, s_data call Wr_comd ;ON display ldp #DP_B02 splk #40h, s_data call Wr_comd ;star display ldp #DP_B02 splk #0a0h, s_data call Wr_comd ;ADC normal ldp #DP_B02 splk #0a6h, s_data call Wr_comd ; ldp #DP_B02 splk #0a4h, s_data call Wr_comd ;clear ldp #DP_B02 splk #0a2h, s_data call Wr_comd ;1/9BIAS ldp #DP_B02 splk #0c8h, s_data call Wr_comd ;direction ldp #DP_B02 splk #02fh, s_data call Wr_comd ;power control ldp #DP_B02 splk #024h, s_data call Wr_comd ;resister ratio ldp #DP_B02 splk #081h, s_data call Wr_comd ;volum mode set ldp #DP_B02 splk #024h, s_data call Wr_comd ;resister ratio ret ;---------------------------------------------------------- ; function: write command 寫命令字子程序 ; input: s_data ; output: LCD ; usege: acc,ar7 ;---------------------------------------------------------- Wr_comd: CS_L DELY 8 A0_L DELY 8 ldp #DP_B02 lacc s_data, 16 call Data_out DELY 8 CS_H ret ;---------------------------------------------------------- ; function: write data 寫數(shù)據(jù)字子程序 ; input: s_data ; output: LCD ; usege: acc,ar7 ;---------------------------------------------------------- Wr_data: CS_L DELY 8 A0_H ldp #DP_B02 lacc s_data, 16 call Data_out DELY 8 CS_H ret ;---------------------------------------------------------- ; function: data out 基本數(shù)據(jù)輸出實現(xiàn) ; input: acc.H ; output: LCD ; usege: acc,ar7 ;---------------------------------------------------------- Data_out: lar ar7, #07h rpt #7 sfl ldp #DP_B02 sach acc_H dt_lp: SCL_L DELY 8 ldp #DP_B02 zalr acc_H sfl sach acc_H bcnd dt_0, NC SDL_H b dt_jp dt_0: SDL_L dt_jp: DELY 8 SCL_H DELY 8 mar *, ar7 banz dt_lp ret ;---------------------------------------------------------- ; function: Delay 延時 ; input: ar4 ; output: --- ; usege: ar4,ar0 ;---------------------------------------------------------- Delay: nop dy_lp: mar *, ar0 lar ar0, #0ffffh dy_lp0: nop banz dy_lp0 mar *, ar4 banz dy_lp ret ;字庫部分 ;字庫提。PCtoLCD2002完美版 模式:圖形 選項:陰碼 逆向 列行式 PIG: ;小豬圖庫 .byte 0C0H,0C0H,0E0H,0E0H,0E0H,0C0H,080H,000H,------ ------------- XM: ;熊貓圖庫 .byte 000H,000H,000H,000H,000H,000H,000H,000H,000H,---- -------------- .end |