在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 4633|回复: 5

LCD程序运行错误

[复制链接]
发表于 2006-8-16 21:09:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我的lcd程序在keil下调时的时候看p0口的输出是正确的
但是用proteus方针的时候看p0口状态就是全1、全0两个状态来回切换。
小弟刚学单片机
哪位大哥能帮忙看一下。
先谢谢啦!
程序 如下:

en        equ        p3.0
rw        equ        p3.1
rs        equ        p3.2
lcd     equ        p0
;=====================================================

                org        0

initialize:       
                mov        a,#00111000b                ;设定为8bit,2行,5X7字型
                call        wr_inst
                mov        a,#00001000b                ;关闭显示屏
                call        wr_inst       
                mov        a,#00000001b                ;清除显示屏
                call        wr_inst
                mov        a,#00001111b                ;开启显示屏
                call    wr_inst
                mov        a,#00000110b                ;设定ac+1
                call        wr_inst
                ;==================================================
loop:                mov        a,#10000000b                ;设定第一行起始地址
                call        wr_inst
                mov        dptr,#line1                        ;指向第一行显示数据
                mov        r0,#16
                call        wr_string                        ;显示第一行
                call         delay2                                 ;延迟2s
                ;==================================================
                mov        a,#11000000b                ;设定第二行显示地址
                call        wr_inst
                mov        dptr,#line2
                mov        r0,#16
                call        wr_string
                call        delay2
                ;=================================================
                mov        a,#10000000b                ;设定第一行显示地址
                call        wr_inst
                mov        dptr,#line3
                mov        r0,#16
                call        wr_string
                call        delay2
                ;=================================================
                mov        a,#11000000b                ;设定第二行显示地址
                call        wr_inst
                mov        dptr,#line4
                mov        r0,#16
                call        wr_string
                call        delay2
                ;=================================================
wr_inst:
                        call        check_bf
                        clr        rs
                        clr        rw
                        setb        en
                        mov        lcd,a
                        clr        en
                        ret
                        ;===============================================
check_bf:        push acc
busy:               
                clr        rs
                setb        rw
                setb        en
                mov        a,lcd
                clr        en
                jb        acc.7,busy
                call        delay
                pop        acc
                ret
                ;=============================================
wr_string:        mov        r1,#0
next:                        mov        a,r1
                        movc        a,@a+dptr
                        call        wr_data
                        inc        r1
                        djnz        r0,next
                        ret
                ;==============================================
wr_data:                call        check_bf
                        setb        rs
                        clr        rw
                        setb        en
                        mov        lcd,a
                        clr        en
                        ret
                ;=================================================
delay:                mov        r6,#15
d1:                mov        r7,#200
                djnz        r7,$
                djnz        r6,d1
                ret
                ;=================================================

delay2:                mov        r5,#20
d3:                mov        r6,#200
d2:                mov        r7,#250
                djnz        r7,$
                djnz        r6,d2
                djnz        r5,d3
                ret
                ;================================================


line1:                db 'my_first_lcd'
line2:                db 'lcd_test program'
line3:                db 'TAIPEI,TAIWAN'
line4:                db 'www.taantech.com'
;==============================================
end
lcd_show.JPG
发表于 2006-9-29 11:13:58 | 显示全部楼层
line1:                db 'my_first_lcd'
line2:                db 'lcd_test program'
line3:                db 'TAIPEI,TAIWAN'
line4:                db 'www.taantech.com'

你这些有没有译码啊?看看lcd的资料,对照着译码过来啊!!
发表于 2006-9-29 11:21:23 | 显示全部楼层
可能是硬件问题,lcd的复位脚是否悬空了,你的原理图看不太清楚

[ 本帖最后由 keil51 于 2006-9-29 11:33 编辑 ]
发表于 2006-10-11 20:53:57 | 显示全部楼层
请问lcd的复位脚该怎么接啊
是不是象单片机那样接一个上电复位的啊
发表于 2006-10-12 08:39:38 | 显示全部楼层
也可以象单片机那样接,但不能悬空,必须接
发表于 2006-10-13 21:57:31 | 显示全部楼层
晕~.ASM.....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-28 17:27 , Processed in 0.030036 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表