找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3764|回复: 2
收起左侧

PIC16F877A 1602 LCD 问题

[复制链接]
ID:51458 发表于 2013-8-9 22:40 | 显示全部楼层 |阅读模式
请问有人可以帮我看看为什么我的代码在isis中可以显示但烧到单片机后只显示一行方格啊?代码如下:
        list                p=16f877A        ; list directive to define processor
        #include        <p16f877A.inc>        ; processor specific variable definitions
       
        __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF

        COUNT EQU 24H    ;定义计数寄存器地址
        TMP1  EQU 25H    ;定义临时寄存器地址
        PORTA   EQU 5H   ;定义RA口数据寄存器地址
        PORTC   EQU 7H   ;定义RC口数据寄存器地址
        TRISA   EQU 85H  ;定义RA口方向控制寄存器地址
        TRISC   EQU 87H  ;定义RC口方向控制寄存器地址


        ORG 00H;
        NOP              ;放置一条ICD必需的空操作指令
          GOTO MAIN
        ORG  0004H
MAIN
        BSF STATUS, RP0                ;SELECT BANK1 定义RA口,RC口全部为输出
        BCF STATUS, RP1               
        MOVLW B'10000000'
        MOVWF TRISB                        ;MAKE PIN 7 INPUT ELSE INPUT
          MOVLW 07H
          MOVWF ADCON1            ;设置RA口全部为普通数字IO口
          MOVLW 00H
          MOVWF TRISA
        MOVWF TRISC
        MOVWF TRISD
        MOVLW B'00001100'                ;时器,
        MOVWF OPTION_REG        ;时器,预分频器分配给定时器0,分频比1:32;开启RB口弱上拉.
        BCF STATUS, RP0                ;SELECT BANK0
        BCF STATUS, RP1
        CLRF PORTB                        ;MAKE DEFAULT PORTB 0
        CLRF PORTD
        BSF PORTA,0

;***********************
;  LCD DISPLAY
;***********************
        CALL DELAY              ;调用廷时,刚上电LCD复位不一定有PIC快
        MOVLW 38H
        MOVWF PORTC
        CALL ENABLEA
        CALL DELAY
        MOVLW 38H
        MOVWF PORTC
        CALL ENABLEA
        CALL DELAY
        MOVLW 38H
        MOVWF PORTC
        CALL ENABLEA
        CALL DELAY
        MOVLW 38H
        MOVWF PORTC
        CALL ENABLEA
        CALL DELAY
          MOVWF 08H
        MOVWF PORTC
        CALL ENABLEA
        MOVLW 01H
          MOVWF PORTC             ;清屏MAKE COMMAND FOR LCD TO CLEAR DISPLAY
          CALL ENABLE
        CALL DELAY
          ;MOVLW B'00111000'
          ;MOVWF PORTC             ;8位2行5x7点阵 MAKE COMMANDS FOR LCD TO DISPLAY 16X2 CHARACTER 5X7 PER CHAR 8BIT DATA COMMUNICATION
          ;CALL ENABLE
        ;MOVLW 0FH               ;文字不动,光标自动右移 ENTRY MODE, SET INCREMENT MOVING CURSOR
          ;MOVWF PORTC            
          ;CALL ENABLE
        MOVLW 06H               ;文字不动,光标自动右移 ENTRY MODE, SET INCREMENT MOVING CURSOR
          MOVWF PORTC            
          CALL ENABLE
        MOVLW 0CH               ;显示器开、光标开、闪烁开 MAKE COMMAND FOR LCD TO DISPLAY ON, CURSOR OFF, BLINK OFF
          MOVWF PORTC
          CALL ENABLE
        MOVLW 80H
          MOVWF PORTC             ;显示位置
          CALL ENABLE
        MOVLW B'01001010'         ;J
        MOVWF PORTC
        BSF PORTA,1
        BCF PORTA,2
        BCF PORTA,3
        CALL DELAY_LCD
        BSF PORTA,3
         
;DISPLAY SUBROUTE
;***********************
;******************************************************
TABLE              ;取第一行的显示码
        ADDWF PCL,1    ;地址偏移量加当前PC值
        RETLW B'01001010'         ;J
        RETLW B'01000001'        ;A
        RETLW B'01000011'        ;C
        RETLW B'01001011'        ;K
        RETLW B'00111010'        ;:
        RETLW B'01001111'        ;O
        RETLW B'01001110'        ;N
        RETLW 20H                            ;空格
        RETLW 20H                            ;空格
        RETLW B'01010110'        ;V
        RETLW B'01001111'        ;O
        RETLW B'01001001'        ;I
        RETLW B'01000011'        ;C
        RETLW B'01000101'        ;E
        RETLW B'01001101'        ;M
        RETLW B'01001111'        ;O
        RETLW 00H
;-------------------- ----------------------------------
TABLE1                  ;取第二行的显示码
        ADDWF PCL,1         ;地址偏移量加当前PC值                                                        
        RETLW B'01000100'        ;D
        RETLW B'01010101'        ;U
        RETLW B'01001100'        ;L
        RETLW B'01000101'        ;E
        RETLW B'00111010'        ;:
        RETLW B'01001111'        ;O
        RETLW B'01001110'        ;N
        RETLW 20H      ;空格
        RETLW 20H      ;空格
        RETLW B'01001110'        ;N
        RETLW B'01001111'        ;O
        RETLW B'00111010'        ;:
        RETLW B'01001111'        ;O
        RETLW B'01001111'        ;O
        RETLW 20H      ;空格
        RETLW 20H      ;空格
        RETLW 00H
;*******************************************************
WRITE1
  CLRF COUNT          ;送第一行数字程序
WRITE_A
  MOVFW COUNT
  CALL TABLE
  MOVWF TMP1
  CALL WRITE3
  INCF COUNT,1
  MOVFW TMP1
  XORLW 00H
  BTFSS STATUS,Z
  GOTO WRITE_A
  RETLW 0
;*************************
WRITE2                 ;送第二行数子程序
  CLRF COUNT
WRITE2_A
  MOVFW COUNT
  CALL TABLE1
  MOVWF TMP1
  CALL WRITE3
  INCF COUNT,1
  MOVFW TMP1
  XORLW 00H
  BTFSS STATUS,Z
  GOTO WRITE2_A
  RETLW 0
;**************************
WRITE3                 ;送数据到LCD子程序
  MOVWF PORTC
  BSF PORTA,1                        ;RS_PIN#1
  BCF PORTA,2                        ;RW_PIN#2
  BCF PORTA,3                        ;E_PIN#3
  CALL DELAY
  BSF PORTA,3                        ;E_PIN#3
  RETLW 0
;*******************************************
ENABLEA
  BCF PORTA,1        ;RS_PIN#1写入控制命令的子程序
  BCF PORTA,2                 ;RW_PIN#2
  BCF PORTA,3                 ;E_PIN#3
  CALL DELAY
  BSF PORTA,3                ;E_PIN#3
  RETURN
;*******************************************
ENABLE
  BCF PORTA,1        ;RS_PIN#1写入控制命令的子程序
  BCF PORTA,2                 ;RW_PIN#2
  BCF PORTA,3                 ;E_PIN#3
  CALL DELAY_LCD
  BSF PORTA,3                ;E_PIN#3
  RETURN

DELAY_LCD
        MOVLW 0FFH
        MOVWF PORTC
        BCF PORTA,1
        BSF PORTA,2
        BCF PORTA,3
        NOP
        BSF PORTA,3
        BTFSC PORTC,7
        GOTO DELAY
        RETURN
DELAY                   ;5mS 子程序名,也是子程序入口地址
        MOVLW 01FH          ;将外层循环参数值FFH经过W
        MOVWF 20H          ;送入用作外循环变量的20H单元\
lp0
    MOVLW 0A0H          ;将内层循环参数值FFH经过W
        MOVWF 21H           ;送入用作内循环变量的21H单元
lp1
        DECFSZ 21H,1         ;变量21H内容递减,若为0跳跃
        GOTO lp1           ;跳转到LP1处
        DECFSZ 20H,1         ;变量20H内容递减,若为0跳跃
        GOTO lp0           ;跳跃到LP0处
        return                 ;返回主程序
END

回复

使用道具 举报

ID:51773 发表于 2013-8-10 00:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:51458 发表于 2013-8-10 22:08 | 显示全部楼层
麻烦解压后看一下。谢谢!

Simulation.rar

31.64 KB, 下载次数: 15, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表