历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2019年11月12日 | avr单片机流水灯和按键抗干扰

2019-11-12 来源:51hei

第一次做。都是用的avr单片机ATMEGA16仿真。。有3个按键控制流水灯程序 和1个单片机按键抗干扰,左右按键要松开才行.
0.png?imageView2/2/w/550
单片机源码:

#include

void delay(unsigned int x)

{

  int i,j;

  for(i=0;i    for(j=0;j<1141;j++);

}


void button(int i)

{

if((PINC&(1<{

delay(20);

if((PINC&(1<{

up(i);

}

while((PINC&(1<}

if((PINC&(1<{

delay(20);

if((PINC&(1<{

down(i);

}

while((PINC&(1<}if((PINC&(1<{

delay(20);

if((PINC&(1<{

left(i);

}

while((PINC&(1<

}

if((PINC&(1<{

delay(20);

if((PINC&(1<{

right(i);

}

while((PINC&(1<}

}


void down(int i)

{

while(i<4)

{

int k = i;

for(i+=4;i<8;i+=4)

{

PORTA = 1<delay(50);

PORTA = 0x00;

button(i);

}

i-=4;

for(i+=4;i<16;i+=4)

{

PORTB = 1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

i-=4;

i=k;

PORTA = 1<delay(50);

button(i);

}

while(i>3&&i<8)

{

for(i+=4;i<16;i+=4)

{

PORTB = 1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

i-=4;

for(i-=12;i<8;i+=4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

i-=4;

}

while(i>7&&i<12)

{

for(i+=4;i<16;i=+4)

{

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

i-=4;

for(i-=12;i<8;i+=4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

while(i<16&&i>11)

{

for(i-=12;i<8;i+=4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

for( ;i<16;i+=4)

{

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

i-=4;

}

}



void up(int i)

{

while(i<4)

{

PORTA=0x00;

for(i+=12;i<16&&i>7;i-=4)

{

PORTB = 1<<(i-8);

delay(50);

button(i);

}

PORTB=0x00;

i+=4;

for(i-=4;i>=0&&i<8;i-=4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

i+=4;

}

while(i>3&&i<8)

{

for(i-=4;i>=0;i-=4)

{

PORTA = 1<delay(50);

PORTA=0x00;

button(i);

}

i=+4;

for(i+=12;i<16&&i>7;i-=4)

{

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

PORTA=1<delay(50);

button(i);

}

while(i>7&&i<12)

{

for(i-=4;i<8&&i>=0;i=-4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

i+=4;

for(i+=12;i<16&&i>7;i-=4)

{

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

i+=4;

}

while(i>11&&i<16)

{

for(i-=4;i<16&&i>7;i=-4)

{

PORTB=1<<(i-8);

delay(50);

PORTB=0x00;

button(i);

}

for( ;i<8&&i>=0;i-=4)

{

PORTA=1<delay(50);

PORTA=0x00;

button(i);

}

i+=16;

PORTB=1<<(i-8);

delay(50);

button(i);

}

}



void right(int i)

{

while(i<4)

{

i-=1;

for(i+=1;i>=0&&i<4;i+=1)

{

PORTA = 1<delay(50);

button(i);

}

i-=4;

}

while(i>3&&i<8)

{

i-=1;

for(i+=1;i>3&&i<8;i+=1)

{

PORTA = 1<delay(50);

button(i);

}

i-=4;

}

while(i>7&&i<12)

{

i-=1;

for(i+=1;i>7&&i<12;i+=1)

{

PORTA = 1<<(i-8);

delay(50);

button(i);

}

i-=4;

}

while(i>11&&i<16)

{

i-=1;

for(i+=1;i>11&&i<16;i+=1)

{

PORTA = 1<<(i-8);

delay(50);

button(i);

}

i-=4;

}

}


void left(int i)

{

while(i<4)

{

i+=1;

for(i-=1;i>=0&&i<4;i-=1)

{

PORTA = 1<delay(50);

button(i);

}

i+=4;

}

while(i>3&&i<8)

{

i+=1;

for(i-=1;i>3&&i<8;i-=1)

{

PORTA = 1<delay(50);

button(i);

}

i+=4;

}

while(i>7&&i<12)

{

i+=1;

for(i-=1;i>7&&i<12;i-=1)

{

PORTA = 1<<(i-8);

delay(50);

button(i);

}

i+=4;

}

while(i>11&&i<16)

{

i+=1;

for(i-=1;i>11&&i<16;i-=1)

{

PORTA = 1<<(i-8);

delay(50);

button(i);

}

i+=4;

}

}



void main()

{

int i;

DDRA = 0xFF; 

DDRB = 0xFF;

PORTC|=(1<PORTC|=(1<PORTC|=(1<PORTC|=(1<while(1)

{

for(i=0;i<4;i++)

{

PORTA = 1<delay(50);

button(i);

}

}

}



推荐阅读

史海拾趣

乔光电子(FTR)公司的发展小趣事

Futaba Electric Co., Ltd. 的五个发展故事

故事一:从真空管到VFD的转型

Futaba Electric Co., Ltd.(原名双叶电子)成立于1948年,最初以生产收音机收讯真空管起家。然而,随着技术的飞速发展和市场需求的变迁,公司在1970年做出了关键的战略调整,决定放弃真空管业务,转而专注于萤光表示管(VFD)的研发与生产。这一决定极具前瞻性,因为VFD以其高清晰度、广视角和出色亮度等独特优势,迅速赢得了市场的青睐。Futaba凭借在VFD领域的持续创新和卓越品质,逐渐确立了其在全球市场的领先地位,市场份额超过60%,成为行业内的佼佼者。

故事二:无线电控制技术的突破

进入1960年代,Futaba在电子领域不断拓宽其技术边界。1962年,公司推出了无线电控制设备和冲压金属模用部件,旨在提升工业生产的品质和效率。这一创新不仅解决了工业控制领域中长期存在的供应商品质和交货期问题,还引领了模具制造行业的标准提升。Futaba的无线电控制技术逐渐在模具制造、工业自动化等领域得到广泛应用,为公司后续在无线遥控领域的深入发展奠定了坚实基础。

故事三:无线遥控技术的领导者

随着技术的不断积累和市场的日益扩大,Futaba在无线遥控领域取得了显著成就。特别是在1990年,公司成功研发出高频无线展频通讯技术,该技术以其高可靠性和抗干扰性,在卫星通讯、工业用机器人和工业控制设备等领域展现出巨大潜力。Futaba的无线遥控产品如遥控飞机、车、船等,在休闲娱乐市场也广受欢迎,进一步巩固了公司在无线遥控技术领域的领先地位。

故事四:VFD在汽车行业的广泛应用

Futaba的VFD产品凭借其卓越的性能和稳定的品质,赢得了众多汽车制造商的信赖。自1983年Futaba的VFD产品被福特汽车公司采用以来,其在美国三大汽车厂的市场占有率迅速攀升至100%。这一成就不仅证明了Futaba产品在汽车行业的广泛应用和市场认可度,也为其在高端消费性电子设备市场的进一步拓展提供了有力支持。

故事五:中国市场的深入布局

为了更好地服务于中国市场,Futaba成立了双叶电子科技开发(北京)有限公司,专营日本双叶(Futaba)的全线产品。这家公司在北京设立,不仅负责Futaba真空荧光显示管及模组、RC遥控器等产品的生产和销售,还积极开拓中国市场,参与行业交流和合作。双叶电子科技开发(北京)有限公司的成立,标志着Futaba在全球化战略中对中国市场的高度重视和深入布局。通过不断提升产品质量和服务水平,Futaba在中国市场也取得了显著成绩,为公司的持续发展注入了新的动力。

EDAC公司的发展小趣事

随着全球环保意识的提高,ECS-C公司积极响应国家号召,将绿色环保理念融入到企业的生产经营中。公司采用环保材料和生产工艺,减少废弃物排放和能源消耗。同时,ECS-C公司还积极参与环保公益活动,推动社会环保事业的发展。这些环保举措不仅提升了公司的社会形象,也为企业带来了可持续发展的动力。

Elpress AB公司的发展小趣事

Elpress AB始终将质量管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。为了进一步提升产品质量和管理水平,Elpress AB于1992年获得了ISO 9001认证,成为电气连接领域的领军企业之一。此后,公司还通过了ISO 14001:2015环境管理体系认证,积极履行环保责任。

Diotec Electronics Corp公司的发展小趣事

面对全球化的市场趋势,Diotec开始实施全球化战略。公司加强与国际市场的联系,积极开拓海外市场。同时,Diotec还加强与全球合作伙伴的合作,共同推动电子行业的发展。展望未来,Diotec将继续坚持技术创新和品质至上的理念,致力于成为全球领先的电子元器件供应商。同时,公司还将关注新兴市场和技术趋势,为未来的发展做好充分准备。

ept Connectors公司的发展小趣事

EPT Connectors公司成立于1967年,由创始人Bernhard Guglhör在德国的某个小镇上创建。起初,公司专注于连接器的小规模制造,以满足当地电子设备的需求。随着技术的不断进步和市场的扩大,EPT逐渐意识到连接器在电子设备中的重要性,并决定专注于这一领域的发展。经过几年的努力,EPT在德国建立了自己的总部,并开始向国际市场拓展。

ETAL公司的发展小趣事

ETAL公司成立于XXXX年,由一群富有远见和热情的电子工程师创立。他们看到了电子技术在全球范围内的广泛应用和巨大潜力,决定投身于这一行业。起初,ETAL主要专注于电子元器件的研发和生产,通过不断的技术创新和产品优化,逐渐在市场上树立了良好的口碑。

问答坊 | AI 解惑

16舵机双足机器人-----全资料奉上!

本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3648721&bbs_page_no=1&bbs_id=9999 暑假学校里做机器人比赛,就是做出一个人型机器人来互相对打,要求无线控制的。 我因为去年做过这个 ...…

查看全部问答>

DIY微功耗基础无线网络

DIY微功耗基础无线网络…

查看全部问答>

直流接触器和交流接触器的区别?

应用场合不同,选择交流或直流取决于线圈,直流接触器的线圈只能通直流,交流接触器的线圈只能通交流工作。一般来说,在交流回路当中,主回路用的交流,辅助助回路一般都是从主回路上取电做控制回路,那么控制回路显然也是交流的,那么就要用交流接 ...…

查看全部问答>

PB5编写FLASH驱动

小弟刚上手驱动开发不久,现在用PB5.0做驱动。 现在是想按扇区读写全部的flash rom,我知道PB中有FMD_WriteSector等函数可以读写扇区,但不知道如何调用? 另外我还想问一下,用PB FOR CE5.0写的驱动能在windows mobile 上面用吗? 谢谢各位高手…

查看全部问答>

在这里居然看到母校的技术交流贴

在这里居然看到母校的技术交流贴,热泪盈眶 老泪纵横!…

查看全部问答>

用过AT24C02的高手请指教!

#include <STM8S105C_S.h> #define uchar unsigned char #define uint unsigned int #define data_out PB_DDR|=0X04; #define data_in PB_DDR&=~0X04; #define scl_H PB_ODR|=0X02; #define scl_L PB_ODR&=~0X02; #define sda_ ...…

查看全部问答>

【求助】换了片子,烧写不成,是什么问题?急!!!

用f123做了个电路板,用的是前2年的片子,烧写调试成功,偶然间不小心烧了片子,换了新的(刚买的),然后就提示60错误,找不到设备,请教斑竹为什么?头都大了,电路没问题的,用的是同样的电路板(同一批做的),元件也一样,是什么问题啊? 1。 ...…

查看全部问答>

【求助】【讨论】关于用149做交流电流0-5mA得采样电路问题

互感器输出为交流0-5mA,用149采样确定电流值!!!! 请高手指点!!!!…

查看全部问答>

请问大家IAR和CCS哪个用的人数多?

新手问一下,IAR和CCS哪个用的人数多,哪个更好用一点?你们更喜欢哪一个?…

查看全部问答>

lowlevel_init.S的system_clock_init函数放到C语言下面实现——更好处理

在uboot原来的代码里,有系统时钟的初始化函数,在board/samsung/smdkv210/lowlevel_init.S的system_clock_init函数,我大概看了一下,寄存器不一样,而且是汇编写的,所以我就改成用c语言来实现,在BL1阶段初始化一下,BL2阶段就不用重新初始化了 ...…

查看全部问答>