呵呵。。。希望大家喜欢我写的这个系列帖子。!!
先说一下,这几天没有发帖子,是因为,在弄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给了很大的帮助。。。 还要感谢那些支持我的人!!
文章评论(0条评论)
登录后参与讨论