5905|5

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

1602液晶显示程序 [复制链接]

新手写了一个用1602液晶在第二行第一位显示字母A的程序,程序可以通过编译,但是液晶上部显示,不知道什么原因?求助解答,谢谢

LIST P=16F873a           ;  告诉编译程序使用何种PIC单片机
        INCLUDE "p16f873a.inc"   ;  定义了特殊寄存器等内容的头文件
        ERRORLEVEL -224      
        __CONFIG _PWRTE_ON & _XT_OSC & _WDT_OFF   ;  配置字
 
databuf     EQU   20H
i           EQU   21H
j           EQU   22H
combuf      EQU   23H
buf         EQU   24H


;====================
; 非精确延时函数
;====================
delay
  MOVLW  32H
  MOVWF  i
D1
  MOVLW  09H
  MOVWF  j
D2
  DECFSZ  j
  GOTO   D2
  DECFSZ  i
  GOTO    D1
  RETLW   0
;====================
; 数据总线写入函数
;====================
write_bus
  CLRF STATUS
  MOVWF buf
  BTFSS buf, 0              ; 数据总线的D0位连接于单片机的RA5引脚
  GOTO L1
  BSF PORTA, 05H       
  GOTO L2
L1
  BCF PORTA, 05H
L2
  BTFSS buf, 01H            ;数据总线的D1位连接于单片机的RC0引脚
  GOTO L3
  BSF PORTC, 0         
  GOTO L4
L3
  BCF PORTC, 0
L4
  BTFSS buf, 02H            ;数据总线的D2位连接于单片机的RB5引脚
  GOTO L5
  BSF PORTB, 05H       
  GOTO L6
L5
  BCF PORTB, 05H
L6
  BTFSS buf, 03H            ;数据总线的D3位连接于单片机的RB4引脚
  GOTO L7
  BSF PORTB, 04H      
  GOTO L8
L7
  BCF PORTB, 04H
L8
  BTFSS buf, 04H            ;数据总线的D4位连接于单片机的RB3引脚
  GOTO L9
  BSF PORTB, 03H        
  GOTO L10
L9
  BCF PORTB, 03H
L10
  BTFSS buf, 05H            ;数据总线的D5位连接于单片机的RB2引脚
  GOTO L11
  BSF PORTB, 02H        
  GOTO L12
L11
  BCF PORTB, 02H
L12
  BTFSS buf, 06H            ;数据总线的D6位连接于单片机的RB1引脚
  GOTO L13
  BSF PORTB, 01H        
  GOTO L14
L13
  BCF PORTB, 01H
L14
  BTFSS buf, 07H            ;数据总线的D7位连接于单片机的RB0引脚
  GOTO L15
  BSF PORTB, 0          
L15
  BCF PORTB, 0
  RETURN
;====================
; 1602忙检测函数
;====================
lcd_wait_busy
  BSF STATUS, 0x5 
  BCF STATUS, 0x6 
  BSF TRISB, 0 
  BCF STATUS, 0x5
  BCF PORTA, 0x3
  BSF PORTA, 0x2
  BSF PORTA, 0x1
L16
  BTFSC PORTB, 0
  GOTO L16
  BCF PORTA, 0x1
  BSF STATUS, 0x5
  BCF TRISB, 0
  BCF STATUS, 0x5
  RETURN
;====================
; 1602写命令函数
;====================
lcd_write_com
  CLRF STATUS 
  MOVWF combuf
  BCF PORTA, 0x3 
  BCF PORTA, 0x2
  MOVF  combuf,W
  CALL write_bus
  BSF PORTA, 0x1
  NOP
  BCF PORTA, 0x1
  RETURN 
;=============================
; 1602写命令函数(带忙检测)
;=============================
lcd_write_com_busy
  CLRF STATUS
  CALL lcd_wait_busy
  CALL lcd_write_com
;=============================
; 1602写数据函数(带忙检测)
;=============================
lcd_write_data
  CLRF STATUS
  CALL lcd_wait_busy
  MOVWF databuf
  BSF PORTA, 0x3
  BCF PORTA, 0x2
  MOVF databuf, W
  CALL write_bus
  BSF PORTA, 0x1
  NOP
  BCF PORTA, 0x1
  RETURN
;=============================
; 1602初始化函数
;=============================
lcdreset
  CALL delay
  CALL delay
  CALL delay
  MOVLW 0x38
  CALL lcd_write_com
  CALL delay
  MOVLW 0x38
  CALL lcd_write_com
  CALL delay
  MOVLW 0x38
  CALL lcd_write_com
  MOVLW 0x38                   ;显示模式设置  8位数据,双行,5*7字符点阵
  CALL lcd_write_com_busy
  MOVLW 0x8                    ;显示开关控制  显示功能关,无光标
  CALL lcd_write_com_busy
  MOVLW 0x1                    ;清屏指令
  CALL lcd_write_com_busy
  MOVLW 0x6                    ;设置输入模式  写入新的数据后,光标右移,显示屏不移动
  CALL lcd_write_com_busy
  MOVLW 0xc                    ;显示开关控制 显示功能开,无光标
  CALL lcd_write_com_busy
;=============================
; 初始化函数
;=============================
init
  CLRWDT
  MOVLW 0xe                
  BSF STATUS, 0x5
  BCF STATUS, 0x6
  MOVWF ADCON0      ;RA0为模拟量输入口,其他为数字量
  MOVLW 0x80        ;关闭RB口电平变化功能
  OPTION
  MOVLW 0xd1        ;RA1,RA2,RA3,RA5置为输出,其他未用设置为输入
  MOVWF TRISA
  MOVLW 0xc0        ;RB0-RB5置为输出,其他为未用设置为输入
  MOVWF TRISB
  MOVLW 0xfe
  MOVWF TRISC       ;RC0为输出,其他未用设置为输入
  BCF INTCON, 0x3   ;RB口电平变化中断禁止
  BCF STATUS, 0x5
  RETURN
;=========================
; 主函数
;=========================
main
  CALL init
  CALL lcdreset
  MOVLW  0C0H
  CALL   lcd_write_com_busy
  MOVLW  41H
  CALL   lcd_write_data  
  END


图片点击可在新窗口打开查看此主题相关图片如下电路图.png:
图片点击可在新窗口打开查看

最新回复

谢谢楼主  详情 回复 发表于 2011-12-31 08:36
点赞 关注
 

回复
举报

6066

帖子

92

TA的资源

裸片初长成(初级)

沙发
 

回复 楼主 sidneyysk 的帖子

图片打不开。。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

电路图

电路图在附件

电路图.doc

72.5 KB, 下载次数: 7

 
 
 

回复

1181

帖子

0

TA的资源

五彩晶圆(初级)

4
 
看看数据手册,是不是地址写错了。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 zhangdaoyu 的帖子

液晶显示地址没错啊
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

6
 
谢谢楼主
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表