2014年单片机 AVR 流水灯 闹钟等.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR单片机实验报告 班级: 学号: 班内序号: 姓名: Email: 同组姓名: 实验一:流水灯的设计和实现 实验原理图: 实验原理: AVR单片机的高低电平和TTL电路的一致,即 高电平=5V,低电平=0V。AVR单片机的驱动能力比51单片机强,可以直接驱动LED。所以将8个LED二极管正极接在ATmega16的PD0~PD7端口,负极经过限流电阻接到GND,通过控制PD口的电平的高低,就可以实现LED的亮灭。 实验源程序: 实验程序使用iccavr编译器编译: #include iom16v.h #includemacros.h void delay(int ms) //延时函数 { int i,j; for(i=ms;i0;i--) for(j=0;j1141;j++); } void main() { int i; DDRA=0XFF; //配置PD端口为输出 while(1) { for(i=0;i=7;i++) //循环逐次显示每个LED二极管 { PORTA|=BIT(i); delay(1000); PORTA=~BIT(i); } } } 实验心得体会: 通过学习,首先我了解了一些关于单片机的知识,包括单片机的分类,功能等,还有软硬件结合编程使用单片机,单片机的编程语言和EDA的使用,比如ICCAVR,AVR Studio 4等。 其次我了解了AVR单片机的一些基本知识,学会了控制端口的输入输出方向,和电平的高低的方法。同时,AVR单片机的C语言编程基本和标准C语言一致,它在C语言的基础上,添加了一些适合单片机的头文件。所以,在编程方面我遇到的障碍不是很大。 我觉得最大的收获是学会怎么看相关的技术文档,技术文档一般内容很多,并且都是以前没有学过的知识,所以快速的查阅到自己想看的内容,是一件很有学问的能力。 实验二:交通灯 实验原理图: 实验原理: 数码管有共阴和共阳两种,8段数码管由8段LED组成,共阴极数码管的8段LED的阴极相连,共用一个阴极;共阳极数码管的8段LED的阳极相连,共用一个阳极。 控制数码管的方式有两种。第一种为静态显示,这种方式的优点是原理简单,编写程序容易,而且二极管的亮度比较亮,缺点是占用的端口多,单片机上的I/O口资源很珍贵,所以这种方式一般不采用。第二种是动态控制显示二级管,这种方式的优点是节省端口资源,缺点是程序编写不容易,而且,二极管的亮度比较暗。 实验源程序: 1.静态实现: #include iom16v.h #include macros.h void delay(unsigned int ms) { int i,j; for(i=0;ims;i++) for(j=0;j1141;j++); } const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void main() { int i,j; DDRA=0XFF; //LED DDRB=0XFF; //数码管1 DDRD=0XFF; //数码管2 while(1) { for(i=2;i=0;i--) //绿灯 { PORTA=0X01; PORTB=table[i]; for(j=9;j=0;j--) { PORTD=table[j]; delay(1000); } } //黄灯 PORTA=0X02; PORTB=table[0]; for(j=9;j=0;j--) { PORTD=table[j]; delay(1000); } //红灯 for(i=2;i=0;i--) { PORTA=0X04; PORTB=table[i]; for(j=9;j=0;j--) { PORTD=table[j]; delay(1000); } } } } 2.动态实现: #include iom16v.h #include macros.h void delay(unsigned int ms) { int i,j; for(i=0;ims;i++) for(j=0;j1141;j++); } const table[]={0x3f,0x06,

文档评论(0)

AnDyqaz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档