原创 【小雨的成长】 小玩LCD1602

2009-4-17 16:10 1880 4 3 分类: MCU/ 嵌入式

呵呵。。。希望大家喜欢我写的这个系列帖子。!!


          先说一下,这几天没有发帖子,是因为,在弄1602.。
              现在有了一些浅薄的经验了。。就上来和大家分享下。。


我是上个星期5拿到CEPARK 51实验板的,花 了。三个小时才弄好。。弄好后试验了下。。一次成功那个兴奋啊!~
     以前玩单片机,都没有玩过LCD。。(因为我觉得好贵,资金又问题呀。。呵呵)。。
       这次有了个1602,那还能放掉。。第一天晚上弄到4点。。完全是没有一点头绪!!
把自己弄的晕晕的。。 我看那些汇编程序。。怎么就是个死循环。。  (呵呵,可能是我汇编还没达到一定高度吧!)


     在网上,找了好些资料。。感觉很乱。。。也很杂!!  但是也不是说没有一点用。。
我给新手们说一些找这样的资料的方法:大家找的时候,如1602  就搜索 1602使用说明书。。因为一般说明书都是一些生产LCD的公司的资料 这些就比较全。!!还有大家看到E文的说明书。不要一打开就关了。。其实那些才是最全的。。  想学好就硬着头皮看吧。。

   刚开始看的时候有好多名词不明白。。象IR ,DR,CGROM等等。。。看到了也就直接忽略了。。这样是不行的。。
还有就是图。。。我现在觉得。。图里的内容其实包含了很多。。只要你会分析。。这些也不要放过。

        好了。。说了一些废话。。1!!!
下面说,正题。。。小谈下我这两天的1602领悟。。
    象写程序。。首先要知道硬件。。知道那几个端口控制那个端口。。CEPARK 51实验板。就是P0口对应1602的D0~D7. RS--P1.0,RW--P1.1,E---P1.2.
       现在拿一个简单的程序分析下。  分析程序的时候将对要注意的地方详细说明。
下面的程序是在1602的第二行显示A字母!!
                 RS EQU P1.0
                 RW EQU P1.1
                 E EQU P1.2      ;以上三条指令是对端口进行基本的命名,方便阅读!  但是我觉得EQU用的不好似很对,我
                                                      看了关 于伪指令的一些资料,用BIT代替,比较好!!
                 ORG 0000H
                 MOV P0,#00000001B             ;清零  对DDRAM的内容全部清除,AC也回到00H
                 ACALL ENABLE
                 MOV P0,#00111000B             ;基本设置。8位数据线,2行显示,5x7字符显示
                ACALL ENABLE
                MOV P0,#00001111B              ;屏幕显示开,光标显示开,光标闪烁开
                ACALL ENABLE
                MOV P0,#00000110B              ;光标自左向右移动,AC自加1
                ACALL ENABLE
               MOV P0,#0C0H                        ;设置字符显示的位置。
               ACALL ENABLE
               MOV P0,01000001B                 ;要显示的内容
               SETB RS
               CLR RW                                   ;SETB RS CLR RW 两条指令,选择DR数据寄存器,写状态
               CLR E                                      
              ACALL DELAY
              SETB E                                      ;两次对E的状态进行变化,是为了将写的数据写进去。上升沿有效, 不同的
              AJMP $                                                芯片会不一样的


ENABLE: CLR RS
             CLR RW                                    ;SETB RS CLR RW 两条指令,选择IR指令寄存器,写状态,要指令有效都要
             CLR E                                             现将指令写进IR,然后IR执行。
             ACALL DELAY
            SETB E
             RET                                              ;ENABLE这个一般都是一样的,


DELAY: MOV P0,#0FFH                             ;这里延时。其实这里我也没有看的太明白。
            CLR RS                                           这里就是等待BF位让他变成不忙的状态。用一般的延时程序           
            SETB RW                                      也能达到这个 效果 ,还有BF位的变化,是机器内部自动的不
            CLR E                                               要自己来操作的。  
            NOP
            SETB E
            JB P0.7,DELAY
            RET


            END


这里只是一些基本的操作。。要想有更多的变化要自己去体验不断的改程序写程序!。。其他的一些变化其实我也说不明白。。呵呵。。。。。也许就是只可意会不可言传吧
    今天我就为了两条指令忙了一天。。。总算找到一点毛头。。!!


     大家在学习中有什么问题。。可以去我的空间提出来。。当然也可以问高手。。我们社区高手太多了。。
  这是我的空间。。 没事多去踩踩呀。。  呵呵     http://home.cepark.com/?6136 


       大家想学1602 我建议先去看看百科的的TC1602  http://wiki.cepark.com/index.php?doc-view-131
这里面对一些英文缩写将的比较详细!! 


                      现在谢谢明镜。。他对我学习1602给了很大的帮助。。。  还要感谢那些支持我的人!!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条