| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 918 人关注过本帖
标题:请高手指教
只看楼主 加入收藏
cyh2926
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:2 
请高手指教
我做了个8位数码管,拿8个74HC164来做的,数据引脚(P0.2),时钟引脚(P0.3),
但是不懂怎么控制位的显示,就比如说我想要第一个数码管显示,第2个不显示。有那位高手能编个0~20循环变化的程序示范一下不,谢谢
搜索更多相关主题的帖子: 指教 
2008-10-18 12:49
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
收藏
得分:0 
164芯片是串转并,通常使用单片机串口(Rxd/Txd)串行发送数据给它,由它来转成并行信号驱动LED显示。

如果你采用静态显示接口的话,其实很容易实现,显示子程序如下(硬件线路必须保障):

;功能:把数据从显示缓冲区送到数码管
;入口:把要显示的数据放在一个8字节显示缓冲区Buf中。
;出口:把预置的数输出以更新原有显示
display: SETB RS0        ;保护第0组工作机存器
         PUSH ACC
         PUSH DPH
         PUSH DPL        ;保护现场
         MOV  R2,#08h    ;显示8个数码管
         MOV  R0,#Buf7   ;显示缓冲区最后一个数据的地址送入R0
L1:      MOV  A,@R0
         MOV  DPTR,#Tab
         MOVC A,@A+DPTR  ;译码
         MOV  SBUF,A     ;发送
         JNB  TI,$       ;等待发送完一帧
         CLR  TI         ;清中断标志
         DEC  RO         ;继续下个字符
         DJNZ R2,L1      ;没有传输完所有要显示字符则继续
         CLR  RS0        ;回复第0组寄存器
         POP  DPL
         POP  DPH
         POP  ACC        ;恢复现场
         RET
Tab:     ;这是你定义的0~9还有不显示(暗)的字形表

这里面我只想说,调用上面这段子程序时候,先关掉显示,等子程序返回,再开显示。
因为LED的光滞留现象和人的视觉暂留,显示看着是很平稳的。但是你要不先关闭显示,就调用这段程序,肯定感到很闪烁——164是一级一级传送数据的。

至于第二个数码管甚至后面都不显示,其实就是8字节缓冲区中后面几个对应的字形码为不显示(暗)就是了。
2008-10-18 23:08
cyh2926
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-18
收藏
得分:0 
谢谢你
呵呵  非常感谢你 .
2008-10-26 10:07
快速回复:请高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018360 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved