我把这个帖子补完吧,拙见还望大家拍砖。
1:在上面的帖子里,我是想对clk(主时钟)计数器实现1s计数,而把结果放在4*4bit的寄存器内,这样是为了实现0000-ffff的显示,举个例子0012H
我要将这个数显示,那么要位选的是第1 2 3 4位,但是第2 3 4位的段选数据是不变的,变化的是第1位的段选数据,然后就是要送上段选数据,也就是 1 和2
对应的段选信号;0 0 1 2 对应的段选。
2 :要想实现上面的想法,先要进行位选,再进行段选,我用一个分时显示的计数器来实现,什么时候位选,什么时候段选,怎样设计这个计数器呢,我们依然用
clk作为计数激励,在这儿插一句,大家想想以前用单片机怎么样实现,多半会用扫描的方式和利用人眼的暂留效应,来实现,在这儿我们也同样要效仿这样
,也就是在1秒的时间内尽可能多的重复发送 0012 的位选和段选信号,这样我们的分时计数器选择8位,然后用高两位(7--6)来实现位选和段选
位选: 00 -> 第一位 0012H 寄存器的 低四位
01 -> 第二位 0012H 寄存器的 7--4位
10 -> 第三位 0012H 寄存器的 11--8位
11 -> 第四位 0012H 寄存器的 15--12位
这样就在0--64clk内将第一位2 送出显示,统共4*64clk内将0012 全部送出一边,也可以认为其刷新周期是256clk。
3:同样我们用clk作为激励,在并行的进程内实现位选和段选的译码,译码的结果是要将来作为串行输入595的数据源,要不然怎么显示啊,对吧
4:现在数据源有了,最关键的是我怎么样在64个clk内送出位选和段选信号,补充一下595的移位和存储时序
Data is shifted on the positive-going transitions of the SHCP input. The data in each register is transferred to the
storage register on a positive-going transition of the STCP input. If both clocks are connected together, the shift
register will always be one clock pulse ahead of the storage register.
看图,两个595 的shcp和stcp的时钟是分开的,所以只要shcp的上升沿将串行数据输入,然后在给一个stcp的上升沿,将数据并行输出。
5 : 那么shcp和stcp的时钟怎么样给出,才能和上面所提出的分时显示clk配合给出数据呢,上面指出在64个clk内位选和段选的数据会更新一次,
怎么样在64个clk内送出位选和段选信号,就将是我们设计这两个时钟的关键
看图:第二个595的并行数据是通过第一个595的串行送入的,也就是说要经过16个clk,第一批送出的8为数据才能被第二个595 锁存,所以在这儿应该先送
段选的信号8个shcp clk,这样第一位送入的数据,在第九个shcp的上升沿,被第二个595锁存,再经过8个clk,所有数据已经被第二个595锁存,在后8个clk
内,我们要将位选的data送入第一个595
这样就实现了在stcp的上升沿,同时将位选和段选data送出,在剩余的时间内保持电平
shcp和stcp的时钟可有分时计数器来给出触发信号。
6:另外大家也可以将分时计数器的位数改变,或大或小,来改变刷新周期,看看效果,当然不要忘了改变触发时钟哦
好了,帖子 编辑完了
希望大家多扔砖,以改进设计思路。
谢谢
[ 本帖最后由 lixinsir 于 2009-10-30 11:56 编辑 ] |