我想做一个点振的扳子,扳子是16*32的8个8*8双色点振。 需要使用16个595芯片串行发送段码,1个595芯片发送位码。
打算先发送16个段码再发一个位码00000001;然后再发送16个段码,再发送位码00000010,做循环,速度快人眼就看不出闪烁了
因为这个扳子只需要一直输出“OPEN”所以最关键还是在发送数据上。打算用同步通信,这样的话我需要自己建帧吗,还有发送端和接收端的时
钟同步怎么实现啊 请大家多多指点 如果可以的话帮我这个方案还有什么难点也给我提下啊 祝大家天天开心
我可以这样写吗:
data unsigned char Show_Segment1[]={.....};
data unsigned char Show_Segment2[]={.....};
data unsigned char Show_Segment3[]={.....};
data unsigned char Show_Segment4[]={.....};
data unsigned char digit;
void ledout(void) interrupt 4 using 1 /* 串行发送中断子程序 */
{
TI=0;
SBUF=Show_Segment[digit];
}
void main(void)
{
SCONF=...;
/* 定时器0 */
TH0 = ...;
TL0 = ...;
TCON = ...;
/* 定时器1 */
TMOD = ...;
TH1 = ...;
TL1 = ...;
TCON = ...;
/* 定时器2 */
TH2 = ...;
TL2 = ...;
T2CON = ...;
RCAP2H = ...;
RCAP2L = ...;
TR0 = ...;
TR1 = ...;
TR2 = ...;
PCON=...;
SCON = ...;
IE = ...;
IP = ...;
EA = ...;
IT0=...; /*外部中断0下降沿触发*/
IT1=...;
ET0=...;
ET1=...;
while(1){
for(digit=0;digit<=17;digit++;)
SBUF=Show_Segment1[digit];
for(digit=0;digit<=17;digit++;)
SBUF=Show_Segment2[digit];
for(digit=0;digit<=17;digit++;)
SBUF=Show_Segment3[digit];
for(digit=0;digit<=17;digit++;)
SBUF=Show_Segment4[digit];
}
}
我设了4个数组,在串行口中断中设定了SBUF的发送中断。然后在主程序中用循环将数组送到SBUF中:)