您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > C语言实现流水灯实验报告
C语言实现流水灯实验报告目录1.单片机基础……………………………………………第3页2.ATmega16单片机原理………………………………第4页3.I/O口结构……………………………………………第5页4.C语言流水灯制作流程………………………………第6页5.流水灯编写程式………………………………………第7页6.Proteus模拟仿真……………………………………第9页7.Proteus的优缺点……………………………………第10页8.参考资料……………………………………………第11页9.学习小结……………………………………………第11页单片机基础内容简介1.什么是单片机?单片机是一种集成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表示。1.I/O口寄存器I/O口的结构大体相同,一个典型的I/O口引脚如图所示,只要有三个寄存器分别为DDRX,PORTX,PINX每组I/O口均有这3钟=种寄存器,每个寄存器8bit,分别对应一个引脚。2.I/O口特点每个I/O口内部集成了一个可控制的上啦电阻,在I/O口作为输入引脚时,该上拉电阻可以通过编程设定其有效还是无效,当设置内部上拉电阻有效时可以省略外接上拉电阻。每个I/O口均有很强的驱动能力,驱动拉电流负载时能提供20mA的电流,驱动灌电流负载能吸入40mA的电流,因此能直接驱动LED发光二极管,数码管等器件。C语言流水灯制作流程1.项目要求编程实现8个发光二极管从左到右和从中间到两边的流水灯效果。8个发光二极管接于PC口,且阳极接I/O口,阴极接地。2.项目分析根据项目要求,发光二极管的驱动方式为I/O口输出1点亮,输出0熄灭。依次使PC口出现高电平1,控制发光二极管从左到右亮了一遍。当数据沿反顺序输出一遍时发光二极管从D8亮到D1,实现从右到左亮。3.项目实现根据项目分析,控制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.hvoiddelay(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;i++)for(j=0;j50;j++)for(k=0;kt;k++);}流水灯从左到右流动效果#includeiom16.hvoiddelay(unsignedchart);constunsignedcharled[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};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);}for(i=7;i0;i--){PORTC=led[i];delay(50);}}}voiddelay(unsignedchart){unsignedchari,j,k;for(i=0;i50;i++)for(j=0;j50;j++)for(k=0;kt;k++);}Proteus模拟仿真1.将C语言编译成机器码(*.HEX文件),并生成各种报表文件。2.装载CPU机器码,外接1Mh晶振,选择ExtRC.0.9M~3.0M时钟选项。3.如图所示可以看到我们已经实现了C语言流水灯从中间往两边流动的项目。Proteus介绍Proteus的优点:Proteus软件具有直观,简单,易用的优点,仿真调试单片机程序很有效果,能缩短单片机程序开发周期。Proteus的特点:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真革命性的特点(1)互动的电路仿真(2)仿真处理器及其外围电路Proteus的缺点:Proteus仿真后和实物还有区别,比如有的仿真正常,实物不通过。有的实物正常的,仿真却不能通过。Proteus仿真特别是单片机的仿真很好用汇编的话,集编辑、编译、调试和仿真,全部功能都有了。调试那个功能,对学习单片机编程很有帮助。所以我们选择了Proteus软件。参考资料《AVR单片机应用技术项目化教材》欧阳明星编著电子工业出版社学习小结:通过这次试验设计,提高了我的单片机设计水平,增加了我的专业知识;同时也让我认识到自身存在的不足,设计过程中遇到了一些困难,但通过查资料、虚心请教他人,都解决了。在今后的学习中,我认为应该不断提高自身素质与修养,为以后的工作奠定一个坚实的基础。
本文标题:C语言实现流水灯实验报告
链接地址:https://www.777doc.com/doc-2908878 .html