51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > PIC单片机 > 详细内容
PIC单片机控制lcd12864液晶显示程序
发布时间:2009/7/18  阅读次数:718  字体大小: 【】 【】【
;*************************************************************************************************
;实验目的:熟悉12864LCD的使用
;12864LCD带中文字库
;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“075528187975”,公司传真“0755-28187976”
;硬件设置:
;关断所有拨码开关。

;*************************************************************************************************

#include  

  __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_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                                                    ;跳转到主程序

;-----------------------------------------------------------------
;              主程序
;-----------------------------------------------------------------

MAIN
;       BANKSEL       TRISA
        CLRF             TRISA                                         ;A口输出
        CLRF             TRISD                                         ;D口输出
        BANKSEL       ADCON1
        MOVLW           06H
        MOVWF           ADCON1                                       ;A口全为数字口
        CLRF             STATUS

        BCF               RST                                             ;复位LCD
        CALL             DELAY                                         ;延时一段时间(134.58MS)
        BSF               RST                                             ;清除复位信号
        NOP
        BSF               PSB                                             ;高电平为选择并口通信模式

;--------------------------初始化---------------------

        MOVLW           30H                                             ;基本指令操作
        CALL             SEND_I
        MOVLW           01H                                             ;清除显示
        CALL             SEND_I
        MOVLW           06H                                             ;指定在写入或读取时,光标的移动方向
        CALL             SEND_I
        MOVLW           0CH                                           ;开显示,关光标,不闪烁
        CALL             SEND_I

;---------------------显示汉字------------------------

HAN_WR2
        CALL         CLEAR_P                                       ;清屏
HAN_WR2A                                                         ;“深圳乾龙盛电子”
        MOVLW       LOW(TAB1A)                                  
        MOVWF       POINT
        MOVLW       HIGH(TAB1A)
        MOVWF       POINT1                                         ;获取表格的首地址
        MOVLW       0eH                                               ;数数据字节个数(7个汉字共14字节)
        MOVWF       COUNT
        MOVLW       81H                                               ;页地址
        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                                                         ;“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       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                                       ;返回重新显示

;************************写准备****************************
WR_ZB
        MOVLW   30H
        CALL     SEND_I
        MOVFW   LCD_Y                                               ;Y地址
        CALL     SEND_I
        MOVFW   LCD_X                                               ;页地址
        CALL     SEND_I
        RETURN

;*************************闪烁程序*************************
FLASH
        MOVLW   8H                                                     ;关显示
        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                                                   ;关显示
        CALL     SEND_I
        CALL     DELAY1
        MOVLW   0CH                                                   ;开显示
        CALL     SEND_I
        CALL     DELAY1
        CALL     DELAY1
        RETURN
;***********************清屏*******************************
CLEAR_P
        MOVLW   1H                                                     ;清除显示
        CALL     SEND_I
        RETURN
;***********************取数显示程序***********************
QUSHU
        CLRF     TEMP                                                 ;偏移地址清0
QUSHU1
        MOVFW   TEMP
        ADDWF   POINT,0                                           ;求偏移地址
        MOVWF   POINT2
        CALL     TAB1                                                 ;查表
        CALL     SEND_D                                             ;送LCD显示
        INCF     TEMP,1                                             ;偏移地址加1,查找下一个数据
        CALL     DELAY
        DECFSZ COUNT,1
        GOTO     QUSHU1
        RETURN
;************************送数据到LCD***********************
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;**********************************************************
SEND_D
        MOVWF   TEMP1                                               ;暂存数据
        CALL     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=指令码
;---------------------------------------------------------

SEND_I
        MOVWF   TEMP1                                             ;暂存命令
        CALL     CHK_BUSY                                       ;判断总线是否忙
        BCF       RS
        BCF       RW
        MOVFW   TEMP1
        MOVWF   PORTD                                             ;送命令
        BSF       E
        NOP
        NOP
        BCF       E
        RETURN

;-----------------------判断总线是否忙--------------------
;测忙碌子程序
;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
        BSF           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
;***************************延时程序***************************
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       $-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   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

;***************************源程序结束************************

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号