【发布时间】:2013-04-13 11:00:10
【问题描述】:
PIC18Fxx2 的数据表
我正在使用的7segs相关数据表可以在right here获取
edit(15/4/2013): 下面的代码是 PORTD 的指令字
ldig SET b'00001000' ;for rght digit
rdig SET b'00000100' ;for left digit
代码第一次执行时TRISB、TRISD、PORTB和PORTD的指令字
CLRF TRISB ;port B as output
CLRF TRISD ;port D as output
CLRF PORTD ;clear port D not to select any digit
SETF PORTB ;set port B to off all segments
我想使用组装在 2 个七段 LED 显示器上显示两个不同的数字。我正在尝试使用下面列出的代码,但它不起作用。 注:rdig = 右面板,ldig = 左面板,disp1 代表 1,以此类推。
loop MOVFF disp1, PORTB
MOVLW rdig ;select only the left display
MOVWF PORTD ;unit to be on
MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
bra loop
输出应该是 81(在七段显示器上)没有出现任何数字。每个面板上只出现某种昏暗的灯光。但是,如果我试图在七段显示器的任一侧仅显示一个数字,则该代码有效。
loop MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
bra loop
编辑:我尝试使用TMR0N(b'00000000'指令字,tmrL = FF,tmrH = FB)为每个数字显示请求添加一个小延迟(2微秒),如下所示,右侧仅出现数字1面板。
loop MOVFF disp1, PORTB
MOVLW rdig ;select only the left display
MOVWF PORTD ;unit to be on
call delay
MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
call delay
bra loop
TMR0N 指令设置
initwrd SET 0x00
tmrH SET 0xFF
tmrL SET 0xFB
【问题讨论】:
-
您应该发明解决方案,从小块构建它们。你不应该在网上找到现成的、完整的解决方案。缺乏的不是互联网。这是...
-
@AlexeyFrunze 我不希望有人向我展示如何从头开始。到目前为止,我对 18F452 编码所学的知识做得很好。但是我整整一周都在坚持这部分,需要一些解决方案。
-
先确定具体问题怎么样?被卡住,整个星期,学校等都无关紧要。具体向我们展示您遇到的困难以及您已经尝试过的内容,即失败的想法和失败的代码。如前所述,您的问题/问题非常模糊,无法解决。改进它。
-
@AlexeyFrunze 好吧。感谢您的洞察力。
-
我相信您需要包含设备的原理图和 7 段 LED 的数据表。您也没有定义
disp1、PORTB、rdig之类的东西。如果没有所有这些信息,一个人应该如何帮助您?