论坛风格切换切换到宽版
  • 9834阅读
  • 22回复

请教:如何用74HC164驱动多个LED? [复制链接]

上一主题 下一主题
离线hackerboy
 
发帖
393
只看楼主 倒序阅读 0楼 发表于: 2005-06-06
用74hc164驱动12个led,用典型电路,程序是网上找的,我略加修改,但led显示乱码.请高手指点程序哪里有问题!
程序如下:
org 0000h
ajmp start
org 30h
start: mov sp,#6fh
mov p1,#10000000b ;用p1.0作指示
mov 6bh,#0
mov 6ah,#1
mov 69h,#2
mov 68h,#3
mov 67h,#4
mov 66h,#5
mov 65h,#6
mov 64h,#7
mov 63h,#8
mov 62h,#9
mov 61h,#10
mov 60h,#11
lcall disp
sjmp $

disp: mov scon,#00h ;初始化串行口方式0
mov r1,#12 ;显示12位数
mov r0,#6bh ;60h-6bh为显示缓冲区
mov dptr,#segtab ;字形表的入口地址
loop: mov a,@r0 ;取最高位的待显示数据
movc a,@a+dptr ;查表获取字形码
mov sbuf,a ;送串口显示
delay: jnb ti,delay ;等待发送完毕
clr ti ;清发送标志 dec r0 ;指针下移一位,准备取下一个待显示数
djnz r1,loop ;直到12个数据全显示完。
ret
segtab: ;字形表
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77fh,00h ; 0 1 2 3 4 5 6 7 8 9 a 灭
end

谢谢!!!
离线hackerboy
发帖
393
只看该作者 1楼 发表于: 2005-06-07
顶起,望高手指点!!!
离线bd5it
发帖
2355
只看该作者 2楼 发表于: 2005-06-07
是要做来电显示吧?...
离线bd5it
发帖
2355
只看该作者 3楼 发表于: 2005-06-07
程序没错,估计你目前最需要这个...


13个74hc164d驱动13个led,静态显示

小图 | 大图 图片

  • 哈罗CQ火腿社区 - 单片机与自动控制 - 请教:如何用74HC164驱动多个LED?
  • 哈罗CQ火腿社区 - 单片机与自动控制 - 请教:如何用74HC164驱动多个LED?
  • 哈罗CQ火腿社区 - 单片机与自动控制 - 请教:如何用74HC164驱动多个LED?
  • 哈罗CQ火腿社区 - 单片机与自动控制 - 请教:如何用74HC164驱动多个LED?
  • 哈罗CQ火腿社区 - 单片机与自动控制 - 请教:如何用74HC164驱动多个LED?
离线hackerboy
发帖
393
只看该作者 4楼 发表于: 2005-06-07
数据线(txd和rxd)太长会不会有干扰……?
离线bd5it
发帖
2355
只看该作者 5楼 发表于: 2005-06-08
不会,这款显示片在市场已经卖了10000片了,没有投诉。
离线bg7idw
发帖
239
只看该作者 6楼 发表于: 2005-06-08
个人认为用74ls595更好
离线hackerboy
发帖
393
只看该作者 7楼 发表于: 2005-06-09
我在重新试试去~~~
离线BA5RW
发帖
48263
只看该作者 8楼 发表于: 2005-06-10
先写一段用一个164接收MCU过来的数据,看看段码和LED引脚是否正确对应,然后再做串的测试.
离线hackerboy
发帖
393
只看该作者 9楼 发表于: 2005-06-21
感谢大家的帮助,我已经成功啦!!!
借了个仿真器,原来程序上还有点bug,更气人的是我的这本书上居然把共阴的字形码印成共阳的了,所以一直乱码,该打编者的屁屁~~~
离线hackerboy
发帖
393
只看该作者 10楼 发表于: 2005-06-21
贴个程序,供大家参考


org 0000h

sjmp start

org 0020h

start: mov sp,#6fh
mov 6bh,#0
mov 6ah,#1
mov 69h,#2
mov 68h,#3
mov 67h,#4
mov 66h,#5
mov 65h,#6
mov 64h,#7
mov 63h,#8
mov 62h,#9
mov 61h,#10
mov 60h,#11

mov scon,#00h

mov r6,#12

mov r0,#6bh

lcall trxd

sjmp $

trxd:mov dptr,#dtab

dl0:mov a,@r0

movc a,@a+dptr

mov sbuf,a

dl1:jnb ti,dl1

clr ti

dec r0

djnz r6,dl0

ret

dtab:db 10111111b,10010000b,10000000b,11111000b,100000010b,10010010b,10011001b,10110000b,10100100b,11111001b,11000000b,10111111b



end
离线BG7TBL
发帖
2965
只看该作者 11楼 发表于: 2005-06-21
'
感谢大家的帮助,我已经成功啦!!!
借了个仿真器,原来程序上还有点bug,更气人的是我的这本书上居然把共阴的字形码印成共阳的了,所以一直乱码,该打编者的屁屁~~~
'
“共阴的字形码印成共阳”
我当初用164做动态扫描,按照书上的来,可就是全显示8,后来加了个三极管消隐就行了
现在很多书都是抄来的。最近看到一本讲液晶的书,hd44780的引脚全都错了,
不知道是不是某某教授叫xx学生写的。可恶!!!!!!!
离线bd5it
发帖
2355
只看该作者 12楼 发表于: 2005-06-21
'
“...后来加了个三极管消隐就行了...
'

请问什么是加三极管消隐?
离线BA5RW
发帖
48263
只看该作者 13楼 发表于: 2005-06-21
'
请问什么是加三极管消隐?
'
就是位扫描,即该亮的管亮,不该亮的暗,扫描显示常用的。
离线hackerboy
发帖
393
只看该作者 14楼 发表于: 2005-06-21
我这个led有些特殊,双列直插的,七段,没小数点,郁闷~~~本还想用来搞个频率计的,这回没戏了!
离线Bazooka
只看该作者 15楼 发表于: 2005-06-22
大家看看这个芯片吧:bc7281a,专用键盘扫描芯片,应该比这么多的164,595合理些。
离线leifeng
发帖
174
只看该作者 16楼 发表于: 2005-07-10
595还是很好用的
离线bg2ihr
发帖
572
只看该作者 17楼 发表于: 2005-07-26
595和164的程序是很容易移植的 用595就可以不用三极管销隐了 可以用595的锁存功能 现在很多led点阵显示屏用的都是595
164在减少数据刷新率时也可不用三极管销隐
离线bg2ihr
发帖
572
只看该作者 18楼 发表于: 2005-07-26
不过静态显示电流还是很大的
离线klklkl
发帖
508
只看该作者 19楼 发表于: 2005-08-19
用窜口输出的话,程序可以更简哦~~