当前位置:文档之家› LCD12864显示程序

LCD12864显示程序

;实验目的:熟悉12864LCD的使用;12864LCD带中文字库;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“0975”,公司传真“6”;硬件设置:;关断所有拨码开关。

#include<>;__CONFIG_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_H S_OSC;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define 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 ;页地址LCD_Y EQU 31H ;Y地址COUNT EQU 32H ;循环计数用COUNT1 EQU 33H ;循环计数用COUNT2 EQU 34H ;循环计数用POINT EQU 35H ;查表偏移地址POINT1 EQU 36H ;查表偏移地址POINT2 EQU 37H ;查表偏移地址TEMP EQU 38H ;临时寄存器TEMP1 EQU 39H ;临时寄存器;-----------------------------------------------ORG 0000H ;复位地址NOP ;ICD需要的空指令GOTO MAIN ;跳转到主程序;**********************主程序************************MAINBANKSEL TRISACLRF TRISA ;A口输出CLRF TRISD ;D口输出BANKSEL ADCON1MOVLW 06HMOVWF ADCON1 ;A口全为数字口CLRF STATUSBCF RST ;复位LCDCALL DELAY ;延时一段时间BSF RST ;清除复位信号NOPBSF PSB ;并口通讯;**************************初始化**********************MOVLW 30H ;基本指令操作CALL SEND_IMOVLW 01H ;清除显示CALL SEND_IMOVLW 06H ;指定在写入或读取时,光标的移动方向 CALL SEND_IMOVLW 0CH ;开显示,关光标,不闪烁CALL SEND_I;***********************显示汉字************************HAN_WR2CALL CLEAR_P ;清屏HAN_WR2A ;“深圳乾龙盛电子”MOVLW LOW(TAB1A)MOVWF POINTMOVLW HIGH(TAB1A)MOVWF POINT1 ;获取表格的首地址MOVLW 0eH ;数数据字节个数(7个汉字共14字节) MOVWF COUNTMOVLW 81H ;页地址CALL SEND_ICALL QUSHUHAN_WR2B ;“WWW。

PIC16。

COM”MOVLW LOW(TAB1B)MOVWF POINTMOVLW HIGH(TAB1B)MOVWF POINT1MOVLW 10HMOVWF COUNTMOVLW 90HCALL SEND_ICALL QUSHUHAN_WR2C ;“TEL5”MOVLW LOW(TAB1C)MOVWF POINTMOVLW HIGH(TAB1C)MOVWF POINT1MOVLW 10HMOVWF COUNTMOVLW 88HCALL SEND_ICALL QUSHUHAN_WR2D ;“FAX6”MOVLW LOW(TAB1D)MOVWF POINTMOVLW HIGH(TAB1D)MOVWF POINT1MOVLW 10HMOVWF COUNTMOVLW 98HCALL SEND_ICALL QUSHUCALL DELAYCALL FLASH ;调用闪烁程序CALL CLEAR_P ;清屏GOTO HAN_WR2 ;返回重新显示;************************写准备**************************** WR_ZBMOVLW 30HCALL SEND_IMOVFW LCD_Y ;Y地址CALL SEND_IMOVFW LCD_X ;页地址CALL SEND_IRETURN;*************************闪烁程序************************* FLASHMOVLW 8H ;关显示CALL SEND_ICALL DELAY1MOVLW 0CH ;开显示CALL SEND_ICALL DELAY1CALL DELAY1MOVLW 08H ;关显示CALL SEND_ICALL DELAY1MOVLW 0CH ;开显示CALL SEND_ICALL DELAY1CALL DELAY1MOVLW 08H ;关显示CALL SEND_ICALL DELAY1MOVLW 0CH ;开显示CALL SEND_ICALL DELAY1CALL DELAY1RETURN;***********************清屏******************************* CLEAR_PMOVLW 1H ;清除显示CALL SEND_IRETURN;***********************取数显示程序*********************** QUSHUCLRF TEMP ;偏移地址清0QUSHU1MOVFW TEMPADDWF POINT,0 ;求偏移地址MOVWF POINT2CALL TAB1 ;查表CALL SEND_D ;送LCD显示INCF TEMP,1 ;偏移地址加1,查找下一个数据 CALL DELAYDECFSZ COUNT,1GOTO QUSHU1RETURN;************************送数据到LCD***********************;写数据子程序;RS=1,RW=0,E=高脉冲,D0-D7=数据;**********************************************************SEND_DMOVWF TEMP1 ;暂存数据CALL CHK_BUSY ;判断总线是否忙BSF RSBCF RWMOVFW TEMP1MOVWF PORTD ;送出数据BSF ENOPNOPBCF ERETURN;************************送命令到LCD*********************** ;写指令子程序;RS=0,RW=0,E=高脉冲,D0-D7=指令码;********************************************************** SEND_IMOVWF TEMP1 ;暂存命令CALL CHK_BUSY ;判断总线是否忙BCF RSBCF RWMOVFW TEMP1MOVWF PORTD ;送命令BSF ENOPNOPBCF ERETURN;************************判断总线是否忙******************** ;测忙碌子程序;RS=0,RW=1,E=H,D0-D7=状态字;********************************************************** CHK_BUSYBANKSEL TRISDMOVLW 0FFHMOVWF TRISD ;D口设置为输入CLRF STATUSMOVLW 0FFHMOVWF PORTDBCF RSBSF RWCHECK_BUSY_1NOPNOPNOPBSF ENOPNOPNOPBTFSS PORTD,7 ;D7为高表示总线忙,为低表示总线空闲 GOTO $+6NOPNOPNOPBCF EGOTO CHECK_BUSY_1BCF EBANKSEL TRISDCLRF TRISD ;恢复D口为输出CLRF STATUSRETURN;***************************延时程序***************************DELAYMOVLW 0afHMOVWF 20HMOVLW 0ffhMOVWF 21HDECFSZ 21H,1GOTO $-1DECFSZ 20H,1GOTO $-5RETURN;***************************延时程序1**************************;显示闪烁用DELAY1MOVLW 05HMOVWF 22HCALL DELAYDECFSZ 22H,1GOTO $-2RETURN;***************************数据表格**************************TAB1MOVFW POINT1MOVWF PCLATHMOVFW POINT2MOVWF PCLTAB1Adt 0C9,0EE ;深dt 0DB,0DA ;圳dt 0C7,0AC ;乾dt 0C1,0FA ;龙dt 0CA,0A2 ;盛dt 0B5,0E7 ;电dt 0D7,0D3 ;子TAB1B ; dt ' ', ' ', 'W', 'W', 'W', '.', 'P', 'I', 'C', '1','6', '.', 'C', 'O', 'M', ' 'TAB1C ;TEL5dt 'T', 'E', 'L' ,'0' ,'7', '5' ,'5','-', '2', '8','1', '8' ,'7','9' ,'7','5' TAB1D ;FAX6dt 'F', 'A', 'X', '0', '7', '5', '5', '-','2', '8','1', '8', '7', '9', '7', '6';***************************源程序结束************************end。

相关主题