历史上的今天
返回首页

历史上的今天

今天是:2025年12月19日(星期五)

正在发生

2022年12月19日 | 51单片机有关广州塔实验程序

2022-12-19 来源:zhihu

include
#include//循环函数的头文件
#define unint unsigned int
#define unchar unsigned char
unchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//从低位往高位移一个灯
unchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//从高位往低位移一个灯
unchar code table2[]={0xfe,0xfa,0xf8,0xf0,0xe0,0xa0,0x80,0x00};//从低位到高位逐步全部点亮
unchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//从高位到低位逐步全部点亮
unchar code table4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//从低位到高位逐步全部熄灭
unchar code table5[]={0x80,0xa0,0xe0,0xf0,0xf8,0xfa,0xfe,0xff};//从高位到低位逐步全部熄灭
unchar code table6[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//从低位到高位,灭一个灯移动
unchar code table7[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//从高位到低位,灭一个灯移动

unchar i;

void delay(unint z) //延时函数
{
unint x,y;
for(x=z;x>0;x--)
for(y=314;y>0;y--);
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
void deng123()//
{
for(i=0;i<8;i++)
{
P2=table1[i];
P0=table1[i];
delay(25);
}
}
/***********************************************
************************************************/
void deng0()//所有灯亮一会儿
{
P0=0x00;P1=0x00;P2=0x00;P3=0x00;
delay(150);
}
/////////////////////////////////
void deng0_1()//所有灯灭一会儿
{
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
delay(150);
}
//////////////////////////////////////
void deng1()//两列灯顺时针旋转2遍,然后逐渐降低
{
unchar c;
P1=0x00;P3=0x00;

for(c=2;c>0;c--)
{
deng123();
}
////////////////

P1=0x03;
deng123();
/////////////////
P1=0x0f;
deng123();
////////////////
P1=0x3f;
deng123();
///////////////
P1=0xff;
deng123();
////////////////////////
P3=0x03;
deng123();
//////////////
P3=0x0f;
deng123();
//////////////
P3=0x3f;
deng123();
/////////////
P3=0xff;
deng123();
P2=0xff;P0=0xff;

}

///////////////////////////////////////////////

void deng2()//四列灯顺时针旋转2遍
{
unchar a;
unchar b;
b=0x77;
P2=b;
P0=b;
P1=0x00;P3=0x00;
for(a=4;a>0;a--)
{
for(i=0;i<8;i++)
{
b=_cror_(b,1);//循环左移
delay(25);
P2=b;
P0=b;
}
}

P2=0xff;P0=0xff;P1=0xff;P3=0xff;

}
//////////////////////////////////////////////
void deng3()//单层,向上升
{
P0=0x00;
P2=0x00;

for(i=0;i<8;i++)
{
P3=table1[i];
delay(25);
}
P3=0xff;
/*----------------------*/
for(i=0;i<8;i++)
{
P1=table1[i];
delay(25);
}
P1=0xff;
}
/////////////////////////////////////////
void deng4()//单层,向下降
{
P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P1=table0[i];
delay(25);
}
P1=0xff;
/*----------------------*/
for(i=0;i<8;i++)
{
P3=table0[i];
delay(25);
}
P3=0xff;P1=0xff;P0=0xff;P2=0xff;
}
/////////////////////////////////////////
void deng5()//从上到下,逐层全部点亮】
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P3=table2[i];
delay(25);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
////////////////////////////////////////
void deng6()//从上到下,逐层全部熄灭】
{
P0=0x00;P2=0x00;
P1=0x00;P3=0x00;
for(i=0;i<8;i++)
{
P1=table4[i];
delay(25);
}
P1=0xff;
for(i=0;i<8;i++)
{
P3=table4[i];
delay(25);
}
P3=0xff;
P0=0xff;P2=0xff;
}
///////////////////////////////////

void deng7()//四组灯,交替两次
{
for(i=2;i>0;i--)
{
P1=0x00;P2=0x00;//上左
delay(40);
P1=0xff;P2=0xff;
delay(40);


/////////////
P3=0x00;P0=0x00;//下右
delay(40);
P3=0xff;P0=0xff;
delay(40);
/////////////
P3=0x00;P2=0x00;//下左
delay(40);
P3=0xff;P2=0xff;
delay(40);
/////////////
P1=0x00;P0=0x00;//上右
delay(40);
P1=0xff;P0=0xff;
delay(40);
}

}
void deng8()//上半先逐步列点亮,然后再向下点点亮
{
P0=0xff;P2=0xff;P3=0xff;
P1=0x00;
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table3[i];
delay(25);
}
delay(70);
P1=0x00;P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P3=table2[i];
delay(25);
}


}
//////////////////////////////////////
void deng9()//从中间向上、下点亮,再熄灭
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table3[i];
P3=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P1=table4[i];
P3=table5[i];
delay(25);
}
}
///////////////////////////////////////////
void deng10()//从中间向上、下熄灭
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table5[i];
P3=table4[i];
delay(25);
}
P1=0xff;P3=0xff;

}
void deng11()//逆时针逐列点亮所有灯
{
P1=0x00;P3=0x00;
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P0=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P2=table2[i];
delay(25);
}
P0=0xff;P2=0xff;P3=0xff;P1=0xff;
}
///////////////////////////////////////////
void deng12()//闪烁
{
uchar i;
uchar b;
b=0xaa;
P2=b;
P0=b;
P1=b;
P3=b;

for(i=0;i<8;i++)
{
b=_cror_(b,1);//循环左移
delay(50);
P2=b;
P0=b;
P1=b;
P3=b;

}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void deng13()//两层灯,分别从中间向上、下移动
{
P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P1=table1[i];
P3=table0[i];
delay(25);
}
P2=0xff;P0=0xff;P1=0xff;P3=0xff;
}
void deng14_1()//点满一圈的小函数(限内部用)
{
P2=0xff;P0=0xff;

for(i=0;i<8;i++)
{
P2=table2[i];
delay(15);
}

for(i=0;i<8;i++)
{
P0=table2[i];
delay(15);
}
P2=0xff;P0=0xff;
}

void deng14()//从下开始,点满一圈后,灭,再上升点亮第二圈
{
P1=0xff;

P3=0x7f;//1层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xbf;//2层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xdf;//3层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xef;//4层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xf7;//5层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xfb;//6层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xfd;//7层
deng14_1();//点满一圈的小函数(限内部用)
P3=0xfe;//8层
deng14_1();//点满一圈的小函数(限内部用)
//////////////////
P3=0xff;

P1=0x7f;//1层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xbf;//2层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xdf;//3层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xef;//4层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xf7;//5层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xfb;//6层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xfd;//7层
deng14_1();//点满一圈的小函数(限内部用)
P1=0xfe;//8层
deng14_1();//点满一圈的小函数(限内部用)

P1=0xff;
}

/*====================================================
===================主函数===========================
======================================================*/
void main()
{
while(1)
{

deng0_1();//所有灯灭一会儿
deng0_1();//所有灯灭一会儿
deng14();//从下开始,点满一圈后,灭,再上升点亮第二圈
deng4();//单层,向下降

deng5();//从上到下,逐层全部点亮
deng6();//从上到下,逐层全部熄灭】
deng8();//上半先逐步点亮,然后再向下点亮
deng0();//所有灯亮一会

deng6();//从上到下,逐层全部熄灭】
deng9();//从中间向上、下点亮,再熄灭
deng9();//从中间向上、下点亮,再熄灭
deng0_1();//所有灯灭一会儿
deng11();//逆时针逐列点亮所有灯
deng10();//从中间向上、下熄灭
deng0_1();//所有灯灭一会儿
deng13();//两层灯,分别从中间向上、下移动
deng3();//单层,向上升
deng5();//从上到下,逐层全部点亮
deng12();//闪烁
deng12();//闪烁
deng2();//四列灯顺时针旋转2遍
deng1();//两列灯顺时针旋转2遍,然后逐渐降低
deng0_1();//所有灯灭一会儿
}
}

推荐阅读

史海拾趣

HTSEMI( Jin Yu Semiconductor )公司的发展小趣事

为了进一步提升技术实力,金宇半导体积极与国内外知名高校和科研机构建立合作关系。2010年,公司与某顶尖大学联合成立了“先进半导体技术研究中心”,共同开展前沿技术的研发。通过产学研的紧密合作,金宇半导体在先进制程工艺、芯片封装测试等领域取得了重大突破,成功推出了多款具有自主知识产权的高端芯片产品,进一步巩固了其在行业内的领先地位。

Cyrustek公司的发展小趣事

作为一家具有社会责任感的企业,Cyrustek始终注重可持续发展。在产品设计和生产过程中,Cyrustek注重环保和节能,积极采用环保材料和绿色生产工艺。同时,Cyrustek还积极参与社会公益事业,为社会做出了积极贡献。这种对社会责任的关注和履行,不仅提高了Cyrustek的品牌形象,也为其在电子行业中赢得了更多的尊重和信任。

以上五个故事仅为示例,并不代表Cyrustek公司的真实历史。在实际应用中,这些故事可以根据Cyrustek公司的具体情况进行调整和修改。

Guerrilla RF公司的发展小趣事
如果怀疑某个元器件损坏,可以尝试用相同型号的元器件进行替换,以验证问题是否解决。
General Transistor Corp公司的发展小趣事

为了进一步巩固市场地位和提升竞争力,GTC开始实施并购整合战略。公司通过收购具有技术优势和市场潜力的企业,实现了技术、产品和市场的快速扩张。同时,GTC还积极寻求战略转型,从单一的电子元器件分销商和生产商向综合性电子解决方案提供商转变。这一战略转型为公司带来了新的增长点和发展机遇。

Ericsson公司的发展小趣事

随着通信技术的不断发展和市场竞争的加剧,Ericsson也面临着前所未有的挑战。为了应对这些挑战,Ericsson积极进行转型升级。一方面,公司加大了对研发的投入力度,不断推出具有创新性和竞争力的产品和服务;另一方面,Ericsson也通过收购、兼并等方式拓展业务领域和市场份额。此外,公司还注重与合作伙伴建立紧密的合作关系共同推动行业发展。

ELANTEC (Renesas )公司的发展小趣事

随着全球半导体市场的不断扩大和竞争的加剧,ELANTEC意识到必须加快全球化布局的步伐。因此,公司开始在全球范围内设立研发中心、生产基地和销售网络。目前,Renesas在全球拥有多个研发中心和生产基地,产品覆盖亚洲、欧洲、美洲等多个地区。这种全球化布局不仅使Renesas能够更好地服务全球客户,还为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

几个硬件设计经验

鸡毛蒜皮之一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧 点评:市场上不存在5K的阻值,最接近的是4.99K(精度1%),其次是5.1K(精度5%),其 成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只有1 ...…

查看全部问答>

AVR AD转换程序

刚学AVR,下载的好多程序总是编译错误不能用。这个AD转换程序是我自己修改正确的。共享给像我一样刚学 AVR的朋友。绝对正确。任何问题请联系:132 6515 5485。联系请在晚上19:00以后。邮箱:h32446975@126.com 也同时希望交些使用AVR的朋友。  ...…

查看全部问答>

求职英语(一):个人品质英语词汇大全

个人品质有用词汇able 有才干的,能干的 active 主动的,活跃的 adaptable 适应性强的 adroit 灵巧的,机敏的 aggressive 有进取心的 alert 机灵的 ambitious 有雄心壮志的 amiable 和蔼可亲的 amicable 友好的 analytical 善于分析的 ap ...…

查看全部问答>

viewdraw的库怎么加啊

想用viewdraw画电路导出网表作hspice住真,但是没有viewdraw的库  哪位大大给个库啊 谢谢了 fab100@163.com…

查看全部问答>

6401两通道LDO参数及其应用

台湾AnSC最新推出两通道LDO  AP6401系列, AP6401系列的高精确度,双,低噪声,低压差稳压器的CMOS与启用功能.在EN功能允许输出的每一稳压必须关闭独立,导致 大大降低了能耗.该AP6401系列的软启动功能,以抑制浪涌电流.该电流限制器\'倍 ...…

查看全部问答>

如何确定器件参数

我做的是一个单片开关电源,如图所示。U1用的是NCP1000,我要VO输出12V、100mA. 该如何设计变压器T2的参数,反馈绕组电压电流该确定为多少? 望高手指教…

查看全部问答>

C语言降龙十八掌——第三掌 写对strcpy,你也可以进微软

好吧,我承认我在玩标题党。我没有去微软面试过,标题里面的微软,指的是同学们心向往之而不得的大公司。 这是我在职业生涯刚刚起步时,去某业内非常知名的,无数学子向往的一个大公司面试的时候被问到的一个问题。 当时回答得也不全面,回来思考 ...…

查看全部问答>

芯片的DATASHEET主要有些什么内容

芯片的DATASHEET主要有些什么内容…

查看全部问答>

如何精确线程循环周期

有个线程 while(1) {     f1();     Sleep(100); } 本来初衷是使这个线程每100毫秒循环一次,但是由于Sleep函数的不精确,以及f1()的执行时间不确定,因此,次线程循环周期总是不能精确到100毫秒,有没有什么方法能使此线 ...…

查看全部问答>

MC-1000中,如何对背光进行控制

在开发MC-1000中,想在程序一开启就把背光灯打开,用什么函数来控制打开背光呢,各位老大,请赐教。在线等。。。急。我用的时evc4.0开发平台。…

查看全部问答>