我的微处理器是At
tiny 45 然后连了解码器MAX6954.
我的显示器是PSC23-11GWA,kingbright的,16段数码管led显示器.
这是一个解码器连了8个显示器,我想要显示的是MAXIM.IC这8个字母,但只有第一个是正确的,就是第一个显示器我想要显示的可以显示出来,后面的就会混乱。拔了重新接通后最多显示正确6个字母过。我想知道是不是我的编程写的有问题,有没有高手可以帮忙下。谢谢~
附件是所用的材料的资料。
下面的是编码。
/* Control software for dot_controller Board (Dot1) Copyright 12/2007 by Hans-Josef Ackermann */
#include <avr/io.h>
#include <stdint.h>
#include <util/delay_basic.h>
/* PORTB0 MOSI pin5
PORTB1 MISO pin6
PORTB2 SCK pin7
PORTB3 SS0 pin2
PORTB4 SS1 pin3
*/
#define set_MOSI PORTB |= _BV(PB0) /* macro to set MOSI bit*/
#define clear_MOSI PORTB &= ~_BV(PB0) /* macro to clear MOSI bit*/
#define set_SS0 PORTB |= _BV(PB3) /* macro to set SS0 bit*/
#define clear_SS0 PORTB &= ~_BV(PB3) /* macro to clear SS0 bit*/
#define set_SS1 PORTB |= _BV(PB4) /* macro to set SS1 bit*/
#define clear_SS1 PORTB &= ~_BV(PB4) /* macro to clear SS1 bit*/
#define set_SCK PORTB |= _BV(PB2) /* macro to set SCK bit*/
#define clear_SCK PORTB &= ~_BV(PB2) /* macro to clear SCK bit*/
static unsigned char Corr = 127; /* */
void Send_Bit(data16)
{
int i=15;
clear_SS0;
clear_SS1;
do
{
if (((data16 & (1<<i))>>i) == 1)
set_MOSI;
else
clear_MOSI;
set_SCK;
clear_SCK;
i=i-1;
}
while (i >= 0);
set_SS0;
set_SS1;
clear_SCK;
}
int main(void)
{
DDRB=0x1D; /* set Ports B0,B2,B3,B4 as outputs*/
set_SS0;
set_SS1;
clear_SCK;
clear_MOSI; /* bring all signals to their inactive state */
Send_Bit(0x0401);
Send_Bit(0x204D);
Send_Bit(0x2141);
Send_Bit(0x2258);
Send_Bit(0x2349);
Send_Bit(0x244D);
Send_Bit(0x252D);
Send_Bit(0x2649);
Send_Bit(0x2743);
Send_Bit(0x02FF);
while (1);
{
}
return 1;
}
-
-
Attiny 45.pdf
下载积分: 积分 -1 分
4.53 MB, 下载次数: 8, 下载积分: 积分 -1 分
-
-
MAX6954.pdf
下载积分: 积分 -1 分
334.06 KB, 下载次数: 4, 下载积分: 积分 -1 分
-
-
PSC23-11GWA.pdf
下载积分: 积分 -1 分
232.34 KB, 下载次数: 9, 下载积分: 积分 -1 分
一周热门 更多>