1、实验目的:熟悉12864LCD的使用
;12864LCD带中文字库
;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“075528187975”,公司传真“0755-28187976”
;硬件设置:
;关断所有拨码开关。
#include
2、 RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE RST PORTA,0 ;复位信号 ;----------------------------------------------- LCD_X EQU 30H
3、 ;页地址 LCD_Y EQU 31H ;Y地址 COUNT EQU 32H ;循环计数用 COUNT1 EQU 33H ;循环计数用 COUNT2 EQU 34H ;循环计数用 POINT EQU 35H ;查表偏移地址 POINT1 EQU 36H ;查表偏移地址 POINT2
4、 EQU 37H ;查表偏移地址 TEMP EQU 38H ;临时寄存器 TEMP1 EQU 39H ;临时寄存器 ;----------------------------------------------- ORG 0000H ;复位地址 NOP ;ICD需要的空指令 GOTO MAIN
5、 ;跳转到主程序 ;**********************主程序************************ MAIN BANKSEL TRISA CLRF TRISA ;A口输出 CLRF TRISD ;D口输出 BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ;A口全为数字口 CLRF STATUS BCF RST
6、 ;复位LCD CALL DELAY ;延时一段时间 BSF RST ;清除复位信号 NOP BSF PSB ;并口通讯 ;**************************初始化********************** MOVLW 30H ;基本指令操作 CALL SEND_I MOVLW
7、 01H ;清除显示 CALL SEND_I MOVLW 06H ;指定在写入或读取时,光标的移动方向 CALL SEND_I MOVLW 0CH ;开显示,关光标,不闪烁 CALL SEND_I ;***********************显示汉字************************ HAN_WR2 CALL CLEAR_P ;
8、清屏 HAN_WR2A ;“深圳乾龙盛电子” MOVLW LOW(TAB1A) MOVWF POINT MOVLW HIGH(TAB1A) MOVWF POINT1 ;获取表格的首地址 MOVLW 0eH ;数数据字节个数(7个汉字共14字节) MOVWF COUNT MOVLW 81H ;页地址
9、 CALL SEND_I CALL QUSHU HAN_WR2B ;“WWW。PIC16。COM” MOVLW LOW(TAB1B) MOVWF POINT MOVLW HIGH(TAB1B) MOVWF POINT1 MOVLW 10H MOVWF COUNT MOVLW 90H CALL SEND_I CALL QUSHU HAN_WR2C
10、 ;“TEL0755-28187975” MOVLW LOW(TAB1C) MOVWF POINT MOVLW HIGH(TAB1C) MOVWF POINT1 MOVLW 10H MOVWF COUNT MOVLW 88H CALL SEND_I CALL QUSHU HAN_WR2D ;“FAX0755-28187976” MOVLW LOW(TAB1D) MOVWF POINT MOVLW
11、 HIGH(TAB1D) MOVWF POINT1 MOVLW 10H MOVWF COUNT MOVLW 98H CALL SEND_I CALL QUSHU CALL DELAY CALL FLASH ;调用闪烁程序 CALL CLEAR_P ;清屏 GOTO HAN_WR2 ;返回重新显示 ;************************写准备***
12、 WR_ZB MOVLW 30H CALL SEND_I MOVFW LCD_Y ;Y地址 CALL SEND_I MOVFW LCD_X ;页地址 CALL SEND_I RETURN ;*************************闪烁程序************************* FLASH MOVLW 8H ;关显示
13、CALL SEND_I CALL DELAY1 MOVLW 0CH ;开显示 CALL SEND_I CALL DELAY1 CALL DELAY1 MOVLW 08H ;关显示 CALL SEND_I CALL DELAY1 MOVLW 0CH ;开显示 CALL SEND_I CALL DELAY1 CALL DELAY1 MOVLW 08H
14、 ;关显示 CALL SEND_I CALL DELAY1 MOVLW 0CH ;开显示 CALL SEND_I CALL DELAY1 CALL DELAY1 RETURN ;***********************清屏******************************* CLEAR_P MOVLW 1H ;清除显示 CALL SEND_I RETURN
15、取数显示程序*********************** QUSHU CLRF TEMP ;偏移地址清0 QUSHU1 MOVFW TEMP ADDWF POINT,0 ;求偏移地址 MOVWF POINT2 CALL TAB1 ;查表 CALL SEND_D ;送LCD显示 INCF TEMP,1
16、 ;偏移地址加1,查找下一个数据 CALL DELAY DECFSZ COUNT,1 GOTO QUSHU1 RETURN ;************************送数据到LCD*********************** ;写数据子程序 ;RS=1,RW=0,E=高脉冲,D0-D7=数据 ;********************************************************** SEND_D MOVWF TEMP1 ;暂存数据 CA
17、LL CHK_BUSY ;判断总线是否忙 BSF RS BCF RW MOVFW TEMP1 MOVWF PORTD ;送出数据 BSF E NOP NOP BCF E RETURN ;************************送命令到LCD*********************** ;写指令子程序 ;RS=0,RW=0,E=高脉冲,D0-D7=指令码 ;***********************************
18、 SEND_I MOVWF TEMP1 ;暂存命令 CALL CHK_BUSY ;判断总线是否忙 BCF RS BCF RW MOVFW TEMP1 MOVWF PORTD ;送命令 BSF E NOP NOP BCF E RETURN ;************************判断总线是否忙********************
19、 ;测忙碌子程序 ;RS=0,RW=1,E=H,D0-D7=状态字 ;********************************************************** CHK_BUSY BANKSEL TRISD MOVLW 0FFH MOVWF TRISD ;D口设置为输入 CLRF STATUS MOVLW 0FFH MOVWF PORTD BCF RS BSF RW CHECK_BUSY_1 NOP NOP NOP BS
20、F E NOP NOP NOP BTFSS PORTD,7 ;D7为高表示总线忙,为低表示总线空闲 GOTO $+6 NOP NOP NOP BCF E GOTO CHECK_BUSY_1 BCF E BANKSEL TRISD CLRF TRISD ;恢复D口为输出 CLRF STATUS RETURN ;***************************延时程序******
21、 DELAY MOVLW 0afH MOVWF 20H MOVLW 0ffh MOVWF 21H DECFSZ 21H,1 GOTO $-1 DECFSZ 20H,1 GOTO $-5 RETURN ;***************************延时程序1************************** ;显示闪烁用 DELAY1 MOVLW 05H MOVWF 22H CALL DELAY DECFSZ 22H,1 GOTO
22、 $-2 RETURN ;***************************数据表格************************** TAB1 MOVFW POINT1 MOVWF PCLATH MOVFW POINT2 MOVWF PCL TAB1A dt 0C9,0EE ;深 dt 0DB,0DA ;圳 dt 0C7,0AC ;乾 dt 0C1,0FA ;龙 dt
23、 0CA,0A2 ;盛 dt 0B5,0E7 ;电 dt 0D7,0D3 ;子 TAB1B ;WWW.PIC16.COM dt ' ', ' ', 'W', 'W', 'W', '.', 'P', 'I', 'C', '1','6', '.', 'C', 'O', 'M', ' ' TAB1C ;TEL0755-28187975 dt 'T', 'E', 'L' ,'0' ,'7', '5' ,'5','-', '2', '8','1', '8' ,'7','9' ,'7','5' TAB1D ;FAX0755-28187976 dt 'F', 'A', 'X', '0', '7', '5', '5', '-','2', '8','1', '8', '7', '9', '7', '6' ;***************************源程序结束************************ end






