标题: 做了一个单片机数码管,测试通过但是和设计不同 [打印本页]

作者: kzzk    时间: 2023-3-4 11:33
标题: 做了一个单片机数码管,测试通过但是和设计不同
用STC12C5A60S2 控制
因为是串联灯管用9v电压
共阳极
阳极控制P3(如图)0-3

设计低电位导通。可以是实际测试竟然是高电平才能导通。
请问,有懂得告知怎么回事

单片机代码:
P3 = 0x01 << Digi ;   //高电平移位
bitopet = 0xfe;
for( i=0;i<7;i++)   
{  
tmp = NUM[SEG] | bitoper;    //或操作,同为零结果才是零
  P2 = tmp;   
bitoper = bitoper << 1;     //移位操作。与上面或操作联动最终变成补1
delay(50);  
}

IMG20230304110643.jpg (706.54 KB, 下载次数: 63)

IMG20230304110643.jpg

IMG20230304111637.jpg (563.22 KB, 下载次数: 66)

IMG20230304111637.jpg

1676648239149.png (1.25 MB, 下载次数: 66)

1676648239149.png

作者: kzzk    时间: 2023-3-5 12:50
P2^i = 0;//怎么编译提示near '='  不能通过
作者: kzzk    时间: 2023-3-5 13:14
kzzk 发表于 2023-3-5 12:50
P2^i = 0;//怎么编译提示near '='  不能通过

明白了。不能这么写。编译器会以为^是异或运算符
作者: lkc8210    时间: 2023-3-5 13:57
kzzk 发表于 2023-3-5 12:50
P2^i = 0;//怎么编译提示near '='  不能通过

因为 ^是 XOR运算符与|类似
你写P2 | i = 0;是啥意思?
你想控制P2各端口输出不能这样写
作者: Hephaestus    时间: 2023-3-5 14:01
kzzk 发表于 2023-3-5 12:50
P2^i = 0;//怎么编译提示near '='  不能通过

左值不得参与运算。
作者: kzzk    时间: 2023-3-5 14:45
Hephaestus 发表于 2023-3-5 14:01
左值不得参与运算。

谢谢各位
作者: kzzk    时间: 2023-3-5 22:23
结果还是
作者: kzzk    时间: 2023-3-5 22:26
结果还是改为P2=NUM[SEG]  延迟200个时钟周期(亮度够了)看来占空比控制好就行了。原来28分之一,现在四分之一
作者: kzzk    时间: 2023-3-5 22:30
接下来。想搞搞GPS.把卫星上的时钟信号当下来显示在这四个'数码管'上。大家有什么好用便宜推荐




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1