欢迎来到天天文库
浏览记录
ID:56492312
大小:116.50 KB
页数:8页
时间:2020-06-25
《流水灯控制实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《电子与控制系统设计》实验报告实验项目名称:LED灯的移动控制指导老师:元泽怀完成时间:2015年9月22日姓名:刘文开班级:12电气1班学号:201224122116成绩:电子信息与机电工程学院编制实验项目LED灯的移动控制实验项目类型验证演示综合设计其他*一、实验目的1.熟悉IO接口的设置与应用;2.进一步熟悉编译软件和下载软件的使用;3.熟悉单片机C语言中移位、延时、数组等语句的应用;4.熟悉单片机C语言开发过程。二、实验内容1.编写一程序,实现如下功能:每按一次S1键,8个发光二极管顺序点亮1个
2、;同样每按下S2键一次,8个发光二极管逆序点亮1个,实验电路原理图如下图1所示。实现发光二极管循环点亮的按键控制。2.设计一个完整程序(另建一个project),实现8个led灯的自动顺序(加法)点亮和逆序(减法)点亮。图1实验原理图三、使用仪器设备及材料1、安装windowsxp操作系统的微型计算机1台2、AVR单片机C语言集成开发环境ICCAVR6.31A3、单片机仿真平台proteus7.54、AVR单片机下载软件progisp5、AVR单片机实验板1套(含下载器)四、实验过程原始记录1、硬件仿真
3、电路(1)在实验室电脑E盘“12电气1班刘文开”文件夹里新建一个文件名为“test1”的文件夹。(2)打开protues仿真软件,根据图1设计出试验仿真图,命名为“test1.DSN”保存到上述“test的文件夹里”。图2实验仿真电路图图3实验仿真电路图2、程序流程图(1).LED控制移动流程图:开始初始化、定义I/O端口是否有按键按下?YYS2按下?NNS1按下?计数器counter--YY计数器counter++Counter<0?Counter>8?YNY上一个LED灯点亮最后一个LED灯点亮第一
4、个LED灯点亮下一个LED灯点亮2).LED自动循环流程图:开始初始化、定义I/O口i=0i=i+1i<8?NYi=i-1PORTB=~(1<0?NPORTB=~(1<#defineucharunsignedchar#defineuintunsignedintuchartemp;//*******延时函数********//voiddelay_ms(uintk){uinti,j;for(i=0;i5、i++){for(j=0;j<1140;j++);}}//*****************端口设置函数********************//voidport_init(void){DDRB=0xFF;//B端口设置为输出PORTD=0XFF;//输出高电平DDRD=0x00;//D端口设置为输入PORTD=0XFF;//输出高电平}//*********主函数*********//voidmain(void){charcounter=0;//计数器port_init();//调用端口函数whil6、e(1){if((PIND&0x10)==0){if(++counter>8)counter=1;delay_ms(300);}if((PIND&0x20)==0){counter=counter--;if(--counter<1)counter=8;delay_ms(300);}switch(counter){case1:PORTB=0xfe;break;case2:PORTB=0xfd;break;case3:PORTB=0xfb;break;case4:PORTB=0xf7;break;case57、:PORTB=0xef;break;case6:PORTB=0xdf;break;case7:PORTB=0xbf;break;case8:PORTB=0x7f;break;default:break;}}}(2).自动循环程序:#include#defineucharunsignedchar#defineuintunsignedint//**********延时函数**********//voiddelay_ms(uintk){uinti,j;for(i=0;i8、r(j=0;j<1140;j++);}}//*****************端口设置函数********************//voidport_init(void){DDRB=0xFF;//B端口设置为输出PORTD=0XFF;//输出高电平DDRD=0x00;//D端口设置为输入PORTD=0XFF;//输出高电平}//*********主函数*********//voidmain(void){unsignedchari;char
5、i++){for(j=0;j<1140;j++);}}//*****************端口设置函数********************//voidport_init(void){DDRB=0xFF;//B端口设置为输出PORTD=0XFF;//输出高电平DDRD=0x00;//D端口设置为输入PORTD=0XFF;//输出高电平}//*********主函数*********//voidmain(void){charcounter=0;//计数器port_init();//调用端口函数whil
6、e(1){if((PIND&0x10)==0){if(++counter>8)counter=1;delay_ms(300);}if((PIND&0x20)==0){counter=counter--;if(--counter<1)counter=8;delay_ms(300);}switch(counter){case1:PORTB=0xfe;break;case2:PORTB=0xfd;break;case3:PORTB=0xfb;break;case4:PORTB=0xf7;break;case5
7、:PORTB=0xef;break;case6:PORTB=0xdf;break;case7:PORTB=0xbf;break;case8:PORTB=0x7f;break;default:break;}}}(2).自动循环程序:#include#defineucharunsignedchar#defineuintunsignedint//**********延时函数**********//voiddelay_ms(uintk){uinti,j;for(i=0;i8、r(j=0;j<1140;j++);}}//*****************端口设置函数********************//voidport_init(void){DDRB=0xFF;//B端口设置为输出PORTD=0XFF;//输出高电平DDRD=0x00;//D端口设置为输入PORTD=0XFF;//输出高电平}//*********主函数*********//voidmain(void){unsignedchari;char
8、r(j=0;j<1140;j++);}}//*****************端口设置函数********************//voidport_init(void){DDRB=0xFF;//B端口设置为输出PORTD=0XFF;//输出高电平DDRD=0x00;//D端口设置为输入PORTD=0XFF;//输出高电平}//*********主函数*********//voidmain(void){unsignedchari;char
此文档下载收益归作者所有