cpu51
发表于 2024-3-11 18:14:58
这几个什么目的?没看懂,大神指点一下呗
void Line_Driver(unsigned char line)//上8,下8接口A,B
{
ADDR_A=line%2; //取余运算符
ADDR_B=line/2; //除以2
}
void Send_One_Byte(unsigned char temp) //传送一个字节
{
unsigned char i,temp1;
for(i=0;i<8;i++)
{
temp1<<=1;
if(temp&0x01)
temp1|=0x01;
temp>>=1;
}
SBUF=~temp1;
while(!TI); //串口发送
TI=0;
}
void Send_Display(unsigned char line)
DebugLab
发表于 2024-3-11 23:29:16
cpu51 发表于 2024-3-11 18:14
这几个什么目的?没看懂,大神指点一下呗
void Line_Driver(unsigned char line)//上8,下8接口A,B
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4613
T_Buffer=Hex_to_Ascii;
T_Buffer=Hex_to_Ascii;
T_Buffer=Hex_to_Ascii;
T_Buffer='.';
T_Buffer=Hex_to_Ascii;
T_Buffer=Hex_to_Ascii;
T_Buffer=Hex_to_Ascii;
这是取十进制的每一位能明白吧
ADDR_A=line%2;
ADDR_B=line/2;
同理,这是取二进制的每一位
line,0x00、0x01、0x10、0x11,对应0、1、2、3行,2根线AB对应bit0、bit1,4扫,每行最大占空比25%
for(i=0;i<8;i++)
{
temp1<<=1;
if(temp&0x01)
temp1|=0x01;
temp>>=1;
}
这是字节按位倒序,否则每8位是反的,字模低位先发,串口高位先发,和这个一样
uint8_t byte_change(uint8_t data)
{
data = ((data & 0xAA) >> 1) | ((data & 0x55) << 1);
data = ((data & 0xCC) >> 2) | ((data & 0x33) << 2);
data = (data >> 4) | (data << 4);
return data;
}
SBUF=~temp1;
while(!TI);
TI=0;
按位取反,0亮1灭,串口方式0发送
冷月烟
发表于 2024-3-12 10:29:17
{:5_332:}牛
cpu51
发表于 2024-3-12 21:43:50
DebugLab 发表于 2024-3-11 23:29
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4613
T_Buffer=Hex_to_Ascii
谢谢老师,我再消化一下。{:handshake:}
soma
发表于 2024-3-16 18:55:30
8引脚芯片都能怎么牛啊
cpu51
发表于 2024-5-25 16:33:49
本帖最后由 cpu51 于 2024-5-25 16:44 编辑
请问大神,这个是单色红,ABCD都是用上的吧?如何修改程序,32*64单元板。P3.75
DebugLab
发表于 2024-5-25 20:46:55
cpu51 发表于 2024-5-25 16:33
请问大神,这个是单色红,ABCD都是用上的吧?如何修改程序,32*64单元板。P3.75
...
这是HUB08,HUB08一般是16扫,ABCD都用,R1上半屏,R2下半屏
cpu51
发表于 2024-5-26 14:26:23
DebugLab 发表于 2024-5-25 20:46
这是HUB08,HUB08一般是16扫,ABCD都用,R1上半屏,R2下半屏
有例程可以提供学习吗?谢谢大神!
cpu51
发表于 2024-5-27 19:12:22
本帖最后由 cpu51 于 2024-5-27 20:10 编辑
DebugLab 发表于 2024-3-11 23:29
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4613
T_Buffer=Hex_to_Ascii[p%1000000/100 ...
void Line_Driver(unsigned char line)// 接口A,B
{
// ADDR_A=line%2; //取余运算符
// ADDR_B=line/2; //除以2
ADDR_A=line&0x01;
ADDR_B=line&0x02;
ADDR_C=line&0x04;
ADDR_D=line&0x08;
}
我这样写,对应ABCD4个接口,对吗?显示的结果如图。
DebugLab
发表于 2024-5-28 23:11:15
cpu51 发表于 2024-5-27 19:12
屏结构都不一样,要改很多地方