缘由https://ask.csdn.net/questions/7909241/54131971
cpp
`#include "reg52.h"//四位数码管显示
sbit d=P2^1;
sbit w=P2^0;
sbit k1=P3^2;
sbit k2=P3^3;
bit x1=0,x2=0;
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,128,0};//0-9.
unsigned char ys=0,x=0,fx=0;
void xianshi()
{
if(++ys>174)
{
ys=P0=0;
d=1;P0=SmZiFu[x+fx>7?11:x+fx];d=0;
w=1;
P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
w=0;
if(++x>7)x=0;
}
}
void main()
{//缘由https://ask.csdn.net/questions/7909241/54131971
unsigned char xd=0,js=0;
while(1)
{
xianshi();
if(k1==0&&++xd==0){x1=1;x2=0;while(k1==0)xianshi();}
if(k2==0&&++xd==0){x2=1;x1=0;while(k2==0)xianshi();}
if(ys==0&&++js==0)
{
if(x1==1&&x2==0)if(++fx>7)fx=0;else;
else if(x1==0&&x2==1)if(--fx==255)fx=8;else;
else fx=0;
}
}
}`

cpp
`void xianshi()
{
if(++ys==0)
{//74CH273
w=0;
P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
w=1;d=1;P0=SmZiFu[x+fx>7?11:x+fx];d=0;//若用2片273则d=0在先d=1在后
if(++x>7)x=0;
}
}`

第3位数码管无论如何都无法点亮,添加P0=255;后还是一样?还不清楚什么原因,找到标号弄错了。





cpp
`#include "reg52.h"//四位数码管显示
sbit d=P2^1;
sbit w=P2^0;
sbit w1=P2^2;
sbit k1=P3^2;
sbit k2=P3^3;
bit x1=0,x2=0;
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,128,0};//0-9.
unsigned char ys=0,x=0,fx=0;
void xianshi()
{
if(++ys==0)
{
w=0;
P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
w=1;
w1=0;
P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
w1=1;
d=0;P0=SmZiFu[x+fx>7?11:x+fx];d=1;
if(++x>7)x=0;
}
}`
有时由于修改电路难免发生小误而奇怪现象如下






我初学编程时就到论坛1是看看别人是怎么写的,2是有机会就回复力所能及的,有一次好像是回复不怎样,有人奚落我一边呆着去,我问什么意思,答"哪凉快哪呆着去",然而这种人我觉得不值一提,没那么了不起,反而是没见识鄙陋的表现,其实学单片机我也是一样来看看别人是怎么写的,不是复制粘贴的,最重要的是自己思考推敲才要紧,其实这种驱动没什么特别的,多动脑子就有办法,很简单的,不是什么很难的时序。