2707|5

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

??查表 [复制链接]

ORG 0000H
        RS EQU P2.1;确定具体硬件的连接方式
        RW EQU P2.0;确定具体硬件的连接方式
        E  EQU P2.2;确定具体硬件的连接方式

        AJMP    START

        ORG     0030H
START:  MOV     SP,#30H

MAIN:   LCALL   DELAY        ;延时一段时间
        
        MOV     P0,#01H       ;写指令01H,清屏
        LCALL   ENABLE
        
        MOV     P0,#38H      ;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口
        LCALL   ENABLE
        
        MOV     P0,#0FH      ;写指令0FH,显示ON,光标ON,闪烁ON
        LCALL   ENABLE
        
        MOV     P0,#06H      ;写指令06H,光标输入方式增量移位
        LCALL   ENABLE
        
   L1:      
        MOV     P0,#80H      ;第一行起始字符地址
        LCALL   ENABLE
        
        MOV     DPTR,#TABLE1 ;第一行显示字符表头地址
        LCALL   DISP         ;显示第一行数据
        
        ;MOV     P0,#0C0H     ;第二行起始字符地址
       ; LCALL   ENABLE
        
       ; MOV     DPTR,#TABLE2 ;第二行显示字符表头地址
       ; LCALL   DISP         ;显示第二行数据
        
        AJMP    $         ;返回主程序循环
;-----------------
ENABLE:
        CLR     RS           ;写指令子程序(请参照1602LCD使用说明书)
        CLR     RW
        CLR     E
        LCALL   DELAY
        SETB    E
        RET
;-----------------
DISP:   MOV     R1,#0FH       ;准备显示一行16个字符
LOOP:   MOV     A,#00H       ;将ACC清零
        MOVC    A,@A+DPTR    ;查表取得要显示的数据

        LCALL   DISP1        ;写入一个数据
        INC     DPTR         ;数据表指针加1,准备取下一个数据
        DJNZ R1,LOOP          ;一行没有显示完就继续
        RET

;-----------------
DISP1:
        SETB    RS           ;写数据时序
        CLR     RW
        CLR     E
        LCALL   DELAY
        SETB    E
        NOP
        MOV     P0,A         ;写1字节数据到显示端口
        NOP
        CLR     E
        RET
   ;-----------------
DELAY:     MOV p0,#0FFH ;;判断液晶显示器是否忙的子程序
           CLR RS
           SETB RW
           CLR E
           NOP
           SETB E
           JB p0.7,DELAY;;如果p0.7为高电平表示忙就循环等待
           RET

TABLE1: DB ' abcdefghijklmn '
TABLE2: DB ' opqrstuvwxyz   '

       END

运行到查表指令时它会没运行完就跳到下一条指令,如可能查表就到 a ,但下一此它却查到了 o 去了,为什么,程序是不是有问题

最新回复

P0的输出有问题,你全加上拉看看... 看你那程序还有点像是时序没有对上,你再猜猜看  详情 回复 发表于 2007-6-11 20:13
点赞 关注(1)

回复
举报

46

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你哪查表了?

你再看一下你查表的思路和结构...
 
 

回复

97

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
DISP:   MOV     R1,#0FH       ;准备显示一行16个字符
        MOV     R7,#00H       ;将ACC清零
LOOP:   MOV     A,R7
        MOVC    A,@A+DPTR    ;查表取得要显示的数据
        LCALL   DISP1        ;写入一个数据
        INC     R7         ;数据表指针加1,准备取下一个数据
        DJNZ R1,LOOP          ;一行没有显示完就继续
        RET


是这样么,还是不能执行
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
这次表查得有点像了...

你看看你的液晶的接口了,嘿嘿

到底能不能正常的显示,

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
我单个给字符的时候是能显示的
程序改成这样后单步执行到   
     MOV     P0,A         ;写1字节数据到显示端口
这条语句就走不动了,我的程序是不是还是有问题呢

还有就是我单个给字符只有左半边能显示,就是80-87,C0-C7能显示,而88-8F,C8-CF不能显示出来
是我的液晶屏坏了么
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
P0的输出有问题,你全加上拉看看...

看你那程序还有点像是时序没有对上,你再猜猜看
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表