- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C语言实现流水灯实验报告
目录
……………第3页
2.ATmega16单片机原理………………第4页
……………第5页
………………第6页
………第7页
6.Proteus模拟仿真……第9页
7.Proteus的优缺点…………………第11页
……………第11页
单片机根底内容简介
什么是单片机?
单片机是一种集成CPU,储存器,I/O设备的可编程半导体集成电路芯片,属于微型计算机的一种类型。单片机具有体积小,集成度高,功能强,使用灵活,价格低廉,稳定可靠等优点,被广泛应用电器,只能仪器,电子通信,工业控制等领域。微型计算机有传统的冯·诺依曼和哈弗结构,有单时钟周期结构CPU和多时钟指令CPU,流水线指令技术亦在单片机中应用,这些新技术极大提高了单片机的性能。
2.AVR单片机简介。
AVR系列单片机是ATMEL公司于1997年推出的一款全新配置的,采用RICS精简指令结构的新型8位单片机。是一种一种高可靠性,功能强,高速度,低功耗和低价位的单片机。
AVR单片机分类:
低档单片机,Tiny系列,主要型号有Tiny11/12/13等。
中档单片机,AT90S系列,主要型号有AT90S1200/2313/8515/8535等。目前已被淘汰。
高档单片机ATmega系列,主要型号有ATmega8/16/32/64/128等。
ATmega16单片机原理
ATmega16是AVR单片机钟一款比拟典型,比拟常见的高性能单片机,采用增强的RISC结构低功耗8位CMOS高性能微控制器。由于先进的指令集以及单时钟周期指令执行时间,大大提高了代码效率,并且具有普通微控制器最高至10倍的数据吞吐率。
I/O口结构
ATmega16共四组通用可编程的I/O口引脚。分别为PA,PB,PC,PD口。每一组有8个引脚,分别用PX0—PX7表示。
I/O口存放器
I/O口的结构大体相同,一个典型的I/O口引脚如下图,只要有三个存放器分别为DDRX,PORTX,PINX每组I/O口均有这3钟=种存放器,每个存放器8bit,分别对应一个引脚。
I/O口特点
每个I/O口内部集成了一个可控制的上啦电阻,在I/O口作为输入引脚时,该上拉电阻可以通过编程设定其有效还是无效,当设置内部上拉电阻有效时可以省略外接上拉电阻。
每个I/O口均有很强的驱动能力,驱动拉电流负载时能提供20mA的电流,驱动灌电流负载能吸入40mA的电流,因此能直接驱动LED发光二极管,数码管等器件。
C语言流水灯制作流程
工程要求
编程实现8个发光二极管从左到右和从中间到两边的流水灯效果。8个发光二极管接于PC口,且阳极接I/O口,阴极接地。
根据工程要求,发光二极管的驱动方式为I/O口输出1点亮,输出0熄灭。依次使PC口出现高电平1,控制发光二极管从左到右亮了一遍。当数据沿反顺序输出一遍时发光二极管从D8亮到D1,实现从右到左亮。
根据工程分析,控制D1—D8点亮的控制字分别为0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80。定义一个数组LED,将这8个控制字放在数组LED中。定义变量i,使用LED[i]读出数组中的数据。显然,当i从0增加到7时,PC口数据按0x01—0x080顺序输出,当i从7减到0时PC口数据按0x80~0x01顺序输出。
流水灯编写程序
流水灯从中间往两边流动效果
#includeiom16.h
voiddelay(unsignedchart);
constunsignedcharled[8]={0x18,0x24,0x042,0x81,0x81,0x42,0x24,0x18};
voidmain(void)
{unsignedchari;
DDRC=0xff;
DDRA=0xff;
while(1)
{for(i=0;i7;i++)
{PORTC=led[i];
delay(50);
}
for(i=7;i0;i--)
{PORTC=led[i];
delay(50);
}
}
}
voiddelay(unsignedchart)
{unsignedchari,j,k;
for(i=0;i50
文档评论(0)